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