Le tour d'horizon dans l'écosystème Java de cette semaine du 15 novembre 2021 présente de nouvelles JEPs d'OpenJDK, de JDK 18, du projet Loom, de nombreuses versions ponctuelles sur des projets Spring, MicroProfile 5.0-RC2, de Payara Platform, une nouvelle spécification Jakarta EE proposée, JHipster 7.4.0, TornadoVM 0.12, Apache Camel K 1.7 et Kotlin 1.6.0.
OpenJDK
La JEP 419, Foreign Function & Memory API (Second Incubator), a été promue de Candidate à Proposed to Target pour le JDK 18. Cette JEP fait évoluer la première incubator, la JEP 412, Foreign Function & Memory API (Incubator), livrée dans le JDK 17, pour incorporer des améliorations basées sur les commentaires de la communauté Java. Les changements dans ce deuxième incubator incluent : la prise en charge de plus de types dans les var handles d'accès mémoire tels que boolean
et MemoryAddress
; une API de déréférencement plus générale pour les MemoryAddress
et MemorySegment
; une API plus simple pour obtenir des downcall method handles telles que le passage d'un MemoryType
n'est plus nécessaire ; et une nouvelle API pour copier des tableaux Java vers et depuis des segments de mémoire. L'examen de la JEP 419 se termine le 23 novembre 2021.
La JEP 420, Pattern Matching for switch (Second Preview), a été promue de Candidate à Proposed to Target pour le JDK 18. Cette JEP permet à une expression cible dans un switch
d'être testée par rapport à un certain nombre de patterns, chacun avec une action spécifique, ce qui permet d'exprimer de manière concise et sûre des requêtes complexes orientées données. Il s'agit du second aperçu après la JEP 406, Pattern Matching for switch (Preview), qui a été fourni dans le JDK 17. Les améliorations incluent : une amélioration du dominance checking qui force un case
pour une constante devant apparaître avant un guarded pattern du même type ; et une vérification de l'exhaustivité du bloc switch est maintenant plus précise avec des hiérarchies scellées. L'examen de la JEP 420 se termine le 23 novembre 2021.
Brian Goetz, architecte Java chez Oracle, s'est entretenu avec InfoQ en septembre 2017 lorsque le pattern matching était encore dans sa phase de proof-of-concept. Le pattern matching pour l'opérateur instanceof
, la JEP 394, a été fournie dans le JDK 16.
La JEP 422, Linux/RISC-V Port, a été promue de Draft à Candidate. Cette JEP propose de porter le JDK vers Linux/RISC-V, une architecture de jeu d'instructions RISC libre et open-source. L'interpréteur de modèles, les compilateurs JIT C1 et C2 et tous les GC principaux actuels, y compris ZGC et Shenandoah, seront pris en charge. L'objectif principal de cette JEP est d'intégrer le portage dans le référentiel principal JDK.
JDK 18
Le Build 24 du JDK 18 early-access builds a été rendue disponible la semaine dernière, avec des mises à jour du Build 23 qui incluent des correctifs pour divers problèmes. Plus de détails peuvent être trouvés dans les release notes.
L'ensemble de fonctionnalités pour le JDK 18 se présente actuellement comme suit :
- JEP 400: UTF-8 by Default
- JEP 408: Simple Web Server
- JEP 413: Code Snippets in Java API Documentation
- JEP 416: Reimplement Core Reflection with Method Handles
- JEP 417: Vector API (Third Incubator)
- JEP 418: Internet-Address Resolution SPI
- JEP 419: Foreign Function & Memory API (Second Incubator) (Proposed to Target)
- JEP 420: Pattern Matching for switch (Second Preview) (Proposed to Target)
Les développeurs sont encouragés à signaler les bugs via la Java Bug Database.
Le projet Loom
La version 18-loom+5-274 du projet Loom early-access builds a été mise à la disposition de la communauté Java et est basée sur le Build 22 early-access builds du JDK 18.
Spring Framework
La semaine de Spring a été chargée, car l'équipe a fourni des versions ponctuelles de plusieurs projets.
Spring Boot 2.6 a été publié avec des mises à niveau des dépendances vers Spring Data 2021.1, Spring HATEOAS 1.4, Spring AMQP 2.4, Spring Kafka 2.8, Spring Security 5.6 et Spring Session 2021.1. Les autres nouvelles fonctionnalités incluent : un endpoint /info
amélioré avec des informations d'exécution Java ; et la prise en charge du test des applications Spring MVC à l'aide de WebTestClient
.
Spring Boot version 2.4.13 et version 2.5.7 ont également été publiés avec 26 corrections de bugs et 35 corrections de bugs, respectivement, ainsi que des améliorations de la documentation et des mises à niveau des dépendances.
Après trois versions importantes et une version candidate, Spring Security 5.6.0 a été mis à disposition de la communauté Java avec : une nouvelle interface, SecurityContextChangedListener
, qui peut être utilisée comme cible d'affectation pour une expression lambda ou une référence de méthode ; la prise en charge de la déconnexion unique SAML 2.0 ; et le support pour propager le TestSecurityContextHolder
à la classe SecurityContextHolder
. Vous trouverez plus de détails dans les release notes.
Spring Cloud Netflix version 2.2.10.RELEASE a été publié pour répondre au CVE-2021-22053, une vulnérabilité qui expose un moyen d'exécuter le code soumis dans le chemin URI de la requête, /hystrix/monitor;[données-fournies-par-l'utilisateur]
, lors de la résolution des templates de vue avec des applications utilisant spring-cloud-netflix-hystrix-dashboard
et spring-boot-starter-thymeleaf
.
Spring Batch versions 4.3.4 et 4.2.8 ont été mis à disposition avec des corrections de bugs telles que : s'assurer que le méthode getParameters()
définie dans la classe JobParameters
classe retourne un ensemble de paramètres immuables ; la correction du message d'erreur "IllegalArgumentException : Only 1 of 2 arguments could be Assign" en invoquant le MethodInvokingTaskletAdapter
et NamedParameterJdbcTemplate
; et en s'assurant que la méthode getLastJobExecution()
définie dans la classe SimpleJobExplorer
récupère les exécutions de steps et les contextes d'exécution.
Spring pour Apache Kafka 2.8 a été publié avec : la prise en charge des commits manuels hors service ; un nouvel ensemble de gestionnaires d'erreurs communs pour remplacer les gestionnaires d'erreurs distincts record
et batch
; et le KafkaTemplate
peut désormais être utilisée pour recevoir des enregistrements spécifiques de partitions connues.
Spring AMQP (Spring for RabbitMQ) 2.4 a été mis à disposition avec une prise en charge initiale du RabbitMQ Stream Plugin et déclarant que la prise en charge de Spring Remote Method Invocation (RMI) a été dépréciée. Vous trouverez plus de détails dans les release notes.
La route vers MicroProfile 5.0
En route vers MicroProfile 5.0, le Groupe de travail MicroProfile a fourni la second release candidate qui inclut les dernières mises à jour des huit spécifications développées par la communauté :
- Config 3.0-RC5
- Health 4.0-RC3
- Fault Tolerance 4.0-RC5
- Metrics 4.0-RC4
- JWT 2.0-RC2
- OpenAPI 3.0-RC5
- OpenTracing 3.0-RC4
- RestClient 3.0-RC5
Ces spécifications seront alignées sur Jakarta EE 9.1.
Payara
Payara a publié son édition de novembre 2021 de Payara Platform. La version Payara Platform Community 5.2021.9 propose 11 améliorations, six corrections de bugs et 11 mises à niveau de composants et la version Payara Platform Enterprise 5.33.0 propose quatre améliorations, quatre corrections de bugs et deux mises à niveau de composants. La prise en charge du JDK 17 a été implémentée dans l'édition communautaire, mais des tests supplémentaires pour garantir la stabilité sont en cours pour l'édition Entreprise. Un changement majeur pour les deux versions est la suppression des protocoles TLS 1.0 et TLS 1.1 qui sont désormais désactivés par défaut.
Vous trouverez plus de détails dans les release notes des éditions Community et Enterprise.
Jakarta EE
Le Jakarta EE Working Group a présenté une proposition de nouvelle spécification Jakarta EE, Jakarta Commons, pour répondre au besoin d'une spécification pour gérer les API, fonctionnalités et bibliothèques pour assurer la cohérence entre les spécifications. Le groupe de travail sollicite les commentaires de la communauté Java en consultant et en commentant ce document.
JHipster
La version 7.4.0 de JHipster a été publiée pour inclure : la correction des noms de relation User
dans les entités ; l'ajout de la prise en charge des modules ECMAScript (ESM) et de l'architecture Micro-Frontend sur Vue.js ; la mise à jour de la bibliothèque React JHipster vers Bootstrap 5.0 ; et la gestion des claims Auth0 lorsqu'il agit en tant que serveur de ressources OAuth 2.0.
TornadoVM
TornadoVM, une société de technologie logicielle open source, a publié TornadoVM version 0. 12 comprenant : un nouveau backend, un répartiteur Level-Zero pour SPIR-V intégré ; un frawework d'analyse comparative amélioré ; de nouvelles métriques, kernel time
et data transfers
, ajoutées au framework d'analyse comparative ; et un profiler amélioré qui introduit de nouvelles options de ligne de commande --enableProfiler <silent|console>
et --dumpProfiler <jsonFile>
.
Juan Fumero, associé de recherche, groupe de recherche sur les technologies des processeurs avancés à l'Université de Manchester, a présenté TornadoVM lors de la QCon de Londres en mars 2020 et a depuis contribué à cet article technique d'InfoQ.
Traduit avec www.DeepL.com/Translator (version gratuite)Un exemple d'application utilisant Docker peut être trouvé sur ce référentiel GitHub.
Apache Camel K
La version 1.7 d'Apache Camel K a été diffusée comprenant : le support de Quarkus Native Build et Kustomize ; une plateforme d'intégration secondaire ; et de nouveaux Kamelets dans le Apache Camel Kamelet Catalog.
Camel K, un framework d'intégration léger, est construit avec Apache Camel K Runtime 1.10.0, Apache Camel Quarkus 2.4.0 Apache Camel 3.12.0 et Apache Camel Kamelets 0.5.0.
Kotlin
JetBrains a publié Kotlin 1.6.0 avec de nombreuses nouvelles fonctionnalités telles que les instructions scellées when
; les types fonctionnels et les conversions suspend
améliorés ; l'instanciation des classes d'annotation et l'inférence de type améliorée pour les types génériques récursifs. Des améliorations sont également apportées à Kotlin/JVM, KotlinJS et KotlinNative. Les développeurs peuvent en apprendre davantage dans cette vidéo YouTube animée par Anton Arhipov, Kotlin developer advocate chez JetBrains. InfoQ suivra avec un article d'actualité plus détaillé.