5
attendu. On se rappelle du départ tonitruant de Doug Lea, professeur à State University of New York à
Oswego, éminent spécialiste de la programmation concurrente, et auteur des principales API Java dans
ce domaine.
En 2010, Oracle se retrouve donc avec un problème à résoudre : quelle sera la prochaine version majeure
de Java ? Et surtout : que mettra-t-on dans cette version ? Voilà quatre ans qu’il n’y a pas eu de version
majeure, le projet Lambda est dans l’ornière, et les rumeurs commencent à courir : « Java est en train de
devenir le nouveau Cobol », c’est-à-dire un langage du passé, condamné à disparaître à plus ou moins
long terme.
La réponse d’Oracle a été de sortir une version 7, avec ce qui était alors prêt à être publié. Donc une
version 7 sans le projet Lambda. Cette version contient malgré tout de nombreux ajouts très
intéressants : quelques modifications du langage, des mises à jour des API existantes, une nouvelle API
I/O, un framework de calcul parallèle. Mais l’attente est déçue : les lambdas sont reportés pour la version
8, plus tard. La réaction de la blogosphère est lapidaire : Java 7 sans les lambdas déçoit.
Un deuxième événement vient perturber les choses. 2012 devait être l’année de l’intégration du projet
Lambda dans Java 8. Elle sera l’année de la correction de problèmes de sécurité dans Java 6 et 7. Ces
problèmes arrivent jusque dans la presse grand public, l’image de Java est atteinte, et Oracle doit
consacrer toutes les ressources disponibles aux correctifs. Java 8 prend du retard, la date de sortie
annoncée est repoussée de 6 mois.
C’est donc en 2014 que Java 8 sort. On peut considérer que l’intégration du projet Lambda, initialement
prévue probablement pour 2008 a donc pris 6 ans de retard. Considérable pour un langage informatique.
L’introduction des lambdas : quel impact ?
En 1998, le JDK de Java 2 compte environ 1500 classes. Pour Java 4, dernière version avant les génériques,
ce total s’élève à 2 700 classes. Java 5 voit arriver les génériques, modification majeure du langage, et
compte environ 3 300 classes. Java 6, dernière version publiée par Sun microsystems, compte 3500
classes. En 8 ans, le nombre de classes du JDK augmente donc, le langage subit une modification majeure.
La JVM, elle, ne change pas, en tout cas pas dans la façon dont elle exécute le code Java. Le bytecode Java
ne change pas pendant plus de 10 ans.
Java 7 est une rupture de ce point de vue. Le langage évolue un peu (sans grande révolution toutefois),
le nombre de classes passe à 7400, et une nouvelle instruction de bytecode est introduite. Cette
augmentation du volume de l’API en fait l’une des plus grosses mises à jour du JDK.