{"id":94334,"date":"2020-09-16T01:42:08","date_gmt":"2020-09-15T23:42:08","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/vypusk-java-se-15"},"modified":"2020-09-16T01:42:08","modified_gmt":"2020-09-15T23:42:08","slug":"vypusk-java-se-15","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/news\/vypusk-java-se-15","title":{"rendered":"Lansarea Java SE 15","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dup\u0103 \u0219ase luni de dezvoltare, compania Oracle <noindex><a rel=\"nofollow\" href=\"http:\/\/mail.openjdk.java.net\/pipermail\/announce\/2020-September\/000291.html\">a lansat<\/a><\/noindex> platforma <noindex><a rel=\"nofollow\" href=\"https:\/\/www.oracle.com\/java\/technologies\/javase-downloads.html\">Java SE 15<\/a><\/noindex> (Java Platform, Standard Edition 15), ca implementare de referin\u021b\u0103 fiind utilizat proiectul deschis OpenJDK. Java SE 15 p\u0103streaz\u0103 compatibilitatea \u00eenapoi cu versiunile anterioare ale platformei Java, toate proiectele Java scrise anterior vor func\u021biona f\u0103r\u0103 modific\u0103ri pe noua versiune. Versiunile gata de instalare ale Java SE 15 (JDK, JRE \u0219i Server JRE) <noindex><a rel=\"nofollow\" href=\"http:\/\/jdk.java.net\/15\">sunt preg\u0103tite<\/a><\/noindex> pentru Linux (x86_64), Windows \u0219i macOS. Implementarea de referin\u021b\u0103 dezvoltat\u0103 \u00een cadrul proiectului OpenJDK <noindex><a rel=\"nofollow\" href=\"http:\/\/openjdk.java.net\/projects\/jdk\/15\/\">Java 15<\/a><\/noindex> este complet deschis\u0103 sub licen\u021ba GPLv2 cu excep\u021bii GNU ClassPath, care permit legarea dinamic\u0103 cu produse comerciale. <\/p>\n<p>Java SE 15 este clasificat ca o versiune cu suport obi\u0219nuit, actualiz\u0103rile pentru care vor fi lansate p\u00e2n\u0103 la urm\u0103toarea versiune. Ca ramur\u0103 cu suport pe termen lung (LTS), ar trebui utilizat\u0103 Java SE 11, actualiz\u0103rile pentru care vor fi lansate p\u00e2n\u0103 \u00een 2026. Anteriora ramur\u0103 LTS, Java 8, va fi suportat\u0103 p\u00e2n\u0103 \u00een decembrie 2020. Urm\u0103toarea versiune LTS este planificat\u0103 pentru septembrie 2021. S\u0103 reamintim c\u0103 \u00eencep\u00e2nd cu lansarea Java 10, proiectul a adoptat un nou proces de dezvoltare, care implic\u0103 un ciclu mai scurt de formare a noilor versiuni. Noile func\u021bionalit\u0103\u021bi sunt acum dezvoltate \u00eentr-o ramur\u0103 principal\u0103 care este constant actualizat\u0103, \u00een care sunt incluse modific\u0103ri deja preg\u0103tite \u0219i din care se ramific\u0103, la fiecare \u0219ase luni, ramuri pentru stabilizarea noilor lans\u0103ri. <\/p>\n<p>Din <noindex><a rel=\"nofollow\" href=\"http:\/\/openjdk.java.net\/projects\/jdk\/15\/\">inova\u021bii<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/jdk.java.net\/14\/release-notes#newfeatures\">Java 15<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.oracle.com\/java\/technologies\/javase\/15all-relnotes.html\">poate<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/blogs.oracle.com\/javamagazine\/inside-java-15-fourteen-jeps-in-five-buckets\">remarc<\/a><\/noindex>:<\/p>\n<ul>\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/339\">Este inclus\u0103<\/a><\/noindex> suportul pentru algoritmul de generare a semn\u0103turii digitale EdDSA (Edwards-Curve Digital Signature Algorithm  <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc8032\">RFC 8032<\/a><\/noindex>). Implementarea propus\u0103 a EdDSA nu depinde de platformele hardware, este protejat\u0103 \u00eempotriva atacurilor prin canal lateral (asigur\u00e2nd un timp constant pentru toate calculele) \u0219i din punct de vedere al performan\u021bei dep\u0103\u0219e\u0219te implementarea existent\u0103 ECDSA, scris\u0103 \u00een limbajul C, av\u00e2nd acela\u0219i nivel de protec\u021bie. De exemplu, EdDSA folosind o curb\u0103 eliptic\u0103 cu o cheie de 126 de bi\u021bi demonstreaz\u0103 o performan\u021b\u0103 similar\u0103 cu ECDSA cu curb\u0103 eliptic\u0103 secp256r1 \u0219i o cheie de 128 de bi\u021bi.\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/360\">Ad\u0103ugat<\/a><\/noindex> suport experimental pentru clasele \u0219i interfe\u021bele sigilate, care nu pot fi utilizate de alte clase \u0219i interfe\u021be pentru mo\u0219tenire, extindere sau redefinirea implement\u0103rii. Clasele sigilate ofer\u0103, de asemenea, o modalitate mai declarativ\u0103 de a restric\u021biona utilizarea superclasei dec\u00e2t modificatorii de acces, bazat\u0103 pe enumerarea explicit\u0103 a subclaselor permise pentru extindere.\n<p>   package com.example.geometry;<\/p>\n<p>   public sealed class Shape<br \/>\n        permits com.example.polar.Circle,<br \/>\n                com.example.quad.Rectangle,<br \/>\n                com.example.quad.simple.Square {\u2026}<\/p>\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/371\">Ad\u0103ugat<\/a><\/noindex> suport pentru clase ascunse care nu pot fi utilizate direct de codul byte al altor clase. Principala utilizare a claselor ascunse este \u00een cadrele de lucru care genereaz\u0103 dinamic clase \u00een timpul execu\u021biei \u0219i le utilizeaz\u0103 indirect, prin <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9E%D1%82%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)\">reflec\u021bie<\/a><\/noindex>. Aceste clase au, de obicei, un ciclu de via\u021b\u0103 limitat, astfel \u00eenc\u00e2t \u00eentre\u021binerea lor pentru acces din clasele generate static nu este justificat\u0103 \u0219i va duce doar la o cre\u0219tere a consumului de memorie. Clasele ascunse permit, de asemenea, evitarea API-ului neoficial sun.misc.Unsafe::defineAnonymousClass, care este programat pentru eliminare \u00een viitor.\n<li class=\"l\"> Colectorul de gunoi ZGC (Z Garbage Collector) a fost stabilizat \u0219i recunoscut ca fiind preg\u0103tit pentru utilizare pe scar\u0103 larg\u0103. ZGC func\u021bioneaz\u0103 \u00een modul pasiv, minimiz\u00e2nd \u00eent\u00e2rzierile cauzate de colectarea gunoiului (timpul de oprire la utilizarea ZGC nu dep\u0103\u0219e\u0219te 10 ms.) \u0219i poate func\u021biona at\u00e2t cu heap-uri mici, c\u00e2t \u0219i cu cele uria\u0219e, cu dimensiuni de la c\u00e2teva sute de megabi\u021bi p\u00e2n\u0103 la multe terabi\u021bi.\n<li class=\"l\"> Stabilizat \u0219i recunoscut ca fiind preg\u0103tit pentru utilizare pe scar\u0103 larg\u0103<br \/>\n colector de gunoi <noindex><a rel=\"nofollow\" href=\"http:\/\/openjdk.java.net\/projects\/shenandoah\/\">Shenandoah<\/a><\/noindex>, func\u021bioneaz\u0103 cu \u00eent\u00e2rzieri minime (Low-Pause-Time Garbage Collector). Shenandoah a fost dezvoltat de Red Hat \u0219i se remarc\u0103 prin utilizarea unui algoritm care reduce timpul de oprire \u00een timpul colect\u0103rii gunoiului prin efectuarea cur\u0103\u021b\u0103rii \u00een paralel cu executarea aplica\u021biilor Java. Dimensiunea \u00eent\u00e2rzierilor introduse de colectorul de gunoi este predictibil\u0103 \u0219i nu depinde de dimensiunea heap-ului, adic\u0103 pentru heap-uri de 200 MB \u0219i 200 GB \u00eent\u00e2rzierile vor fi identice (<noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.openjdk.java.net\/display\/shenandoah\/Main\">nu dep\u0103\u0219esc<\/a><\/noindex> 50 ms \u0219i, de obicei, se \u00eencadreaz\u0103 \u00een 10 ms);<\/p>\n<li class=\"l\"> Suport pentru <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/378\">blocuri de text<\/a><\/noindex> \u2014 o nou\u0103 form\u0103 de \u0219iruri literale, care permit includerea \u00een codul surs\u0103 a datelor textuale pe mai multe linii f\u0103r\u0103 a necesita sc\u0103parea caracterelor \u0219i p\u0103str\u00e2nd formatarea ini\u021bial\u0103 a textului \u00een bloc. \u00cencadrarea blocului se face cu trei ghilimele duble.\n<p>De exemplu, \u00een loc de codul<\/p>\n<p>   String html = \"\" +<br \/>\n   \"\n\t\" + \"\" +<br \/>\n   \"\n\t\t\" + \"<h1>Java 15 este aici!<\/h1>\" +<br \/>\n   \"\n\t\" + \"\" +<br \/>\n   \"\n\" + \"\";<\/p>\n<p>poate fi specificat:<\/p>\n<p>   String html = \"\"<br \/>\n   &lt;HTML&gt;<br \/>\n     &lt;BODY&gt;<br \/>\n       <h1>\"Java 15\"<br \/>\n este aici!\"<\/h1><br \/>\n     &lt;\\\/BODY&gt;<br \/>\n   \"\";<\/p>\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/373\">Reformulat<\/a><\/noindex> API Legacy DatagramSocket. Implement\u0103rile vechi java.net.DatagramSocket \u0219i java.net.MulticastSocket au fost \u00eenlocuite cu o implementare modern\u0103, mai simpl\u0103 pentru depanare \u0219i \u00eentre\u021binere, fiind de asemenea compatibil\u0103 cu firele virtuale dezvoltate \u00een cadrul proiectului <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/projects\/loom\">Loom<\/a><\/noindex>. \u00cen cazul unor posibile probleme de compatibilitate cu codul existent, vechea implementare nu a fost \u0219tears\u0103 \u0219i poate fi activat\u0103 prin op\u021biunea jdk.net.usePlainDatagramSocketImpl.\n<li class=\"l\"> A fost propus\u0103 o a doua implementare experimental\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/375\">a\u0219ocierea cu un model<\/a><\/noindex> \u00een operatorul \"instanceof\", care permite definirea imediat\u0103 a unei variabile locale pentru a accesa valoarea verificat\u0103. De exemplu, se poate scrie direct \"if (obj instanceof String s &amp;&amp; s.length() &gt; 5) {.. s.contains(..) ..}\" f\u0103r\u0103 a defini explicit \"String s = (String) obj\".\n<p>A fost:<\/p>\n<p>   if (obj instanceof Group) {<br \/>\n     Group group = (Group) obj;<br \/>\n     var entries = group.getEntries();<br \/>\n   }<\/p>\n<p>Acum nu mai este necesar s\u0103 definim \"Group group = (Group) obj\":<\/p>\n<p>   if (obj instanceof Group group) {<br \/>\n     var entries = group.getEntries();<br \/>\n   }<\/p>\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/384\">A fost propus\u0103<\/a><\/noindex> a doua implementare experimental\u0103 a cuv\u00e2ntului cheie \"<noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/359\">record<\/a><\/noindex>\", care ofer\u0103 o form\u0103 compact\u0103 pentru definirea claselor, permi\u021b\u00e2nd omiterea defini\u021biei explicite a diferitelor metode de baz\u0103, cum ar fi equals(), hashCode() \u0219i toString(), \u00een cazurile \u00een care datele sunt p\u0103strate doar \u00een c\u00e2mpuri, comportamentul acestora r\u0103m\u00e2n\u00e2nd neschimbat. C\u00e2nd se utilizeaz\u0103 implement\u0103rile tipice ale metodelor equals(), hashCode() \u0219i toString() \u00een clas\u0103, se poate renun\u021ba la defini\u021bia lor explicit\u0103:\n<p>   public record BankTransaction(LocalDate date,<br \/>\n                              double amount,<br \/>\n                              String description) {}<\/p>\n<p>Aceast\u0103 declara\u021bie va duce la ad\u0103ugarea automat\u0103 a implement\u0103rilor metodelor equals(), hashCode() \u0219i toString() \u00een plus fa\u021b\u0103 de constructor \u0219i metodele care controleaz\u0103 modificarea datelor (getter).<\/p>\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/383\">Propus<\/a><\/noindex> a doua variant\u0103 preliminar\u0103 a API Foreign-Memory Access, permi\u021b\u00e2nd aplica\u021biilor Java s\u0103 acceseze \u00een siguran\u021b\u0103 \u0219i eficient zone de memorie \u00een afara heap-ului Java, manipul\u00e2nd noile abstrac\u021bii MemorySegment, MemoryAddress \u0219i MemoryLayout.\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/374\">Suportul pentru protocoalele TLS 1.0 \u0219i TLS 1.1 a fost dezactivat.<\/a><\/noindex> tehnica de optimizare Biased Locking, utilizat\u0103 \u00een HotSpot JVM pentru a reduce cheltuielile cauzate de blocaje, a fost declarat\u0103 \u00eenvechit\u0103. Aceast\u0103 tehnic\u0103 a devenit lipsit\u0103 de relevan\u021b\u0103 pe sistemele cu instruc\u021biuni atomice furnizate de procesoarele moderne \u0219i este prea costisitoare pentru \u00eentre\u021binere din cauza complexit\u0103\u021bii sale.\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/385\">Declarat<\/a><\/noindex> \u00eenvechit mecanism <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/14\/docs\/specs\/rmi\/activation.html\">Activarea RMI<\/a><\/noindex>, care va fi eliminat\u0103 \u00eentr-una din viitoarele versiuni. Se remarc\u0103 faptul c\u0103 Activarea RMI a fost declarat\u0103 \u00eenvechit\u0103, clasificat\u0103 ca op\u021biune \u00eenc\u0103 din Java 8 \u0219i aproape nu este utilizat\u0103 \u00een practica modern\u0103.\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/372\">Eliminat<\/a><\/noindex>  motorul JavaScript <noindex><a rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=35427\">Nashorn<\/a><\/noindex>, care a fost declarat \u00eenvechit \u00een Java SE 11.\n<li class=\"l\"> <noindex><a rel=\"nofollow\" href=\"https:\/\/openjdk.java.net\/jeps\/381\">Au fost eliminate<\/a><\/noindex> porturile pentru sistemul de operare Solaris \u0219i procesoarele SPARC (Solaris\/SPARC, Solaris\/x64 \u0219i Linux\/SPARC). Eliminarea acestor porturi va permite comunit\u0103\u021bii s\u0103 accelereze dezvoltarea de noi func\u021bionalit\u0103\u021bi OpenJDK, f\u0103r\u0103 a pierde timp cu men\u021binerea caracteristicilor specifice Solaris \u0219i SPARC.\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Sursa: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=53717\">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 15 (Java Platform, Standard Edition 15), \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 15 \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-94334","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\" \/>\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-15\" \/>\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 15 | 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\/ro\/blog\/news\/vypusk-java-se-15\" \/>\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-09-15T23:42:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-15T23:42:08+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 15 | ProHoster","description":"Dup\u0103 \u0219ase luni de dezvoltare, compania Oracle a lansat platforma","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/vypusk-java-se-15","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 15 | 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\/ro\/blog\/news\/vypusk-java-se-15","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-09-15T23:42:08+00:00","article:modified_time":"2020-09-15T23:42:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"94334","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 11:29:28","updated":"2022-10-03 17:44:46","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/94334","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=94334"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/94334\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=94334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=94334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=94334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}