Présentation de Java 13: plongeons-nous dans les nouvelles fonctionnalités de JDK



Java a été le rêve d'un programmeur et quelle est la meilleure façon de quantifier la popularité de Java avec la nouvelle version Java 13. Après la proposition d'amélioration Java initiale, des avancées dans les fonctionnalités JDK ont fait exploser l'esprit du développeur Java avec une nouvelle gamme de fonctionnalités. après la sortie officielle le 17 septembre 2019.

Mais pourquoi pensez-vous que Java est si populaire?

Java a été un engouement parmi les programmeurs en raison de l'indépendance de sa plate-forme et de sa capacité à fonctionner sur différents ordinateurs. Il existe depuis si longtemps qu'il a été adopté par des organisations comme les banques, les compagnies d'assurance, les entreprises, les agences et surtout par les sociétés d'impartition de logiciels .

Java a été là dans l'entreprise pour développer des applications Android, des applications Web Java, des outils logiciels et des applications scientifiques.

Plongeons-nous dans les statistiques et évaluons le taux de popularité des applications Java parmi les autres langages de programmation concurrents.

Selon le récent rapport de septembre de Tiobe Index , les applications et les programmeurs Java ont maintenu sa position et ont donné du fil à retordre aux autres langages de programmation.



Après avoir vu la tribu populaire de Java parmi les autres langages de programmation, passons aux fonctionnalités de Java 13 JDK en un coup d'œil:

  1. JEP 350: archives CDS dynamiques
  2. JEP 351: ZGC: désengager la mémoire inutilisée
  3. JEP 353: Réimplémentez l'API Legacy Socket
  4. JEP 354: Switch Expressions (préversion)
  5. JEP 355: blocs de texte (préversion)

Comme nous ne pouvons pas attendre beaucoup de changements après la version initiale de Java 12, il y a toujours des changements au niveau fonctionnel qui pourraient passer des programmeurs Java à de nouvelles fonctionnalités stables. L'objectif est de finaliser les fonctionnalités de prévisualisation par la prochaine version LTS afin qu'elles soient suffisamment stables et qu'elles paraissent bien pour les trois prochaines années. Il était prévu que d'ici septembre 2021, Java 17 reprendrait l'héritage de Java 8 et 11.

Dans ce blog, je vais vous présenter les dernières fonctionnalités que vous pouvez attendre de Java 13.

-> Archives dynamiques du CDS

Mis à part les nouvelles fonctionnalités qui sont évidentes pour les développeurs Java , beaucoup de choses se sont passées sous le toit de la JVM et de la bibliothèque en classe. Le partage de données de classe (CDS) a été introduit lors de Java 5. Le but ultime de CDS est de raccourcir les heures de démarrage des applications Java en stockant certaines informations sur les classes dans les archives de partage de données de classe. Les données peuvent ensuite être chargées lors de l'exécution et utilisées par plusieurs machines virtuelles Java.

Jusqu'à Java 10, cependant, les archives partagées n'étaient accessibles que pour le Bootstrap ClassLoader. À partir de Java 10, CDS a été étendu par le partage de données de classe d'application (AppCDS). AppCDS permet au chargeur de classe système et plateforme intégré ainsi qu'aux chargeurs de classe définis par l'utilisateur d'accéder aux archives CDS. Des listes de classes sont nécessaires pour créer les archives CDS afin d'identifier les classes à charger.

Auparavant, ces listes de classes devaient être déterminées par des exécutions d'essai de l'application pour déterminer quelles classes étaient réellement chargées pendant l'exécution. Depuis Java 12, les archives CDS par défaut sont livrées avec le JDK par défaut, qui est basé sur la liste des classes du JDK.

Les archives CDS dynamiques s'appuient désormais sur ce point. L'objectif est de sauvegarder les exécutions de test supplémentaires de l'application. Une fois qu'une application a été exécutée, seules les applications et les classes de bibliothèque nouvellement chargées qui ne figurent pas déjà dans le CDS par défaut / couche de base sont archivées. L'archivage dynamique est activé avec des commandes en ligne de commande. Dans une future extension, l'archivage des classes pourrait alors s'exécuter de manière complètement automatique et transparente.

-> ZGC: annuler la mémoire inutilisée

