Auteur/autrice : piradix

Java , affichage des logs sur une ligne

Par défaut les logs Java sont affichés sur deux lignes (la 1er contient la date, la 2e le type et le contenu) :

sept. 28, 2020 4:35:04 PM org.apache.karaf.main.Main launch
INFOS: All initial bundles installed and set to start

Dans les propriétés globales de la JVM Java (option : -DmaVaraible=maValeur), la variable « java.util.logging.SimpleFormatter.format » permet de configurer le formatage des logs.
Pour afficher les logs sur une seule ligne, utilisez le paramétrage suivant :

"%1$tFT%1$tTZ [%4$s] [%2$s] %5$s%6$s%n"

Par exemple pour lancer l’application mon-app.jar:

 
 
java '-Djava.util.logging.SimpleFormatter.format=%1$tFT%1$tTZ [%4$s] [%2$s] %5$s%6$s%n' -jar mon-app.jar

 

Si vous voulez un format plus lisible pour la date (avec time zone) utilisez le format suivant « %1$s [%4$s] [%2$s] %5$s%6$s%n« .
Ce qui donne pour par exemple :

2020-10-18T02:28:50Z[GMT] [INFO] [org.prodix.myapp] app starting …

Source de l’article : https://rmannibucau.metawerx.net/post/jul-production-ready-pattern-with-simpleformatter

 

L’autologin de Firefox me propose tous mes logins (même ceux d’un autre site web)

Lorsque vous êtes sur un champ de login Firefox au travers de Lockwise propose tous les logins de tous les sites en plus de ceux du site lui-même.
Cela génère du bruit pour rien et cela ne sert à rien en plus d’être parasitaire et énervant.

Pour désactiver cette fonctionnalité :

  • taper dans la barre des URLs : « about:config« ,
  • puis mettre « false » dans la clé « signon.includeOtherSubdomainsInLookup« . Cela désactivera la fonctionnalité.
    Bien sûr, si vous voulez la re-activer, y mettre « true« .

Aurelia Webpack : créer les fichiers compressés (gzip et brontli) du package de production

Par défaut Aurelia JS ne génère par d'option de compression gzip (*.gz) ou brontli (*.br)  des fichiers produits par  Webpack.
Si ces fichiers existent sur le  serveur Web  ils sont envoyés à la place du fichier non compressé  afin de gagner de la bande passant et du temps de chargement...

Lire la suite

Installer l’indicateur de chargement « nprogress » sur Aurelia

nprogress

Sous Aurelia lorsque vous naviguez ou chargez une ressource il est bien de faire patienter l’utilisateur avec une animation bloquant l’interface.
Le composant « nprogresse » permet de faire cela.

Installation de « nprogress »

Installer « nprogress » dans votre projet Aurelia

 
 
npm install nprogress --save

Configuration de « nprogress » sous Aurelia

Dans le dossier « src/resources/elements » créez le fichier « loading-indicator.js » avec le script suivant :

 
 
import * as nprogress from 'nprogress';
import {bindable, noView} from 'aurelia-framework';
import 'nprogress/nprogress.css';
@noView
export class LoadingIndicator {
      @bindable loading = false;
      loadingChanged(newValue) {
        if (newValue) {
            nprogress.start();
        } else {
            nprogress.done();
        }
      }
}

Ce code crée un composant HTML « loading-indicator » non relié à une vue (de même non), mais important une feuille de style « nprogress/nprogress.css ».

Définissez le plug-in dans le fichier « resources/index.js » en ajoutant :

 
 
 import {PLATFORM} from 'aurelia-framework';
  
  export function configure(config) {
    config.globalResources([PLATFORM.moduleName('./elements/loading-indicator')]);
  }

Positionner le composant HTML de nprogress dans la page HTML principale « App.html »  en ajoutant le code suivant :

 
 
<loading-indicator loading.bind="router.isNavigating || context.isRequesting"></loading-indicator>

Pour activer ce composant il  suffit de mettre a « true » la variable de « context.isRequesting », on d’appeler la méthode « nprogress.start() ». Une barre bleue de progression s’affichera en haut.

Pour le cacher, appelez-la méthode « nprogress.stop(); »

Personnalisation de la barre de progression

Vous pouvez changer le style de la barre de progression en ajout le code suivant dans votre fichier style CSS principale :

 
 
#nprogress {
      display: block;
      position: fixed;
      z-index: 1030;
      left: 0;
      top:  0;
      right: 0;
      bottom: 0;
      opacity: 0.8;
    filter: alpha(opacity=80); /* For IE8 and earlier */
    background-color: #fff;
}
#nprogress .bar {
      height : 8px;
}
#nprogress .spinner {
  display: block;
  position: fixed;
  z-index: 1031;
  top: 15px;
  right: 50%;
}

 

 

 

 

 

Les différentes VM Java (JVM)

Il existe plusieurs VM Java pour différent système d’exploitation (voir la liste si dessous).

Dans ma recherche de binaire JVM  exploitable en production, sur des systèmes Windows, Mac, Linux, et pouvant être packager dans un kit d’installation j’ai référencé 3 JVM  :

Toutes sont basées sur OpenJDK et supportent les versions 8 et 11 de Java.
Dans cette liste, la version Hotspot d’Oracle à deux URLs de téléchargement adoptopenjdk et java.net. Le binaire qui se trouve chez Oracle (java.net) ne permet plus d’être package dans un kit d’installation et sa mise à jour nécessite un accord commercial avec Oracle (payant).

Il reste donc deux sites web ou trouvera un binaire pour Windows, Linux, Mac :

