L'environnement d'exécution Java (abr. JRE pour Java Runtime Environment), parfois nommé simplement « Java », est une famille de logiciels qui permet l'exécution des programmes écrits en langage de programmation Java[1], sur différentes plateformes informatiques.
Il est distribué gratuitement par Oracle Corporation, sous forme de différentes versions destinées aux systèmes d'exploitation Windows, Mac OS X et Linux[2], toutes conformes aux Java Specification Requests (JSR).
JRE est souvent considéré comme une plateforme informatique au même titre qu'un système d'exploitation (OS). En effet, s'il n'est pas un OS, il offre les mêmes fonctionnalités par l'intermédiaire de ses bibliothèques[3] et permet ainsi l'exécution des programmes écrits en langage Java sur de nombreux types d'appareils — ordinateurs personnels, mainframes, téléphones mobiles — en faisant abstraction des caractéristiques techniques de la plateforme informatique sous-jacente qui exécute le JRE[4].
JRE est un logiciel populaire, installé sur plus de 900 millions d'ordinateurs[5].
Le JRE se compose d'une machine virtuelle, de bibliothèques logicielles utilisées par les programmes Java et d'un plugin pour permettre l'exécution de ces programmes depuis les navigateurs web[1].
Selon les principes de la technologie Java, lancée par Sun Microsystems en 1995, JRE simule la présence de la machine virtuelle java - un ordinateur fictif. Il joue le rôle d'un émulateur et imite le comportement de cette machine fictive qui exécute des programmes Java[4].
Android, la plateforme pour les téléphones mobiles créée par Google, comporte une machine virtuelle et une bibliothèque logicielle similaire à JRE[6], qui est incorporée dans les appareils par les fabricants[2].
La machine virtuelle Java (abr. JVM pour Java Virtual Machine) est une simulation logicielle d'une véritable machine[7]. La principale tâche de la machine virtuelle est de charger en mémoire les fichiers exécutables et d'exécuter le bytecode — les instructions machine de la machine virtuelle. Il existe plusieurs modes d'exécution du bytecode[8].
La machine virtuelle est également équipée d'un ramasse-miettes (en anglais : garbage collector) qui permet de libérer la mémoire qui n'est plus utilisée par le programme Java[8].
Les bibliothèques logicielles de JRE mettent en œuvre une interface de programmation (anglais application programming interface - abr. API). C'est un ensemble standardisé de fonctions, associées à des classes d'objets et groupées par sujet (package)[9]. Dans son édition de 2002, JRE comporte 135 packages qui fournissent des fonctionnalités exploitées par les programmes Java pour[10] :
Depuis 1998 il existe plusieurs choix de bibliothèques, plus ou moins riches. Les bibliothèques comprises dans JRE correspondent à l'édition standard appelée Java SE[11], qui est destinée aux ordinateurs personnels. Il existe également une édition Java ME destinée aux téléphones mobiles, et une édition Java EE destinée aux serveurs d'entreprise[3].
Java Plug-In est un module d'extension pour les navigateurs web, qui permet l'exécution des applets à l'aide de la machine virtuelle de JRE. Les applets sont des programmes incorporés dans les pages web en vue d'enrichir leur contenu[10].
Lorsqu'une page web comporte un lien vers une applet, le plugin fait appel à la machine virtuelle de JRE pour exécuter le programme en question. Les navigateurs tels que Internet Explorer ou Netscape Navigator comportent une machine virtuelle incorporée, mais celle-ci est moins en avance et n'offre pas les mêmes possibilités que celle de JRE. Java Plug-In permet alors d'éviter d'utiliser la machine virtuelle incorporée dans le navigateur[10],[12].
Le JRE ne constitue qu'un environnement d'exécution de logiciels écrits préalablement en langage de programmation Java.
L'écriture de tels logiciels nécessite quant à elle l'utilisation d'un JDK (Java Development Kit), également distribué par Oracle Corporation. Ainsi, alors que JRE est destiné aux utilisateurs des programmes en langage Java, JDK est destiné aux programmeurs : il comporte en plus de la machine virtuelle et des bibliothèques, des commandes permettant la création de programmes en langage Java[3]. Ce même JDK est packagé dans diverses distributions, contenant des API complémentaires destinées à différents contextes de mise en œuvre : Java SE, Java EE, Java ME, etc.
La technologie Java a été lancée en 1995, et Sun Microsystems a publié une édition tous les 18 mois. Dans la première version de JRE, publiée en 1995, les bibliothèques totalisent 171 classes d'objets. Dans la version 1.4, publiée en 2002, elles totalisent déjà 2 367 classes d'objets[3].
En 2010 la société Sun Microsystems, qui distribue JRE, est rachetée par Oracle Corporation, qui annonce son intention de continuer de développer la technologie Java[13],[14]
année | nom | version | nombre de classes de l'API |
---|---|---|---|
1996 | Java JRE | 1.0 | 170 |
1997 | Java JRE | 1.1 | 391 |
1998 | Java 2 JRE | 1.2 | 1 462 |
2000 | Java 2 JRE | 1.3 | 1 732 |
2002 | Java 2 JRE | 1.4 | 2 367 (pour 54 packages) |
2004 | Java 2 JRE | 1.5.0 ou 5.0 (2013 : 1.5.0.41[15]) | 2 800 (pour 166 packages) |
2006 | Java 6 JRE | 1.6.0 (2013: 1.6.0.45) | 3 793[16] (pour 203 packages) |
2011 | Java 7 JRE | 1.7.0 (2013: 1.7.0.45) | 4 024[17] (6 nouveaux packages: java.lang.invoke, java.nio.file (+file.attribute & file.spi), javax.swing.plaf.nimbus & javax.xml.ws.spi.http) |
Les versions du JRE sont numérotées à l'identique aux versions de Java ; on recense donc fin 2012 plus de 50 versions successives du JRE dont 7 majeures. La dernière version pour OS X, Linux, Windows et Solaris est ainsi la 1.7.0.45 (également intitulée '7 Update 45') en , distribuée par leur propriétaire Oracle (à la suite du rachat de l'éditeur Sun Microsystems en 2009).
Si Java se décline en plusieurs éditions (Java SE, Java EE, Java ME, Java FX), le JRE correspond à l'édition standard 'Java SE'. De ce fait, exécuter sur un poste client un logiciel écrit sous Java EE nécessite, outre le JRE, que les bibliothèques J2EE complémentaires requises soient fournies par un conteneur Java, 'lourd' tel que Apache Tomcat, JBoss ou JOnAS, ou 'léger' tel que Spring.
Par ailleurs, le JRE ayant vocation à 'traduire' le bytecode Java en langage machine, il existe à chaque version autant de distributions du JRE que de plateformes cibles : OS X Motorola, OS X Intel, Linux 32 bits, Linux 64 bits, Windows 32 bits (x86), x64, Solaris Sparc, etc[18].