{"id":74554,"date":"2020-03-18T20:41:55","date_gmt":"2020-03-18T17:41:55","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/vypusk-java-se-14"},"modified":"2020-03-18T20:41:55","modified_gmt":"2020-03-18T17:41:55","slug":"vypusk-java-se-14","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/news\/vypusk-java-se-14","title":{"rendered":"Vyd\u00e1n\u00ed Java SE 14","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Po \u0161esti m\u011bs\u00edc\u00edch v\u00fdvoje spole\u010dnost Oracle <noindex><a rel=\"nofollow\" href=\"http:\/\/mail.openjdk.java.net\/pipermail\/announce\/2020-March\/000282.htm\">vyu\u017eila<\/a><\/noindex> platformu <noindex><a rel=\"nofollow\" href=\"https:\/\/www.oracle.com\/java\/technologies\/javase-downloads.html\">Java SE 14<\/a><\/noindex> (Java Platform, Standard Edition 14), jeho\u017e referen\u010dn\u00ed implementac\u00ed je open-source projekt OpenJDK. Java SE 14 zachov\u00e1v\u00e1 zp\u011btnou kompatibilitu s p\u0159edchoz\u00edmi verzemi platformy Java, v\u0161echny p\u0159edt\u00edm napsan\u00e9 projekty v Jav\u011b budou bez \u00faprav funk\u010dn\u00ed na nov\u00e9 verzi. K dispozici jsou sestaven\u00ed Java SE 14 (JDK, JRE a Server JRE) ke sta\u017een\u00ed. <noindex><a rel=\"nofollow\" href=\"http:\/\/jdk.java.net\/14\">jsou p\u0159ipraveny<\/a><\/noindex> pro Linux (x86_64), Windows a macOS. Referen\u010dn\u00ed implementace vyvinut\u00e1 v r\u00e1mci projektu OpenJDK <noindex><a rel=\"nofollow\" href=\"http:\/\/openjdk.java.net\/projects\/jdk\/14\/\">Java 14<\/a><\/noindex> je zcela otev\u0159en\u00e1 pod licenc\u00ed GPLv2 s v\u00fdjimkami GNU ClassPath, kter\u00e9 umo\u017e\u0148uj\u00ed dynamick\u00e9 spojen\u00ed s komer\u010dn\u00edmi produkty. <\/p>\n<p>Java SE 14 je klasifikov\u00e1na jako verze s pravidelnou podporou, aktualizace pro tuto verzi budou vyd\u00e1v\u00e1ny do dal\u0161\u00edho vyd\u00e1n\u00ed. Pro dlouhodobou podporu (LTS) je doporu\u010deno pou\u017e\u00edvat Java SE 11, pro kterou budou aktualizace vyd\u00e1v\u00e1ny do roku 2026. P\u0159edchoz\u00ed LTS verze Java 8 bude podporov\u00e1na do prosince 2020. Dal\u0161\u00ed LTS vyd\u00e1n\u00ed je pl\u00e1nov\u00e1no na z\u00e1\u0159\u00ed 2021. P\u0159ipom\u00edn\u00e1me, \u017ee od vyd\u00e1n\u00ed Java 10 p\u0159e\u0161el projekt na nov\u00fd v\u00fdvojov\u00fd cyklus, kter\u00fd p\u0159edpokl\u00e1d\u00e1 krat\u0161\u00ed dobu mezi nov\u00fdmi vyd\u00e1n\u00edmi. Nov\u00e9 funkce se nyn\u00ed vyv\u00edjej\u00ed v jedn\u00e9 neust\u00e1le aktualizovan\u00e9 master v\u011btvi, kter\u00e1 zahrnuje p\u0159ipraven\u00e9 zm\u011bny a z n\u00ed\u017e se ka\u017ed\u00fdch \u0161est m\u011bs\u00edc\u016f odch\u00e1zej\u00ed v\u011btve pro stabilizaci nov\u00fdch vyd\u00e1n\u00ed. <\/p>\n<p>Z <noindex><a rel=\"nofollow\" href=\"http:\/\/openjdk.java.net\/projects\/jdk\/14\/\">novinky<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/jdk.java.net\/14\/release-notes#newfeatures\">Java 14<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.oracle.com\/java\/technologies\/javase\/14u-relnotes.html\">lze<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-14-arrives-with-a-host-of-new-features\">za\u0161krtnout<\/a><\/noindex>:<\/p>\n<ul>\n<li class=\"l\"> Byla p\u0159id\u00e1na experiment\u00e1ln\u00ed podpora <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/305\">shodov\u00e1n\u00ed s vzorem<\/a><\/noindex> v oper\u00e1toru &#171;instanceof&#187;, kter\u00fd umo\u017e\u0148uje okam\u017eit\u011b definovat lok\u00e1ln\u00ed prom\u011bnnou pro p\u0159\u00edstup k ov\u011b\u0159en\u00e9 hodnot\u011b. Nap\u0159\u00edklad lze okam\u017eit\u011b napsat &#171;if (obj instanceof String s &#038;&#038; s.length() &gt; 5) {.. s.contains(..) ..}&#187; bez zjevn\u00e9 definice &#171;String s = (String) obj&#187;.\n<p>Bylo:<\/p>\n<p>   if (obj instanceof Group) {<br \/>\n     Group group = (Group) obj;<br \/>\n     var entries = group.getEntries();<br \/>\n   }<\/p>\n<p>Nyn\u00ed je mo\u017en\u00e9 obej\u00edt se bez definice &#171;Group group = (Group) obj&#187;:<\/p>\n<p>   if (obj instanceof Group group) {<br \/>\n     var entries = group.getEntries();<br \/>\n   }<\/p>\n<li class=\"l\"> Byla p\u0159id\u00e1na experiment\u00e1ln\u00ed podpora nov\u00e9ho kl\u00ed\u010dov\u00e9ho slova &#171;<noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/359\">record<\/a><\/noindex>&#171;, kter\u00e9 poskytuje kompaktn\u00ed formu pro definici t\u0159\u00edd, umo\u017e\u0148uj\u00edc\u00ed obej\u00edt se bez zjevn\u00e9 definice r\u016fzn\u00fdch n\u00edzko\u00farov\u0148ov\u00fdch metod, jako jsou equals(), hashCode() a toString(), v p\u0159\u00edpadech, kdy data jsou ulo\u017eena pouze v pol\u00edch, jejich\u017e chov\u00e1n\u00ed se nem\u011bn\u00ed. Kdy\u017e jsou v t\u0159\u00edd\u011b pou\u017eity typov\u00e9 implementace metod equals(), hashCode() a toString(), lze se v n\u00ed obej\u00edt bez jejich zjevn\u00e9 definice:\n<p>   public record BankTransaction(LocalDate date,<br \/>\n                              double amount,<br \/>\n                              String description) {}<\/p>\n<p>Toto prohl\u00e1\u0161en\u00ed povede k automatick\u00e9mu p\u0159id\u00e1n\u00ed implementac\u00ed metod equals(), hashCode() a toString() spolu s konstruktorem a metodami, kter\u00e9 kontroluj\u00ed zm\u011bnu dat (getter).<\/p>\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/361\">Bylo standardizov\u00e1no<\/a><\/noindex> a byla ve v\u00fdchoz\u00edm nastaven\u00ed zahrnuta podpora nov\u00e9 formy v\u00fdraz\u016f &#171;switch&#187;, kter\u00e1 nevy\u017eaduje uveden\u00ed oper\u00e1toru &#171;break&#187;, a kter\u00e1 umo\u017e\u0148uje kombinovat opakuj\u00edc\u00ed se \u0161t\u00edtky a umo\u017e\u0148uje pou\u017eit\u00ed nejen ve form\u011b oper\u00e1toru, ale i jako v\u00fdrazu.\n<p>   var log = switch (event) {<br \/>\n       case PLAY -&gt; &#171;U\u017eivatel aktivoval tla\u010d\u00edtko p\u0159ehr\u00e1v\u00e1n\u00ed&#187;;<br \/>\n       case STOP, PAUSE -&gt; &#171;U\u017eivatel pot\u0159ebuje p\u0159est\u00e1vku&#187;;<br \/>\n       default -&gt; {<br \/>\n           String message = event.toString();<br \/>\n           LocalDateTime now = LocalDateTime.now();<br \/>\n           yield &#171;Nezn\u00e1m\u00e1 ud\u00e1lost &#187; + message +<br \/>\n              &#187; p\u0159ihl\u00e1\u0161eno &#187; + now;<br \/>\n       }<br \/>\n   };<\/p>\n<li class=\"l\"> Byla roz\u0161\u00ed\u0159ena experiment\u00e1ln\u00ed podpora <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/368\">textov\u00fdch blok\u016f<\/a><\/noindex> &#8212; nov\u00e9 formy \u0159et\u011bzcov\u00fdch liter\u00e1l\u016f, kter\u00e9 umo\u017e\u0148uj\u00ed zahrnout do zdrojov\u00e9ho k\u00f3du v\u00edcerozm\u011brn\u00e1 textov\u00e1 data bez pou\u017eit\u00ed \u00fanikov\u00e9ho znakov\u00e1n\u00ed a zachov\u00e1vaj\u00ed p\u016fvodn\u00ed form\u00e1tov\u00e1n\u00ed textu v bloku. Obklopen\u00ed bloku se prov\u00e1d\u00ed t\u0159emi dvojit\u00fdmi uvozovkami. V Java 14 byla v textov\u00fdch bloc\u00edch implementov\u00e1na podpora escape sekvence &#171;&#092;s&#187; pro definici jednoho mezery a &#171;&#092;&#187; pro spojen\u00ed s n\u00e1sleduj\u00edc\u00edm \u0159\u00e1dkem (ignorov\u00e1n\u00ed p\u0159enosu \u0159\u00e1dku, kdy\u017e je t\u0159eba vypsat velmi dlouh\u00fd \u0159et\u011bzec). Nap\u0159\u00edklad m\u00edsto k\u00f3du\n<p>   String html = &#171;&lt;HTML&gt;&#187; +<br \/>\n   &#171;&#092;n&#092;t&#187; + &#171;&lt;BODY&gt;&#187; +<br \/>\n   &#171;&#092;n&#092;t&#092;t&#187; + &#171;&lt;H1&gt;&#092;&#187;Java 14 je tady!&#092;&#187;&lt;\\\/H1&gt;&#187; +<br \/>\n   &#171;&#092;n&#092;t&#187; + &#171;&lt;\\\/BODY&gt;&#187; +<br \/>\n   &#171;&#092;n&#187; + &#171;&lt;\\\/HTML&gt;&#187;;<\/p>\n<p>m\u016f\u017eete napsat:<\/p>\n<p>   String html = &#171;&#187;&#187;<br \/>\n   &lt;HTML&gt;<br \/>\n     &lt;BODY&gt;<br \/>\n       &lt;H1&gt;&#187;Java 14&#092;<br \/>\n je tady!&#187;&lt;\\\/H1&gt;<br \/>\n     &lt;\/BODY&gt;<br \/>\n   &lt;\\\/HTML&gt;&#187;&#187;&#187;;<\/p>\n<li class=\"l\"> Byla roz\u0161\u00ed\u0159ena informativnost diagnostiky p\u0159i v\u00fdskytu v\u00fdjimek <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/358\">NullPointerException<\/a><\/noindex>. Pokud d\u0159\u00edve zpr\u00e1va o chyb\u011b pouze odkazovala na \u010d\u00edslo \u0159\u00e1dku, nyn\u00ed v n\u00ed je podrobn\u011b uvedeno, kter\u00fd z metod vyvolal v\u00fdjimku. Roz\u0161\u00ed\u0159en\u00e1 diagnostika je zat\u00edm aktivov\u00e1na pouze p\u0159i spu\u0161t\u011bn\u00ed s p\u0159\u00edznakem &#171;-XX:+ShowCodeDetailsInExceptionMessages&#187;. Nap\u0159\u00edklad p\u0159i uveden\u00ed tohoto p\u0159\u00edznaku se v\u00fdjimka v \u0159\u00e1dku\n<p>   var name = user.getLocation().getCity().getName();<\/p>\n<p> povede k vyps\u00e1n\u00ed zpr\u00e1vy<\/p>\n<p>   V\u00fdjimka v threadu 'main' java.lang.NullPointerException: Nelze vyvolat 'Location.getCity()'<br \/>\n   proto\u017ee n\u00e1vratov\u00e1 hodnota 'User.getLocation()' je null<br \/>\n   at NullPointerExample.main(NullPointerExample.java:5):5)<\/p>\n<p>co\u017e umo\u017e\u0148uje pochopit, \u017ee metoda Location.getCity() nebyla vol\u00e1na, a User.getLocation() vr\u00e1tila hodnotu null.<\/p>\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/343\">Realizov\u00e1no<\/a><\/noindex> p\u0159edb\u011b\u017en\u00e1 verze n\u00e1stroje jpackage, kter\u00fd umo\u017e\u0148uje vytv\u00e1\u0159et bal\u00ed\u010dky pro samostatn\u00e9 (self-contained) Java aplikace. N\u00e1stroj je zalo\u017een na javapackager z JavaFX a umo\u017e\u0148uje vytv\u00e1\u0159et bal\u00ed\u010dky ve form\u00e1tech, kter\u00e9 jsou vlastn\u00ed r\u016fzn\u00fdm platform\u00e1m (msi a exe pro Windows, pkg a dmg pro macOS, deb a rpm pro Linux). Bal\u00ed\u010dky zahrnuj\u00ed v\u0161echny pot\u0159ebn\u00e9 z\u00e1vislosti.\n<li class=\"l\"> V garbage collector G1 <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/345\">p\u0159id\u00e1n<\/a><\/noindex> nov\u00fd mechanismus distribuce pam\u011bti, kter\u00fd zohled\u0148uje specifika pr\u00e1ce na velk\u00fdch syst\u00e9mech vyu\u017e\u00edvaj\u00edc\u00edch architekturu <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Non-Uniform_Memory_Access\">NUMA<\/a><\/noindex>. Nov\u00fd pam\u011b\u0165ov\u00fd distributer se aktivuje pomoc\u00ed p\u0159\u00edznaku '+XX:+UseNUMA' a umo\u017e\u0148uje v\u00fdrazn\u011b zv\u00fd\u0161it v\u00fdkon na NUMA syst\u00e9mech.\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/349\">P\u0159id\u00e1no<\/a><\/noindex> API pro sledov\u00e1n\u00ed ud\u00e1lost\u00ed v re\u00e1ln\u00e9m \u010dase JFR (JDK Flight Recorder), nap\u0159\u00edklad pro organizaci nep\u0159etr\u017eit\u00e9ho monitorov\u00e1n\u00ed.\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/352\">P\u0159id\u00e1no<\/a><\/noindex> modul jdk.nio.mapmode, nab\u00edzej\u00edc\u00ed nov\u00e9 re\u017eimy (READ_ONLY_SYNC, WRITE_ONLY_SYNC) pro vytv\u00e1\u0159en\u00ed mapovan\u00fdch bajtov\u00fdch buffer\u016f (MappedByteBuffer), odkazuj\u00edc\u00edch na nevolatiln\u00ed pam\u011b\u0165 (NVM).\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/370\">Realizov\u00e1no<\/a><\/noindex> p\u0159edb\u011b\u017en\u00e1 verze API Foreign-Memory Access, umo\u017e\u0148uj\u00edc\u00ed Java aplikac\u00edm bezpe\u010dn\u011b a efektivn\u011b p\u0159istupovat k oblastem pam\u011bti mimo Java haldu, manipuluj\u00edc\u00ed s nov\u00fdmi abstrakcemi MemorySegment, MemoryAddress a MemoryLayout.\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/362\">Byly vyhl\u00e1\u0161eny<\/a><\/noindex> zastaral\u00e9 porty pro OS Solaris a procesory SPARC (Solaris\/SPARC, Solaris\/x64 a Linux\/SPARC) s \u00famyslem tyto porty v budoucnu odstranit. P\u0159eveden\u00ed uveden\u00fdch port\u016f do kategorie zastaral\u00fdch umo\u017en\u00ed komunit\u011b urychlit v\u00fdvoj nov\u00fdch funkc\u00ed OpenJDK, ani\u017e by musela ztr\u00e1cet \u010das na \u00fadr\u017ebu aspekt\u016f specifick\u00fdch pro Solaris a SPARC.\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/363\">Odebr\u00e1no<\/a><\/noindex> garbage collector CMS (Concurrent Mark Sweep), kter\u00fd byl p\u0159ed dv\u011bma lety ozna\u010den za zastaral\u00fd a z\u016fstal bez podpory (na jeho m\u00edsto u\u017e d\u00e1vno nastoupil garbage collector G1). Krom\u011b toho, <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/366\">ozn\u00e1meno<\/a><\/noindex> zastaral\u00e9 pou\u017eit\u00ed kombinace algoritm\u016f sb\u011bru odpadu ParallelScavenge a SerialOld (spu\u0161t\u011bn\u00ed s volbami '-XX:+UseParallelGC -XX:-UseParallelOldGC').\n<li class=\"l\"> Byla zaji\u0161t\u011bna experiment\u00e1ln\u00ed podpora sb\u011bra\u010de odpadu ZGC (Z Garbage Collector) na platform\u00e1ch macOS a Windows (d\u0159\u00edve byl podporov\u00e1n pouze v Linuxu). ZGC funguje v pasivn\u00edm re\u017eimu a co nejv\u00edce minimalizuje zpo\u017ed\u011bn\u00ed zp\u016fsoben\u00e1 sb\u011brem odpadu (\u010das zastaven\u00ed p\u0159i pou\u017eit\u00ed ZGC nep\u0159esahuje 10 ms) a m\u016f\u017ee pracovat jak s mal\u00fdmi, tak s obrovsk\u00fdmi haldami o velikosti od n\u011bkolika stovek megabajt\u016f a\u017e po n\u011bkolik terabajt\u016f.\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/367\">Odstran\u011bno<\/a><\/noindex> n\u00e1stroje a API pro kompresi JAR soubor\u016f pomoc\u00ed algoritmu Pack200.\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Zdroj: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=52559\">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 14 (Java Platform, Standard Edition 14), \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. \u0412 Java SE 14 \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, \u0432\u0441\u0435 \u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 Java-\u043f\u0440\u043e\u0435\u043a\u0442\u044b \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 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u0413\u043e\u0442\u043e\u0432\u044b\u0435 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 [&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-74554","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\" \/>\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-14\" \/>\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 14 | 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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/news\/vypusk-java-se-14\" \/>\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=\"2020-03-18T17:41:55+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-18T17:41:55+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 14 | ProHoster","description":"Po \u0161esti m\u011bs\u00edc\u00edch v\u00fdvoje spole\u010dnost Oracle uvedla platformu","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/vypusk-java-se-14","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 14 | 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","og:url":"https:\/\/prohoster.info\/cs\/blog\/news\/vypusk-java-se-14","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":"2020-03-18T17:41:55+00:00","article:modified_time":"2020-03-18T17:41:55+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"74554","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:12:24","updated":"2022-10-01 23:29:02","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/74554","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=74554"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/74554\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=74554"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=74554"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=74554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}