Publication de Java SE 27 et OpenJDK 27.

Après six mois de développement, Oracle a publié la plateforme Java SE 27 (Java Platform, Standard Edition 27), dont la mise en œuvre de référence utilise le projet open source OpenJDK. À l'exception de la suppression de certaines fonctionnalités obsolètes, Java SE 27 maintient la compatibilité ascendante avec les versions précédentes de la plateforme Java – la plupart des projets Java préalablement écrits fonctionneront sans modification sous la nouvelle version. Les distributions prêtes à installer de Java SE 27 (JDK, JRE et Server JRE) sont préparées pour Linux (x86_64, AArch64), Windows (x86_64) et macOS (x86_64, AArch64). La mise en œuvre de référence de Java SE 27, développée dans le cadre du projet OpenJDK, est complètement open source sous licence GPLv2 avec des exceptions GNU ClassPath, permettant un lien dynamique avec des produits commerciaux.

Java SE 27 est classé comme étant une version à cycle de vie normal, avec des mises à jour qui seront publiées jusqu'à la prochaine version. Pour une branche à long terme (LTS), il convient d'utiliser Java SE 25, Java SE 21 ou Java SE 17, dont les mises à jour continueront jusqu'en 2033, 2031 et 2029 respectivement (publiques jusqu'en septembre 2030, 2028 et 2026). Le support étendu de la branche LTS Java SE 8 se poursuivra jusqu'en 2030, tandis que Java SE 11 bénéficiera d'un support jusqu'en 2032.

Parmi les changements dans Java SE 27 (1, 2, 3, 4) :

  • Par défaut, le ramasse-miettes G1 (Garbage-First) est utilisé pour tous les environnements, un outil auparavant utilisé pour les systèmes serveurs. G1 est optimisé pour une utilisation sur des systèmes multiprocesseurs avec une grande quantité de mémoire et pour un équilibre entre prévisibilité des latences et haute capacité. En fonctionnement, G1 divise la mémoire en plusieurs régions petites et nettoie en priorité les régions où il y a le plus d'objets inutilisés et le moins de données utilisées activement.
  • Dans la JVM HotSpot, des en-têtes d'objets compacts sont utilisés par défaut. La taille des en-têtes sur les systèmes 64 bits a été réduite de 96 à 64 bits, ce qui a diminué la consommation de mémoire et a augmenté la probabilité que les données aillent dans le cache processeur. Dans les tests SPECjbb2015, la consommation de mémoire a diminué de 22 %, la charge sur le CPU a été réduite de 8 %, et le nombre d'opérations de ramassage de déchets a chuté de 15 %. Lors des tests du parseur JSON, le temps de passage des tests a été réduit de 10 %.
  • La mise en œuvre de TLS 1.3 a introduit le support de schémas hybrides de négociation de clés, combinant l'algorithme ML-KEM (CRYSTALS-Kyber), résistant aux attaques par des ordinateurs quantiques, avec des algorithmes classiques basés sur des courbes elliptiques ECDHE : X25519MLKEM768 (ECDHE avec la courbe X25519 + ML-KEM-768), SecP256r1MLKEM76 (ECDHE avec la courbe secp256r1 + ML-KEM-768) et SecP384r1MLKEM1024 (ECDHE avec la courbe secp384r1 + ML-KEM-1024). Dans l'API javax.net.ssl Ces schémas sont activés par défaut et ne nécessitent aucune modification des applications pour être utilisés.
  • L'outil JDK Flight Recorder (JFR), utilisé pour la surveillance, le profilage et le diagnostic des performances, a ajouté la prise en charge de la suppression des informations de diagnostic enregistrées, des arguments de ligne de commande, des valeurs initiales des variables d'environnement et des propriétés système. Ce changement permet d'éviter la fuite de données confidentielles traitées par le processus profilé, telles que les jetons d'autorisation et les clés d'accès API passés via des variables d'environnement.
  • Une troisième pré-édition de l'API Lazy Constants a été mise en œuvre pour travailler avec des objets contenant des données immuables traitées dans la JVM comme des constantes. Des optimisations de performance similaires à celles des champs avec le mot-clé «final» s'appliquent à ces objets. Contrairement à «final», la nouvelle API sépare la création de valeurs constantes et leur initialisation, garantissant que la valeur ne peut être initialisée qu'une seule fois, réduisant le temps de lancement des programmes et permettant l'application dans le code utilisateur d'optimisations de réduction des constantes (constant-folding), auparavant utilisées uniquement dans le code interne du JDK. class Application { // Avant : // static final UserService USERS = new UserService(); // Maintenant : static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • Dans le mécanisme de correspondance de modèles, une cinquième pré-version a été proposée pour utiliser des types primitifs (int, byte, char et autres types de base non objets) dans tous les types de modèles, dans l'opérateur «instanceof» et dans les blocs «switch». switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + i; } if (i instanceof byte b) { … b … }
  • Proposé pour test, la septième version préliminaire de l'API pour la concurrence structurée (Structured Concurrency) simplifie le développement d'applications multithreading en traitant plusieurs tâches exécutées dans différents threads comme un bloc unique.
  • La douzième mise en œuvre de test de l'API Vector a été réalisée, offrant des fonctions pour les calculs vectoriels, qui sont effectués en utilisant des instructions vectorielles des processeurs x86_64 et AArch64, permettant d'appliquer simultanément des opérations à plusieurs valeurs (SIMD). Contrairement aux capacités d'auto-vectorisation des opérations scalaires fournies par le compilateur JIT HotSpot, la nouvelle API permet un contrôle explicite de la vectorisation pour le traitement parallèle des données.
  • La troisième version préliminaire de l'API pour l'encodage et le décodage d'objets avec des clés cryptographiques, des certificats et des listes de certificats révoqués, utilisant le format PEM (Pivacy-Enhanced Mail), est maintenant disponible.

De plus, on peut noter la publication de la mise à jour de la plateforme pour la création d'applications avec une interface graphique JavaFX 27. Dans les prochaines heures, on attend également la sortie de la machine virtuelle universelle GraalVM 27, prenant en charge l'exécution d'applications en JavaScript (Node.js), Python, Ruby, R, et dans tous les langages pour la JVM (Java, Scala, Clojure, Kotlin) ainsi que dans les langages pour lesquels le code binaire LLVM peut être généré (C, C++, Rust).

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster