In Développement Dernière mise à jourated:
Partager sur:
Logiciel Jira est l'outil de gestion de projet n°1 utilisé par les équipes agiles pour planifier, suivre, publier et prendre en charge d'excellents logiciels.

La version Long-Term-Support (LTS) du langage et du runtime Java platJava 17 a été lancé le 14 septembre 2021. Apprenons les nouveautés de Java 17 et si vous devez effectuer une mise à niveau.

De nombreuses applications utilisent des versions antérieures de Java, y compris les versions LTS antérieures de Java : Java 11 et Java 8.

Pourquoi les entreprises devraient-elles passer à la version Java la plus récente ? La mise à niveau vers Java 17 a besoin effort, principalement pour tirer le meilleur parti des nouvelles fonctionnalités et fonctions de la JVM.

De nombreuses entreprises utilisent Docker et Images Docker pour passer à Java 17 facilement avec minimum effort et le temps. Les développeurs peuvent définir leurs pipelines d'intégration/déploiement continu (CI/CD) et tout exécuter dans des images Docker. Ce ne sera pas impact d'autres équipes utilisent des versions Java plus anciennes, car elles peuvent utiliser d'anciennes images Docker.

Fonctionnalités de JAVA 17

Prise en charge de macOS et AArch64

L'une des fonctionnalités JVM critiques ajoutées à cette version est l'amélioration de la prise en charge de macOS sur l'architecture AArch64 à l'aide de JEP 391. Elle prendra en charge leateère série de processors (M1) Apple a sorti ses ordinateurs l'année dernière.

Ce n'est pas nécessairement un gros problème pour les utilisateurs de ces platdepuis que certains fournisseurs ont lancé des versions de JDK prenant en charge cette architecture et retournant même le support à partir de Java 8. Cependant, le sceau d'approbation officiel est essentiel pour assurer la maintenance et le support futurs du platformulaire. En comparaison, la prise en charge de Linux/AArch64 platle formulaire a été ajouté à Java 9 et Windows/AArch64 dans Java 16.

Classes scellées

Les classes scellées sont une fonctionnalité introduite dans Java 17. La fonctionnalité Classes scellées a terminé sa phase d'essai et est devenue officielle. platforme et langage en Java 17. Il permet à un développeur de spécifier les sous-types autorisés qu'un type peut avoir et prevempêcher d’autres de l’étendre ou de le mettre en œuvre d’une manière qui n’est pas prévue.

Les classes scellées permettent également au compilateur de générerate erreurs au moment de la compilation lorsque vous tentez de convertir un type non scellé en un sous-type non autorisé. Java 17 apporte également un nouveau pipeline de rendu pour les applications AWT/Swing qui s'exécutent sur macOS à l'aide de l'API Apple Metal au lieu d'OpenGL. Il dispose d'une API améliorée et de fonctionnalités améliorées pour générerate nombres aléatoires.

Modifications, suppressions et limitations dans Java 17

Java 17 apporte également plusieurs modifications, suppressions et nouvelles limitations.

Encapsulation du JDK Internals

Un changement est la conclusion de l'encapsulation process du JDK Internals. La première fois que cela a été introduit, c'était dans Java 9 et donnerait des avertissements pendant l'exécution lorsqu'un utilisateur tentait d'utiliser la réflexion ou similaire pour contourner les restrictions habituelles d'utilisation. internal Apis. Des arguments de ligne de commande ont également été ajoutés à regate Ce comportement.

Depuis Java 9, diverses API ont été crééesated offrir une manière uniforme d'effectuer les tâches les plus couramment utilisées ; les utilisateurs utiliseraient ces API internally. Avec Java 16, la valeur par défaut est passée d'un avertissement à la désactivation de l'accès au lancement d'une exception. Cependant, il utilise l'argument de ligne de commande pour modifier le comportement.

Avec Java 17, l'argument de ligne de commande est suppriméated, et il est possible de désactiverate cette restriction. Cela signifie que tout accès non autorisé à ces internal Les API sont désormais protégées.

Toujours strict FloatSémantique des points d'ing

