{"id":329,"date":"2023-05-06T08:57:15","date_gmt":"2023-05-06T08:57:15","guid":{"rendered":"https:\/\/devopsopen.com\/?p=329"},"modified":"2023-05-06T08:57:15","modified_gmt":"2023-05-06T08:57:15","slug":"nouveautes-et-historique-java","status":"publish","type":"post","link":"https:\/\/devopsopen.com\/index.php\/2023\/05\/06\/nouveautes-et-historique-java\/","title":{"rendered":"Nouveaut\u00e9s et historique Java"},"content":{"rendered":"<p><strong>- 2012 :\u00a0 Java 7<\/strong><\/p>\n<p>NIO2\u00a0 Path, Files, Glob, WatchService, DirectoryStream, walkFileTree<\/p>\n<p>le projet Coins : try with resources, exceptions multiples dans catch, operateur diamant, String dans switch, underscore dans les litt\u00e9raux<\/p>\n<p><strong>- 2014 : Java 8<\/strong><\/p>\n<p>les expressions Lambda et les r\u00e9f\u00e9rences de m\u00e9thode<\/p>\n<p>approche fonctionnelle du traitement de donn\u00e9es avec l'api stream<\/p>\n<p>api Date $ Time<\/p>\n<p>les m\u00e9thodes par d\u00e9faut et static dans les interfacesles classes optional<\/p>\n<p>les annotations r\u00e9p\u00e9t\u00e9es<\/p>\n<p><strong>- 2017 : Java 9<\/strong><\/p>\n<p>@SafeVarags<\/p>\n<p>l\u2019op\u00e9rateur diamant sur les classes anaonymes<\/p>\n<p>try with resources : utilisation directe de variables explicitement final<\/p>\n<p>Jshell : outil de type REPL<\/p>\n<p>API Process : interface ProcessHandle<\/p>\n<p>Fabriques statiques pour collections immuables<\/p>\n<p>VarHandle : op\u00e9rations atomiques\/ordonn\u00e9es via une r\u00e9f typ\u00e9e \u00e0 une variable<\/p>\n<p>Stackwalking API<\/p>\n<p>Flow API (Reactive Streams)<\/p>\n<p>Les modules (la mise en oeuvre implique des contraintes\u00a0 ruptures visibilit\u00e9, accessibilit\u00e9, organisation du code) mais la modulisation n'est pas obligatoire. Vous pouvez personnaliser le JRE via l'outil jlink.<\/p>\n<p><strong>- 2018 Mars: Java 10<\/strong><\/p>\n<p>Faciliter la d\u00e9finition des variables et nouvelles opportunit\u00e9s avec les classes anonymes<\/p>\n<p>Type inf\u00e9r\u00e9 est parfois surprenant comme var liste = List.of(\"test\",1);<\/p>\n<p><strong>- 2018 Septembre: Java 11 (LTS)<br \/><\/strong><\/p>\n<p>Support HTTP1.1 et 1.2, websockets, synchrone et asynchrone<\/p>\n<p>JDK flight recorder<\/p>\n<p>ex\u00e9cution directe d'un unique fichier java par la jvm sans compilation pr\u00e9alable<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8211; 2012 :\u00a0 Java 7 NIO2\u00a0 Path, Files, Glob, WatchService, DirectoryStream, walkFileTree le projet Coins : try with resources, exceptions multiples dans catch, operateur diamant, String dans switch, underscore dans les litt\u00e9raux &#8211; 2014 : Java 8 les expressions Lambda et les r\u00e9f\u00e9rences de m\u00e9thode approche fonctionnelle du traitement de donn\u00e9es avec l&#8217;api stream api Date $ Time les m\u00e9thodes par d\u00e9faut et static dans les interfacesles classes optional les annotations r\u00e9p\u00e9t\u00e9es &#8211; 2017 : Java 9 @SafeVarags l\u2019op\u00e9rateur diamant sur les classes anaonymes try with resources : utilisation directe de variables explicitement final Jshell : outil de type REPL\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":""},"categories":[9],"tags":[],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":5}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/devopsopen.com\/index.php\/author\/admin_bak\/"},"uagb_comment_info":513,"uagb_excerpt":"- 2012 :\u00a0 Java 7 NIO2\u00a0 Path, Files, Glob, WatchService, DirectoryStream, walkFileTree le projet Coins : try with resources, exceptions multiples dans catch, operateur diamant, String dans switch, underscore dans les litt\u00e9raux - 2014 : Java 8 les expressions Lambda et les r\u00e9f\u00e9rences de m\u00e9thode approche fonctionnelle du traitement de donn\u00e9es avec l'api stream api&hellip;","_links":{"self":[{"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/posts\/329"}],"collection":[{"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/comments?post=329"}],"version-history":[{"count":1,"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/posts\/329\/revisions"}],"predecessor-version":[{"id":330,"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/posts\/329\/revisions\/330"}],"wp:attachment":[{"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/media?parent=329"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/categories?post=329"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devopsopen.com\/index.php\/wp-json\/wp\/v2\/tags?post=329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}