{"id":1112,"date":"2020-07-02T11:06:48","date_gmt":"2020-07-02T09:06:48","guid":{"rendered":"https:\/\/www.loicmathieu.fr\/wordpress\/?p=1112"},"modified":"2020-07-02T11:06:48","modified_gmt":"2020-07-02T09:06:48","slug":"java-15-quoi-de-neuf","status":"publish","type":"post","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-15-quoi-de-neuf\/","title":{"rendered":"Java 15 : quoi de neuf ?"},"content":{"rendered":"<p>Maintenant que Java 15 est features complete (Rampdown Phase One au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version, \u00e0 nous, les d\u00e9veloppeurs.<\/p>\n<p>Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res versions de Java, pour ceux qui voudraient les lire en voici les liens : <a href=\"http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-14-quoi-de-neuf\/\">Java 14<\/a>, <a href=\"http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-13-quoi-de-neuf\/\">Java 13<\/a>, <a href=\"http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-12-quoi-de-neuf\/\">Java 12<\/a>, <a href=\"http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-11-quoi-de-neuf\/\">Java 11<\/a>,\u00a0<a href=\"http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-10-quoi-de-neuf\/\">Java 10,<\/a>\u00a0et\u00a0<a href=\"http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/les-nouveautes-de-java-9-pour-les-developeurs\/\">Java 9<\/a>.<\/p>\n<p>Cette nouvelle version apporte son lots de nouvelles JEP, dont la principale est l&rsquo;ajout des Sealed Classes. Les Records et le Pattern Matching introduits en Java 14 restent en preview dans cette version.<\/p>\n<h2>JEP 360 : Sealed Classes<\/h2>\n<p>Les Sealed Classes permettent de limiter le nombre d&rsquo;impl\u00e9mentations d&rsquo;une classe ou d&rsquo;une interface \u00e0 une liste pr\u00e9d\u00e9finie. La hi\u00e9rarchie de cette classe\/interface est donc close (scell\u00e9e \/ sealed).<\/p>\n<p>Comme cette hi\u00e9rarchie est connue \u00e0 la compilation, cela ouvre des possibilit\u00e9s pour le Pattern Matching, une future impl\u00e9mentation de switch bas\u00e9 sur le type d&rsquo;un objet est pr\u00e9vue dans une des prochaines versions de Java. Cela permet aussi \u00e0 l&rsquo;auteur d&rsquo;une classe\/interface d&rsquo;exprimer son utilisation de mani\u00e8re plus fine que via les modificateurs de visibilit\u00e9 en restreignant son utilisation \u00e0 une liste pr\u00e9cise.<\/p>\n<p>Voici des exemples d&rsquo;utilisation extraits de la JEP<\/p>\n<pre><code>package com.example.geometry;\n\npublic sealed class Shape\n    permits Circle, Rectangle, Square {...}\n<\/code><\/pre>\n<p>Si les classes sont d\u00e9clar\u00e9es dans le m\u00eame fichier source, la clause <code>permits<\/code> peut \u00eatre ignor\u00e9e.<\/p>\n<pre><code>package com.example.geometry;\n\nsealed class Shape {...}\n    class Circle    extends Shape {...}\n    class Rectangle extends Shape {...}\n    class Square    extends Shape {...}\n<\/code><\/pre>\n<p>Maintenant qu&rsquo;on conna\u00eet la liste des classes impl\u00e9mentant une interface, on peut \u00e9crire plus facilement une suite de if\/else sur la classe <code>Shape<\/code> :<\/p>\n<pre><code>Shape rotate(Shape shape, double angle) {\n    if (shape instanceof Circle) return shape;\n    else if (shape instanceof Rectangle) return shape.rotate(angle);\n    else if (shape instanceof Square) return shape.rotate(angle);\n}\n<\/code><\/pre>\n<p>Quand le Pattern Matching aura \u00e9t\u00e9 \u00e9tendu pour couvrir les Sealed Classes, on pourra alors \u00e9crire un switch avec un test sur le type d&rsquo;un objet:<\/p>\n<pre><code>Shape rotate(Shape shape, double angle) {\n    return switch (shape) {\/\/ won't compile in Java 15 ...\n        case Circle c    -&gt; c;  \/\/ no action needed\n        case Rectangle r -&gt; r.rotate(angle);\n        case Square s    -&gt; s.rotate(angle);\n    }\n}\n<\/code><\/pre>\n<p>Un nouveau mot cl\u00e9 a \u00e9t\u00e9 introduit <code>non-sealed<\/code> qui permet d&rsquo;ouvrir la hi\u00e9rarchie depuis une des sous-classes ou sous-interfaces d&rsquo;une Sealed Class.<\/p>\n<h2>Autres nouveaut\u00e9s<\/h2>\n<ul><li><a title=\"JEP 339\" href=\"https:\/\/openjdk.java.net\/jeps\/339\" target=\"_blank\" rel=\"noopener noreferrer\">JEP 339<\/a>: Edwards-Curve Digital Signature Algorithm (EdDSA). Impl\u00e9mentation de l\u2019algorithme de cryptographie EdDSA.<\/li>\n\n<li><a title=\"JEP 373\" href=\"https:\/\/openjdk.java.net\/jeps\/373\" target=\"_blank\" rel=\"noopener noreferrer\">JEP 373<\/a>: Reimplement the Legacy DatagramSocket API. Apr\u00e8s avoir r\u00e9-impl\u00e9ment\u00e9 les <code>java.net.Socket<\/code> et <code>java.net.ServerSocket<\/code> dans Java 13, c&rsquo;est au tour des <code>java.net.DatagramSocket<\/code> et <code>java.net.MulticastSocket<\/code>. La motivation est la m\u00eame, remplacer une impl\u00e9mentation vieillissante et difficile \u00e0 maintenir par une impl\u00e9mentation plus r\u00e9cente pour faciliter la future impl\u00e9mentation des Lightweight Threads du projet Loom.<\/li>\n\n<li><a title=\"JDK-8244441\" href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8244441\" target=\"_blank\" rel=\"noopener noreferrer\">JDK-8244441<\/a>: Support de l&rsquo;extension <code>certificate_authorities<\/code> pour TLS 1.3.<\/li>\n\n<li><a title=\"JDK-8215401\" href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8215401\">JDK-8215401<\/a>: <code>CharSequence.isEmpty()<\/code>.<\/li>\n<\/ul>\n<h2>Les fonctionnalit\u00e9s qui passent de preview \u00e0 standard<\/h2>\n<p>Les fonctionnalit\u00e9s suivantes, qui \u00e9taient en preview sont maintenant en standard, pour les d\u00e9tails sur celles-ci vous pouvez vous r\u00e9f\u00e9rer \u00e0 mes articles pr\u00e9c\u00e9dents.<\/p>\n<ul><li><a title=\"JEP 377\" href=\"https:\/\/openjdk.java.net\/jeps\/377\" target=\"_blank\" rel=\"noopener noreferrer\">JEP 377<\/a>: ZGC: A Scalable Low-Latency Garbage Collector<\/li>\n\n<li><a title=\"JEP 379\" href=\"https:\/\/openjdk.java.net\/jeps\/379\" target=\"_blank\" rel=\"noopener noreferrer\">JEP 379<\/a>: Shenandoah: A Low-Pause-Time Garbage Collector<\/li>\n\n<li><a title=\"JEP 378\" href=\"https:\/\/openjdk.java.net\/jeps\/378\" target=\"_blank\" rel=\"noopener noreferrer\">JEP 378<\/a>: Text Blocks<\/li>\n\n<li><a title=\"JEP 358\" href=\"https:\/\/openjdk.java.net\/jeps\/358\" target=\"_blank\" rel=\"noopener noreferrer\">JEP 358<\/a>: Helpful NullPointerExceptions. La JEP 358 nous a offert des messages d&rsquo;erreur plus compr\u00e9hensibles pour les <code>NullPointerException<\/code> dans Java 14. \u00c0 mon grand regret cette fonctionnalit\u00e9 \u00e9tait d\u00e9sactiv\u00e9e par d\u00e9faut. Elle est maintenant activ\u00e9e par d\u00e9faut (via <a title=\"JDK-8233014\" href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8233014\" target=\"_blank\" rel=\"noopener noreferrer\">JDK-8233014<\/a>) et c&rsquo;est une tr\u00e8s bonne nouvelle !<\/li>\n<\/ul>\n<h2>Les fonctionnalit\u00e9s qui restent en preview<\/h2>\n<p>Les fonctionnalit\u00e9s suivantes restent en preview.<\/p>\n<ul><li><a title=\"JEP 375\" href=\"https:\/\/openjdk.java.net\/jeps\/375\" target=\"_blank\" rel=\"noopener noreferrer\">JEP 375<\/a>: Pattern Matching for instanceof. Pas de changement dans cette version mais la fonctionnalit\u00e9 reste en preview car des changements sont pr\u00e9vus pour les versions suivantes de Java.<\/li>\n\n<li><a title=\"JEP 383\" href=\"https:\/\/openjdk.java.net\/jeps\/383\" target=\"_blank\" rel=\"noopener noreferrer\">JEP 383<\/a>: Foreign-Memory Access API. Am\u00e9lioration et refactoring de la fonctionnalit\u00e9.<\/li>\n\n<li><a title=\"JEP 384\" href=\"https:\/\/openjdk.java.net\/jeps\/384\" target=\"_blank\" rel=\"noopener noreferrer\">JEP 384<\/a>: Records. L&rsquo;impl\u00e9mentation a \u00e9t\u00e9 revue suite \u00e0 la premi\u00e8re preview, on a entre autre maintenant la possibilit\u00e9 de cr\u00e9er des Records locaux et d&rsquo;utiliser les Sealed Classes avec les Records.<\/li>\n<\/ul>\n<h2>Les fonctionnalit\u00e9s d\u00e9pr\u00e9ci\u00e9es ou supprim\u00e9es<\/h2>\n<p>Pas mal de d\u00e9pr\u00e9ciation et de suppression dans cette release. Java a d\u00e9cid\u00e9 de se passer de certaines fonctionnalit\u00e9s plus utilis\u00e9es depuis longtemps ou qui impactent sa maintenance et c&rsquo;est g\u00e9n\u00e9ralement une bonne chose.<\/p>\n<ul><li><a title=\"JEP 385\" href=\"https:\/\/openjdk.java.net\/jeps\/385\" target=\"_blank\" rel=\"noopener noreferrer\">JEP 385<\/a>: Deprecate RMI Activation for Removal. C&rsquo;est une partie optionnelle de RMI, d\u00e9pr\u00e9ci\u00e9e depuis Java 8 et quasiment plus utilis\u00e9e. Elle sera supprim\u00e9e dans une prochaine release. Le reste de RMI reste support\u00e9.<\/li>\n\n<li><a title=\"JEP 381\" href=\"https:\/\/openjdk.java.net\/jeps\/381\">JEP 381<\/a>: Remove the Solaris and SPARC Ports. Une page d&rsquo;histoire du rachat de Sun par Oracle se termine. Lors de ce rachat Oracle a aussi achet\u00e9 un OS (Solaris) et une architecture CPU (SPARC). Ceux ci ne sont plus support\u00e9s par Java et leur impl\u00e9mentation dans le JVM (port) est supprim\u00e9e.<\/li>\n\n<li><a title=\"JEP 374\" href=\"https:\/\/openjdk.java.net\/jeps\/374\" target=\"_blank\" rel=\"noopener noreferrer\">JEP 374<\/a>: Disable and Deprecate Biased Locking. Biased Locking est une technique permettant d&rsquo;optimiser les locks qui sont utilis\u00e9s par un Thread unique. Elle ne serait plus aussi pertinente de nos jours avec les architectures CPU moderne, et entra\u00eenerait un co\u00fbt de maintenance assez \u00e9lev\u00e9. Elle devient d\u00e9sactiv\u00e9e par d\u00e9faut et sera supprim\u00e9e dans une future release.<\/li>\n\n<li><a title=\"JEP 372\" href=\"https:\/\/openjdk.java.net\/jeps\/372\" target=\"_blank\" rel=\"noopener noreferrer\">JEP 372<\/a>: Remove the Nashorn JavaScript Engine. Nashorn a \u00e9t\u00e9 int\u00e9gr\u00e9 dans Java 8, d\u00e9pr\u00e9ci\u00e9 en Java 11 et maintenant supprim\u00e9. Pour ex\u00e9cuter du JavaScript dans la JVM il faut se tourner du cot\u00e9 de GraalVM. Nashorn n&rsquo;\u00e9tait plus \u00e0 jour avec les nouvelles versions d&rsquo;ECMAScript et son support \u00e9tait trop co\u00fbteux alors qu&rsquo;une alternative de qualit\u00e9 existe avec GraalVM.<\/li>\n<\/ul>\n<h2>Performance<\/h2>\n<p>Chaque release apporte son lot d&rsquo;am\u00e9liorations de performance, tant en performance de pointe, qu&rsquo;en temps de d\u00e9marrage.<\/p>\n<p>Et la release 15 a vu quelques optimisations importantes :<\/p>\n<ul><li>G1 : Le Garbage Collector par d\u00e9faut a eu plusieurs am\u00e9liorations dans cette release, la plus int\u00e9ressante est celle d\u00e9crite dans l&rsquo;article de Stefan Johansson <a href=\"https:\/\/kstefanj.github.io\/2020\/04\/16\/g1-ootb-performance.html\" target=\"_blank\" rel=\"noopener noreferrer\">Improving G1 out-of-the-box performance<\/a> qui permet un meilleur calcul de la taille des r\u00e9gions de la heap, sp\u00e9cialement quand le Xmx et le Xms sont pas les m\u00eames.<\/li>\n\n<li>ZIP lookup : Lors du d\u00e9marrage d&rsquo;une JVM, celle-ci va rechercher (lookup) les entr\u00e9es (classes, ressources) dans les JARs (qui sont des ZIP), des am\u00e9liorations importantes ont \u00e9t\u00e9 r\u00e9alis\u00e9es par une suite de patchs qui m\u00e8ne \u00e0 un gain non n\u00e9gligeable pour la lecture de ces entr\u00e9es. Les d\u00e9tails sont sur le blog de Claes Redestad <a title=\"Zip lookups - a word from the sponsor\" href=\"https:\/\/cl4es.github.io\/2020\/04\/27\/Zip-Lookups.html\" target=\"_blank\" rel=\"noopener noreferrer\">Zip lookups &#8211; a word from the sponsor<\/a><\/li>\n\n<li>StringConcat : Les concat\u00e9nations de String sont optimis\u00e9es depuis Java 9 via une StringConcatFactory. Celle-ci a \u00e9t\u00e9 refactor\u00e9e pour prendre moins de temps \u00e0 d\u00e9marrer ainsi qu&rsquo;optimiser pour les cas de concat\u00e9nations les plus classiques.<\/li>\n\n<li>AppCDS : Application Class Data Sharing est une fonctionnalit\u00e9 qui permet de cr\u00e9er une archive de metadata de classe pour charger au d\u00e9marrage d&rsquo;une JVM, cela permet d&rsquo;\u00e9viter de chercher sur le disque, lire et parser une classe (petite description d&rsquo;AppCDS <a title=\"Quarkus, jlink et Application Class Data Sharing (AppCDS)\" href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/quarkus-jlink-et-application-class-data-sharing-appcds\/\" target=\"_blank\" rel=\"noopener noreferrer\">ici<\/a>). Avec Java 15, les metadatas des lambdas sont ajout\u00e9es \u00e0 l&rsquo;archive.<\/li>\n<\/ul>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Maintenant que Java 15 est features complete (Rampdown Phase One au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version, \u00e0 nous, les d\u00e9veloppeurs. Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res versions de Java, pour ceux qui voudraient les lire en voici les liens : Java 14, Java 13, Java 12, Java 11,\u00a0Java 10,\u00a0et\u00a0Java 9. Cette nouvelle version apporte son lots de nouvelles JEP, dont la principale&#8230;<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-15-quoi-de-neuf\/\">Lire la suite<span class=\"screen-reader-text\"> Lire la suite<\/span><\/a><\/p><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[11,186,163],"class_list":["post-1112","post","type-post","status-publish","format-standard","hentry","category-informatique","tag-java","tag-java15","tag-whatsnew"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":722,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-10-quoi-de-neuf\/","url_meta":{"origin":1112,"position":0},"title":"Java 10 : quoi de neuf ?","author":"admin","date":"lundi 26 mars 2018","format":false,"excerpt":"Maintenant que Java 10 est sorti, il est temps de se pencher sur les nouveaut\u00e9s de cette version. Comme pour mon pr\u00e9c\u00e9dent article sur java 9, je vais me pencher principalement sur les changements qui impacterons les d\u00e9veloppeurs utilisant Java en laissant de c\u00f4t\u00e9 les changements internes\/anecdotique\/sur des API peu\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1375,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-18-quoi-de-neuf\/","url_meta":{"origin":1112,"position":1},"title":"Java 18 : quoi de neuf ?","author":"admin","date":"mardi  4 janvier 2022","format":false,"excerpt":"Maintenant que Java 18 est features complete (Rampdown Phase One au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version, \u00e0 nous, les d\u00e9veloppeurs. Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res versions de Java, pour ceux qui\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":947,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-13-quoi-de-neuf\/","url_meta":{"origin":1112,"position":2},"title":"Java 13 : quoi de neuf ?","author":"admin","date":"mardi 13 ao\u00fbt 2019","format":false,"excerpt":"Maintenant que Java 13 est features complete (Release Candidate au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version, \u00e0 nous, les d\u00e9veloppeurs. Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res version de Java, pour ceux qui voudraient\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1572,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-20-quoi-de-neuf\/","url_meta":{"origin":1112,"position":3},"title":"Java 20 : quoi de neuf ?","author":"admin","date":"mercredi 14 d\u00e9cembre 2022","format":false,"excerpt":"Maintenant que Java 20 est features complete (Rampdown Phase One au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version, \u00e0 nous, les d\u00e9veloppeurs. Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res versions de Java, pour ceux qui\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1684,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-21-quoi-de-neuf\/","url_meta":{"origin":1112,"position":4},"title":"Java 21 : quoi de neuf ?","author":"admin","date":"mardi  8 ao\u00fbt 2023","format":false,"excerpt":"Maintenant que Java 21 est features complete (Rampdown Phase Two au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version, \u00e0 nous, les d\u00e9veloppeurs. Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res versions de Java, pour ceux qui\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"Java Collection API hierarchy","src":"https:\/\/i0.wp.com\/cr.openjdk.org\/~smarks\/collections\/SequencedCollectionDiagram20220216.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/cr.openjdk.org\/~smarks\/collections\/SequencedCollectionDiagram20220216.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/cr.openjdk.org\/~smarks\/collections\/SequencedCollectionDiagram20220216.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/cr.openjdk.org\/~smarks\/collections\/SequencedCollectionDiagram20220216.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/cr.openjdk.org\/~smarks\/collections\/SequencedCollectionDiagram20220216.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/cr.openjdk.org\/~smarks\/collections\/SequencedCollectionDiagram20220216.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1758,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-22-quoi-de-neuf\/","url_meta":{"origin":1112,"position":5},"title":"Java 22 : quoi de neuf ?","author":"admin","date":"lundi  8 janvier 2024","format":false,"excerpt":"Maintenant que Java 22 est features complete (Rampdown Phase One au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version, \u00e0 nous, les d\u00e9veloppeurs. Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res versions de Java, pour ceux qui\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/1112","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/comments?post=1112"}],"version-history":[{"count":0,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/1112\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/media?parent=1112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/categories?post=1112"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/tags?post=1112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}