{"id":107370,"date":"2023-03-22T00:48:09","date_gmt":"2023-03-21T22:48:09","guid":{"rendered":"https:\/\/prohoster.info\/?p=107370"},"modified":"2023-03-22T11:10:35","modified_gmt":"2023-03-22T09:10:35","slug":"vypusk-java-se-20","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/news\/vypusk-java-se-20","title":{"rendered":"Lansare Java SE 20","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dup\u0103 \u0219ase luni de dezvoltare, compania Oracle a lansat platforma Java SE 20 (Java Platform, Standard Edition 20), pentru care se folose\u0219te proiectul deschis OpenJDK ca implementare de referin\u021b\u0103. Cu excep\u021bia elimin\u0103rii unor func\u021bionalit\u0103\u021bi \u00eenvechite, Java SE 20 p\u0103streaz\u0103 compatibilitatea retroactiv\u0103 cu versiunile anterioare ale platformei Java - majoritatea proiectelor Java scrise anterior vor func\u021biona f\u0103r\u0103 modific\u0103ri c\u00e2nd sunt rulat\u0103 sub noua versiune. Versiunile gata de instalare ale Java SE 20 (JDK, JRE \u0219i Server JRE) sunt disponibile pentru Linux (x86_64, AArch64), Windows (x86_64) \u0219i macOS (x86_64, AArch64). Implementarea de referin\u021b\u0103 Java 20 dezvoltat\u0103 \u00een cadrul proiectului OpenJDK este complet deschis\u0103 sub licen\u021ba GPLv2, cu excep\u021biile GNU ClassPath, care permit legarea dinamic\u0103 la produse comerciale.     <\/p>\n<p>Java SE 20 este clasificat ca un release cu termen de suport obi\u0219nuit, actualiz\u0103rile urm\u00e2nd s\u0103 fie lansate p\u00e2n\u0103 la urm\u0103torul release. Ca ramur\u0103 cu termen lung de suport (LTS), ar trebui s\u0103 folosi\u021bi Java SE 17, pentru care actualiz\u0103rile vor continua p\u00e2n\u0103 \u00een 2029. Reamintim c\u0103, \u00eencep\u00e2nd cu lansarea Java 10, proiectul s-a mutat la un nou proces de dezvoltare, presupun\u00e2nd un ciclu mai scurt de creare a noilor release-uri. Func\u021bionalit\u0103\u021bile noi sunt acum dezvoltate \u00eentr-o ramur\u0103 master care este actualizat\u0103 continuu, \u00een care sunt incluse modific\u0103rile gata de utilizare \u0219i din care se ramific\u0103, o dat\u0103 la \u0219ase luni, ramurile pentru stabilizarea noilor release-uri.     <\/p>\n<p>Printre nout\u0103\u021bile Java 20 se num\u0103r\u0103:  <\/p>\n<ul>\n<li class=\"l\"> A fost propus un suport preliminar pentru valori limitate (Scoped Values), care permit partajarea datelor imuabile \u00eentre firuri \u0219i un schimb eficient de date \u00eentre firele copil (valorile sunt mo\u0219tenite). Scoped Values se dezvolt\u0103 pentru a \u00eenlocui mecanismul variabilelor locale firurilor (thread-local variables) \u0219i sunt mai eficiente atunci c\u00e2nd se utilizeaz\u0103 un num\u0103r foarte mare de fire virtuale (mii \u0219i milioane de fire). Principalul diferen\u021biat dintre Scoped Values \u0219i variabilele locale firurilor este c\u0103 primele sunt scrise o dat\u0103, ulterior nu pot fi modificate \u0219i r\u0103m\u00e2n accesibile doar pe durata execu\u021biei firului. class Server { final static ScopedValue CURRENT_USER = new ScopedValue(); void serve(Request request, Response response) { var level = (request.isAuthorized() ? ADMIN : GUEST); var user = new User(level); ScopedValue.where(CURRENT_USER, user) .run(() -&gt; Application.handle(request, response)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); if (!user.canOpen()) throw new InvalidUserException(); return new DBConnection(\u2026); } }\n<li class=\"l\"> A fost ad\u0103ugat\u0103 a doua implementare preliminar\u0103 a \u0219abloanelor de \u00eenregistrare (record pattern), extinz\u00e2nd posibilitatea de potrivire cu modelul ap\u0103rut \u00een Java 16, metodele pentru analiza valorilor claselor de tip record. De exemplu: record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = p.x(); int y = p.y(); System.out.println(x + y); } }\n<li class=\"l\"> A fost ad\u0103ugat\u0103 a patra versiune preliminar\u0103 a coresponden\u021bei pe baza unui model \u00een expresiile \u201eswitch\u201d, permit\u00e2nd utilizarea de valori flexibile \u00een etichetele \u201ecase\u201d, acoperind o serie de valori pentru care anterior era nevoie s\u0103 se foloseasc\u0103 lan\u021buri voluminoase de expresii \u201eif...else\u201d.\n\n        static String formatterPatternSwitch(Object obj) {         return switch (obj) {             case Integer i -&gt; String.format(\"int %d\", i);             case Long l    -&gt; String.format(\"long %d\", l);             case Double d  -&gt; String.format(\"double %f\", d);             case String s  -&gt; String.format(\"String %s\", s);             default        -&gt; o.toString();         };     }\n<li class=\"l\"> A fost ad\u0103ugat\u0103 a doua versiune preliminar\u0103 a API-ului FFM (Foreign Function &amp; Memory), care permite organizarea interac\u021biunii \u00eentre programele Java \u0219i codul \u0219i datele externe prin apelarea func\u021biilor din biblioteci externe \u0219i accesarea memoriei \u00een afara JVM.\n<li class=\"l\"> A fost ad\u0103ugat\u0103 a doua implementare preliminar\u0103 a fluxurilor virtuale, care reprezint\u0103 fluxuri u\u0219oare, simplific\u00e2nd semnificativ scrierea \u0219i \u00eentre\u021binerea aplica\u021biilor multithreading de \u00eenalt\u0103 performan\u021b\u0103.\n<li class=\"l\"> A fost ad\u0103ugat a doua variant\u0103 a API-ului experimental pentru paralelismul structurat, care simplific\u0103 dezvoltarea aplica\u021biilor multithreading prin tratarea mai multor sarcini care ruleaz\u0103 \u00een diferite fluxuri ca un singur bloc.\n<li class=\"l\"> A fost ad\u0103ugat\u0103 a cincea implementare preliminar\u0103 a API-ului Vector, care ofer\u0103 func\u021bii pentru calcule vectoriale ce sunt efectuate folosind instruc\u021biuni vectoriale ale procesoarelor x86_64 \u0219i AArch64, permi\u021b\u00e2nd aplicarea simultan\u0103 a opera\u021biunilor asupra mai multor valori (SIMD). Spre deosebire de capabilit\u0103\u021bile de auto-vectorizare a opera\u021biunilor scalare oferite de compilatorul JIT HotSpot, noul API ofer\u0103 posibilitatea de a controla explicit vectorizarea pentru procesarea paralel\u0103 a datelor.   <\/ul>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=58837\">opennet.ro<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Oracle \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Java SE 20 (Java Platform, Standard Edition 20), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 OpenJDK. \u0417\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 Java SE 20 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u043f\u0440\u043e\u0448\u043b\u044b\u043c\u0438 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u043c\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Java &#8212; \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 Java-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u043e\u0434 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-107370","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Oracle \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Java SE 20 (Java Platform, Standard Edition 20), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 OpenJDK.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/news\/vypusk-java-se-20\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a Java SE 20 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Oracle \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Java SE 20 (Java Platform, Standard Edition 20), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 OpenJDK.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/news\/vypusk-java-se-20\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2023-03-21T22:48:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2023-03-22T09:10:35+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Lansare Java SE 20 | ProHoster","description":"Dup\u0103 \u0219ase luni de dezvoltare, compania Oracle a lansat platforma Java SE 20 (Java Platform, Standard Edition 20), ca implementare de referin\u021b\u0103 utilizat\u0103 fiind proiectul deschis OpenJDK.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/vypusk-java-se-20","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a Java SE 20 | ProHoster","og:description":"\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Oracle \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Java SE 20 (Java Platform, Standard Edition 20), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 OpenJDK.","og:url":"https:\/\/prohoster.info\/ro\/blog\/news\/vypusk-java-se-20","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2023-03-21T22:48:09+00:00","article:modified_time":"2023-03-22T09:10:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/107370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=107370"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/107370\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=107370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=107370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=107370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}