{"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\/cs\/blog\/news\/vypusk-java-se-20","title":{"rendered":"Vyd\u00e1n\u00ed Java SE 20.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Po \u0161esti m\u011bs\u00edc\u00edch v\u00fdvoje spole\u010dnost Oracle vydala platformu Java SE 20 (Java Platform, Standard Edition 20), p\u0159i\u010dem\u017e jako referen\u010dn\u00ed implementaci pou\u017e\u00edv\u00e1 otev\u0159en\u00fd projekt OpenJDK. S v\u00fdjimkou odstran\u011bn\u00ed n\u011bkter\u00fdch zastaral\u00fdch funkc\u00ed v Java SE 20 byla zachov\u00e1na zp\u011btn\u00e1 kompatibilita s p\u0159edchoz\u00edmi verzemi platformy Java \u2014 v\u011bt\u0161ina d\u0159\u00edve napsan\u00fdch Java projekt\u016f bude bez zm\u011bn funk\u010dn\u00ed p\u0159i spu\u0161t\u011bn\u00ed na nov\u00e9 verzi. Hotov\u00e9 instala\u010dn\u00ed bal\u00ed\u010dky Java SE 20 (JDK, JRE a Server JRE) byly p\u0159ipraveny pro Linux (x86_64, AArch64), Windows (x86_64) a macOS (x86_64, AArch64). Referen\u010dn\u00ed implementace Java 20, vyvinut\u00e1 v r\u00e1mci projektu OpenJDK, je zcela otev\u0159en\u00e1 pod licenc\u00ed GPLv2 s v\u00fdjimkami GNU ClassPath, kter\u00e9 umo\u017e\u0148uj\u00ed dynamick\u00e9 propojov\u00e1n\u00ed s komer\u010dn\u00edmi produkty.     <\/p>\n<p>Java SE 20 spad\u00e1 do kategorie vyd\u00e1n\u00ed s b\u011b\u017enou dobou podpory, aktualizace pro n\u011bj budou vyd\u00e1v\u00e1ny a\u017e do dal\u0161\u00edho vyd\u00e1n\u00ed. Jako verzi s dlouhou dobou podpory (LTS) by m\u011bla b\u00fdt pou\u017eita Java SE 17, pro kterou budou aktualizace vyd\u00e1v\u00e1ny a\u017e do roku 2029. P\u0159ipom\u00edn\u00e1me, \u017ee od vyd\u00e1n\u00ed Java 10 projekt p\u0159e\u0161el na nov\u00fd proces v\u00fdvoje, kter\u00fd zahrnuje krat\u0161\u00ed cyklus vyd\u00e1v\u00e1n\u00ed nov\u00fdch verz\u00ed. Nov\u00e1 funk\u010dnost se nyn\u00ed vyv\u00edj\u00ed v jedn\u00e9 neust\u00e1le aktualizovan\u00e9 hlavn\u00ed v\u011btvi, do kter\u00e9 jsou zapracov\u00e1v\u00e1ny ji\u017e p\u0159ipraven\u00e9 zm\u011bny a od kter\u00e9 se ka\u017ed\u00fdch \u0161est m\u011bs\u00edc\u016f odd\u011bluj\u00ed v\u011btve pro stabilizaci nov\u00fdch vyd\u00e1n\u00ed.     <\/p>\n<p>Mezi novinkami Java 20 lze zm\u00ednit:  <\/p>\n<ul>\n<li class=\"l\"> Byla navr\u017eena p\u0159edb\u011b\u017en\u00e1 podpora omezen\u00fdch hodnot (Scoped Values), kter\u00e1 umo\u017e\u0148uje spole\u010dn\u00e9 vyu\u017e\u00edv\u00e1n\u00ed nem\u011bnn\u00fdch dat v vl\u00e1knech a efektivn\u00ed v\u00fdm\u011bnu dat mezi pod\u0159\u00edzen\u00fdmi vl\u00e1kny (hodnoty se d\u011bd\u00ed). Scoped Values se vyv\u00edjej\u00ed jako n\u00e1hrada mechanismu prom\u011bnn\u00fdch lok\u00e1ln\u00edch k vl\u00e1knu (thread-local variables) a jsou \u00fa\u010dinn\u011bj\u0161\u00ed p\u0159i pou\u017eit\u00ed velmi velk\u00e9ho po\u010dtu virtu\u00e1ln\u00edch vl\u00e1ken (tis\u00edce a miliony vl\u00e1ken). Hlavn\u00edm rozd\u00edlem mezi Scoped Values a prom\u011bnn\u00fdmi lok\u00e1ln\u00edmi k vl\u00e1knu je, \u017ee prvn\u00ed jsou zapisov\u00e1ny jednou, pot\u00e9 ji\u017e nelze m\u011bnit a z\u016fst\u00e1vaj\u00ed dostupn\u00e9 pouze b\u011bhem doby b\u011bhu vl\u00e1kna. 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\"> Byla p\u0159id\u00e1na druh\u00e1 p\u0159edb\u011b\u017en\u00e1 implementace vzor\u016f z\u00e1znam\u016f (record pattern), kter\u00e1 roz\u0161i\u0159uje mo\u017enost p\u0159i\u0159azen\u00ed hodnot pomoc\u00ed vzor\u016f v jazyce Java 16. Nap\u0159\u00edklad:       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\"> Byla p\u0159id\u00e1na \u010dtvrt\u00e1 p\u0159edb\u011b\u017en\u00e1 implementace shody podle vzoru ve v\u00fdrazech \u00abswitch\u00bb, kter\u00e1 v ozna\u010den\u00edch \u00abcase\u00bb umo\u017e\u0148uje pou\u017e\u00edvat nikoli p\u0159esn\u00e9 hodnoty, ale flexibiln\u00ed vzory, pokr\u00fdvaj\u00edc\u00ed v\u00edce hodnot najednou, pro kter\u00e9 bylo d\u0159\u00edve nutn\u00e9 pou\u017e\u00edvat objemn\u00e9 \u0159et\u011bzce v\u00fdrazu \u00abif\u2026else\u00bb.       static String formatterPatternSwitch(Object obj) {         return switch (obj) {             case Integer i -&gt; String.format(\u00abint %d\u00bb, i);             case Long l    -&gt; String.format(\u00ablong %d\u00bb, l);             case Double d  -&gt; String.format(\u00abdouble %f\u00bb, d);             case String s  -&gt; String.format(\u00abString %s\u00bb, s);             default        -&gt; o.toString();         };     }\n<li class=\"l\"> Byla p\u0159id\u00e1na druh\u00e1 p\u0159edb\u011b\u017en\u00e1 implementace API FFM (Foreign Function &amp; Memory), kter\u00e1 umo\u017e\u0148uje organizovat interakci Java program\u016f s extern\u00edm k\u00f3dem a daty prost\u0159ednictv\u00edm vol\u00e1n\u00ed funkc\u00ed z extern\u00edch knihoven a p\u0159\u00edstupu k pam\u011bti mimo JVM.\n<li class=\"l\"> Byla p\u0159id\u00e1na druh\u00e1 p\u0159edb\u011b\u017en\u00e1 implementace virtu\u00e1ln\u00edch vl\u00e1ken, kter\u00e1 p\u0159edstavuj\u00ed lehk\u00e1 vl\u00e1kna, zna\u010dn\u011b usnad\u0148uj\u00edc\u00ed psan\u00ed a \u00fadr\u017ebu vysoce v\u00fdkonn\u00fdch v\u00edcetrakov\u011b orientovan\u00fdch aplikac\u00ed.\n<li class=\"l\"> Byla p\u0159id\u00e1na druh\u00e1 varianta experiment\u00e1ln\u00edho API pro strukturovanou paralelnost, kter\u00e1 usnad\u0148uje v\u00fdvoj v\u00edcetrakov\u011b orientovan\u00fdch aplikac\u00ed zpracov\u00e1n\u00edm v\u00edce \u00faloh prov\u00e1d\u011bn\u00fdch v r\u016fzn\u00fdch vl\u00e1knech jako jednotn\u00e9ho bloku.\n<li class=\"l\"> Byla p\u0159id\u00e1na p\u00e1t\u00e1 p\u0159edb\u011b\u017en\u00e1 implementace API Vector, poskytuj\u00edc\u00ed funkce pro vektorov\u00e9 v\u00fdpo\u010dty, kter\u00e9 se prov\u00e1d\u011bj\u00ed pomoc\u00ed vektorov\u00fdch instrukc\u00ed procesor\u016f x86_64 a AArch64 a umo\u017e\u0148uj\u00ed sou\u010dasn\u00e9 aplikace operac\u00ed na n\u011bkolika hodnot\u00e1ch (SIMD). Na rozd\u00edl od mo\u017enost\u00ed automatick\u00e9 vektorizace skal\u00e1rn\u00edch operac\u00ed poskytovan\u00fdch JIT kompil\u00e1torem HotSpot umo\u017e\u0148uje nov\u00e9 API explicitn\u011b \u0159\u00eddit vektorizaci pro paraleln\u00ed zpracov\u00e1n\u00ed dat.   <\/ul>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=58837\">opennet.ru<\/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.3 - 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\/cs\/blog\/news\/vypusk-java-se-20\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47Vyd\u00e1n\u00ed Java SE 20 | ProHoster","description":"Po \u0161esti m\u011bs\u00edc\u00edch v\u00fdvoje spole\u010dnost Oracle vydala platformu Java SE 20 (Java Platform, Standard Edition 20), jej\u00ed\u017e referen\u010dn\u00ed implementac\u00ed je otev\u0159en\u00fd projekt OpenJDK.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/vypusk-java-se-20","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/107370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=107370"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/107370\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=107370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=107370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=107370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}