Le tour d'horizon dans l'écosystème Java de cette semaine du 25 octobre 2021 présente des nouvelles d'OpenJDK, du JDK 18, de nombreuses mises à jour sur les projets Spring, MicroStream 6.0, Quarkus 2.4.0, Hibernate Reactive 1.0, Open Liberty 21.0.0.11, Eclipse Vert.x 4.2.0, Red Hat présente Cryostat 2.0, GraalVM Native Build Tools 0.9.7.1, Liberica Native Image Kit 21.3 et JDKMon 17.0.7.
OpenJDK
Une fois son examen terminé, la JEP 416, Reimplement Core Reflection with Method Handles, a été promue de Proposed to Target au statut Targeted pour le JDK 18. Cette JEP propose de réimplémenter les classes du package java.lang.reflect
, Method
, Constructor
et Field
, en utilisant les method handles définis dans java.lang.invoke
. Ces method handles serviront désormais de mécanisme de réflexion pour réduire les coûts de maintenance et de développement des deux packages.
La JEP 418, Internet-Address Resolution SPI, a été promue de Candidate à Proposed to Target pour le JDK 18. Cette JEP propose de définir une interface de fournisseur de services (service-provider interface) pour la résolution de nom d'hôte et d'adresse, afin que java.net.InetAddress
puisse tirer parti d'autres résolveurs que le résolveur d'OpenJDK intégré par défaut. L'examen de cette JEP 418 se termine le 4 novembre 2021.
JDK 18
Le Build 21 du JDK 18 early-access builds a été rendu disponible la semaine dernière, avec des mises à jour du Build 20 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 (Proposed to Target)
Les développeurs sont encouragés à signaler les bugs via la Java Bug Database.
Spring Framework
Ce fut une autre semaine chargée chez Spring, car l'équipe a fourni des communiqués sur un certain nombre de leurs projets.
Dans un récent rapport, des correctifs de sécurité, contenus dans la récente version de Spring Boot versions 2.5.6 et 2.4.12, adressent des vulnérabilités dans Spring Framework (CVE-2021-22096), Spring Data REST (CVE-2021-22047) et Spring AMQP (CVE-2021-22097). Une quatrième vulnérabilité, CVE-2021-22044, a été corrigée avec la version de Spring Cloud OpenFeign versions 2.2.10.RELEASE, 3.0.5 et 3.1.0-M4.
Spring Tools 4.12.1 pour Eclipse a été publié avec prise en charge du JDK 17, early access builds pour Eclipse 2021-12 et Apple Silicon Platform (ARM M1). Plus de détails peuvent être trouvés dans la release notes.
En route vers Spring GraphQL 1.0.0, la troisième milestone release a été rendue disponible. Cette nouvelle version introduit l'annotation @BatchMapping
pour une meilleure prise en charge du traitement par lots. Les autres nouvelles fonctionnalités incluent : une meilleure prise en charge de Querydsl ; un nouveau résolveur par défaut pour l'interface TypeResolver
pour les unions et interfaces GraphQL ; et l'intégration de la classe DataBinder
de Spring Framework pour l'analyse des arguments d'entrée. Vous trouverez plus de détails dans la liste des problèmes.
Reposant sur la récente enquête State of Spring 2021, de nouvelles fonctionnalités pour Spring Cloud Kubernetes, ajouté à la troisième milestone release de Spring Cloud 2021.0.0, comprennent une prise en charge améliorée de la découverte de services et de la gestion de la configuration qui éliminent la barrière dans laquelle une application est requise pour fournir des autorisations au serveur d'API Kubernetes. Spring Cloud 2021.0.0-M3 introduit un nouveau serveur de découverte qui "utilise l'API Kubernetes pour récupérer les services et les endpoints Kubernetes afin de fournir des informations de service aux applications".
MicroStream
MicroStream a publié la version 6.0 de leur framework avec intégration avec Helidon, une couche de configuration Spring Boot, des gestionnaires de types spécialisés pour les collections du JDK 17 créées avec List.of()
et Set.of()
, et un nouvel utilitaire, ObjectCopier
, pour créer des copies profondes de graphes d'objets. InfoQ suivra avec un reportage plus détaillé.
Hibernate
Hibernate a publié Hibernate Reactive 1.0.0.Final avec une intégration complète avec Quarkus. Introduit pour la première fois en décembre 2020, Hibernate Reactive utilise des bibliothèques clientes SQL non bloquantes de Vert.x et prend en charge PostgreSQL, MySQL, MariaDB, Db2, SQL Server et CockroachDB. InfoQ suivra avec un reportage plus détaillé.
Open Liberty
IBM a promu Open Liberty 21.0.0.11 depuis sa version bêta avec de nouvelles fonctionnalités qui incluent : permettre l'installation de fonctionnalités utilisateur dans Open Liberty runtime avec FeatureUtility
un outil en ligne de commande ; l'utilisation de secrets Kubernetes comme variables de configuration Open Liberty ; et une nouvelle option de format de journal d'accès HTTP pour le port éphémère (un endpoint de communication d'un protocole de couche transport) d'un client.
Quarkus
Red Hat a publié Quarkus 2.4.0.Final avec : une mise à niveau de dépendance vers Hibernate Réactif 1.0.0.Final ; la prise en charge d'une topologie de flux de Kafka avec Quarkus DevUI ; des tests continus avec des projets multi-modules ; et une nouvelle extension quarkus-awt
à utiliser avec Abstract Window Toolkit (AWT) et Java2D.
Quarkus Tools for IntelliJ 1.8.0 a été mis à disposition avec la prise en charge de CodeLens pour les endpoints REST et les améliorations des spécifications Fault Tolerance et Metrics de MicroProfile.
Eclipse Vert.x
Eclipse Vert.x 4.2.0 a été publié avec la prise en charge du JDK 17 avec des améliorations apportées à leurs clients SQL réactifs, clients Web et clients d'autorisation. Le Reactive Oracle Client a été ajouté à la suite Vert.x des clients de base de données. De plus amples détails peuvent être trouvés dans les release notes et le document contenant les dépréciations et les modifications impliquant une rupture.
Cryostat
Red Hat a introduit un nouveau conteneur-native pour application s'exécutant dans une JVM, Cryostat 2.0, qui fournit une API sécurisée pour le profilage et la surveillance des conteneurs avec le JDK Flight Recorder. Cryostat peut récupérer, stocker et analyser les événements du Flight Recorder à partir de JVM conteneurisées pour évaluer la santé globale d'une application. Les enregistrements JFR peuvent être téléchargés sur JDK Mission Control ou Grafana pour une analyse plus approfondie. Une introduction à Cryostat peut être trouvée sur cet article de blog.
GraalVM Native Build Tools
Oracle Labs a publié la version 0.9.7.1 de Native Build Tools, un projet de GraalVM composé de plugins pour l'interopérabilité avec GraalVM Native Image. Il s'agit d'une version de correction de bugs pour traiter l'exécution des tests lors d'un build multi-projet avec le plugin Maven déclaré dans un fichier parent pom.xml
.
Liberica Native Image Kit
BellSoft a publié Liberica Native Image Kit (NIK) 21.3, leur distribution downstream de GraalVM. Construit sur Liberica JDK 17 et JDK 11, les nouvelles fonctionnalités incluent : la prise en charge initiale de JPMS ; la configuration des fichiers de configuration Reflection et JNI pendant l'analyse pour produire des images natives plus petites ; une nouvelle politique de récupération de mémoire adaptative pour de meilleures performances du GC ; et l'utilitaire d'image natif peut désormais lire les arguments de la ligne de commande.
JDKMon
La dernière version de JDKMon, un nouvel outil qui surveille et met à jour les JDK installés, a été mis à la disposition de la communauté Java. Créé par Gerrit Grunwald, ingénieur principal chez Azul, les fonctionnalités de la version 17.0.7 sont : l'ajout de la prise en charge des JDK Bi Sheng, Tencent Kona et la certification Semeru. Il existe également une mise à niveau des dépendances vers JavaFX 17.0.1 et des mises à jour de certains plugins et de l'interface utilisateur.