Le tour d'horizon dans l'écosystème Java de cette semaine du 20 décembre 2021, présente des nouvelles d'OpenJDK avec un nouveau brouillon sur les value objects, du JDK 18, du JDK 19, du Project Loom, des déclarations supplémentaires des fournisseurs sur Log4Shell, de nombreuses mises à jour de Spring et Quarkus, Hibernate ORM 6.0.0- M3, des versions intermédiaires d'Apache Camel et Camel Quarkus, Apache Tika 2.2.1 et GraalVM Native Build Tools 0.9.9.
OpenJDK
Un nouveau brouillon pour une JEP, Value Objects (Preview), a été ajouté à la liste la semaine dernière. Cette nouvelle preview du langage et fonctionnalité de la VM propose d'améliorer le modèle objet de Java avec des value types définis comme des classes de valeur sans identité et spécifiant le comportement de leurs instances. Ces classes contiennent uniquement des champs d'instance finale et n'ont pas d'identité d'objet.
JDK 18
Le Build 29 du JDK 18 early access builds a été rendu disponible la semaine dernière, avec des mises à jour de la version 28 qui incluent des correctifs pour divers problèmes. Plus de détails peuvent être trouvés dans les release notes.
JDK 19
Le Build 3 du JDK 19 versions à accès anticipé a également été rendu disponible la semaine dernière, avec des mises à jour de la version 2 qui incluent des correctifs pour divers problèmes.
Pour les JDK 18 et JDK 19, les développeurs sont encouragés à signaler les bugs via la Java Bug Database.
Projet Loom
La version 19-loom+1-11 du projet Loom early-access builds a été mise à la disposition de la communauté Java et est basée sur le Build 2 des early access builds du JDK 19.
Déclarations supplémentaires de fournisseurs concernant la vulnérabilité Log4Shell
Oracle a déclaré sur Helidon :
Par défaut, Log4j n'est pas utilisé par les applications basées sur Helidon et n'apparaît pas dans le classpath. Cependant Helidon fournit un module d'intégration Log4j en option (
helidon-logging-log4
) et Helidon gère la version de Log4j.Si votre application utilise
helidon-logging-log4
, ou si votre application utilise directement Log4j alors votre application aura déclaré une dépendance explicite sur Log4j. Mais la version de cette dépendance pourrait être gérée par Helidon.
JetBrains a déclaré sur des plugins tiers au sein du JetBrains Marketplace
En raison du nombre de plugins basés sur IntelliJ, nous avons initialement utilisé API Watcher pour vérifier quels plugins et lesquelles de leurs versions exactes utilisaient quelque chose de log4j. Nous avons temporairement masqué toutes les versions de plugin dans lesquelles nous avons détecté une utilisation de log4j.
Nous comprenons qu'un tel contrôle peut produire des faux positifs. Mais nous préférons jouer en toute sécurité et attirer l'attention de nombreux auteurs de plugins sur les risques potentiels, plutôt que de rater certains plugins qui ont repackagé log4j.
Spring Framework
La semaine de Spring a été très chargée, car il y a eu un certain nombre de versions ponctuelles pour divers projets de Spring.
Il y avait deux versions intermédiaires sur les trains de versions Spring Boot 2.6 et 2.5 :
Les fonctionnalités de la version 2.6.2 : 55 corrections de bugs et améliorations de la documentation ainsi que de nombreuses mises à niveau de dépendances telles que Log4j 2.17.0, Kotlin 1.6.10, Hibernate 5.6.3.Final et plusieurs projets liés à Spring.
Les fonctionnalités de la version 2.5.8 : 46 corrections de bugs et améliorations de la documentation ainsi que de nombreuses mises à niveau de dépendances telles que Log4j 2.17.0, Kotlin 1.5.32, Hibernate 5.4.33 et plusieurs projets liés à Spring.
Spring Cloud Square 0.4.0 a été publié avec : la prise en charge pour fournir des ajustements sur des cas d'utilisation non équilibrés ; la possibilité de configurer différents beans WebClient.Builder
pour chaque instance d'un client Retrofit annoté avec @RetrofitClient
; et l'intégration de Spring Cloud Sleuth pour une instance d'OkHttpClient
classe.
Spring Native 0.11.1 a été mis à disposition pour inclure 13 corrections de bugs et améliorations de la documentation ainsi qu'une mise à niveau des dépendances vers Spring Boot 2.6.2.
Spring Integration 5.5.7 a été publié avec un certain nombre de corrections de bugs. Plus de détails peuvent être trouvés dans le guide de migration (pour les changements de rupture potentiels) et la changelog.
Des releases ponctuelles pour les versions Spring Security 5.2.15, 5.3.13, 5.4.10, 5.5.4 et 5.6.1 ont été mis à mises à disposition la semaine dernière avec des corrections de bugs et des améliorations mineures.
Quarkus
Quarkus 2.5.4.Final, une version de maintenance, propose une mise à niveau de dépendance vers Jackson 2.12.6 pour corriger une possible attaque par déni de service dans Jackson Databind. De plus amples détails peuvent être trouvés dans la changelog.
Quarkus 2.6.0.Final a été publié avec : des mises à niveau des dépendances vers SmallRye Reactive Messaging 3.13, Kafka 3.0, Kotlin 1.6 et Camel 3.14 ; les extensions, telles que Neo4J, Amazon Alexa et Reactive Messaging HTTP ayant été déplacées vers le Quarkivere Hub ; une nouvelle API programmatique pour la mise en cache ; et une image Docker plus petite, basée sur UBI Micro, pour les exécutables natifs. Cette version n'incluait pas les correctifs de Quarkus 2.5.4.Final, mais étaient inclus dans Quarkus 2.6.1.Final.
Quarkus 2.6.1.Final, la dernière version de maintenance de 2021, comprend toutes les correctifs de Quarkus 2.5.4.Final et certaines mises à niveau de dépendances. Plus de détails peuvent être trouvés dans la changelog.
Hibernate
La troisième version bêta d'Hibernate ORM 6.0 a été rendue disponible la semaine dernière avec de nouvelles annotations : @IdGeneratorType
permet la configuration de l'interface IdentifierGenerator
d'une manière sûre pour le type ; @TenantId
utilise le multi-tenancy basé sur des colonnes pour marquer un attribut qui définit le tenant ; et @AttributeBinderType
permet de personnaliser la façon dont le mapping d'un attribut est défini. Plus de détails peuvent être trouvés dans le guide de l'utilisateur et guide de migration.
Apache Camel
L'Apache Software Foundation a publié la dernière version intermédiaire du train de versions Camel 3.7. La version 3.7.7 propose sept corrections de bugs et améliorations, ainsi que des mises à niveau des dépendances vers Logback 1.2.8, Log4j 2.16.0 et les composants camel-nsq
et camel-corda
. Plus de détails peuvent être trouvés dans les release notes.
En maintenant l'alignement avec Quarkus, Apache a également publié Camel Quarkus 2.6.0 contenant Camel 3.14.0, Quarkus 2.6.0.Final et la prise en charge native de JFR.
Apache Tika
Apache Tika a publié la version 2.2.1 de sa boîte à outils d'extraction de métadonnées. Anciennement un sous-projet d'Apache Lucene, cette dernière version inclut une mise à niveau vers Log4j 2.17.0 et un correctif critique pour une régression dans Office Open XML (docx
/pptx
/xlsx
) qui a été introduite dans la version 2.2.0. Vous trouverez plus de détails dans les release notes.
GraalVM Native Build Tools
En route vers la version 1.0, Oracle Labs a publié la version version 0.9.9 des Native Build Tools, un projet GraalVM composé de plugins pour l'interopérabilité avec GraalVM Native Image. Cette dernière version fournit des correctifs pour le plug-in Gradle, à savoir : la clémence avec le mécanisme de détection des ressources si une entrée du classpath est manquante ; une tâche d'inférence native appropriée associée à des binaires personnalisés, c'est-à-dire des binaires en dehors du main
et test
; et un retravail sur l'opération de désactivation de la détection de la toolchain.