De nos jours, il n'est pas si rare que les applications doivent servir des milliers d'utilisateurs en même temps. Ces applications nécessitent beaucoup de mémoire et la gestion de la mémoire est importante, ce qui affecte les performances de l'application. Pour répondre aux exigences énoncées, Oracle a introduit le Z Garbage Collector ( ZGC ) dans Java 11 car il promet de très courtes pauses lors du nettoyage des mémoires de tas avec plusieurs téraoctets.

Auparavant, il ne libérait pas la mémoire de tas libérée réservée aux applications. Par conséquent, les applications consomment beaucoup plus de mémoire que nécessaire. Une application qui s'exécute dans des environnements à faibles ressources est particulièrement affectée. D'autres garbage collector comme le G1 et Shenandoah prennent déjà en charge la libération de mémoire inutilisée.

-> API Socket renouvelées

Les Java Socket et Java ServerSocketAPI sont des fragments du JDK 1.0. La plupart d'entre eux sont constitués d'héritage de Java et de code C. Cela rend la maintenance et l'extensibilité beaucoup plus difficiles. Le NioSocketImpl est censé remplacer le PlainSocketImpl obsolète maintenant. NioSocketImpl est déjà basé sur la nouvelle implémentation d'E / S existante et utilise son infrastructure existante dans le JDK.

L'implémentation précédente n'est pas compatible avec d'autres extensions prévues du langage. Par exemple, des problèmes de concurrence entravent l'utilisation future des threads utilisateur légers (fibre, partie du projet Loom).

-> Améliorations pour les expressions de commutateur

Si vous regardez la fonctionnalité du point de vue du développeur, c'est le point qui est simplement intéressant. Par exemple, Switch Expressions a été introduit en tant qu'aperçu dans Java 12 et il a été étendu en raison des commentaires des utilisateurs. Les expressions de commutateur sont une alternative aux instructions de commutateur encombrantes et sujettes aux erreurs.

Le plus grand changement dans les normes de codage qui pourrait être vu dans Java 13 est le remplacement du mot-clé break dans l'expression du commutateur par yield. L'arrière-plan est la meilleure différenciation entre une instruction switch (avec rupture possible) et des expressions (avec rendement). L'instruction yield quitte le commutateur et renvoie le résultat de la branche actuelle, semblable à un retour.

Par exemple, l'extrait de code ci-dessous présente le scénario dans lequel l'instruction Switch a été utilisée avec break et, dans l'autre partie, Switch Expression a été utilisée avec le rendement pour faire la différence entre les deux.



-> Blocs de texte au lieu de littéraux de chaîne bruts

le bloc de texte est un nouveau type pour définir le littéral de chaîne dans le langage Java. Il peut être utilisé pour désigner une chaîne n'importe où qu'un littéral de chaîne peut être utilisé, mais offre une plus grande expressivité et moins de complexité accidentelle. La première implémentation de Raw String Literals a soulevé de nombreuses questions car les utilisateurs ont donné des commentaires sur le même qui a plusieurs questions multiples.

Après tout, de nombreuses applications Java peuvent traiter des extraits de code provenant d'autres langages tels que HTML ou SQL. Jusqu'à présent, de telles chaînes ne pouvaient être définies que de manière encombrante, ce qui les rend difficiles à lire.

Par exemple, des commandes de contrôle supplémentaires (d'échappement avec \ n) doivent être utilisées pour les sauts de ligne. D'autres langues comme Groovy, Scala ou Kotlin offrent depuis longtemps la possibilité de définir des textes multilignes.

Le nouveau bloc de texte utilise des guillemets triples comme délimiteurs et peut être utilisé partout où des chaînes normales sont autorisées.

L'extrait de code ci-dessous explique la différence entre les deux:



Les triples guillemets d'ouverture et de fermeture doivent être sur une ligne distincte. Néanmoins, le contenu réel commence par la deuxième ligne. Cela augmente la lisibilité du code source, car l'indentation de la première ligne s'affiche correctement dans le texte source.

Conclusion:

Les changements décrits jusqu'à présent ont été définis dans les JEP (Java Enhancement Protocols). Il y a cependant d'autres adaptations directement dans la bibliothèque de classes. Mais d'abord, vous devez installer Java 13 alors que la version Java 14 est toujours en cours de développement.

Les changements sont incertains et certaines fonctionnalités telles que Switch Expressions et Text Block peuvent être finalisées. Cependant, la prochaine version est en route.

Source: https://habr.com/ru/post/fr483186/


All Articles