Une « suppression » supplémentaire peut être décrite comme la réintroduction de Always-Strict Floatsémantique des points. Java 1.2 a introduit des modifications dans floatsémantique de point d'ing par défaut en Java qui permet à la JVM d'échanger une infime quantité de précision dans floatcalculs de points d'ing pour améliorer les performances. Dans les classes et les méthodes où une sémantique stricte devait être utilisée, un strictfp le mot-clé a été ajouté. Depuis lors, divers types de jeux d'instructions ont été introduits dans les processeurs, rendant floatla sémantique des points d'inging soit utilisée sans frais inutiles. La nécessité d'implémenter une sémantique par défaut ou stricte a été éliminée.ated.

Java 17 supprime le prevsémantique par défaut ious, et tout floatles opérations de point d'ing sont exécutées strictement. Le terme strictfpest toujours présent. Cependant, il n'a aucun effet et provoque un avertissement à compiler le temps.

Compilation à l'avance (AOT)

Java 9 a introduit la compilation anticipée (AOT) en tant que fonctionnalité expérimentale utilisant le compilateur Graal, et un code JIT a été écrit en Java. Java 10 a créé le compilateur Graalsable en tant que compilateur JIT dans OpenJDK en incorporant l'interface JVMCI. Depuis sa sortie, il y a eu une grande amélioration. Le compilateur Graal a connu d'énormes progrès et a sa JVM sous le nom de GraalVM.

Activation RMI

L'activation du RMI a été suppriméeated dans JEP 407 suite à sa suppression de Java 8 et finally dépréciationated et marqué comme condition requise pour la suppression dans Java 15. L'activation RMI a fourni une méthode pour activer les ressources à la demande d'objets distribués à l'aide de RMI. Cependant, son utilisation a été minime et une meilleure alternative est actuellement disponible. Le reste du RMI n’est pas affecté par la suppression de la partie Activation.

Suppression de l'API d'applet

L'API Applet a finally été conçuated pour enlèvement par JEP 398, débutally supprimé dans Java 9. L'API Applet a fourni un moyen d'intégrerate Contrôles Java AWT/Swing dans une page Web dans abrowseuh. Cependant, aucun b modernerowseuh peut prendre en charge cela, ce qui signifie que les applets ont été essentiellesally inaccessible au cours de la dernière décennie.

Responsable de la sécurité

La dépréciation la plus cruciale est qu'il s'agit du gestionnaire de sécurité ( JEP 411). Security Manager est utilisé depuis un certain temps depuis Java 1.0. Il a été conçu pour restreindre ce que Java pouvait faire.ally sur la machine, comme limiter l'accès aux réseaux, aux fichiers et à d'autres ressources réseau. Il tente également de sandbox code non fiable en bloquant la réflexion et des API spécifiques.

La fin de Security Manager a commencé dans Java 12. Un argument de ligne de commande a été ajouté pour bloquer l'utilisation du gestionnaire de sécurité au moment de l'exécution. La modification apportée à Java 17 signifie qu'un avertissement d'exécution sera généréated dans la JVM lorsque vous essayez de définir un gestionnaire de sécurité, soit à partir de la ligne de commande, soit à partir de la dynamique.ally à l'exécution.

Incubateur et Prevvoir les fonctionnalités

Beaucoup se demandaient si Java 17 aurait des prevfonctionnalités d'affichage et d'incubateur, étant donné que Java 17 a été promu comme une version prise en charge à long terme. Java 17 dispose de deux modules d'incubateur et d'un aprevnouvelle fonctionnalité !

API vectorielle

