{"id":6090,"date":"2021-09-28T14:31:20","date_gmt":"2021-09-28T14:31:20","guid":{"rendered":"https:\/\/thorsten.qodeinteractive.com\/?p=6090"},"modified":"2022-04-13T01:51:21","modified_gmt":"2022-04-13T01:51:21","slug":"the-great-innovators","status":"publish","type":"post","link":"https:\/\/proskillssaudi.com\/fr\/the-great-innovators\/","title":{"rendered":"Les JEP fournis dans Java 17 vont des nouvelles fonctionnalit\u00e9s du langage aux am\u00e9liorations des biblioth\u00e8ques principales en passant par les aper\u00e7us et les incubateurs."},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"6090\" class=\"elementor elementor-6090\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4334ad5 elementor-section-boxed elementor-section-height-default elementor-section-height-default qodef-elementor-content-no\" data-id=\"4334ad5\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7a10102\" data-id=\"7a10102\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f1c6ad9 elementor-widget elementor-widget-text-editor\" data-id=\"f1c6ad9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.15.0 - 20-08-2023 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p>Il y a quelque chose dans Java 17 pour tout le monde. Vous voulez de nouvelles fonctionnalit\u00e9s linguistiques\u00a0? D\u00e9couvrez les classes scell\u00e9es et l&#039;aper\u00e7u de la correspondance de mod\u00e8les pour\u00a0<code>interrupteur<\/code>. Vous recherchez une s\u00e9curit\u00e9 renforc\u00e9e ? JDK 17 fournit des filtres de d\u00e9s\u00e9rialisation sp\u00e9cifiques au contexte. Vous vous souciez des nouvelles plateformes\u00a0? Il existe maintenant une version du JDK pour les Mac 64 bits avec l&#039;architecture ARM AArch64. Que diriez-vous d&#039;ann\u00e9es de stabilit\u00e9? Java SE 17 est une version de support \u00e0 long terme (LTS), tout comme Java 11 et Java 8.<\/p><p>Officiellement, l&#039;anniversaire de Java 17 (c&#039;est-\u00e0-dire lorsqu&#039;il est g\u00e9n\u00e9ralement disponible) est le 14 septembre 2021, mais ses 14 JEP sont visibles, bien s\u00fbr, depuis des mois. Les d\u00e9veloppeurs ont jou\u00e9 avec le code source et ex\u00e9cut\u00e9 les binaires, et beaucoup ont apport\u00e9 des commentaires, des rapports de bogues et des suggestions.<\/p><p>Pour les d\u00e9tails techniques sur Java 17 et chacun de ses JEP, consultez les ressources suivantes\u00a0:<\/p><ul class=\"obullets\"><li><a href=\"https:\/\/blogs.oracle.com\/java\/post\/announcing-java17\" target=\"_blank\" rel=\"noopener\">Le blog officiel de Java : L&#039;arriv\u00e9e de Java 17<\/a><\/li><li><a href=\"https:\/\/www.oracle.com\/news\/announcement\/oracle-releases-java-17-2021-09-14\/\" target=\"_blank\" rel=\"noopener\">Le communiqu\u00e9 de presse officiel d&#039;Oracle<\/a><\/li><li><a href=\"https:\/\/openjdk.java.net\/projects\/jdk\/17\/\" target=\"_blank\" rel=\"noopener\">La page de ressources JDK 17, qui renvoie aux JEP<\/a><\/li><li><a href=\"https:\/\/jdk.java.net\/17\/release-notes\" target=\"_blank\" rel=\"noopener\">Les notes de version du JDK 17<\/a><\/li><li><a href=\"https:\/\/openjdk.java.net\/projects\/jdk\/17\/spec\/\" target=\"_blank\" rel=\"noopener\">Plateforme Java SE 17 (JSR 392)<\/a><\/li><li><a href=\"https:\/\/cr.openjdk.java.net\/~iris\/se\/17\/latestSpec\/java-se-17-jls-fr-diffs.pdf\" target=\"_blank\" rel=\"noopener\"><em>La sp\u00e9cification du langage Java<\/em>, \u00e9dition Java SE 17<\/a><\/li><li><a href=\"https:\/\/cr.openjdk.java.net\/~iris\/se\/17\/latestSpec\/java-se-17-jvms-fr-diffs.pdf\" target=\"_blank\" rel=\"noopener\"><em>La sp\u00e9cification de la machine virtuelle Java<\/em>, \u00e9dition Java SE 17<\/a><\/li><li><a href=\"https:\/\/cr.openjdk.java.net\/~iris\/se\/17\/latestSpec\/\/api\/index.html\" target=\"_blank\" rel=\"noopener\">Sp\u00e9cification de l&#039;API Java\u00a017<\/a><\/li><li><a href=\"https:\/\/cr.openjdk.java.net\/~iris\/se\/17\/latestSpec\/apidiffs\/overview-summary.html\" target=\"_blank\" rel=\"noopener\">Diff\u00e9rences d&#039;API entre Java SE 16 et Java SE 17<\/a><\/li><\/ul><p>Java 17 est \u00e9galement une version LTS, ce qui signifie que vous pouvez la d\u00e9ployer en sachant qu&#039;elle sera maintenue via des correctifs, des correctifs et des am\u00e9liorations de performances pendant de nombreuses ann\u00e9es. Vous pouvez en savoir plus \u00e0 ce sujet dans l&#039;article de Donald Smith &quot;<a href=\"https:\/\/blogs.oracle.com\/javamagazine\/post\/java-long-term-support-lts\" target=\"_blank\" rel=\"noopener\">L&#039;art du support \u00e0 long terme et ce que LTS signifie pour l&#039;\u00e9cosyst\u00e8me Java<\/a>.\u201d<\/p><p>Ci-dessous, j&#039;explore quatre des JEP qui sont probablement les plus pertinents pour les programmeurs et les architectes en d\u00e9veloppement d&#039;applications qui envisagent une migration depuis Java 16 ou Java 11, et je discuterai \u00e9galement d&#039;autres fonctionnalit\u00e9s \u00e9volutives.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c1cc7b2 elementor-widget elementor-widget-text-editor\" data-id=\"c1cc7b2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1203a88 elementor-section-boxed elementor-section-height-default elementor-section-height-default qodef-elementor-content-no\" data-id=\"1203a88\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c933f6c\" data-id=\"c933f6c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1a517a5 elementor-widget elementor-widget-text-editor\" data-id=\"1a517a5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h2>Caract\u00e9ristique linguistique : Classes scell\u00e9es (JEP 409)<\/h2><p>Les classes scell\u00e9es pourraient \u00eatre la fonctionnalit\u00e9 finalis\u00e9e la plus attendue du JDK 17, et elles ont \u00e9t\u00e9 pr\u00e9visualis\u00e9es dans le JDK 16. En bref, les classes scell\u00e9es limitent les autres classes (ou interfaces) qui peuvent les \u00e9tendre. Comme\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/409\" target=\"_blank\" rel=\"noopener\">JEP 409<\/a>\u00a0d\u00e9crit, une classe ou une interface scell\u00e9e ne peut \u00eatre \u00e9tendue ou impl\u00e9ment\u00e9e que par les classes et interfaces autoris\u00e9es \u00e0 le faire. Une classe est scell\u00e9e en appliquant le\u00a0<code>scell\u00e9<\/code>\u00a0modificateur \u00e0 sa d\u00e9claration. Puis, apr\u00e8s tout\u00a0<code>s&#039;\u00e9tend<\/code>\u00a0et\u00a0<code>met en oeuvre<\/code>\u00a0clauses, les\u00a0<code>permis<\/code>\u00a0La clause sp\u00e9cifie les classes qui sont autoris\u00e9es \u00e0 \u00e9tendre la classe scell\u00e9e. Si ces classes ne sont pas express\u00e9ment autoris\u00e9es \u00e0 apporter des modifications, elles ne peuvent pas apporter de modifications.<\/p><p>Pourquoi devriez-vous vous en soucier ? Selon Aurelio Garcia-Ribeyro, directeur de la gestion des produits pour Java SE, \u00ab\u00a0les classes scell\u00e9es me permettent de cr\u00e9er un ensemble d&#039;options dont je sais qu&#039;elles sont finies, et cela simplifie le code car je peux alors traiter les classes comme si elles \u00e9taient des \u00e9num\u00e9rations\u00a0\u00bb.<\/p><p>Le fait d&#039;avoir des classes scell\u00e9es, dit-il, \u00e9limine la crainte qu&#039;un autre code puisse remplacer votre code ou modifier son comportement d&#039;une mani\u00e8re que vous ne pouvez pas anticiper. &quot;Cela cr\u00e9e une garantie que personne ne peut am\u00e9liorer une biblioth\u00e8que d&#039;une mani\u00e8re qui cassera mon code \u00e0 l&#039;avenir.&quot;<\/p><h2>Mise \u00e0 niveau de la biblioth\u00e8que principale\u00a0: filtres de d\u00e9s\u00e9rialisation sp\u00e9cifiques au contexte (JEP 415)<\/h2><p>Les filtres de d\u00e9s\u00e9rialisation sp\u00e9cifiques au contexte s&#039;appuient sur une fonctionnalit\u00e9 introduite dans Java 9 (voir\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/290\" target=\"_blank\" rel=\"noopener\">JEP 290\u00a0: Filtrer les donn\u00e9es de s\u00e9rialisation entrantes<\/a>). Cet ancien JEP offrait \u00e0 la fois des filtres de d\u00e9s\u00e9rialisation par flux modifiables et un filtre statique \u00e0 l&#039;\u00e9chelle de la JVM. Les filtres par flux, malheureusement, n&#039;ont pas bien \u00e9volu\u00e9 et il est difficile de mettre \u00e0 jour les filtres apr\u00e8s l&#039;envoi du code. Les filtres de JEP 290 ne peuvent pas non plus imposer de filtrage sur les op\u00e9rations de d\u00e9s\u00e9rialisation effectu\u00e9es par des biblioth\u00e8ques tierces dans une application. Le filtre \u00e0 l&#039;\u00e9chelle de la JVM \u00e9tait limit\u00e9 dans la mesure o\u00f9 il n&#039;\u00e9tait sp\u00e9cifi\u00e9 qu&#039;une seule fois, au d\u00e9marrage, et \u00e9tait parfois trop inclusif ou trop restrictif.<\/p><p>La nouvelle fonctionnalit\u00e9\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/415\" target=\"_blank\" rel=\"noopener\">dans la JEP 415<\/a>\u00a0est pr\u00e9sent\u00e9 comme une fabrique de filtres \u00e0 l&#039;\u00e9chelle de la JVM. Les filtres sont dynamiques et sp\u00e9cifiques au contexte. Pour des raisons de compatibilit\u00e9 descendante, si aucune fabrique de filtres n&#039;est d\u00e9finie, la fabrique int\u00e9gr\u00e9e renvoie un filtre statique \u00e0 l&#039;\u00e9chelle de la JVM s&#039;il en a \u00e9t\u00e9 configur\u00e9 un.<\/p><p>Le probl\u00e8me, dit Garcia-Ribeyro, est que chaque fois qu&#039;un d\u00e9veloppeur cr\u00e9ait un pipeline, le d\u00e9veloppeur devait d\u00e9finir ce qu&#039;\u00e9tait le filtre, y compris une liste d&#039;autorisation et une liste de refus. Cependant, selon Garcia-Ribeyro, &quot;Si j&#039;utilise une biblioth\u00e8que tierce, ils utilisent leurs propres flux. Je pouvais d\u00e9finir un filtre \u00e0 l&#039;\u00e9chelle de la JVM, mais je devais savoir, \u00e0 l&#039;avance, tout ce que la biblioth\u00e8que voulait faire. Cela a demand\u00e9 beaucoup de travail. \u00bb<\/p><p>En revanche, JEP 415 fournit une usine de filtres. &quot;Avec une usine de filtres, les filtres de d\u00e9s\u00e9rialisation sont d\u00e9sormais extr\u00eamement plus faciles \u00e0 utiliser&quot;, dit-il, &quot;au point que c&#039;est la seule fonctionnalit\u00e9 que nous retravaillons et modernisons d\u00e9j\u00e0, jusqu&#039;au JDK 11 et JDK 8&quot;.<\/p><p>Aucun d\u00e9lai n&#039;est fix\u00e9 pour le retour de la JEP 415 \u00e0 l&#039;ancienne version de Java, mais Garcia-Ribeyro insiste\u00a0: &quot;Nous y travaillons avec acharnement.&quot;<\/p><h2>Mise \u00e0 jour de la biblioth\u00e8que principale\u00a0: nouveau pipeline de rendu macOS (JEP 382)<\/h2><p>Utilisez-vous un Mac ? Oui, je ne sais pas ce que je ferais sans mon MacBook Pro quadric\u0153ur i7. Le nouveau pipeline de rendu macOS d\u00e9crit par\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/382\" target=\"_blank\" rel=\"noopener\">JEP 382<\/a>\u00a0est assez simple\u00a0: cela d\u00e9place les graphiques 2D de la JVM de l&#039;utilisation de l&#039;API Apple OpenGL obsol\u00e8te vers la plus r\u00e9cente\u00a0<a href=\"https:\/\/developer.apple.com\/metal\/\" target=\"_blank\" rel=\"noopener\">API Apple M\u00e9tal<\/a>. Bien s\u00fbr, si vous utilisez Java pour les charges de travail back-end, vous ne vous en soucierez probablement pas.<\/p><p><a href=\"https:\/\/developer.apple.com\/documentation\/macos-release-notes\/macos-mojave-10_14-release-notes?preferredLanguage=occ#3035786\" target=\"_blank\" rel=\"noopener\">Apple a commenc\u00e9 \u00e0 supprimer OpenGL dans macOS Mojave 10.14<\/a>, informant : \u00ab Les API des frameworks OpenGL et OpenCL sont obsol\u00e8tes et restent pr\u00e9sentes \u00e0 des fins de compatibilit\u00e9. Passez \u00e0 Metal si votre application utilise OpenGL ou OpenCL.\u00a0\u00bb<\/p><p>Cette modification s&#039;applique aux Mac \u00e0 processeur Intel et ARM. Il s&#039;agit d&#039;un changement cach\u00e9. Comme le dit la documentation JEP 382, \u00ab\u00a0Les modifications se limitent au code sp\u00e9cifique \u00e0 macOS et m\u00eame l\u00e0, seule une quantit\u00e9 minimale de code partag\u00e9 entre Metal et OpenGL est mise \u00e0 jour. Nous n&#039;avons introduit aucune nouvelle API Java, ni modifi\u00e9 aucune API existante.\u00a0\u00bb<\/p><p>La documentation JEP 382 note en outre : \u00ab Apple affirme que le framework Metal, leur rempla\u00e7ant d&#039;OpenGL, a des performances sup\u00e9rieures. Pour l&#039;API Java 2D, c&#039;est g\u00e9n\u00e9ralement le cas \u00e0 quelques exceptions pr\u00e8s.<\/p><p>Pour l&#039;instant, la JVM Java 17 utilisera par d\u00e9faut OpenGL ; il n&#039;utilisera Metal que si OpenGL n&#039;est pas pr\u00e9sent ou si l&#039;utilisateur lance un commutateur de ligne de commande. Garcia-Ribeyro demande cependant aux utilisateurs de Mac d&#039;essayer le nouveau code. &quot;Nous voulons que vous activiez ce nouveau pipeline de rendu. Il devrait \u00eatre plus rapide ou au moins identique aux performances graphiques existantes sur Mac.<\/p><h2>Aper\u00e7u\u00a0: Pattern matching pour switch (JEP 406)<\/h2><p>J&#039;en ai probablement entendu parler\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/406\" target=\"_blank\" rel=\"noopener\">correspondance de mod\u00e8le pour\u00a0<code>interrupteur<\/code>\u00a0(PEC 406)<\/a>\u00a0que toute autre fonctionnalit\u00e9 du JDK 17 - et Garcia-Ribeyro en est \u00e9galement ravi. &quot;Cette fonctionnalit\u00e9 rend Java meilleur pour tout le monde&quot;, dit-il, &quot;et quelques versions plus tard, elle fera partie de la norme Java.&quot;<\/p><p>Ce PEC s&#039;appuie sur les travaux de\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/394\" target=\"_blank\" rel=\"noopener\">correspondance de mod\u00e8le pour\u00a0<code>exemple de<\/code>\u00a0(PEJ 394)<\/a>, qui a \u00e9t\u00e9 finalis\u00e9 pour JDK 16. La nouvelle fonctionnalit\u00e9 offre deux grands avantages.<\/p><ul class=\"obullets\"><li>Cela fait\u00a0<code>interrupteur<\/code>\u00a0d\u00e9clarations beaucoup plus programmables et flexibles en permettant aux mod\u00e8les d&#039;appara\u00eetre dans\u00a0<code>Cas<\/code>\u00a0\u00c9tiquettes. Pour citer la documentation du JEP, \u00ab\u00a0Vous ne pouvez\u00a0<code>interrupteur<\/code>\u00a0sur les valeurs de quelques types - types num\u00e9riques, types enum et\u00a0<code>Corde<\/code>\u00a0- et vous ne pouvez tester que l&#039;\u00e9galit\u00e9 exacte par rapport aux constantes. Nous aimerions peut-\u00eatre utiliser des mod\u00e8les pour tester la m\u00eame variable par rapport \u00e0 un certain nombre de possibilit\u00e9s, en prenant une action sp\u00e9cifique sur chacune, mais puisque les\u00a0<code>interrupteur<\/code>\u00a0ne supporte pas cela, on se retrouve avec une cha\u00eene de\u00a0<code>sinon<\/code>\u00a0essais. \u00bb<\/li><li>Il fournit un m\u00e9canisme plus gracieux (et convivial pour les d\u00e9veloppeurs) pour g\u00e9rer les conditions nulles. Encore une fois, pour citer : \u00ab Traditionnellement,\u00a0<code>interrupteur<\/code>\u00a0d\u00e9clarations et expressions lancer\u00a0<code>NullPointerException<\/code>\u00a0si l&#039;expression du s\u00e9lecteur est \u00e9valu\u00e9e \u00e0 null, le test de null doit donc \u00eatre effectu\u00e9 en dehors du commutateur\u2026 C&#039;\u00e9tait raisonnable lorsque\u00a0<code>interrupteur<\/code>\u00a0pris en charge que quelques types de r\u00e9f\u00e9rence. Toutefois, si\u00a0<code>interrupteur<\/code>\u00a0permet une expression de s\u00e9lecteur de n&#039;importe quel type, et les \u00e9tiquettes de cas peuvent avoir des mod\u00e8les de type, alors le test nul autonome ressemble \u00e0 une distinction arbitraire, et invite un passe-partout inutile et une possibilit\u00e9 d&#039;erreur.<\/li><\/ul><p>Je m&#039;attends \u00e0 ce que la plupart des d\u00e9veloppeurs d\u00e9couvrent que lorsqu&#039;ils essaient de faire correspondre des mod\u00e8les pour\u00a0<code>interrupteur<\/code>, ils diront : &quot;O\u00f9 \u00e9tais-tu toute ma vie ?&quot;<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-241583c elementor-section-boxed elementor-section-height-default elementor-section-height-default qodef-elementor-content-no\" data-id=\"241583c\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-127bea7\" data-id=\"127bea7\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d22572f elementor-widget__width-initial elementor-widget elementor-widget-thorsten_core_single_image\" data-id=\"d22572f\" data-element_type=\"widget\" data-widget_type=\"thorsten_core_single_image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"qodef-shortcode qodef-m  qodef-single-image qodef-layout--default  qodef-si-main-appear-animation--no qodef-si-additional-appear-animation--no qodef-appear-animation--left\">\n\t<div class=\"qodef-m-image\">\n\t\t\t<img width=\"800\" height=\"883\" src=\"https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1.jpg\" class=\"attachment-full size-full\" alt=\"d\" decoding=\"async\" srcset=\"https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1.jpg 800w, https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1-600x662.jpg 600w, https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1-272x300.jpg 272w, https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1-768x848.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t<\/div>\n\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-b88d971\" data-id=\"b88d971\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-391f62a elementor-widget__width-initial elementor-widget elementor-widget-thorsten_core_single_image\" data-id=\"391f62a\" data-element_type=\"widget\" data-widget_type=\"thorsten_core_single_image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"qodef-shortcode qodef-m  qodef-single-image qodef-layout--default  qodef-si-main-appear-animation--no qodef-si-additional-appear-animation--no qodef-appear-animation--left\">\n\t<div class=\"qodef-m-image\">\n\t\t\t<img width=\"800\" height=\"883\" src=\"https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2.jpg\" class=\"attachment-full size-full\" alt=\"d\" decoding=\"async\" srcset=\"https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2.jpg 800w, https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2-600x662.jpg 600w, https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2-272x300.jpg 272w, https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2-768x848.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t<\/div>\n\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6b5ba9f elementor-section-boxed elementor-section-height-default elementor-section-height-default qodef-elementor-content-no\" data-id=\"6b5ba9f\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f69b92a\" data-id=\"f69b92a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f9e5338 elementor-widget elementor-widget-text-editor\" data-id=\"f9e5338\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h2>Autres nouveaut\u00e9s de Java 17<\/h2><p>Il existe une v\u00e9ritable corne d&#039;abondance de nouvelles fonctionnalit\u00e9s dans Java 17. Voici quelques \u00e9l\u00e9ments qui m\u00e9ritent d&#039;\u00eatre \u00e9tudi\u00e9s.<\/p><ul class=\"obullets\"><li>L&#039;API de fonction et de m\u00e9moire \u00e9trang\u00e8re, qui permet d&#039;invoquer du code et d&#039;acc\u00e9der \u00e0 des ressources \u00ab\u00a0\u00e9trang\u00e8res\u00a0\u00bb en dehors de la JVM, est actuellement en cours d&#039;incubation. (Voir\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/412\" target=\"_blank\" rel=\"noopener\">JEP 412<\/a>.)<\/li><li>Java a maintenant de meilleurs g\u00e9n\u00e9rateurs de nombres pseudo-al\u00e9atoires. (Voir\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/356\" target=\"_blank\" rel=\"noopener\">JEP 356<\/a>.)<\/li><li>Java a de nouveaux utilitaires pour travailler avec des valeurs hexad\u00e9cimales. (Voir\u00a0<a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8251989\" target=\"_blank\" rel=\"noopener\">JDK-8251989<\/a>.)<\/li><li>La valeur par d\u00e9faut pour les poign\u00e9es de main de s\u00e9curit\u00e9 dans JDK 17 est TLS 1.3 ; les versions pr\u00e9c\u00e9dentes de Java utilisaient TLS 1.2. (Voir\u00a0<a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8217633\" target=\"_blank\" rel=\"noopener\">JDK-8217633<\/a>.)<\/li><li>Il existe un port Java vers macOS sur l&#039;architecture AArm64. (Voir\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/391\" target=\"_blank\" rel=\"noopener\">JEP 391<\/a>.)<\/li><\/ul><p>Il existe \u00e9galement des d\u00e9pr\u00e9ciations et des suppressions, notamment les \u00e9l\u00e9ments suivants\u00a0:<\/p><ul class=\"obullets\"><li>L&#039;acc\u00e8s externe aux composants internes de Java a \u00e9t\u00e9 supprim\u00e9 via l&#039;encapsulation, \u00e0 quelques exceptions pr\u00e8s telles que\u00a0<code>sun.misc.Unsafe<\/code>. (Voir\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/403\" target=\"_blank\" rel=\"noopener\">JEP 403<\/a>.)<\/li><li>Les compilateurs AOT et JIT ont \u00e9t\u00e9 supprim\u00e9s de la JVM HotSpot. (Voir\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/410\" target=\"_blank\" rel=\"noopener\">JEP 410<\/a>.)<\/li><li>L&#039;API Applet est obsol\u00e8te pour suppression. (Voir\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/398\" target=\"_blank\" rel=\"noopener\">JEP 398<\/a>.)<\/li><li>Le gestionnaire de s\u00e9curit\u00e9 est obsol\u00e8te pour suppression. (Voir\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/411\" target=\"_blank\" rel=\"noopener\">JEP 411<\/a>.)<\/li><li>Les algorithmes de s\u00e9curit\u00e9 faibles 3DES et RC4 de Kerberos sont obsol\u00e8tes. (Voir\u00a0<a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8139348\" target=\"_blank\" rel=\"noopener\">JDK-8139348<\/a>.)<\/li><li>Le m\u00e9canisme d&#039;usine d&#039;impl\u00e9mentation de socket est obsol\u00e8te. (Voir\u00a0<a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8235139\" target=\"_blank\" rel=\"noopener\">JDK-8235139<\/a>.)<\/li><\/ul><p>Enfin, il existe une nouvelle fa\u00e7on de t\u00e9l\u00e9charger la r\u00e9vision actuelle de Java 17 via un lien statique. Dans le pass\u00e9, chaque version incr\u00e9mentielle d&#039;un JDK avait sa propre URL, ce qui rendait difficile l&#039;inclusion par programmation de la derni\u00e8re version dans un script de construction.<\/p><p>&quot;Nous allons maintenant vous donner une URL permanente, afin que vous puissiez \u00e9crire un script qui dit, &#039;va chercher la derni\u00e8re version de JDK 17&#039;&quot;, explique Garcia-Ribeyro. &quot;Nous aurons m\u00eame un exemple de fichier Docker qui garantira que chaque fois que vous construisez, il r\u00e9cup\u00e8re la derni\u00e8re version de JDK 17 pour vous.&quot;<\/p><h2>Conclusion<\/h2><p>Vous ne pouvez pas juger un livre par sa couverture, et vous ne pouvez pas juger une version Java en comptant ses JEP. Les changements dans Java 17 sont significatifs par rapport \u00e0 Java 16 et, en tant que version LTS, la plate-forme Java 17 montre une \u00e9volution significative par rapport \u00e0 Java 11 ou Java 8. Avec des fonctionnalit\u00e9s de langage suppl\u00e9mentaires, des am\u00e9liorations d&#039;ex\u00e9cution, des pr\u00e9visualisations et des incubateurs, et litt\u00e9ralement des milliers de petits correctifs , Java 17 est pr\u00eat \u00e0 devenir la nouvelle norme de plate-forme Java.<\/p><h2>Creusez plus profond\u00e9ment<\/h2><ul class=\"obullets\"><li><a class=\"o-hf\" href=\"https:\/\/blogs.oracle.com\/javamagazine\/post\/java-long-term-support-lts\" target=\"_blank\" rel=\"noopener\">L&#039;art du support \u00e0 long terme et ce que LTS signifie pour l&#039;\u00e9cosyst\u00e8me Java<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/hidden-gems-jdk16-jdk17-jep\" target=\"_blank\" rel=\"noopener\">Les joyaux cach\u00e9s de Java 16 et Java 17<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-architects-loom-panama-valhalla\" target=\"_blank\" rel=\"noopener\">Que construisent-ils et pourquoi ? 6 questions aux architectes Java<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/inside-the-language-sealed-types\" target=\"_blank\" rel=\"noopener\">\u00c0 l&#039;int\u00e9rieur de la langue\u00a0: types scell\u00e9s<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-hotspot-jvm-switches-jdk11-jdk17\" target=\"_blank\" rel=\"noopener\">Les meilleures options et commutateurs HotSpot JVM pour Java 11 \u00e0 Java 17<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-runtime-encapsulation-internals\" target=\"_blank\" rel=\"noopener\">Un aper\u00e7u de Java 17\u00a0: encapsuler les composants internes de l&#039;environnement d&#039;ex\u00e9cution Java<\/a><\/li><\/ul><p>\u00a0<\/p><p>Source : https:\/\/blogs.oracle.com\/post\/java-jdk-17-generally-available-v2<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Lorem ipsum dolor sit amet, sea ei diam ocurreret. Atqui clita eu eos, in interesset mediocritatem sit. Saperet commune invenire at per, ne consul eirmod scaevola ius, case scripta id vis. Ad cum magna deleniti. Nihil antiopam et mei, an sea facer mnesarchum, sea ne soluta appetere tacimates. Ad soluta ignota corrumpit eos. A patrioque delicatissimi ut, per veritus alienum te, nec choro soluta fabulas in. Quod sensibus est id<\/p>","protected":false},"author":1,"featured_media":17013,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[22],"_links":{"self":[{"href":"https:\/\/proskillssaudi.com\/fr\/wp-json\/wp\/v2\/posts\/6090"}],"collection":[{"href":"https:\/\/proskillssaudi.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/proskillssaudi.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/proskillssaudi.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/proskillssaudi.com\/fr\/wp-json\/wp\/v2\/comments?post=6090"}],"version-history":[{"count":5,"href":"https:\/\/proskillssaudi.com\/fr\/wp-json\/wp\/v2\/posts\/6090\/revisions"}],"predecessor-version":[{"id":17014,"href":"https:\/\/proskillssaudi.com\/fr\/wp-json\/wp\/v2\/posts\/6090\/revisions\/17014"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/proskillssaudi.com\/fr\/wp-json\/wp\/v2\/media\/17013"}],"wp:attachment":[{"href":"https:\/\/proskillssaudi.com\/fr\/wp-json\/wp\/v2\/media?parent=6090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/proskillssaudi.com\/fr\/wp-json\/wp\/v2\/categories?post=6090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/proskillssaudi.com\/fr\/wp-json\/wp\/v2\/tags?post=6090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}