samedi 5 octobre 2013

Java, jdk, jcp, jee & co

Quelques points de repère pour s'y retrouver dans cette galaxie d'acronyme qui constitue l'écosystème Java.

Terminologie

  • JRE : Java Runtime Environment
  • JDK : Java Development Kit
  • JVM : Java Virtual Machine
  • JIT : JustInTime
  • JAR,(Java Archive) WAR (Web Application Archive), EAR (Entreprise Application Archive)
  • JSE : Java Standard Edition
  • JEE : Java Entreprise Edition
  • API : Application Programming Interface
  • TCK : Technology Compatibility Kit
  • JUG : Java User Group
  • JCP : Java Community Process
  • JSR : Java Specification Request
  • JCP Members, Spec Leader, Expert
  • EC Executive Committee
 

Pour commencer JVM, JRE, JDK, JSE, JEE

     Le coeur, la machine virtuelle java (JVM) est ce qui exécute le bytecode (instructions issues de la compilation du code Java contenu dans une archive JAR, WAR, EAR). Une JVM est spécifique à chaque système, je ne pourrais pas faire tourner une JVM destinée à un système Windows sur un Linux par exemple, par contre tout archive java (code compilé, archivé dans un JAR, WAR, EAR) pourra s'exécuter sur n'importe quelle JVM.

     Il existe différentes JVM fournies par différents éditeurs, les plus célèbres étant :
  • HotSpot de Sun (maintenant Oracle)
  • JRockit de BEA (maintenant Oracle)
  • J9 d'IBM
     En temps qu'utilisateur (end user comme on dit) de solutions Java je n'ai besoin que d'une JRE (déjà installée, que je récupère sur le site d'Oracle ou que mon browser favori me propose d'installer si elle manque). Cette JRE me permettra de faire tourner une JVM qui exécutera sur mon système l'application java que je souhaite utiliser.

     En temps que développeur, j'ai besoin d'un peu plus, il me faut un JDK qui contient une JRE, les outils de compilations, JSE pour les API de base pour développer.... Je peux également avoir besoin d' api JEE  (Servlet, EJB, JNDI, ...) pour pouvoir coder si j'opte pour une application déployée sur un serveur applicatif qui me fournira les services correspondant.

     Pour finir java est versionné (Wikipedia - historique des versions). Ce qui peut parfois semer le trouble, il y a eu un renommage au moment du passage à la version suivant Java 1.4 (en fait Java 2 1.4 d'où J2SE et J2EE) :
  • en effet étant Java 2 depuis quelques années il a été décider de supprimer ce 2 sans utilité
  • incrémenter le nombre directement plutôt que 1.x
     Par conséquent on est passé de J2EE 1.4 à JEE 5. Je développerais dans un autre article ce qu'est JEE, pour faire rapide c'est une spécification qui regroupe un ensemble de spécifications.

Pour downloader JDK, JRE : http://www.oracle.com/technetwork/java/javase/downloads/index.html

Le Java Community Process (JCP)

     C'est une organisation créée par Sun en 1998 qui pilote les évolutions de Java. Elle formalise via un workflow, des validations et votes les évolutions concernant Java.
     Ce processus en est actuellement à la version 2.9 depuis le 15 aout 2012, il est décris ici ainsi que ses versions précédentes. La version 1.0 date de décembre 1998.

     Une évolution est matérialisée par une JSR (Java Specification Request) qui va suivre le workflow défini par le process. Ces étapes vont comprendre une étude, des réunions d'expert, passage des TCK, une validaton par l'executive committee, ... le tout cadré par un ou plusieurs spec leader.

     Chaque JSR est accessible sur le site, par exemple JSE 7 est la JSR 336. On peut ainsi consulter la spécification, voir les dates et résultats des différentes étapes ainsi que consulter le vote final qui décide de son adoption ou non (le Final Approval Ballot).

     Les membres de l'EC (executive Committee) sont ceux qui au travers le vote final ont pouvoir de décision. On y retrouve :
  • des sociétés IT tel qu'IBM, Google, CloudBees, Azul, RedHat, ...
  • la fondation Eclipse
  • depuis la reprise par Oracle des JUG (SouJava, London Java Community)
  • des sociétés utilisatrices de technologies comme Nokia, Credit Suisse, Goldman Sachs, ...

Aucun commentaire:

Enregistrer un commentaire