API vectorielle ( JEP 414) est actuellement dans sa deuxième phase d'incubateur. L'API permet aux développeurs de définir le calcul vectoriel que le compilateur JIT convertira ensuite en calcul approprié.ate instruction vectorielle prise en charge par l'architecture CPU sur laquelle la JVM s'exécute (par exemple, en utilisant celles des jeux d'instructions SSE ou AVX).

Avant, les développeurs devaient utiliser des fonctions scalaires ou créer des bibliothèques natives spécifiques au platformulaire. L'implémentation de l'API Vector en Java fournit également un mécanisme de secours transparent qui s'est avéré compliqué.ated dans les versions antérieures.

La standardisation de l'API Vector permet aux classes du JDK de l'utiliser. Les méthodes Java Arrays mismatch() pourraient être modifiées pour être exécutées sur Java à la place, éliminant ainsi la nécessité de maintenir et d'écrire plusieurs méthodes. platimplémentations spécifiques aux formulaires au sein de la JVM.

Fonction étrangère et API de mémoire

Une fonctionnalité supplémentaire de l'incubateur s'appelle l'API Foreign Function & Memory ( JEP 412). Il s'agit d'une évolution et d'une fusion de deux autres modules incubateurs de Java 16 qu'est The Foreign Linker API ( JEP 389) et l'API de mémoire étrangère ( JEP 393). Les deux fournissent un accès à la mémoire et au code natifs en utilisant des fichiers statiques.ally-programmation typée écrite en Java.

Correspondance de modèle pour le commutateur

La dernière caractéristique du langage prevLa vue incluse dans Java 17 est l'inclusion de Pattern Matching pour Switch ( JEP 406). Cette fonctionnalité de langage étend les expressions de commutation et statements selon le type, similaire à la syntaxe utilisée via Pattern Matching (JEP 394), qui est devenu standard avec Java 16.

Dans le passé, si vous vouliez effectuer différentes actions en fonction de la nature dynamique d'un objet, vous deviez construire une chaîne if-else à l'aide d'une instance de vérifications telles que :

String type(Object o) {
  if (o instanceof List) {
    return "A List of things.";
  }
  else if (o instanceof Map) {
    return "A Map! It has keys and values.";
  }
  else if (o instanceof String) {
    return "This is a string.";
  }
  else {
    return "This is something else.";
  }
}

En combinant l'expression de commutateur ainsi que la nouvelle fonctionnalité de correspondance de modèles pour les commutateurs, le process peut être réduit à quelque chose de similaire à :

String type(Object o) {
  return switch (o) {
    case List l -> "A List of things.";
    case Map m -> "A Map! It has keys and values.";
    case String s -> "This is a string.";
    default -> "This is something else.";
  };
}

Comme vous l'avez peut-être remarqué, il y a la déclaration d'une variable dans le process de vérification. Comme les autres variables de Pattern, la correspondance de l'indicateur d'instanceates que cet objet a été vérifié et converti et qu'il est disponible à partir de la variable dans sa zone actuelle.

Le prevLa fonction iew est une autre étape vers la correspondance de modèles. L'étape suivante consiste à inclure la possibilité de déconstruire des tableaux et des enregistrements.

Devriez-vous passer à Java 17 ?

Oui, vous devez constamment mettre à niveau vers la version la plus récente, mais pas dès le premier jour. Les logiciels et les bibliothèques que vous utilisez n'ont peut-être pas été mis à jourated pour inclure la compatibilité avec Java 17, vous devrez donc peut-être attendre un certain temps jusqu'à ce que ce soit terminé.

Si vous êtes coincé avec une version LTS de Java comme Java 8 ou Java 11, il existe de nombreuses options dans le langage et dans la JVM.self qui nécessitent une mise à niveau vers Java 17. Comme il s'agit d'une version de maintenance à long terme, il y a de fortes chances que votre environnement de production finisseally être mis à jourated à Java 17 également.

Si vous démarrez un tout nouveau projet ou si vous êtes dans le process de préparer votre projet pour Java 17, en passant à Java 17 plus tôt que prévu later est probablement le choix le plus efficace puisqu’il réduit les coûts de déménagement. Cela permet également aux développeurs travaillant sur le projet d'utiliser tous les lateles fonctionnalités principales et le côté opérationnel.

Vous pouvez profiter des nombreuses améliorations apportées au cours des dernières années, telles que la prise en charge améliorée des conteneurs exécutés sur Java, ainsi que de nouvelles fonctionnalités low-l.ateimplémentations de garbage collector ncy.

Partager sur:
  • Rubis Goyal
    Auteur
    En tant qu'expert technique writer, Ruby adore rédiger des guides détaillés sur le développement Web et le marketing en ligne. Elle a passé la majorité de sa carrière à rédiger des blogs, à mener des campagnes marketing, à optimiser des campagnes publicitaires et par courrier électronique et à rédiger des textes.

Merci à nos commanditaires

Plus de bonnes lectures sur le développement

Alimentez votre entreprise

Certains des outils et services pour aider votre entreprise grow.
  • L'outil de synthèse vocale qui utilise l'IA pour générerate des voix humaines réalistes.

    Essayez Murf AI
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.

    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.

    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.

    Essayez Intruder