JavaRush /Blog Java /Random-FR /Java 12 est là : quoi de neuf ?

Java 12 est là : quoi de neuf ?

Publié dans le groupe Random-FR
Ainsi, Java est apparu au numéro 12. Et même s'il ne s'agit pas d'une version LTS (c'est-à-dire pas d'un support à long terme, pas d'une version qui sera prise en charge pendant longtemps. La version 11 est considérée comme la première version LTS avec un huit- période de support d'un an ), des choses intéressantes sont apparues dans les mises à jour. Examinons les plus importants d'entre eux. Rappelons qu'en Java, les propositions de modification sont abrégées en jeps (de JDK Enhancement Proposal). Java 12 est là : quoi de neuf ?  - 1

Le JDK 12 de Jep le plus intéressant

189 : Shenandoah : un garbage collector à faible temps de pause (expérimental) Le garbage collector, Shenandoah, utilise un nouvel algorithme qui réduit le temps d'exécution en nettoyant simultanément avec l'exécution des threads Java. Dans ce cas, le temps de pause dans Shenandoah sera le même quelle que soit la taille du tas. Pour une raison quelconque, Oracle n'a pas inclus Sheandoah dans ses versions « officielles », malgré le fait que les développeurs considèrent cette fonctionnalité comme l'une des plus importantes de la nouvelle version. Donc, si vous envisagez d'essayer le Garbage Collector avancé, vous devez utiliser des versions tierces, telles que Azul . 230 : Microbenchmark Suite Microbenchmark est un microbenchmark qui mesure les performances d'un petit élément. En Java, ils sont écrits et exécutés à l'aide du framework JMH. Depuis la version 12, JMH a été ajouté au JDK, et des tests y sont déjà écrits, ce qui facilite la vie des développeurs. 325 : Expressions Switch (Aperçu) Une nouvelle forme d'écriture d'une expression avec une instruction switch. La page de fonctionnalités fournit un exemple de code utilisant un commutateur traditionnel, où l'utilisation constante de break le rend inutilement verbeux, conduisant à de fréquentes erreurs aléatoires.
switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        System.out.println(6);
        break;
    case TUESDAY:
        System.out.println(7);
        break;
    case THURSDAY:
    case SATURDAY:
        System.out.println(8);
        break;
    case WEDNESDAY:
        System.out.println(9);
        break;
}
Les auteurs de la mise à jour proposent d'introduire une nouvelle forme de label de switch « case L -> » pour indiquer clairement que seul le code à droite du label sera exécuté si ce label convient. Ainsi, le code présenté ci-dessus peut être considérablement raccourci en utilisant la nouvelle syntaxe :
switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}
334 : API des constantes JVM Le pool de constantes contient ce que l'on appelle des constantes chargeables. Il s'agit de valeurs, par exemple de type String ou de tout type primitif, ainsi que d'artefacts d'exécution, tels que des classes et des méthodes. Lorsqu'ils travaillent avec des fichiers de classe, les programmeurs bénéficieraient d'outils pratiques pour manipuler les constantes chargeables. Les auteurs de cette jep ont commencé à résoudre ce problème en introduisant de nouveaux types de liens symboliques basés sur des valeurs, chacun décrivant un type spécifique de constantes. Code de l'innovation . 340 : un port AArch64, pas deux Ce nom complexe cache une solution à un problème survenu dans Java 9, lorsque les ports ARM 64 bits d'Oracle et aarch64 de Red Hat sont apparus dans le kit en même temps. De plus, déjà au moment de la sortie du JDK 11, même Oracle lui-même ne prenait pas en charge la version 64 bits des ports Oracle. Alors maintenant, les ports Oracle 64 bits ont été supprimés, laissant ARM32 32 bits et aarch64 64 bits, plus productif. 341 : Archives CDS par défaut Une mise à jour très intéressante car elle accélère vraiment le lancement des applications. Ce n'est un secret pour personne que lorsqu'une application Java démarre, un grand nombre de classes commencent à se charger, ce qui est un processus assez long. CDS signifie Class Data Sharing, et cette fonction vous permet de regrouper toutes ces classes lancées au démarrage dans une archive spéciale de partage de données de classe, en utilisant la liste par défaut de ces mêmes classes. En conséquence, la vitesse de lancement des applications augmente considérablement. 344 : Collections mixtes avortables pour G1 G1 est un ramasse-miettes qui est devenu le ramasse-miettes principal du JDK 9, remplaçant Parallel GC. Dans Java 10, G1 a appris à collecter les déchets dans plusieurs threads. Cependant, tout le monde n'était pas satisfait de son travail : l'un des principaux problèmes était les longues pauses. Ils peuvent désormais être annulés. G1, basé sur une analyse du comportement du programme, détermine la quantité de travail, puis collecte les objets « vivants » dans un ensemble de collection jusqu'à ce qu'il collecte tout, sans s'arrêter. Souvent, G1 manquait le calcul de la quantité de travail et travaillait trop longtemps. Une fois que jep-344 est implémenté, G1 peut passer au garbage collection incrémentiel et si l'étape suivante prend plus de temps que ce qui est raisonnable, cette étape peut être abandonnée. 346 : renvoyer rapidement la mémoire engagée inutilisée du G1 Et quelques mises à jour supplémentaires dans le camp de l'assembleur G1 susmentionné. Parfois, il arrivait qu'il y ait un tas de mémoire tas Java, mais personne ne l'utilisait, cette mémoire. Dans Java 12, vous pouvez désormais « restituer » la mémoire inactive au système d’exploitation. Auparavant, il était très rare que le G1 abandonne de la mémoire, mais maintenant tout a été simplifié. Avec la nouvelle fonctionnalité, l'application est définie comme inactive si l'intervalle depuis la dernière build a expiré et qu'il n'y a pas de cycle simultané. Une autre situation est si ou si la fonction getloadavg(), qui est surveillée depuis un certain temps, affiche une charge inférieure au seuil acceptable défini. Si l’un des deux événements se produit, le garbage collection partiel commence. Ce que Java 12 n'a pas : les littéraux de chaînes brutes De nombreux développeurs étaient intéressés par cette fonctionnalité, mais elle n'est jamais apparue dans cette version. Ses auteurs ont décidé qu'il y avait encore du travail à faire. Nous osons donc espérer qu'une fonction permettant de travailler facilement avec des chaînes littérales apparaîtra dans l'une des prochaines versions de Java. La prise en charge des littéraux de chaîne bruts vous permet de travailler avec des informations de chaîne quelle que soit la langue. Cela élimine le besoin de blindage. Particulièrement utile dans les expressions régulières, où les barres obliques inverses sont largement utilisées, et dans les chemins Windows, où les barres obliques inverses sont utilisées comme délimiteurs. Autrement dit, pour éviter de telles constructions : C:\\My\\Test\\Pack\\
Chaque programmeur rencontre souvent l'une ou l'autre difficulté dans son travail. Parfois, ils sont associés à l'inexpérience du développeur, mais parfois à l'imperfection de l'outil lui-même. Java est un excellent langage, mais il est loin d'être parfait. Peut-être avez-vous déjà rencontré quelque chose en Java et savez-vous ce que vous aimeriez changer dans votre « outil » (langage) ? Partagez dans les commentaires !

conclusions

Il n’y a pas eu de révolution avec Java 12. Pourtant, personne ne l’avait prévu. Cependant, un certain nombre d'innovations visent à optimiser le fonctionnement des applications et à accélérer le travail, ce qui est une bonne nouvelle. À propos, IDEA prend déjà en charge JDK 12, vous pouvez donc tester ses capacités. Bien sûr, peu de mises à jour affectent directement les débutants, même si même ceux qui viennent de commencer à apprendre JavaRush peuvent jouer avec le nouveau commutateur (après avoir défini l'indicateur --enable-preview).
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION