Environnement d'exécution Java

famille de logiciels

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.

Positionnement du JRE dans Java SE.

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].

Architecture modifier

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 modifier

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].

Modes d'exécution du bytecode modifier

  • Dans le mode le plus simple — interprétation —, la machine virtuelle interprète le bytecode : décode une instruction de bytecode à la fois et exécute l'operation correspondante[8].
  • Le mode HotSpot de la machine virtuelle traduit les instructions depuis du bytecode vers le langage machine de la machine qui exécute le JRE ; ensuite de quoi les instructions traduites sont exécutés. Les instructions traduites sont conservées en vue de limiter le nombre d'opérations de traduction. Dans ce mode, l'exécution des programmes Java est plus rapide mais nécessite une plus grande quantité de mémoire[8].
  • Dans le mode adaptive compiler, la machine virtuelle traduit uniquement les instructions fréquemment exécutées, utilisant alternativement les techniques de l’interprétation ou de HotSpot selon les besoins[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].

Bibliothèques modifier

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].

Plugin modifier

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].

Autres packages Java modifier

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.

Histoire modifier

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)

Versions et systèmes supportés modifier

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].

Particularités sur Mac OS X modifier

  • Il n'existe plus, depuis Java 1.5, de release du JRE pour les ordinateurs Mac OS X sous processeur Motorola.
  • Les releases 1.6 de Java (Java 6) pour Mac OS X sous processeur Intel, et la plupart de Java 7, furent intégrées à cet OS, et donc distribuées spécifiquement par Apple. Ce jusqu'en où Apple 'rentre dans le rang' en annonçant prévoir de ne plus intégrer les prochains runtimes Java dans OS X[19].
  • C'est ainsi en 2012, à partir de la release 2012-006 de Mac OS X v10.7, que la distribution Mac OS X du JRE retourne dans le giron de Oracle[20],[21].

Notes et références modifier

  1. a et b (en) « What is Java technology and why do I need it? »
  2. a et b (en) « java.com - What are the system requirements for Java 7? »
  3. a b c et d Emmanuel Puybaret,Java 1.4 et 5.0 - Les Cahiers du programmeur,Editions Eyrolles - 2006, (ISBN 9782212119169)
  4. a et b (en) Doug Lowe et Barry Burd, Java All-In-One Desk Reference For Dummies,John Wiley & Sons - 2007, (ISBN 9780470124512)
  5. (en) « java.com - Learn about Java Technology ».
  6. (en) Jeff Friesen, Learn Java for Android Development, Apress - 2010 (ISBN 9781430231561).
  7. (en)Linda Null et Julia Lobur,The Essentials of Computer Organization And Architecture,Jones & Bartlett Learning - 2006, (ISBN 9780763737696)
  8. a b c d et e (en) Buyya, Object Oriented Prog With Java, Tata McGraw-Hill Education - 2009 (ISBN 9780070669086).
  9. (en)Gary B. Shelly, Thomas J. Cashman, Michael Mick et Joy L. Starks, Java Programming: Comprehensive Concepts And Techniques, Cengage Learning - 2005 (ISBN 9781418859855).
  10. a b c d et e Benjamin Aumaille,J2SE : les fondamentaux de la programmation Java, Éditions ENI - 2002 (ISBN 9782746018044).
  11. (en)Dominik Gruntz et Stephan Murer, Component Software: Beyond Object-Oriented Programming, Pearson Education - 2002 (ISBN 9780201745726).
  12. (en)David Flanagan,Java Foundation Classes in a Nutshell: A Desktop Quick Reference,O'Reilly Media Inc. - 1999, (ISBN 9781565924888)
  13. (en) « Oracle - Hardware and Software. Engineered to Work Together. ».
  14. (en)Barry Burd,Java For Dummies,John Wiley & Sons - 2011, (ISBN 9781118128305)
  15. http://www.oracle.com/technetwork/java/javase/7u17-relnotes-1915289.html
  16. Overview Java Platform SE6
  17. Overview Java Platform SE7
  18. Téléchargements Java pour tous les systèmes d'exploitation www.java.com
  19. Mac OS X Java Deprecation developer.apple.com 20 octobre 2010.
  20. Oracle met à jour Java SE et JavaFX pour OS X, Le Monde Informatique - 16 août 2012.
  21. (en) About Java for OS X 2012-006, http://support.apple.com.

Voir aussi modifier

Articles connexes modifier

Liens externes modifier