Evolutions Java 22

Java 22 est sortie en janvier dernier, nous venons à peine de faire le topo sur Java 21 que voilà cette nouvelle version!

Bon certes, il s’agit d’une nouvelle version mais celle-ci n’est pas une LTS donc forcément elle est moins conséquente!

On notera entre autres un passage en version finale des JEP 454 et 456.

La première concernait les Foreign Function & Memory API qui permettent une utilisation simplifiée des fonctions natives mais aussi plus performante que ne l’est JNI. Cette API permet aux programmes Java d’appeler des bibliothèques natives et de traiter des données natives sans la fragilité et le danger de JNI. L’API invoque des fonctions étrangères, du code extérieur à la JVM, et accède en toute sécurité à la mémoire étrangère, c’est-à-dire à la mémoire non gérée par la JVM. Ce n’est pas une fonctionnalité que j’utilise dans mon secteur, je ne m’étalerai donc pas dessus (au risque de dire des bêtises).

La seconde JEP, la 456 concerne les variables anonymes qui permettent de ne pas nommer des variables non utilisées. C’est évidemment une fonctionnalité qui permet à java de se mettre à niveau par rapport à d’autres langages comme python mais dans l’ensemble on restera réaliste qu’il ne doit pas ici être un passe-droit pour faire une mauvaise conception et voir apparaître des “_ “partout.

Du côté des previews on notera quelques nouveautés et pas des inutiles:

JEP 447 – Statements before super va permettre de positionner des lignes d’init préalablement à l’instruction super() dans les constructeurs. Cela n’était pas possible car il était nécessaire d’assurer l’init des aspects hérités avant l’init de l’objet de la classe elle-même. Maintenant c’est possible afin par exemple de pouvoir vérifier la validité de la construction avant même que celle-ci ne débute.

JEP 457 – Class-File API afin de faciliter la vie aux outils reposant sur des systèmes qui manipulent les classes pour en générer du bytecode.

JEP 458 – Launch Multi-File Source-Code Programs va permettre d’appeler du code java directement depuis un ensemble de fichiers .java sans étape préalable de compilation.

JEP 461 – Stream Gatherers va permettre d’étendre les opérations intermédiaires dans les process de l’API Stream comme on peut le faire avec l’opération collect dans laquelle on peut injecter une lambda. Ce nouvel opérateur va donc nous permettre des opérations plus complexes comme du fenêtrage par exemple.

Dans les previews qui restent previews, on pourra citer les Vector API, les Scoped Values, les Structured Concurrency, les Implicitly Declared Classes and Instance Main Methods et les String Templates.

Voilà, ce petit tour d’horizon de Java 22 est déjà fini. Pour les développeurs, on n’aura pas beaucoup de nouveautés côté code à part peut-être les Stream Gatherers mais bon Java avance déjà tellement vite que finalement cette petite pause laissera un peu de temps à tous de prendre en main déjà Java 21.

Laisser un commentaire