BT

Java 9 sur le point d'arrêter le support de compilation des versions 1.5 et antérieures

par Alex Blewitt , traduit par Chris Woodrow le 05 août 2013 |

Une récente Java Enhancement Proposal (JPE, proposition d'amélioration du JDK), qui cible à la fois les versions 8 et 9 de java, tend à réguler le support des options -target et -source du compilateur Java. La proposition part du principe qu'un compilateur doit supporter au plus 3 versions antérieures à la version du compilateur lui-même.

L'option -target indique au compilateur de générer les classes Java dans une version spécifique de Java. Bien que généralement spécifié comme une version de Java telle que 1.5 ou 1.6, cette option se traduit par une version cible du bytecode généré:

  • 48: Java 4
  • 49: Java 5
  • 50: Java 6
  • 51: Java 7
  • 52: Java 8 (à paraître)
  • 53: Java 9 (à paraître)

L'option -source permet au compilateur de remonter ou de traiter comme des erreurs les nouveaux concepts du langage, tels que les expressions lambda, try-with-resources, strings-in-switch, etc... Certaines des nouvelles fonctionnalités du langage (comme les expressions lambda) s'appuient sur des caractéristiques spécifiques du bytecode (comme invokedynamic). Il en résulte qu'il est rarement possible d'utiliser du code s'appuyant sur une version plus récente que la version ciblée.

La JEP 182 propose qu'au plus 3 versions -target et -source soient supportées par les prochaines versions du compilateur. Cette limitation implique la fin de Java 6 cette année, la limitation de supporter Java 6 n'incombant qu'au compilateur Java 8 (de même pour Java 7 avec le compilateur Java 9). Cette restriction ne devrait pas affecter qui que ce soit de manière significative. Néanmoins, certains outils de build (tels que Maven), fixent la version de Java à 1.5 si celle-ci n'est pas spécifiée de manière explicite, ce qui pourrait entraîner la nécessité d'une mise à jour pour permettre au programme d'être exécuté sous Java 8.

Le changement est en marche, la jsr14 et la cible 1.4 ne sont plus acceptés par Java 8, l'utilisation de Java 1.5 lèvera des warnings. Java 9 supprimera le support de la version 1.5 et lèvera des warnings pour la version 1.6.

D'un point de vue pratique, tout ceci n'a pas l'air d'un grand changement, mais jusqu'à il n'y a pas longtemps, les contextes OSGi étaient compilés avec les options -source 1.5 -target jsr14 afin de compiler du code contenant des génériques tout en générant du bytecode compatible avec J2ME. L'utilisation de jsr14 a été supprimée l'année dernière de la code base d'Eclipse. Sachant qu'Android a largement pris le dessus sur J2ME (et dans tous les cas, des runtimes OSGI comme Felix et Equinox demeurent disponibles au cas où le besoin commercial existerai), le fait qu'ils soient compilés à l'aide d'une version plus récente ne devrait pas poser de problème à la majorité des développeurs Java.

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Contenu Éducatif

Rien ne serait possible sans le soutien et la confiance de nos Sponsors Fondateurs:

AppDynamics   CloudBees   Microsoft   Zenika
Feedback Général
Bugs
Publicité
Éditorial
InfoQ.com et tous les contenus sont copyright © 2006-2014 C4Media Inc. InfoQ.com est hébergé chez Contegix, le meilleur ISP avec lequel nous ayons travaillé.
Politique de confidentialité
BT