{"id":722,"date":"2018-03-26T14:55:27","date_gmt":"2018-03-26T12:55:27","guid":{"rendered":"http:\/\/www.loicmathieu.fr\/wordpress\/?p=722"},"modified":"2020-05-06T10:11:53","modified_gmt":"2020-05-06T08:11:53","slug":"java-10-quoi-de-neuf","status":"publish","type":"post","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-10-quoi-de-neuf\/","title":{"rendered":"Java 10 : quoi de neuf ?"},"content":{"rendered":"<p>Maintenant que Java 10 est sorti, il est temps de se pencher sur les nouveaut\u00e9s de cette version. Comme pour mon <a href=\"http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/les-nouveautes-de-java-9-pour-les-developeurs\/\">pr\u00e9c\u00e9dent article sur java 9<\/a>, 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 utilis\u00e9s.<\/p>\n<h2>Le nouveau \u00ab\u00a0release train\u00a0\u00bb<\/h2>\n<p>Une nouveaut\u00e9 toute particuli\u00e8re est la mani\u00e8re dont Java va \u00eatre releas\u00e9 depuis Java 10 : Java va passer d&rsquo;un syst\u00e8me de <em>feature release<\/em> tous les deux ans (qui en r\u00e9alit\u00e9 \u00e9tait plus proche de tous les trois ans) \u00e0 un <em>release train<\/em> avec une release tout les 6 mois.<\/p>\n<p>Pr\u00e9c\u00e9demment, un ensemble de fonctionnalit\u00e9s \u00e9tait d\u00e9fini pour aller dans une version de Java et celle-ci n&rsquo;\u00e9tait releas\u00e9e que quand toutes ces fonctionnalit\u00e9s \u00e9t\u00e9 pr\u00eates, il y avait souvent beaucoup de chose dans une nouvelle version de Java, ce qui en faisait une version difficile \u00e0 livrer et un gap assez important pour les utilisateurs de Java \u00e0 passer.<\/p>\n<p>A partir de Java 10 : une version tous les 6 mois en release train : les fonctionnalit\u00e9s sont d\u00e9velopp\u00e9es dans des branches de d\u00e9veloppement sp\u00e9cific et quand elles sont pr\u00eate elles sont merg\u00e9e dans la branche principale. A la date de la release, tout ce qui a \u00e9t\u00e9 merg\u00e9 part en release. Avec un syst\u00e8me comme cela on aura plus de petite release mais plus r\u00e9guli\u00e8re.\nDernier point : chaque version de Java n&rsquo;auras pas forc\u00e9ment un support long, le support d&rsquo;une version sera jusqu&rsquo;\u00e0 la version suivante (donc 6 mois) sauf pour une version tout les trois ans qui sera en Long Term Support (LTS), Java 11 sera la premi\u00e8re version LTS.<\/p>\n<p>On peu regretter que la premi\u00e8re LTS ne soit que la version 11, la version 9 qui apporte \u00e9norm\u00e9ment de changement ne sera support\u00e9e que 6 mois ce qui en fait une version que personne ne va r\u00e9ellement utiliser en production. De m\u00eame, comme il n&rsquo;y aura pas d&rsquo;overlap entre les version non-LTS, un utilisateur sera oblig\u00e9 de passer \u00e0 la nouvelle version tout de suite ou de rester sur les version LTS : dans ce cas, Java va passer d&rsquo;une features release tous les 2-3 ans \u00e0 un release train avec une release LTS tous les 3 ans &#8230;<\/p>\n<p>Ce syst\u00e8me de release train et de version LTS est proche de celui que fait Ubuntu m\u00eame si Java a gard\u00e9 un num\u00e9ro de version (bien qu&rsquo;un syst\u00e8me bas\u00e9 sur les dates \u00e0 \u00e9t\u00e9 envisag\u00e9 puis abandonn\u00e9).<\/p>\n<p>Voir l&rsquo;article de Mark Reinhold expliquant en d\u00e9tail le nouveau release train <a href=\"https:\/\/mreinhold.org\/blog\/forward-faster\"><a href=\"https:\/\/mreinhold.org\/blog\/forward-faster\">https:\/\/mreinhold.org\/blog\/forward-faster<\/a><\/a>\nVoir les infos dans la JEP : <a href=\"http:\/\/openjdk.java.net\/jeps\/322\"><a href=\"http:\/\/openjdk.java.net\/jeps\/322\">http:\/\/openjdk.java.net\/jeps\/322<\/a><\/a><\/p>\n<h2>Les nouveaut\u00e9s du language pour les d\u00e9veloppeurs<\/h2>\n<h3>Local-Variable Type Inference<\/h3>\n<p>C&rsquo;est <strong>LA<\/strong> grande nouveaut\u00e9 de Java 10 : la possibilit\u00e9 d&rsquo;utiliser le mot cl\u00e9 <strong>var<\/strong> \u00e0 la place d&rsquo;une d\u00e9claration standard de variable, \u00e0 l&rsquo;int\u00e9rieur d&rsquo;une m\u00e9thode (variable locale) quand le type peut \u00eatre inf\u00e9r\u00e9 par le compilateur. Var peut \u00eatre aussi utilis\u00e9 dans la d\u00e9claration des boucles for et du try-with-resource.<\/p>\n<p>Java reste un language statiquement typ\u00e9, mais quand on d\u00e9clare une variable puis on l&rsquo;instancie sur la m\u00eame ligne, la d\u00e9claration de type est redondante! Le mot cl\u00e9 <strong>var<\/strong> va donc pouvoir la remplacer.<\/p>\n<p><strong>En Java 9 :<\/strong><\/p>\n<pre>MyComplexType obj = new MyComplexType();\nMap&lt;String,List&gt; map = new HashMap&lt;String,List&gt;();\n<\/pre>\n<p><strong>En Java 10 avec le mot cl\u00e9 var :<\/strong><\/p>\n<pre>var obj = new MyComplexType();\nvar map = new HashMap&lt;String,List&gt;();\n<\/pre>\n<p>Meilleur visibilit\u00e9 (entre autre, les deux variables sont indent\u00e9e au m\u00eame niveau), moins de c\u00e9r\u00e9monie, concision de l&rsquo;\u00e9criture, &#8230;<\/p>\n<p>Pour l&rsquo;instant, le mot cl\u00e9 <strong>var<\/strong> est limit\u00e9 aux variables locale aux m\u00e9thode et il n&rsquo;y a pas d&rsquo;\u00e9quivalent \u00ab\u00a0<em>immuable<\/em>\u00ab\u00a0, le travail sur l\u2019immuabilit\u00e9 en Java \u00e9tant en cours de r\u00e9flexion il aurait \u00e9t\u00e9 pr\u00e9matur\u00e9 de proposer un mot cl\u00e9 pour des variable finale (val ou let &#8230;).<\/p>\n<p>Stuart Marks a publi\u00e9 des guidelines sur l&rsquo;utilisation du mot cl\u00e9 var :\u00a0 <a href=\"http:\/\/openjdk.java.net\/projects\/amber\/LVTIstyle.html\"><a href=\"http:\/\/openjdk.java.net\/projects\/amber\/LVTIstyle.html\">http:\/\/openjdk.java.net\/projects\/amber\/LVTIstyle.html<\/a><\/a><\/p>\n<p>Plus d&rsquo;info dans la JEP : <a href=\"http:\/\/openjdk.java.net\/jeps\/286\"><a href=\"http:\/\/openjdk.java.net\/jeps\/286\">http:\/\/openjdk.java.net\/jeps\/286<\/a><\/a><\/p>\n<h3>Copy factory methods<\/h3>\n<p>L&rsquo;API Collection a \u00e9t\u00e9 enrichie de m\u00e9thodes statiques permettant la copie de collection existantes :\u00a0<strong>List.copyOf()<\/strong>, <strong>Set.copyOf()<\/strong>, et <strong>Map.copyOf()<\/strong>.<\/p>\n<p>Dans les trois cas la collection retourn\u00e9e sera une collection <em>immuable. <\/em>Si la collection existante \u00e9tait d\u00e9j\u00e0 une collection immuable, elle sera retourn\u00e9e directement (car il n&rsquo;y a pas d\u2019int\u00e9r\u00eat \u00e0 cr\u00e9\u00e9e une copie d&rsquo;une collection immuable qui sera elle-m\u00eame immuable &#8230;), sinon une nouvelle collection immuable sera cr\u00e9\u00e9e.<\/p>\n<p>Attention, les collections sont immuable pas les objets qu&rsquo;elles contiennent!<\/p>\n<p>Voici, pour exemple, l&rsquo;impl\u00e9mentation actuelle de List.copyOf() :<\/p>\n<pre>static  List copyOf(Collection coll) {\n    if (coll instanceof ImmutableCollections.AbstractImmutableList) {\n        return (List)coll;\n    } else {\n        return (List)List.of(coll.toArray());\n    }\n}\n<\/pre>\n<p>Plus d&rsquo;info dans le ticket JIRA : <a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8177290\"><a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8177290\">https:\/\/bugs.openjdk.java.net\/browse\/JDK-8177290<\/a><\/a><\/p>\n<h3>Collectors to unmodifiable List<\/h3>\n<p>Dans la m\u00eame mouvance que le pr\u00e9c\u00e9dent changement, les collectors de l&rsquo;API Stream ont \u00e9t\u00e9 enrichit pour permettre la cr\u00e9ation de collections immuable :<\/p>\n<ul><li>Collectors.toUnmodifiableList()<\/li>\n\n<li>Collectors.toUnmodifiableSet()<\/li>\n\n<li>Collectors.toUnmodifiableMap(keyFunc, valueFunc)<\/li>\n\n<li>Collectors.toUnmodifiableMap(keyFunc, valueFunc, mergeFunc)<\/li>\n<\/ul>\n<p>Plus d&rsquo;info dans le ticket JIRA :\u00a0 <a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8184690\"><a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8184690\">https:\/\/bugs.openjdk.java.net\/browse\/JDK-8184690<\/a><\/a><\/p>\n<h3>Optional.orElseThrow()<\/h3>\n<p><strong>Optional.orElseThrow()<\/strong> est maintenant la mani\u00e8re privil\u00e9gi\u00e9e (au d\u00e9triment de Optional.get()) pour r\u00e9cup\u00e9rer un \u00e9l\u00e9ment dans un Optional. Son nom fait clairement r\u00e9f\u00e9rence au fait que si il n&rsquo;y a pas d&rsquo;\u00e9l\u00e9ment, une exception sera lanc\u00e9e (ce qui est le cas pour Optional.get() mais souvent oubli\u00e9 par les d\u00e9veloppeurs l&rsquo;utilisant).<\/p>\n<p>Cela fait parti d&rsquo;une r\u00e9flexion plus large sur Optional, on devrait voir d&rsquo;autres ajouts dans cette classe dans les prochaines releases &#8230;<\/p>\n<p>Plus d&rsquo;info dans le ticket JIRA : <a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8140281\"><a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8140281\">https:\/\/bugs.openjdk.java.net\/browse\/JDK-8140281<\/a><\/a><\/p>\n<h3>Reader.transferTo(Writer)<\/h3>\n<p>Un nouvelle m\u00e9thode \u00e0 la classe Reader de directement transf\u00e9rer tout les caract\u00e8re d&rsquo;un Reader \u00e0 un Writer :<\/p>\n<pre>Reader reader = new FileReader(\"from.txt\");\nWriter writer = new FileWriter(\"to.txt\");\nreader.transferTo(writer);\n<\/pre>\n<h2>Les principaux changements ax\u00e9s performance<\/h2>\n<h3>Parallel Full GC for G1<\/h3>\n<p>C&rsquo;est le changement le plus important en terme de performance.<\/p>\n<p>G1 est depuis Java 9\u00a0 l&rsquo;algorithme de Garbage Collection par d\u00e9faut. Hors dans celui-ci, quand le collector n&rsquo;arrive plus \u00e0 nettoyer assez rapidement la heap de mani\u00e8re concurrente, il d\u00e9clenche un Full GC qui \u00e9tait mono-thread\u00e9. Depuis Java 10 l&rsquo;impl\u00e9mentation de celui-ci a \u00e9t\u00e9 chang\u00e9 en multi-thread\u00e9, le nombre de threads \u00e9tant d\u00e9finit par\u00a0<strong>-XX:ParallelGCThreads<\/strong><\/p>\n<p>Plus d&rsquo;info dans la JEP : <a href=\"http:\/\/openjdk.java.net\/jeps\/307\"><a href=\"http:\/\/openjdk.java.net\/jeps\/307\">http:\/\/openjdk.java.net\/jeps\/307<\/a><\/a><\/p>\n<h3>Thread-Local Handshakes<\/h3>\n<p>Jusqu&rsquo;\u00e0 Java 9, la seul mani\u00e8re de pouvoir faire des actions sur plusieurs threads en m\u00eame temps (r\u00e9cup\u00e9rer un thread dump, gestion des locks, &#8230;) \u00e9tait de mettre tous les threads dans un <strong>safepoint<\/strong>. Cette op\u00e9ration est couteuse et n\u00e9cessite de coordonner tous les threads de l&rsquo;application.<\/p>\n<p>Depuis java 10 : le m\u00e9canisme de Handshakes permet d\u2019ex\u00e9cuter des <strong>callbacks<\/strong> sur des threads sans n\u00e9cessairement passer par un\u00a0<strong>safepoint<\/strong>.<\/p>\n<p>Cette fonctionalit\u00e9 assez bas niveau ouvre la porte \u00e0 d&rsquo;autres optimisations au sein de la JVM qu&rsquo;on devrait voir arriver dans les prochaines releases.<\/p>\n<p>Plus d&rsquo;info dans la JEP : <a href=\"http:\/\/openjdk.java.net\/jeps\/312\"><a href=\"http:\/\/openjdk.java.net\/jeps\/312\">http:\/\/openjdk.java.net\/jeps\/312<\/a><\/a><\/p>\n<h2>Divers<\/h2>\n<h3>Experimental Java-Based JIT Compiler<\/h3>\n<p>Cette nouvelle fonctionnalit\u00e9 permet de changer le Just In Time (JIT) compiler de Java vers un JIT \u00e9crit en Java : <a href=\"https:\/\/github.com\/oracle\/graal\">Graal<\/a><\/p>\n<p>Le JIT est la partie de la JVM qui permet d&rsquo;optimiser le code qui tourne dans la JVM au fil de son execution, il est aujourd&rsquo;hui \u00e9crit en C++ et devient assez difficile \u00e0 maintenir.<\/p>\n<p>Graal est un nouveau projet d&rsquo;Oracle qui fait parti d&rsquo;un projet plus vaste : <a href=\"http:\/\/openjdk.java.net\/projects\/metropolis\/\">Metropolis<\/a>, dont le but est de faire du <em>Java on Java<\/em>. Donc de faire tourner Java avec une JVM en Java (aujourd&rsquo;hui la JVM est principalement \u00e9crite en C++). Graal est un compilateur, \u00e9crit en Java, qui depuis du bytecode Java (du code compil\u00e9 Java) peut g\u00e9n\u00e9r\u00e9 du code natif optimis\u00e9. Son impl\u00e9mentation en Java en facilite l&rsquo;\u00e9criture et la maintenance. Il peut \u00eatre vu comme le futur du JIT de la JVM, il est pour l&rsquo;instant en phase b\u00eata mais peut \u00eatre utilis\u00e9 facilement depuis Java 10\u00a0 via ces options JVM :<\/p>\n<pre>-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler<\/pre>\n<p>Un article tr\u00e8s int\u00e9r\u00e9ssant d&rsquo;introduction \u00e0 Graal :\u00a0<a href=\"http:\/\/chrisseaton.com\/truffleruby\/jokerconf17\/\"><a href=\"http:\/\/chrisseaton.com\/truffleruby\/jokerconf17\/\">http:\/\/chrisseaton.com\/truffleruby\/jokerconf17\/<\/a><\/a><\/p>\n<p>Plus d&rsquo;info dans la JEP : <a href=\"http:\/\/openjdk.java.net\/jeps\/317\"><a href=\"http:\/\/openjdk.java.net\/jeps\/317\">http:\/\/openjdk.java.net\/jeps\/317<\/a>\n<\/a><\/p>\n<h3>Heap Allocation on Alternative Memory Devices<\/h3>\n<p>D&rsquo;un c\u00f4t\u00e9, nos applications ont toujours besoin de plus en plus de m\u00e9moire, m\u00eame si nos serveurs en on de plus en plus &#8230; il n&rsquo;y en a jamais assez! De l&rsquo;autre c\u00f4t\u00e9, il existe d\u00e9sormais des devices de stockage qui ont des performances proches de la DRAM.<\/p>\n<p>Cette nouvelle fonctionnalit\u00e9, impl\u00e9ment\u00e9e par Intel (qui fournit une impl\u00e9mentation pour ses cartes flash haute performance NV-DIM 3D XPoint) permet de d\u00e9marrer une JVM en utilisant une Heap qui n&rsquo;est pas en RAM.<\/p>\n<p>Plus d&rsquo;info dans la JEP : <a href=\"http:\/\/openjdk.java.net\/jeps\/316\"><a href=\"http:\/\/openjdk.java.net\/jeps\/316\">http:\/\/openjdk.java.net\/jeps\/316<\/a><\/a><\/p>\n<h3>Application Class-Data Sharing<\/h3>\n<p>Cette fonctionnalit\u00e9 permet de partager entre plusieurs JVM tournant sur une m\u00eame machine les meta-information des classes (class metadata, une partie du metastore). On optimise alors le d\u00e9marrage et l&#8217;empreinte m\u00e9moire de ces JVM.<\/p>\n<p>Cette fonctionnalit\u00e9 peut \u00eatre tr\u00e8s pratiques au temps du cloud et de la containerisation &#8230;<\/p>\n<p>Plus d&rsquo;info dans la JEP :\u00a0<a href=\"http:\/\/openjdk.java.net\/jeps\/310\"><a href=\"http:\/\/openjdk.java.net\/jeps\/310\">http:\/\/openjdk.java.net\/jeps\/310<\/a><\/a><\/p>\n<h2>Pour aller plus loins<\/h2>\n<p>Une liste exhaustive (je penses) de tous les changements de cette release : <a href=\"https:\/\/www.azul.com\/109-new-features-in-jdk-10\"><a href=\"https:\/\/www.azul.com\/109-new-features-in-jdk-10\">https:\/\/www.azul.com\/109-new-features-in-jdk-10<\/a><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>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 utilis\u00e9s. Le nouveau \u00ab\u00a0release train\u00a0\u00bb Une nouveaut\u00e9 toute particuli\u00e8re est la mani\u00e8re dont Java va \u00eatre releas\u00e9 depuis Java 10 : Java va passer d&rsquo;un syst\u00e8me de feature release tous&#8230;<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-10-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,161,163],"class_list":["post-722","post","type-post","status-publish","format-standard","hentry","category-informatique","tag-java","tag-java10","tag-whatsnew"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1877,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-24-quoi-de-neuf\/","url_meta":{"origin":722,"position":0},"title":"Java 24 : quoi de neuf ?","author":"admin","date":"vendredi 10 janvier 2025","format":false,"excerpt":"Maintenant que Java 24 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":652,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/les-nouveautes-de-java-9-pour-les-developeurs\/","url_meta":{"origin":722,"position":1},"title":"Les nouveaut\u00e9s de java 9 pour les d\u00e9veloppeurs","author":"admin","date":"lundi 27 mars 2017","format":false,"excerpt":"Maintenant que Java 9 est Features Complete, il est temps de se pencher sur toutes les nouveaut\u00e9s que cette nouvelle version va nous apporter, \u00e0 nous, d\u00e9velopeurs utilisant java. Bien sur, tout le monde a entendu parler de la modularisation du JDK (project Jigsaw) attendu depuis tr\u00e8s longtemps. Et bien,\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"jshell the Java REPL","src":"https:\/\/i0.wp.com\/loicmathieu.fr\/wordpress\/wp-content\/uploads\/jshell.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1112,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-15-quoi-de-neuf\/","url_meta":{"origin":722,"position":2},"title":"Java 15 : quoi de neuf ?","author":"admin","date":"jeudi  2 juillet 2020","format":false,"excerpt":"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\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":722,"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":947,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-13-quoi-de-neuf\/","url_meta":{"origin":722,"position":4},"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":1816,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-23-quoi-de-neuf\/","url_meta":{"origin":722,"position":5},"title":"Java 23 : quoi de neuf ?","author":"admin","date":"jeudi 25 juillet 2024","format":false,"excerpt":"Maintenant que Java 23 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":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/722","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=722"}],"version-history":[{"count":0,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/722\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/media?parent=722"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/categories?post=722"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/tags?post=722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}