Mark Reinhhold, Architecte en chef de la plate-forme Java, a annoncé sur son blog la décision d'Oracle de retarder de 4 à 6 mois la sortie de Java 8.
Citant l'intense effort d'Oracle pour répondre à la vague de failles de sécurité qui ont "récemment reçu beaucoup d'attention de la part du public", Reinhold rapporte que de nombreux ingénieurs ont forcément été retirés de Java 8 pour résoudre ces problèmes. "Le maintien de la sécurité de la plate-forme Java est toujours prioritaire sur le développement de nouvelles fonctionnalités, et ces efforts ont inévitablement enlevé des ingénieurs du projet Java 8". Reinhold souligne en plus que Oracle a "mise à jour" leur processus de développement afin d'améliorer la qualité du code et réduire les vulnérabilités.
"Le retard le plus important, précise Reinhold, concerne la JSR 335, le projet Lambda, qui a pour objectif d'apporter au langage Java les closures (i.e. "les expressions lambda")". "Si nous enlevons les Lambda, les fonctionnalités restantes sont intéressantes, mais prises dans leur ensemble, elles ne sont pas convaincantes. Une sortie cette année sans les expressions Lambda aura donc peu de chances d'obtenir une large adoption, alors pourquoi s'embêter ?" interroge Reinhold.
Entre le retard ou la réduction du périmètre, Reinhold rejette une troisième option - "Si nous sacrifions la qualité afin de respecter le calendrier alors nous allons très certainement répéter les mêmes erreurs du passé : graver sur une pierre virtuelle des changements incomplets de langage et d'API , pour lesquelles des millions de développeurs, pendant les années à venir, devront contourner leurs défauts jusqu'à ce que ces caractéristiques -ou toute la plate-forme- soient remplacées par quelque chose de nouveau.
La disponibilité officielle prévue initialement en septembre 2013 est maintenant décalée au premier trimestre 2014. C'est la deuxième fois qu'elle est reportée. Java 8 était au départ prévu fin 2012 lorsque le développement de Java 7 rencontrait des retards similaires. Il a ensuite été de nouveau retardé à septembre 2013 et le projet Jigsaw a été abandonné. Le retard actuel se répercutera au JDK 9 et nous nous attendons maintenant à voir le JDK 8 au premier trimestre 2014, la disponibilité du JDK 9 se déplaçant entre 2015 et début 2016. Reinhold rejette la possibilité de ressusciter le projet Jigsaw pour cette release qui a été enlevée du périmètre de Java 8, comme indiqué sur InfoQ en juillet dernier.
Il apparaît clairement en regardant les fonctionnalités que Java 8 est défini principalement par le projet Lambda.
Le projet Lambda nécessite beaucoup de coordination avec les autres grands modules, en particulier avec le framework de concurrence et celui des génériques. Cela donne de la crédibilité à l'explication d'Oracle de détourner des ressources de développement pour répondre aux préoccupations de sécurité.
L'introduction des expressions Lambda est l'une des grandes améliorations syntaxiques au langage Java depuis l'introduction des génériques à Java 5 en 2004.
Les closures forment la base du paradigme de la "programmation fonctionnelle" de plus en plus populaire. (Les termes "closures" et " expressions Lambda" sont utilisés de manière interchangeable dans le contexte Java, bien qu'il y est des différences théoriques.) Pour obtenir le meilleur des closures, Java va introduire plusieurs changements dans des bibliothèques liées. Parmi elles, la nouvelle API Stream, qui fournit un mécanisme pour enchaîner des instructions ce qui est primordial pour la programmation fonctionnelle, et la classe Option, qui enveloppe la possible valeur null afin d'éviter le besoin de tester la référence nulle, simplifiant le développement des closures.
De nombreux développeurs considèrent les closures comme un plus bienvenu, car la plupart des langages sur la JVM incluant Scala, Clojure, et Ruby, ainsi que les populaires langages de la plate-forme .Net comme C# et F# (un langage fonctionnel), les proposent déjà.