Si vous votre cible est Linux, je vous conseille d’étudier l’usage de Grall VM CE qui génère un exécutable (et donc, accélère les lancements)

Si votre cible est un mini-ordinateur (ex Raspberry PI) ou un mini soc (Arduino , ATmega328p) , de regarder du côté de  Haiku

Pour plus de détail, regarder la liste si dessous.

Liste des JVM libres

 

Nom Sytème d’exploitation Particularités
Amazon Corretto
  • Linux
  • MacOs
  • Windows
  • Docker
Implémentation Java par Amazone. Utilisé sur ses serveurs AW cloud

Licence : « Amazon Corretto peut être téléchargé et utilisé gratuitement. Il n’y a aucune restriction ou fonctionnalité payante supplémentaire. »

Web : https://aws.amazon.com/fr/corretto/

Azul Zulu
  • Linux
  • iOS
  • Windows
Libre à télécharger pour utilisation.

A priori libre pour projet OpenSource, sinon payant.

Si vous voulez la fournir  dans un « objet » c’est payant 😉

Mais c’est une des rares JVM à pouvoir faire du temps réel.

Web : https://www.azul.com/downloads/zulu/#mac

Bck2Brwsr Navigateur Internet (Moderne et IE 10+) Convertie le Byte code Java en JavaScript

Web : http://wiki.apidesign.org/wiki/Bck2Brwsr

CACAO Étude académique

Utilise GNU classpath

Licence : GPL 2

Web : http://www.cacaojvm.org/

Codename One / ParparVM
  • iOS
JVM fournit par Codename pour le portage d’application Java

https://github.com/codenameone/CodenameOne/tree/master/vm

DoppioJVM
  • Navigateur Internet
JVM (Java 8) écrite en JavaScript pour fonctionner sur les navigateurs Internet

web : https://plasma-umass.org/doppio-demo/

Eclipse OpenJ9
  • MacOS
  • Linux
  • Windows
Développé par IBM et Apache.

Licence : Apache 2

web : https://www.eclipse.org/openj9/

https://adoptopenjdk.net

GraalVM CE
  • Linux x86/x64)
  • Mac
VM polyglotte (Java, JavaScript, Scala, Kotlin, Clojure, NodeJS, Ruby, R, Python, ..) qui compile l code et donne un exécutable sous Linux ou MaOS

Web : https://www.graalvm.org/

HaikuVM
  • Arduino
  • Raspberry PI 3
  • esp8266
  • La brique Lego RCX
  • AVR (e.g. ATmega8, ATmega328p),
  • UBUNTU,
  • WINDOWS
  • ASURO robot
Rapide

Très peu gourmande en mémoire

Acsés directe à la mémoire et au x entrés/sortie (IO)

Fonction  C/C++ et bibliothèque directement appelable au travers d’annotation @NativeCFunction / @NativeCppFunction

Site : https://sourceforge.net/projects/haiku-vm/

HotSpot
  • Linux
  • MacOS
  • Windows
La version Oracle de la JVM Java.

web : http://openjdk.java.net/groups/hotspot/

Jamiga
  • AmigaOS (68k)
  • AmigaOS 4 (PPC)
  • AROS (x86)
  • MorphOS (PPC)
VM Java pour Amiga.

Licence : GPL

Web : https://github.com/jaokim/jamiga-jamvm

JamVM
  • Linux: x86, x86_64, ARM, PowerPC, PowerPC64(*), MIPS, HPPA
  • FreeBSD: x86, x86_64, ARM, PowerPC, PowerPC64(*), SPARC(*)
  • OpenBSD: x86, x86_64, ARM, PowerPC, PowerPC64(*), SPARC(*)
  • Mac OS X/Darwin: x86, x86_64, ARM, PowerPC, PowerPC64
  • Solaris/OpenSolaris: x86, x86_64
  • KFreeBSD: x86
JVM désigné pour être compacte

Dernière version date de 30 juillet 2016

supporte Java 6, 7, 8

Utilise le classpath de GNU

Licence : GPL

Web : http://jamvm.sourceforge.net/

Jelatine JVM
  • Unix
JVM de Java 2 Micro Edition

Web : https://sourceforge.net/projects/jelatine/

Jikes RVM
  • IA-32 Linux ®
  • PowerPC 64 Linux ® (big endian)
  • OS X
  • Solaris
  • PowerPC 32
JVM désigné pour l’étude  et la recherche de VM.

Licence : Eclipse Public License

JVM.go JVM Java écrit en go

Web : https://github.com/zxh0/jvm.go

leJOS
  • Lego MindsStorms
JVM Java dédié à Lego MindsStorms

Web : http://www.lejos.org/

Maxine
  • MacOs
  • x64,
  • ARM32,
  • AArch46,
  • RISC-V
  • Linux Ubuntu 16.04/18.04 sur :
    • x86,
    • Aarch64,
    • ARMv7
Licence : GPL 2

Web : https://github.com/beehive-lab/Maxine-VM

Multi-OS Engine MacOS Portez vos applications Android ou écrivez des applications Java pour Mac

Web : https://multi-os-engine.org/

Redhat Windows Port de OpenJDK par RedHat
RopeVM JVM de projet de recherche Chinois.

Développer par des Chinois.

Web (chinois) : https://github.com/duyanning/ropevm

SAP Windows

Linux

  • x86
  • ppc

MacOS

JDK et JRE développé par SAP

 

Web : https://github.com/duyanning/ropevm

 

Liens utiles (en Anglais) :

Étude sur les différences des JVM: https://en.wikipedia.org/wiki/Comparison_of_Java_virtual_machines

Liste des JVM passés et présente : https://en.wikipedia.org/wiki/List_of_Java_virtual_machines