{"id":14901,"date":"2023-03-02T13:26:42","date_gmt":"2023-03-02T12:26:42","guid":{"rendered":"https:\/\/vived.io\/?p=14901"},"modified":"2023-03-02T13:26:44","modified_gmt":"2023-03-02T12:26:44","slug":"czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/","title":{"rendered":"Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania? &#8211; JVM Weekly vol. 126"},"content":{"rendered":"\n<h2 id=\"1-czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania\" data-num=1>1. Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania?<\/h2>\n\n\n\n<p>Java jest popularnym j\u0119zykiem programowania dla du\u017cych, z\u0142o\u017conych aplikacji, ale jest r\u00f3wnie\u017c powszechnie u\u017cywana jako pierwszy j\u0119zyk dla pocz\u0105tkuj\u0105cych &#8211; na przyk\u0142ad w \u015brodowisku szkolnym czy te\u017c akademickim. Te \u015bwiaty jest z za\u0142o\u017cenia trudno pogodzi\u0107 &#8211; cechy j\u0119zyka, zaprojektowane dla du\u017cych program\u00f3w mog\u0105 by\u0107 przyt\u0142aczaj\u0105ce dla nowych uczni\u00f3w. O ile wi\u0119c sam na studiach mia\u0142em kurs Javy, to ju\u017c w takim liceum podstaw programowania uczyli mnie na znacznie \u0142atwiejszym do zrozumienia Pascalu (pami\u0119ta kto\u015b jeszcze ten j\u0119zyk?).<\/p>\n\n\n\n<p>Tw\u00f3rcy Javy ostatnimi czasy stwierdzili w ramach publikacji <em><a href=\"https:\/\/openjdk.org\/projects\/amber\/design-notes\/on-ramp\">Paving on the on-ramp<\/a><\/em>, o kt\u00f3rej mieli\u015bcie w przesz\u0142o\u015bci <a href=\"https:\/\/vived.substack.com\/i\/76609615\/what-does-kotlin-have-to-offer-for-java-developers-in\">okazj\u0119 ju\u017c czyta\u0107<\/a>, \u017ce nale\u017cy obni\u017cy\u0107 pr\u00f3g wej\u015bcia dla pocz\u0105tkuj\u0105cych. Teraz obietnice materializuj\u0105 si\u0119 w pierwszym z opisywanych dzi\u015b JEP-\u00f3w &#8211; <em><a href=\"https:\/\/openjdk.org\/jeps\/8302326\">JEP draft: Anonymous Main Classes and Enhanced Main Methods (Preview)<\/a><\/em>. Nawet je\u015bli nie jeste\u015bcie &#8222;\u015bwie\u017cakami&#8221;, to i Wy odnajdziecie w nim co\u015b interesuj\u0105cego dla siebie<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Group-758-1024x329.png\" alt=\"\" class=\"wp-image-14913\" width=\"768\" height=\"247\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Group-758-1024x329.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Group-758-300x96.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Group-758-768x247.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Group-758.png 1425w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><figcaption class=\"wp-element-caption\">Bo Wy te\u017c kiedy\u015b mo\u017cecie si\u0119 znale\u017a\u0107 w powy\u017cszej sytuacji.<\/figcaption><\/figure><\/div>\n\n\n<p>Tw\u00f3rcy JDK postanowili bowiem upro\u015bci\u0107 sk\u0142adnie j\u0119zyka dla os\u00f3b, kt\u00f3re u\u017cywaj\u0105 Javy jako pierwszego j\u0119zyka programowania (i jednak g\u0142\u00f3wnie dla nich, o czym za chwil\u0119). Osi\u0105gni\u0119te zostanie to dzi\u0119ki kilka wynikaj\u0105cym z siebie krokom. Pierwszym z nich jest zmiana tak zwanego &#8222;protoko\u0142u uruchomieniowego&#8221; dla Javy. Sp\u00f3jrzmy sobie na ten wszystkim znany fragment kodu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class HelloWorld { \n    public static void main(String&#091;] args) { \n        System.out.println(&quot;Hello, World!&quot;);\n    }\n}<\/code><\/pre>\n\n\n\n<p>Ca\u0142o\u015b\u0107 posiada bardzo wiele nadmiarowej sk\u0142adni &#8211; static, void, tablica argument\u00f3w. Podejrzewam, \u017ce bardzo wiele z Waszych aplikacji nigdy, przyk\u0142adowo, nie odczytywa\u0142a argument\u00f3w z linii komend, w kt\u00f3rym to wypadku <code>String[] args<\/code> stanowi tylko niepotrzebny szum. Tego typu koncepty powinny by\u0107 mo\u017cliwe do przekazania nowicjuszom w momencie, gdy realnie b\u0119d\u0105 potrzebne &#8211; ale nie wcze\u015bniej. Tutaj wchodzi jednak wspomniany Launch Protocol &#8211; czyli zbi\u00f3r zasad definiuj\u0105cy to, jak musi wygl\u0105da\u0107 funkcja stanowi\u0105ca punkt wej\u015bciowy do programu. Ten ma zosta\u0107 znacznie uproszczony i umo\u017cliwi\u0107 sprowadzenie ca\u0142o\u015bci nawet do poni\u017cszej postaci:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class HelloWorld { \n    void main() { \n        System.out.println(&quot;Hello, World!&quot;);\n    }\n}<\/code><\/pre>\n\n\n\n<p>Oczywi\u015bcie, \u017ceby zachowa\u0107 odpowiedni poziom wstecznej kompatybilno\u015bci, ca\u0142o\u015b\u0107 obwarowana zosta\u0142a zbiorem regu\u0142 definiuj\u0105cych, kt\u00f3ry wariant zostaje wybrany jako ten g\u0142\u00f3wny <code>main<\/code>. Ale po takowe odsy\u0142am ju\u017c do <a href=\"https:\/\/openjdk.org\/jeps\/8302326\">oryginalnego JEP-a<\/a>.<\/p>\n\n\n\n<p>Teraz czas, aby zaj\u0105\u0107 si\u0119 drugim cz\u0142onem nazwy nowego Draftu. Skoro uproszczony zosta\u0142 sam kod main, warto by\u0142oby zaj\u0105\u0107 si\u0119 r\u00f3wnie\u017c drug\u0105 cz\u0119\u015bci\u0105 &#8222;boilerplate&#8221;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class HelloWorld { \n    (...)\n}<\/code><\/pre>\n\n\n\n<p>Dzisiaj, \u017ceby w og\u00f3le zacz\u0105\u0107 przygod\u0119 z Jav\u0105, niezb\u0119dne jest zrozumienie konceptu klas, co bywa bardzo trudne do wyja\u015bnienia nowicjuszom. Dlatego te\u017c tw\u00f3rcy Javy zdecydowali, \u017ce i ten element powinien zosta\u0107 odchudzony i zamierzaj\u0105 wprowadzi\u0107 klasy anonimowe &#8211; czyli umo\u017cliwi\u0107 pomini\u0119cie powy\u017cszego fragmentu kodu i pisanie w bardziej &#8222;skryptowy&#8221; spos\u00f3b.<\/p>\n\n\n\n<p>Dzi\u0119ki temu pisanie programu przy u\u017cyciu anonimowej klasy g\u0142\u00f3wnej jest bardziej skoncentrowane na tym, co program rzeczywi\u015bcie robi, nie wprowadzaj\u0105c nadmiarowych, niepotrzebnych koncepcji. Ka\u017cda anonimowa klasa g\u0142\u00f3wna obs\u0142uguje te same modyfikatory co zwyk\u0142e klasy nazwane, posiada domy\u015blny konstruktor bezargumentowy i mo\u017ce posiada\u0107 inicjator statyczny. Anonimowa klasa g\u0142\u00f3wna musi posiada\u0107 r\u00f3wnie\u017c funkcj\u0119 <code>main<\/code>.<\/p>\n\n\n\n<p>W praktyce sprowadza si\u0119 to do tego, \u017ce kod:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String greeting() { return &quot;Hello, World!&quot;; }\n\nvoid main() {\n    System.out.println(greeting());\n}<\/code><\/pre>\n\n\n\n<p>opakowywany zostaje w:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>new Object() {\n    String greeting() { return &quot;Hello, World!&quot;; }\n\n    void main() {\n         System.out.println(greeting());\n    }\n}.main()<\/code><\/pre>\n\n\n\n<p>Ponownie, jest w powy\u017cszym troch\u0119 uproszczenia &#8211; <a href=\"https:\/\/openjdk.org\/jeps\/8302326\">oryginalny JEP<\/a> zawiera wiele ciekawych detali.<\/p>\n\n\n\n<p>Co ciekawe &#8211; podczas pierwszej publikacji, ca\u0142o\u015b\u0107 nazywa\u0142a si\u0119 <strong>JEP draft: Implicit Classes and Enhanced Main Methods<\/strong>. Pewnie wielu programist\u00f3w Scali nazwa brzmi a\u017c nazbyt znajomo, dodatkowo termin ten opisuje zupe\u0142nie inny koncept. W zwi\u0105zku z czym dobrze, \u017ce postanowiono si\u0119 z niej wycofa\u0107 &#8211; i tak mamy w bran\u017cy za du\u017co konflikt\u00f3w nazw mi\u0119dzy poszczeg\u00f3lnymi j\u0119zykami programowania.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/openjdk.org\/projects\/amber\/design-notes\/on-ramp\">Paving on the on-ramp<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/openjdk.org\/jeps\/8302326\">JEP draft: Anonymous Main Classes and Enhanced Main Methods (Preview)<\/a><\/li>\n<\/ul>\n\n\n\n<h2 id=\"2-jdk-zegna-sie-z-architektura-procesorow-x86-32\" data-num=2>2. JDK \u017cegna si\u0119 z architektur\u0105 procesor\u00f3w x86-32<\/h2>\n\n\n\n<p>M\u00f3wi si\u0119, \u017ce nie ma nic przyjemniejszego ni\u017c usuwanie niepotrzebnego ju\u017c kodu. Wydaje mi si\u0119, \u017ce utrzymuj\u0105c projekt taki jak JDK mo\u017cna zrobi\u0107 krok bli\u017cej w stron\u0119 nirwany &#8211; a to poprzez usuwanie ca\u0142ych \u015brodowisk uruchomieniowych.<\/p>\n\n\n\n<p>Jak wynika z <em><a href=\"https:\/\/openjdk.org\/jeps\/8303167\">JEP draft: Deprecate the Windows x86-32 Port<\/a><\/em>, tw\u00f3rcy Javy przymierzaj\u0105 si\u0119 bowiem do usuni\u0119cia wersji JDK na system operacyjny Windows w wersji 32-bitowej. Na taki krok z\u0142o\u017cy\u0142o si\u0119 kilka czynnik\u00f3w, jak cho\u0107by fakt, \u017ce Microsoft ostatecznie przesta\u0142 ju\u017c wydawa\u0107 nowe wersje 32-bitowych system\u00f3w operacyjnych, a ostatni z nich (Windows 10) straci wsparcie tw\u00f3rc\u00f3w w drugiej po\u0142owie 2025. Znacznie ciekawsze s\u0105 jednak tutaj pobudki praktyczne &#8211; z JEP-a okazuje si\u0119 bowiem, \u017ce implementacja Wirtualny W\u0105tk\u00f3w nie jest kompatybilna z 32-bitowymi procesorami.<\/p>\n\n\n\n<p>Pewnie powy\u017csze by\u0142o wiadome od dawna, a tylko dla mnie to wzi\u0119\u0142o z zaskoczenia.<\/p>\n\n\n\n<p>Tak\u017ce ju\u017c nied\u0142ugo chc\u0105cych zbudowa\u0107 aplikacj\u0119 przy pomocy JDK na porzuconych systemach, przywita Was poni\u017cszy komunikat.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>configure: error: The Windows x86-32 port is deprecated and may be removed in a future release.<\/code><\/pre>\n\n\n\n<p>No c\u00f3\u017c, procesory 32-bitowe odchodz\u0105 ju\u017c w niepami\u0119\u0107 &#8211; ostatni\u0105 wspieran\u0105 wersj\u0105 pozostanie ta na architektur\u0119 arm32. Je\u015bli z jakiego\u015b powodu kluczowym jest dla Was utrzymanie wsparcia dla Windows x86-32, tw\u00f3rcy JDK zostawiaj\u0105 furtk\u0119 &#8211; wycofaj\u0105 si\u0119 z powy\u017cszego JEP-a, je\u015bli znajdzie si\u0119 podmiot zdeterminowany do migracji wirtualnych w\u0105tk\u00f3w na 32-bity, ale r\u00f3wnie\u017c dalszego utrzymywania ca\u0142o\u015bci portu. Od razu m\u00f3wi\u0119, \u017ce nie ma co liczy\u0107 na Microsoft &#8211; to <a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/11bpeb6\/comment\/ja1gvrn\/\">oni sami zaproponowali tego JEP-a<\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"548\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-2.png\" alt=\"\" class=\"wp-image-14919\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-2.png 500w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-2-274x300.png 274w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><figcaption class=\"wp-element-caption\">Zgodnie z zasadami Ned Stark<\/figcaption><\/figure><\/div>\n\n\n<p>PS: Je\u015bli byli\u015bcie kiedy\u015b ciekawi, co w og\u00f3le oznacza to x86 kt\u00f3re przewija si\u0119 przy okazji procesor\u00f3w 32-bitowych &#8211; termin oznacza <a href=\"https:\/\/www.techopedia.com\/definition\/20084\/x86\">kontynuator\u00f3w linii Intel 8086<\/a>. Tak, \u017ceby by\u0142o prosto i oczywi\u015bcie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/openjdk.org\/jeps\/8303167\">JEP draft: Deprecate the Windows x86-32 Port<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.techopedia.com\/definition\/20084\/x86\">What Does X86 Mean?<\/a><\/li>\n<\/ul>\n\n\n\n<h2 id=\"3-jdk-20-doczekalo-sie-zmian-w-liscie-jep-ow\" data-num=3>3. JDK 20 doczeka\u0142o si\u0119 zmian w li\u015bcie JEP-\u00f3w<\/h2>\n\n\n\n<p>Jak ju\u017c jeste\u015bmy w \u015bwiecie JEP-\u00f3w, to mamy do czynienia z bardzo nietypow\u0105 sytuacj\u0105. JDK 20 &#8211; maj\u0105ce mie\u0107 swoj\u0105 premier\u0119 jeszcze w marcu &#8211; od grudnia zesz\u0142ego roku znajduje si\u0119 bowiem w fazie Rampdown. Oznacza to, \u017ce z za\u0142o\u017ce\u0144 nie powinni\u015bmy ju\u017c spodziewa\u0107 si\u0119 pojawienia w nim \u017cadnych nowo\u015bci. W zesz\u0142ym tygodniu, z zaskoczenia zosta\u0142 dodany jednak nowy JEP &#8211; <em><a href=\"https:\/\/openjdk.org\/jeps\/438\">438: Vector API (Fifth Incubator)<\/a><\/em>.<\/p>\n\n\n\n<p>Wszystkich tych, kt\u00f3rzy boj\u0105 si\u0119 o stabilno\u015b\u0107 JDK 20 w oblicz tak p\u00f3\u017anego rozszerzenia uspokajam &#8211; pi\u0105ta ju\u017c inkubacja Vector API zosta\u0142a przypadkowo pomini\u0119ta, poniewa\u017c jest to kolejna ju\u017c wersja edycja proposala, nie przynosz\u0105ca \u017cadnych nowych zmian w API i kodzie \u017ar\u00f3d\u0142owym w stosunku do <em><a href=\"https:\/\/openjdk.org\/jeps\/426\">JEP 426: Vector API (Fourth Incubator)<\/a><\/em>, nie ma wi\u0119c ryzyka jakichkolwiek nieprzewidzianych regresji i zmiana ma charakter formalny. Ca\u0142o\u015b\u0107 sytuacji <a href=\"https:\/\/mail.openjdk.org\/pipermail\/jdk-dev\/2023-February\/007389.html\">wyja\u015bnia w mailu Mark Reinhold<\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"498\" height=\"275\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/ezgif-3-9da847db29-1.gif\" alt=\"\" class=\"wp-image-14907\"\/><figcaption class=\"wp-element-caption\">Mo\u017cna powiedzie\u0107, \u017ce Release Train odjecha\u0142 i nie zabra\u0142 pasa\u017cera.<\/figcaption><\/figure><\/div>\n\n\n<p>W samym JEP-ie mo\u017cna jednak znale\u017a\u0107 now\u0105 ciekaw\u0105 informacj\u0119 &#8211; tak naprawd\u0119 na samo Vector API b\u0119dziemy czekali jeszcze d\u0142ugo, nie nale\u017cy si\u0119 bowiem spodziewa\u0107 \u017cadnej wersji Preview przed stabilizacj\u0105 Projektu Valhalla. D\u0142ugoterminowym celem Vector API jest wykorzystanie ulepsze\u0144 Valhalli, zw\u0142aszcza Value Classes, nie posiadaj\u0105cych to\u017csamo\u015bci. API Vector b\u0119dzie wi\u0119c inkubowane przez wiele wyda\u0144, a\u017c niezb\u0119dne funkcje Projektu Valhalla stan\u0105 si\u0119 dost\u0119pne jako Preview. Po udost\u0119pnieniu, API Vector dostosuje si\u0119 i r\u00f3wnie\u017c dopiero wtedy trafi do Preview. Ciekawe, ile jeszcze kolejnych inkubacji nas w zwi\u0105zku z tym czeka.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"637\" height=\"147\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image.png\" alt=\"\" class=\"wp-image-14910\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image.png 637w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-300x69.png 300w\" sizes=\"auto, (max-width: 637px) 100vw, 637px\" \/><figcaption class=\"wp-element-caption\">Pozwol\u0119 sobie zacytowa\u0107 tutaj <a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/113q2eb\/comment\/j8v3aqc\/?utm_source=share&amp;utm_medium=web2x&amp;context=3\">Reddit r\/java<\/a>.<\/figcaption><\/figure><\/div>\n\n\n<p>A jak ju\u017c po\u015bwi\u0119ci\u0142em kilka akapit\u00f3w, zmuszaj\u0105c Was do zapoznania si\u0119 z detalami JEP-u, na kt\u00f3rego jeszcze poczekamy, to w nagrod\u0119 podrzuc\u0119 Wam dwie bardzo dobre, \u015bwie\u017ce publikacje, podsumowuj\u0105ce zar\u00f3wno obecny stan Valhalli, jak sposoby i u\u017cycia Vector API. Zainteresowanych tematem odsy\u0142am odpowiednio do publikacji <em><a href=\"https:\/\/www.infoworld.com\/article\/3687670\/project-valhalla-a-look-inside-javas-epic-refactor.html\">Project Valhalla: A look inside Java\u2019s epic refactor<\/a><\/em> oraz <em><a href=\"https:\/\/alexklibisz.com\/2023\/02\/25\/accelerating-vector-operations-jvm-jdk-incubator-vector-project-panama\">Accelerating vector operations on the JVM using the new jdk.incubator.vector module<\/a><\/em>. Oba tematy maj\u0105 tendencje do przedawniania si\u0119, teksty te pozwol\u0105 Wam lepiej uporz\u0105dkowa\u0107 sobie wiedz\u0119.<\/p>\n\n\n\n<p>A skoro ju\u017c by\u0142o o JDK 20, to na sam koniec wspomn\u0119 o wydaniu, kt\u00f3re b\u0119dzie mu towarzyszy\u0107. Ukaza\u0142a si\u0119 bowiem pierwsza testowa edycja GraalVM CE 23.0.0, kt\u00f3ra <a href=\"https:\/\/twitter.com\/graalvm\/status\/1628031945522266112\">zbudowana zosta\u0142a w oparciu o zbli\u017caj\u0105c\u0105 si\u0119 wersj\u0119 JDK<\/a>. Dowiedzieli\u015bmy si\u0119 r\u00f3wnie\u017c, \u017ce GraalVM 23.0 b\u0119dzie zawiera\u0142 <a href=\"https:\/\/github.com\/oracle\/graal\/issues\/5050\">wsparcie dla ZGC<\/a>. Umo\u017cliwi to u\u017cywanie wspomnianego Garbage Collectora w sytuacji, gdy Graal jest u\u017cywany jako kompilator JIT. \u017beby nie by\u0142o za s\u0142odko &#8211; ZGC ci\u0105gle jednak nie b\u0119dzie wspierany w wypadku Native Image. Te jednak r\u00f3wnie\u017c doczekaj\u0105 si\u0119 usprawnie\u0144 &#8211; maj\u0105 by\u0107 bowiem dost\u0119pne out-of-the-box, bez potrzeby <a href=\"https:\/\/github.com\/oracle\/graal\/pull\/5995\">doinstalowywania dodatkowych zale\u017cno\u015bci<\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"630\" height=\"360\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-3.png\" alt=\"\" class=\"wp-image-14922\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-3.png 630w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-3-300x171.png 300w\" sizes=\"auto, (max-width: 630px) 100vw, 630px\" \/><figcaption class=\"wp-element-caption\">Ale o GraalVM to sobie na pewno wi\u0119cej porozmawiamy przy okazji premiery.<\/figcaption><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/mail.openjdk.org\/pipermail\/jdk-dev\/2023-February\/007389.html\">JDK 20: First Release Candidate &#8211; Mark Reinhold<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/openjdk.org\/jeps\/426\">JEP 426: Vector API (Fourth Incubator)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.infoworld.com\/article\/3687670\/project-valhalla-a-look-inside-javas-epic-refactor.html\">Project Valhalla: A look inside Java\u2019s epic refactor<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/alexklibisz.com\/2023\/02\/25\/accelerating-vector-operations-jvm-jdk-incubator-vector-project-panama\">Accelerating vector operations on the JVM using the new jdk.incubator.vector module<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/oracle\/graal\/issues\/5050\">Add support for ZGC on HotSpot<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/oracle\/graal\/pull\/5995\">[GR-44216] Include native-image in GraalVM JDK<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Jako, \u017ce z powodu mojego urlopu tydzie\u0144 temu nie by\u0142o edycji, troch\u0119 nam si\u0119 nazbiera\u0142o temat\u00f3w. Dlatego dzisiaj skupimy si\u0119 na JEP-ach &#8211; bowiem pojawi\u0142o si\u0119 kilka interesuj\u0105cych.<\/p>\n","protected":false},"author":10,"featured_media":14928,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[23],"tags":[],"class_list":["post-14901","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm"],"acf":{"estimated_reading_time":"8","feature_image_blog":false,"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2.png","feature_image_visible":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania? - JVM Weekly vol. 126 - Vived<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania? - JVM Weekly vol. 126 - Vived\" \/>\n<meta property=\"og:description\" content=\"Jako, \u017ce z powodu mojego urlopu tydzie\u0144 temu nie by\u0142o edycji, troch\u0119 nam si\u0119 nazbiera\u0142o temat\u00f3w. Dlatego dzisiaj skupimy si\u0119 na JEP-ach - bowiem pojawi\u0142o si\u0119 kilka interesuj\u0105cych.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-02T12:26:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-02T12:26:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania? &#8211; JVM Weekly vol. 126\",\"datePublished\":\"2023-03-02T12:26:42+00:00\",\"dateModified\":\"2023-03-02T12:26:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/\"},\"wordCount\":1570,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/\",\"url\":\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/\",\"name\":\"Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania? - JVM Weekly vol. 126 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2.png\",\"datePublished\":\"2023-03-02T12:26:42+00:00\",\"dateModified\":\"2023-03-02T12:26:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania? &#8211; JVM Weekly vol. 126\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vived.io\/pl\/#website\",\"url\":\"https:\/\/vived.io\/pl\/\",\"name\":\"Vived\",\"description\":\"platform empowering IT people and technology companies to synergic growth\",\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vived.io\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vived.io\/pl\/#organization\",\"name\":\"Vived\",\"url\":\"https:\/\/vived.io\/pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"width\":136,\"height\":45,\"caption\":\"Vived\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\",\"name\":\"Artur Skowro\u0144ski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"caption\":\"Artur Skowro\u0144ski\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania? - JVM Weekly vol. 126 - Vived","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/","og_locale":"pl_PL","og_type":"article","og_title":"Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania? - JVM Weekly vol. 126 - Vived","og_description":"Jako, \u017ce z powodu mojego urlopu tydzie\u0144 temu nie by\u0142o edycji, troch\u0119 nam si\u0119 nazbiera\u0142o temat\u00f3w. Dlatego dzisiaj skupimy si\u0119 na JEP-ach - bowiem pojawi\u0142o si\u0119 kilka interesuj\u0105cych.","og_url":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/","og_site_name":"Vived","article_published_time":"2023-03-02T12:26:42+00:00","article_modified_time":"2023-03-02T12:26:44+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2.png","type":"image\/png"}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania? &#8211; JVM Weekly vol. 126","datePublished":"2023-03-02T12:26:42+00:00","dateModified":"2023-03-02T12:26:44+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/"},"wordCount":1570,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/","url":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/","name":"Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania? - JVM Weekly vol. 126 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2.png","datePublished":"2023-03-02T12:26:42+00:00","dateModified":"2023-03-02T12:26:44+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/czy-java-wreszcie-stanie-sie-dobrym-jezykiem-do-nauki-programowania-jvm-weekly-vol-126\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania? &#8211; JVM Weekly vol. 126"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","caption":"Artur Skowro\u0144ski"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>1. Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania?<\/h2>\n","innerContent":["\n<h2>1. Czy Java wreszcie stanie si\u0119 dobrym j\u0119zykiem do nauki programowania?<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Java jest popularnym j\u0119zykiem programowania dla du\u017cych, z\u0142o\u017conych aplikacji, ale jest r\u00f3wnie\u017c powszechnie u\u017cywana jako pierwszy j\u0119zyk dla pocz\u0105tkuj\u0105cych - na przyk\u0142ad w \u015brodowisku szkolnym czy te\u017c akademickim. Te \u015bwiaty jest z za\u0142o\u017cenia trudno pogodzi\u0107 - cechy j\u0119zyka, zaprojektowane dla du\u017cych program\u00f3w mog\u0105 by\u0107 przyt\u0142aczaj\u0105ce dla nowych uczni\u00f3w. O ile wi\u0119c sam na studiach mia\u0142em kurs Javy, to ju\u017c w takim liceum podstaw programowania uczyli mnie na znacznie \u0142atwiejszym do zrozumienia Pascalu (pami\u0119ta kto\u015b jeszcze ten j\u0119zyk?).<\/p>\n","innerContent":["\n<p>Java jest popularnym j\u0119zykiem programowania dla du\u017cych, z\u0142o\u017conych aplikacji, ale jest r\u00f3wnie\u017c powszechnie u\u017cywana jako pierwszy j\u0119zyk dla pocz\u0105tkuj\u0105cych - na przyk\u0142ad w \u015brodowisku szkolnym czy te\u017c akademickim. Te \u015bwiaty jest z za\u0142o\u017cenia trudno pogodzi\u0107 - cechy j\u0119zyka, zaprojektowane dla du\u017cych program\u00f3w mog\u0105 by\u0107 przyt\u0142aczaj\u0105ce dla nowych uczni\u00f3w. O ile wi\u0119c sam na studiach mia\u0142em kurs Javy, to ju\u017c w takim liceum podstaw programowania uczyli mnie na znacznie \u0142atwiejszym do zrozumienia Pascalu (pami\u0119ta kto\u015b jeszcze ten j\u0119zyk?).<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Tw\u00f3rcy Javy ostatnimi czasy stwierdzili w ramach publikacji <em><a href=\"https:\/\/openjdk.org\/projects\/amber\/design-notes\/on-ramp\">Paving on the on-ramp<\/a><\/em>, o kt\u00f3rej mieli\u015bcie w przesz\u0142o\u015bci <a href=\"https:\/\/vived.substack.com\/i\/76609615\/what-does-kotlin-have-to-offer-for-java-developers-in\">okazj\u0119 ju\u017c czyta\u0107<\/a>, \u017ce nale\u017cy obni\u017cy\u0107 pr\u00f3g wej\u015bcia dla pocz\u0105tkuj\u0105cych. Teraz obietnice materializuj\u0105 si\u0119 w pierwszym z opisywanych dzi\u015b JEP-\u00f3w - <em><a href=\"https:\/\/openjdk.org\/jeps\/8302326\">JEP draft: Anonymous Main Classes and Enhanced Main Methods (Preview)<\/a><\/em>. Nawet je\u015bli nie jeste\u015bcie \"\u015bwie\u017cakami\", to i Wy odnajdziecie w nim co\u015b interesuj\u0105cego dla siebie<\/p>\n","innerContent":["\n<p>Tw\u00f3rcy Javy ostatnimi czasy stwierdzili w ramach publikacji <em><a href=\"https:\/\/openjdk.org\/projects\/amber\/design-notes\/on-ramp\">Paving on the on-ramp<\/a><\/em>, o kt\u00f3rej mieli\u015bcie w przesz\u0142o\u015bci <a href=\"https:\/\/vived.substack.com\/i\/76609615\/what-does-kotlin-have-to-offer-for-java-developers-in\">okazj\u0119 ju\u017c czyta\u0107<\/a>, \u017ce nale\u017cy obni\u017cy\u0107 pr\u00f3g wej\u015bcia dla pocz\u0105tkuj\u0105cych. Teraz obietnice materializuj\u0105 si\u0119 w pierwszym z opisywanych dzi\u015b JEP-\u00f3w - <em><a href=\"https:\/\/openjdk.org\/jeps\/8302326\">JEP draft: Anonymous Main Classes and Enhanced Main Methods (Preview)<\/a><\/em>. Nawet je\u015bli nie jeste\u015bcie \"\u015bwie\u017cakami\", to i Wy odnajdziecie w nim co\u015b interesuj\u0105cego dla siebie<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":14913,"width":768,"height":247,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Group-758-1024x329.png\" alt=\"\" class=\"wp-image-14913\" width=\"768\" height=\"247\"\/><figcaption class=\"wp-element-caption\">Bo Wy te\u017c kiedy\u015b mo\u017cecie si\u0119 znale\u017a\u0107 w powy\u017cszej sytuacji.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/Group-758-1024x329.png\" alt=\"\" class=\"wp-image-14913\" width=\"768\" height=\"247\"\/><figcaption class=\"wp-element-caption\">Bo Wy te\u017c kiedy\u015b mo\u017cecie si\u0119 znale\u017a\u0107 w powy\u017cszej sytuacji.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Tw\u00f3rcy JDK postanowili bowiem upro\u015bci\u0107 sk\u0142adnie j\u0119zyka dla os\u00f3b, kt\u00f3re u\u017cywaj\u0105 Javy jako pierwszego j\u0119zyka programowania (i jednak g\u0142\u00f3wnie dla nich, o czym za chwil\u0119). Osi\u0105gni\u0119te zostanie to dzi\u0119ki kilka wynikaj\u0105cym z siebie krokom. Pierwszym z nich jest zmiana tak zwanego \"protoko\u0142u uruchomieniowego\" dla Javy. Sp\u00f3jrzmy sobie na ten wszystkim znany fragment kodu:<\/p>\n","innerContent":["\n<p>Tw\u00f3rcy JDK postanowili bowiem upro\u015bci\u0107 sk\u0142adnie j\u0119zyka dla os\u00f3b, kt\u00f3re u\u017cywaj\u0105 Javy jako pierwszego j\u0119zyka programowania (i jednak g\u0142\u00f3wnie dla nich, o czym za chwil\u0119). Osi\u0105gni\u0119te zostanie to dzi\u0119ki kilka wynikaj\u0105cym z siebie krokom. Pierwszym z nich jest zmiana tak zwanego \"protoko\u0142u uruchomieniowego\" dla Javy. Sp\u00f3jrzmy sobie na ten wszystkim znany fragment kodu:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>public class HelloWorld { \n    public static void main(String&#91;] args) { \n        System.out.println(\"Hello, World!\");\n    }\n}<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>public class HelloWorld { \n    public static void main(String&#91;] args) { \n        System.out.println(\"Hello, World!\");\n    }\n}<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ca\u0142o\u015b\u0107 posiada bardzo wiele nadmiarowej sk\u0142adni - static, void, tablica argument\u00f3w. Podejrzewam, \u017ce bardzo wiele z Waszych aplikacji nigdy, przyk\u0142adowo, nie odczytywa\u0142a argument\u00f3w z linii komend, w kt\u00f3rym to wypadku <code>String[] args<\/code> stanowi tylko niepotrzebny szum. Tego typu koncepty powinny by\u0107 mo\u017cliwe do przekazania nowicjuszom w momencie, gdy realnie b\u0119d\u0105 potrzebne - ale nie wcze\u015bniej. Tutaj wchodzi jednak wspomniany Launch Protocol - czyli zbi\u00f3r zasad definiuj\u0105cy to, jak musi wygl\u0105da\u0107 funkcja stanowi\u0105ca punkt wej\u015bciowy do programu. Ten ma zosta\u0107 znacznie uproszczony i umo\u017cliwi\u0107 sprowadzenie ca\u0142o\u015bci nawet do poni\u017cszej postaci:<\/p>\n","innerContent":["\n<p>Ca\u0142o\u015b\u0107 posiada bardzo wiele nadmiarowej sk\u0142adni - static, void, tablica argument\u00f3w. Podejrzewam, \u017ce bardzo wiele z Waszych aplikacji nigdy, przyk\u0142adowo, nie odczytywa\u0142a argument\u00f3w z linii komend, w kt\u00f3rym to wypadku <code>String[] args<\/code> stanowi tylko niepotrzebny szum. Tego typu koncepty powinny by\u0107 mo\u017cliwe do przekazania nowicjuszom w momencie, gdy realnie b\u0119d\u0105 potrzebne - ale nie wcze\u015bniej. Tutaj wchodzi jednak wspomniany Launch Protocol - czyli zbi\u00f3r zasad definiuj\u0105cy to, jak musi wygl\u0105da\u0107 funkcja stanowi\u0105ca punkt wej\u015bciowy do programu. Ten ma zosta\u0107 znacznie uproszczony i umo\u017cliwi\u0107 sprowadzenie ca\u0142o\u015bci nawet do poni\u017cszej postaci:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>class HelloWorld { \n    void main() { \n        System.out.println(\"Hello, World!\");\n    }\n}<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>class HelloWorld { \n    void main() { \n        System.out.println(\"Hello, World!\");\n    }\n}<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Oczywi\u015bcie, \u017ceby zachowa\u0107 odpowiedni poziom wstecznej kompatybilno\u015bci, ca\u0142o\u015b\u0107 obwarowana zosta\u0142a zbiorem regu\u0142 definiuj\u0105cych, kt\u00f3ry wariant zostaje wybrany jako ten g\u0142\u00f3wny <code>main<\/code>. Ale po takowe odsy\u0142am ju\u017c do <a href=\"https:\/\/openjdk.org\/jeps\/8302326\">oryginalnego JEP-a<\/a>.<\/p>\n","innerContent":["\n<p>Oczywi\u015bcie, \u017ceby zachowa\u0107 odpowiedni poziom wstecznej kompatybilno\u015bci, ca\u0142o\u015b\u0107 obwarowana zosta\u0142a zbiorem regu\u0142 definiuj\u0105cych, kt\u00f3ry wariant zostaje wybrany jako ten g\u0142\u00f3wny <code>main<\/code>. Ale po takowe odsy\u0142am ju\u017c do <a href=\"https:\/\/openjdk.org\/jeps\/8302326\">oryginalnego JEP-a<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Teraz czas, aby zaj\u0105\u0107 si\u0119 drugim cz\u0142onem nazwy nowego Draftu. Skoro uproszczony zosta\u0142 sam kod main, warto by\u0142oby zaj\u0105\u0107 si\u0119 r\u00f3wnie\u017c drug\u0105 cz\u0119\u015bci\u0105 \"boilerplate\":<\/p>\n","innerContent":["\n<p>Teraz czas, aby zaj\u0105\u0107 si\u0119 drugim cz\u0142onem nazwy nowego Draftu. Skoro uproszczony zosta\u0142 sam kod main, warto by\u0142oby zaj\u0105\u0107 si\u0119 r\u00f3wnie\u017c drug\u0105 cz\u0119\u015bci\u0105 \"boilerplate\":<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>class HelloWorld { \n    (...)\n}<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>class HelloWorld { \n    (...)\n}<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dzisiaj, \u017ceby w og\u00f3le zacz\u0105\u0107 przygod\u0119 z Jav\u0105, niezb\u0119dne jest zrozumienie konceptu klas, co bywa bardzo trudne do wyja\u015bnienia nowicjuszom. Dlatego te\u017c tw\u00f3rcy Javy zdecydowali, \u017ce i ten element powinien zosta\u0107 odchudzony i zamierzaj\u0105 wprowadzi\u0107 klasy anonimowe - czyli umo\u017cliwi\u0107 pomini\u0119cie powy\u017cszego fragmentu kodu i pisanie w bardziej \"skryptowy\" spos\u00f3b.<\/p>\n","innerContent":["\n<p>Dzisiaj, \u017ceby w og\u00f3le zacz\u0105\u0107 przygod\u0119 z Jav\u0105, niezb\u0119dne jest zrozumienie konceptu klas, co bywa bardzo trudne do wyja\u015bnienia nowicjuszom. Dlatego te\u017c tw\u00f3rcy Javy zdecydowali, \u017ce i ten element powinien zosta\u0107 odchudzony i zamierzaj\u0105 wprowadzi\u0107 klasy anonimowe - czyli umo\u017cliwi\u0107 pomini\u0119cie powy\u017cszego fragmentu kodu i pisanie w bardziej \"skryptowy\" spos\u00f3b.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dzi\u0119ki temu pisanie programu przy u\u017cyciu anonimowej klasy g\u0142\u00f3wnej jest bardziej skoncentrowane na tym, co program rzeczywi\u015bcie robi, nie wprowadzaj\u0105c nadmiarowych, niepotrzebnych koncepcji. Ka\u017cda anonimowa klasa g\u0142\u00f3wna obs\u0142uguje te same modyfikatory co zwyk\u0142e klasy nazwane, posiada domy\u015blny konstruktor bezargumentowy i mo\u017ce posiada\u0107 inicjator statyczny. Anonimowa klasa g\u0142\u00f3wna musi posiada\u0107 r\u00f3wnie\u017c funkcj\u0119 <code>main<\/code>.<\/p>\n","innerContent":["\n<p>Dzi\u0119ki temu pisanie programu przy u\u017cyciu anonimowej klasy g\u0142\u00f3wnej jest bardziej skoncentrowane na tym, co program rzeczywi\u015bcie robi, nie wprowadzaj\u0105c nadmiarowych, niepotrzebnych koncepcji. Ka\u017cda anonimowa klasa g\u0142\u00f3wna obs\u0142uguje te same modyfikatory co zwyk\u0142e klasy nazwane, posiada domy\u015blny konstruktor bezargumentowy i mo\u017ce posiada\u0107 inicjator statyczny. Anonimowa klasa g\u0142\u00f3wna musi posiada\u0107 r\u00f3wnie\u017c funkcj\u0119 <code>main<\/code>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W praktyce sprowadza si\u0119 to do tego, \u017ce kod:<\/p>\n","innerContent":["\n<p>W praktyce sprowadza si\u0119 to do tego, \u017ce kod:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>String greeting() { return \"Hello, World!\"; }\n\nvoid main() {\n    System.out.println(greeting());\n}<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>String greeting() { return \"Hello, World!\"; }\n\nvoid main() {\n    System.out.println(greeting());\n}<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>opakowywany zostaje w:<\/p>\n","innerContent":["\n<p>opakowywany zostaje w:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>new Object() {\n    String greeting() { return \"Hello, World!\"; }\n\n    void main() {\n         System.out.println(greeting());\n    }\n}.main()<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>new Object() {\n    String greeting() { return \"Hello, World!\"; }\n\n    void main() {\n         System.out.println(greeting());\n    }\n}.main()<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ponownie, jest w powy\u017cszym troch\u0119 uproszczenia - <a href=\"https:\/\/openjdk.org\/jeps\/8302326\">oryginalny JEP<\/a> zawiera wiele ciekawych detali.<\/p>\n","innerContent":["\n<p>Ponownie, jest w powy\u017cszym troch\u0119 uproszczenia - <a href=\"https:\/\/openjdk.org\/jeps\/8302326\">oryginalny JEP<\/a> zawiera wiele ciekawych detali.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Co ciekawe - podczas pierwszej publikacji, ca\u0142o\u015b\u0107 nazywa\u0142a si\u0119 <strong>JEP draft: Implicit Classes and Enhanced Main Methods<\/strong>. Pewnie wielu programist\u00f3w Scali nazwa brzmi a\u017c nazbyt znajomo, dodatkowo termin ten opisuje zupe\u0142nie inny koncept. W zwi\u0105zku z czym dobrze, \u017ce postanowiono si\u0119 z niej wycofa\u0107 - i tak mamy w bran\u017cy za du\u017co konflikt\u00f3w nazw mi\u0119dzy poszczeg\u00f3lnymi j\u0119zykami programowania.<\/p>\n","innerContent":["\n<p>Co ciekawe - podczas pierwszej publikacji, ca\u0142o\u015b\u0107 nazywa\u0142a si\u0119 <strong>JEP draft: Implicit Classes and Enhanced Main Methods<\/strong>. Pewnie wielu programist\u00f3w Scali nazwa brzmi a\u017c nazbyt znajomo, dodatkowo termin ten opisuje zupe\u0142nie inny koncept. W zwi\u0105zku z czym dobrze, \u017ce postanowiono si\u0119 z niej wycofa\u0107 - i tak mamy w bran\u017cy za du\u017co konflikt\u00f3w nazw mi\u0119dzy poszczeg\u00f3lnymi j\u0119zykami programowania.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/openjdk.org\/projects\/amber\/design-notes\/on-ramp\">Paving on the on-ramp<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/openjdk.org\/projects\/amber\/design-notes\/on-ramp\">Paving on the on-ramp<\/a><\/li>\n"]},{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/openjdk.org\/jeps\/8302326\">JEP draft: Anonymous Main Classes and Enhanced Main Methods (Preview)<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/openjdk.org\/jeps\/8302326\">JEP draft: Anonymous Main Classes and Enhanced Main Methods (Preview)<\/a><\/li>\n"]}],"innerHTML":"\n<ul>\n\n<\/ul>\n","innerContent":["\n<ul>",null,"\n\n",null,"<\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. JDK \u017cegna si\u0119 z architektur\u0105 procesor\u00f3w x86-32<\/h2>\n","innerContent":["\n<h2>2. JDK \u017cegna si\u0119 z architektur\u0105 procesor\u00f3w x86-32<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>M\u00f3wi si\u0119, \u017ce nie ma nic przyjemniejszego ni\u017c usuwanie niepotrzebnego ju\u017c kodu. Wydaje mi si\u0119, \u017ce utrzymuj\u0105c projekt taki jak JDK mo\u017cna zrobi\u0107 krok bli\u017cej w stron\u0119 nirwany - a to poprzez usuwanie ca\u0142ych \u015brodowisk uruchomieniowych.<\/p>\n","innerContent":["\n<p>M\u00f3wi si\u0119, \u017ce nie ma nic przyjemniejszego ni\u017c usuwanie niepotrzebnego ju\u017c kodu. Wydaje mi si\u0119, \u017ce utrzymuj\u0105c projekt taki jak JDK mo\u017cna zrobi\u0107 krok bli\u017cej w stron\u0119 nirwany - a to poprzez usuwanie ca\u0142ych \u015brodowisk uruchomieniowych.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jak wynika z <em><a href=\"https:\/\/openjdk.org\/jeps\/8303167\">JEP draft: Deprecate the Windows x86-32 Port<\/a><\/em>, tw\u00f3rcy Javy przymierzaj\u0105 si\u0119 bowiem do usuni\u0119cia wersji JDK na system operacyjny Windows w wersji 32-bitowej. Na taki krok z\u0142o\u017cy\u0142o si\u0119 kilka czynnik\u00f3w, jak cho\u0107by fakt, \u017ce Microsoft ostatecznie przesta\u0142 ju\u017c wydawa\u0107 nowe wersje 32-bitowych system\u00f3w operacyjnych, a ostatni z nich (Windows 10) straci wsparcie tw\u00f3rc\u00f3w w drugiej po\u0142owie 2025. Znacznie ciekawsze s\u0105 jednak tutaj pobudki praktyczne - z JEP-a okazuje si\u0119 bowiem, \u017ce implementacja Wirtualny W\u0105tk\u00f3w nie jest kompatybilna z 32-bitowymi procesorami.<\/p>\n","innerContent":["\n<p>Jak wynika z <em><a href=\"https:\/\/openjdk.org\/jeps\/8303167\">JEP draft: Deprecate the Windows x86-32 Port<\/a><\/em>, tw\u00f3rcy Javy przymierzaj\u0105 si\u0119 bowiem do usuni\u0119cia wersji JDK na system operacyjny Windows w wersji 32-bitowej. Na taki krok z\u0142o\u017cy\u0142o si\u0119 kilka czynnik\u00f3w, jak cho\u0107by fakt, \u017ce Microsoft ostatecznie przesta\u0142 ju\u017c wydawa\u0107 nowe wersje 32-bitowych system\u00f3w operacyjnych, a ostatni z nich (Windows 10) straci wsparcie tw\u00f3rc\u00f3w w drugiej po\u0142owie 2025. Znacznie ciekawsze s\u0105 jednak tutaj pobudki praktyczne - z JEP-a okazuje si\u0119 bowiem, \u017ce implementacja Wirtualny W\u0105tk\u00f3w nie jest kompatybilna z 32-bitowymi procesorami.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Pewnie powy\u017csze by\u0142o wiadome od dawna, a tylko dla mnie to wzi\u0119\u0142o z zaskoczenia.<\/p>\n","innerContent":["\n<p>Pewnie powy\u017csze by\u0142o wiadome od dawna, a tylko dla mnie to wzi\u0119\u0142o z zaskoczenia.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Tak\u017ce ju\u017c nied\u0142ugo chc\u0105cych zbudowa\u0107 aplikacj\u0119 przy pomocy JDK na porzuconych systemach, przywita Was poni\u017cszy komunikat.<\/p>\n","innerContent":["\n<p>Tak\u017ce ju\u017c nied\u0142ugo chc\u0105cych zbudowa\u0107 aplikacj\u0119 przy pomocy JDK na porzuconych systemach, przywita Was poni\u017cszy komunikat.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>configure: error: The Windows x86-32 port is deprecated and may be removed in a future release.<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>configure: error: The Windows x86-32 port is deprecated and may be removed in a future release.<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>No c\u00f3\u017c, procesory 32-bitowe odchodz\u0105 ju\u017c w niepami\u0119\u0107 - ostatni\u0105 wspieran\u0105 wersj\u0105 pozostanie ta na architektur\u0119 arm32. Je\u015bli z jakiego\u015b powodu kluczowym jest dla Was utrzymanie wsparcia dla Windows x86-32, tw\u00f3rcy JDK zostawiaj\u0105 furtk\u0119 - wycofaj\u0105 si\u0119 z powy\u017cszego JEP-a, je\u015bli znajdzie si\u0119 podmiot zdeterminowany do migracji wirtualnych w\u0105tk\u00f3w na 32-bity, ale r\u00f3wnie\u017c dalszego utrzymywania ca\u0142o\u015bci portu. Od razu m\u00f3wi\u0119, \u017ce nie ma co liczy\u0107 na Microsoft - to <a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/11bpeb6\/comment\/ja1gvrn\/\">oni sami zaproponowali tego JEP-a<\/a>.<\/p>\n","innerContent":["\n<p>No c\u00f3\u017c, procesory 32-bitowe odchodz\u0105 ju\u017c w niepami\u0119\u0107 - ostatni\u0105 wspieran\u0105 wersj\u0105 pozostanie ta na architektur\u0119 arm32. Je\u015bli z jakiego\u015b powodu kluczowym jest dla Was utrzymanie wsparcia dla Windows x86-32, tw\u00f3rcy JDK zostawiaj\u0105 furtk\u0119 - wycofaj\u0105 si\u0119 z powy\u017cszego JEP-a, je\u015bli znajdzie si\u0119 podmiot zdeterminowany do migracji wirtualnych w\u0105tk\u00f3w na 32-bity, ale r\u00f3wnie\u017c dalszego utrzymywania ca\u0142o\u015bci portu. Od razu m\u00f3wi\u0119, \u017ce nie ma co liczy\u0107 na Microsoft - to <a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/11bpeb6\/comment\/ja1gvrn\/\">oni sami zaproponowali tego JEP-a<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":14919,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-2.png\" alt=\"\" class=\"wp-image-14919\"\/><figcaption class=\"wp-element-caption\">Zgodnie z zasadami Ned Stark<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-2.png\" alt=\"\" class=\"wp-image-14919\"\/><figcaption class=\"wp-element-caption\">Zgodnie z zasadami Ned Stark<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>PS: Je\u015bli byli\u015bcie kiedy\u015b ciekawi, co w og\u00f3le oznacza to x86 kt\u00f3re przewija si\u0119 przy okazji procesor\u00f3w 32-bitowych - termin oznacza <a href=\"https:\/\/www.techopedia.com\/definition\/20084\/x86\">kontynuator\u00f3w linii Intel 8086<\/a>. Tak, \u017ceby by\u0142o prosto i oczywi\u015bcie.<\/p>\n","innerContent":["\n<p>PS: Je\u015bli byli\u015bcie kiedy\u015b ciekawi, co w og\u00f3le oznacza to x86 kt\u00f3re przewija si\u0119 przy okazji procesor\u00f3w 32-bitowych - termin oznacza <a href=\"https:\/\/www.techopedia.com\/definition\/20084\/x86\">kontynuator\u00f3w linii Intel 8086<\/a>. Tak, \u017ceby by\u0142o prosto i oczywi\u015bcie.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/openjdk.org\/jeps\/8303167\">JEP draft: Deprecate the Windows x86-32 Port<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/openjdk.org\/jeps\/8303167\">JEP draft: Deprecate the Windows x86-32 Port<\/a><\/li>\n"]},{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/www.techopedia.com\/definition\/20084\/x86\">What Does X86 Mean?<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/www.techopedia.com\/definition\/20084\/x86\">What Does X86 Mean?<\/a><\/li>\n"]}],"innerHTML":"\n<ul>\n\n<\/ul>\n","innerContent":["\n<ul>",null,"\n\n",null,"<\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>3. JDK 20 doczeka\u0142o si\u0119 zmian w li\u015bcie JEP-\u00f3w<\/h2>\n","innerContent":["\n<h2>3. JDK 20 doczeka\u0142o si\u0119 zmian w li\u015bcie JEP-\u00f3w<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jak ju\u017c jeste\u015bmy w \u015bwiecie JEP-\u00f3w, to mamy do czynienia z bardzo nietypow\u0105 sytuacj\u0105. JDK 20 - maj\u0105ce mie\u0107 swoj\u0105 premier\u0119 jeszcze w marcu - od grudnia zesz\u0142ego roku znajduje si\u0119 bowiem w fazie Rampdown. Oznacza to, \u017ce z za\u0142o\u017ce\u0144 nie powinni\u015bmy ju\u017c spodziewa\u0107 si\u0119 pojawienia w nim \u017cadnych nowo\u015bci. W zesz\u0142ym tygodniu, z zaskoczenia zosta\u0142 dodany jednak nowy JEP - <em><a href=\"https:\/\/openjdk.org\/jeps\/438\">438: Vector API (Fifth Incubator)<\/a><\/em>.<\/p>\n","innerContent":["\n<p>Jak ju\u017c jeste\u015bmy w \u015bwiecie JEP-\u00f3w, to mamy do czynienia z bardzo nietypow\u0105 sytuacj\u0105. JDK 20 - maj\u0105ce mie\u0107 swoj\u0105 premier\u0119 jeszcze w marcu - od grudnia zesz\u0142ego roku znajduje si\u0119 bowiem w fazie Rampdown. Oznacza to, \u017ce z za\u0142o\u017ce\u0144 nie powinni\u015bmy ju\u017c spodziewa\u0107 si\u0119 pojawienia w nim \u017cadnych nowo\u015bci. W zesz\u0142ym tygodniu, z zaskoczenia zosta\u0142 dodany jednak nowy JEP - <em><a href=\"https:\/\/openjdk.org\/jeps\/438\">438: Vector API (Fifth Incubator)<\/a><\/em>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Wszystkich tych, kt\u00f3rzy boj\u0105 si\u0119 o stabilno\u015b\u0107 JDK 20 w oblicz tak p\u00f3\u017anego rozszerzenia uspokajam - pi\u0105ta ju\u017c inkubacja Vector API zosta\u0142a przypadkowo pomini\u0119ta, poniewa\u017c jest to kolejna ju\u017c wersja edycja proposala, nie przynosz\u0105ca \u017cadnych nowych zmian w API i kodzie \u017ar\u00f3d\u0142owym w stosunku do <em><a href=\"https:\/\/openjdk.org\/jeps\/426\">JEP 426: Vector API (Fourth Incubator)<\/a><\/em>, nie ma wi\u0119c ryzyka jakichkolwiek nieprzewidzianych regresji i zmiana ma charakter formalny. Ca\u0142o\u015b\u0107 sytuacji <a href=\"https:\/\/mail.openjdk.org\/pipermail\/jdk-dev\/2023-February\/007389.html\">wyja\u015bnia w mailu Mark Reinhold<\/a>.<\/p>\n","innerContent":["\n<p>Wszystkich tych, kt\u00f3rzy boj\u0105 si\u0119 o stabilno\u015b\u0107 JDK 20 w oblicz tak p\u00f3\u017anego rozszerzenia uspokajam - pi\u0105ta ju\u017c inkubacja Vector API zosta\u0142a przypadkowo pomini\u0119ta, poniewa\u017c jest to kolejna ju\u017c wersja edycja proposala, nie przynosz\u0105ca \u017cadnych nowych zmian w API i kodzie \u017ar\u00f3d\u0142owym w stosunku do <em><a href=\"https:\/\/openjdk.org\/jeps\/426\">JEP 426: Vector API (Fourth Incubator)<\/a><\/em>, nie ma wi\u0119c ryzyka jakichkolwiek nieprzewidzianych regresji i zmiana ma charakter formalny. Ca\u0142o\u015b\u0107 sytuacji <a href=\"https:\/\/mail.openjdk.org\/pipermail\/jdk-dev\/2023-February\/007389.html\">wyja\u015bnia w mailu Mark Reinhold<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":14907,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/ezgif-3-9da847db29-1.gif\" alt=\"\" class=\"wp-image-14907\"\/><figcaption class=\"wp-element-caption\">Mo\u017cna powiedzie\u0107, \u017ce Release Train odjecha\u0142 i nie zabra\u0142 pasa\u017cera.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/ezgif-3-9da847db29-1.gif\" alt=\"\" class=\"wp-image-14907\"\/><figcaption class=\"wp-element-caption\">Mo\u017cna powiedzie\u0107, \u017ce Release Train odjecha\u0142 i nie zabra\u0142 pasa\u017cera.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W samym JEP-ie mo\u017cna jednak znale\u017a\u0107 now\u0105 ciekaw\u0105 informacj\u0119 - tak naprawd\u0119 na samo Vector API b\u0119dziemy czekali jeszcze d\u0142ugo, nie nale\u017cy si\u0119 bowiem spodziewa\u0107 \u017cadnej wersji Preview przed stabilizacj\u0105 Projektu Valhalla. D\u0142ugoterminowym celem Vector API jest wykorzystanie ulepsze\u0144 Valhalli, zw\u0142aszcza Value Classes, nie posiadaj\u0105cych to\u017csamo\u015bci. API Vector b\u0119dzie wi\u0119c inkubowane przez wiele wyda\u0144, a\u017c niezb\u0119dne funkcje Projektu Valhalla stan\u0105 si\u0119 dost\u0119pne jako Preview. Po udost\u0119pnieniu, API Vector dostosuje si\u0119 i r\u00f3wnie\u017c dopiero wtedy trafi do Preview. Ciekawe, ile jeszcze kolejnych inkubacji nas w zwi\u0105zku z tym czeka.<\/p>\n","innerContent":["\n<p>W samym JEP-ie mo\u017cna jednak znale\u017a\u0107 now\u0105 ciekaw\u0105 informacj\u0119 - tak naprawd\u0119 na samo Vector API b\u0119dziemy czekali jeszcze d\u0142ugo, nie nale\u017cy si\u0119 bowiem spodziewa\u0107 \u017cadnej wersji Preview przed stabilizacj\u0105 Projektu Valhalla. D\u0142ugoterminowym celem Vector API jest wykorzystanie ulepsze\u0144 Valhalli, zw\u0142aszcza Value Classes, nie posiadaj\u0105cych to\u017csamo\u015bci. API Vector b\u0119dzie wi\u0119c inkubowane przez wiele wyda\u0144, a\u017c niezb\u0119dne funkcje Projektu Valhalla stan\u0105 si\u0119 dost\u0119pne jako Preview. Po udost\u0119pnieniu, API Vector dostosuje si\u0119 i r\u00f3wnie\u017c dopiero wtedy trafi do Preview. Ciekawe, ile jeszcze kolejnych inkubacji nas w zwi\u0105zku z tym czeka.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":14910,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image.png\" alt=\"\" class=\"wp-image-14910\"\/><figcaption class=\"wp-element-caption\">Pozwol\u0119 sobie zacytowa\u0107 tutaj <a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/113q2eb\/comment\/j8v3aqc\/?utm_source=share&amp;utm_medium=web2x&amp;context=3\">Reddit r\/java<\/a>.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image.png\" alt=\"\" class=\"wp-image-14910\"\/><figcaption class=\"wp-element-caption\">Pozwol\u0119 sobie zacytowa\u0107 tutaj <a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/113q2eb\/comment\/j8v3aqc\/?utm_source=share&amp;utm_medium=web2x&amp;context=3\">Reddit r\/java<\/a>.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A jak ju\u017c po\u015bwi\u0119ci\u0142em kilka akapit\u00f3w, zmuszaj\u0105c Was do zapoznania si\u0119 z detalami JEP-u, na kt\u00f3rego jeszcze poczekamy, to w nagrod\u0119 podrzuc\u0119 Wam dwie bardzo dobre, \u015bwie\u017ce publikacje, podsumowuj\u0105ce zar\u00f3wno obecny stan Valhalli, jak sposoby i u\u017cycia Vector API. Zainteresowanych tematem odsy\u0142am odpowiednio do publikacji <em><a href=\"https:\/\/www.infoworld.com\/article\/3687670\/project-valhalla-a-look-inside-javas-epic-refactor.html\">Project Valhalla: A look inside Java\u2019s epic refactor<\/a><\/em> oraz <em><a href=\"https:\/\/alexklibisz.com\/2023\/02\/25\/accelerating-vector-operations-jvm-jdk-incubator-vector-project-panama\">Accelerating vector operations on the JVM using the new jdk.incubator.vector module<\/a><\/em>. Oba tematy maj\u0105 tendencje do przedawniania si\u0119, teksty te pozwol\u0105 Wam lepiej uporz\u0105dkowa\u0107 sobie wiedz\u0119.<\/p>\n","innerContent":["\n<p>A jak ju\u017c po\u015bwi\u0119ci\u0142em kilka akapit\u00f3w, zmuszaj\u0105c Was do zapoznania si\u0119 z detalami JEP-u, na kt\u00f3rego jeszcze poczekamy, to w nagrod\u0119 podrzuc\u0119 Wam dwie bardzo dobre, \u015bwie\u017ce publikacje, podsumowuj\u0105ce zar\u00f3wno obecny stan Valhalli, jak sposoby i u\u017cycia Vector API. Zainteresowanych tematem odsy\u0142am odpowiednio do publikacji <em><a href=\"https:\/\/www.infoworld.com\/article\/3687670\/project-valhalla-a-look-inside-javas-epic-refactor.html\">Project Valhalla: A look inside Java\u2019s epic refactor<\/a><\/em> oraz <em><a href=\"https:\/\/alexklibisz.com\/2023\/02\/25\/accelerating-vector-operations-jvm-jdk-incubator-vector-project-panama\">Accelerating vector operations on the JVM using the new jdk.incubator.vector module<\/a><\/em>. Oba tematy maj\u0105 tendencje do przedawniania si\u0119, teksty te pozwol\u0105 Wam lepiej uporz\u0105dkowa\u0107 sobie wiedz\u0119.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A skoro ju\u017c by\u0142o o JDK 20, to na sam koniec wspomn\u0119 o wydaniu, kt\u00f3re b\u0119dzie mu towarzyszy\u0107. Ukaza\u0142a si\u0119 bowiem pierwsza testowa edycja GraalVM CE 23.0.0, kt\u00f3ra <a href=\"https:\/\/twitter.com\/graalvm\/status\/1628031945522266112\">zbudowana zosta\u0142a w oparciu o zbli\u017caj\u0105c\u0105 si\u0119 wersj\u0119 JDK<\/a>. Dowiedzieli\u015bmy si\u0119 r\u00f3wnie\u017c, \u017ce GraalVM 23.0 b\u0119dzie zawiera\u0142 <a href=\"https:\/\/github.com\/oracle\/graal\/issues\/5050\">wsparcie dla ZGC<\/a>. Umo\u017cliwi to u\u017cywanie wspomnianego Garbage Collectora w sytuacji, gdy Graal jest u\u017cywany jako kompilator JIT. \u017beby nie by\u0142o za s\u0142odko - ZGC ci\u0105gle jednak nie b\u0119dzie wspierany w wypadku Native Image. Te jednak r\u00f3wnie\u017c doczekaj\u0105 si\u0119 usprawnie\u0144 - maj\u0105 by\u0107 bowiem dost\u0119pne out-of-the-box, bez potrzeby <a href=\"https:\/\/github.com\/oracle\/graal\/pull\/5995\">doinstalowywania dodatkowych zale\u017cno\u015bci<\/a>.<\/p>\n","innerContent":["\n<p>A skoro ju\u017c by\u0142o o JDK 20, to na sam koniec wspomn\u0119 o wydaniu, kt\u00f3re b\u0119dzie mu towarzyszy\u0107. Ukaza\u0142a si\u0119 bowiem pierwsza testowa edycja GraalVM CE 23.0.0, kt\u00f3ra <a href=\"https:\/\/twitter.com\/graalvm\/status\/1628031945522266112\">zbudowana zosta\u0142a w oparciu o zbli\u017caj\u0105c\u0105 si\u0119 wersj\u0119 JDK<\/a>. Dowiedzieli\u015bmy si\u0119 r\u00f3wnie\u017c, \u017ce GraalVM 23.0 b\u0119dzie zawiera\u0142 <a href=\"https:\/\/github.com\/oracle\/graal\/issues\/5050\">wsparcie dla ZGC<\/a>. Umo\u017cliwi to u\u017cywanie wspomnianego Garbage Collectora w sytuacji, gdy Graal jest u\u017cywany jako kompilator JIT. \u017beby nie by\u0142o za s\u0142odko - ZGC ci\u0105gle jednak nie b\u0119dzie wspierany w wypadku Native Image. Te jednak r\u00f3wnie\u017c doczekaj\u0105 si\u0119 usprawnie\u0144 - maj\u0105 by\u0107 bowiem dost\u0119pne out-of-the-box, bez potrzeby <a href=\"https:\/\/github.com\/oracle\/graal\/pull\/5995\">doinstalowywania dodatkowych zale\u017cno\u015bci<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":14922,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-3.png\" alt=\"\" class=\"wp-image-14922\"\/><figcaption class=\"wp-element-caption\">Ale o GraalVM to sobie na pewno wi\u0119cej porozmawiamy przy okazji premiery.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-3.png\" alt=\"\" class=\"wp-image-14922\"\/><figcaption class=\"wp-element-caption\">Ale o GraalVM to sobie na pewno wi\u0119cej porozmawiamy przy okazji premiery.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/mail.openjdk.org\/pipermail\/jdk-dev\/2023-February\/007389.html\">JDK 20: First Release Candidate - Mark Reinhold<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/mail.openjdk.org\/pipermail\/jdk-dev\/2023-February\/007389.html\">JDK 20: First Release Candidate - Mark Reinhold<\/a><\/li>\n"]},{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/openjdk.org\/jeps\/426\">JEP 426: Vector API (Fourth Incubator)<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/openjdk.org\/jeps\/426\">JEP 426: Vector API (Fourth Incubator)<\/a><\/li>\n"]},{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/www.infoworld.com\/article\/3687670\/project-valhalla-a-look-inside-javas-epic-refactor.html\">Project Valhalla: A look inside Java\u2019s epic refactor<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/www.infoworld.com\/article\/3687670\/project-valhalla-a-look-inside-javas-epic-refactor.html\">Project Valhalla: A look inside Java\u2019s epic refactor<\/a><\/li>\n"]},{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/alexklibisz.com\/2023\/02\/25\/accelerating-vector-operations-jvm-jdk-incubator-vector-project-panama\">Accelerating vector operations on the JVM using the new jdk.incubator.vector module<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/alexklibisz.com\/2023\/02\/25\/accelerating-vector-operations-jvm-jdk-incubator-vector-project-panama\">Accelerating vector operations on the JVM using the new jdk.incubator.vector module<\/a><\/li>\n"]},{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/github.com\/oracle\/graal\/issues\/5050\">Add support for ZGC on HotSpot<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/github.com\/oracle\/graal\/issues\/5050\">Add support for ZGC on HotSpot<\/a><\/li>\n"]},{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/github.com\/oracle\/graal\/pull\/5995\">[GR-44216] Include native-image in GraalVM JDK<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/github.com\/oracle\/graal\/pull\/5995\">[GR-44216] Include native-image in GraalVM JDK<\/a><\/li>\n"]}],"innerHTML":"\n<ul>\n\n\n\n\n\n\n\n\n\n<\/ul>\n","innerContent":["\n<ul>",null,"\n\n",null,"\n\n",null,"\n\n",null,"\n\n",null,"\n\n",null,"<\/ul>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/14901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/comments?post=14901"}],"version-history":[{"count":15,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/14901\/revisions"}],"predecessor-version":[{"id":14930,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/14901\/revisions\/14930"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/14928"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=14901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=14901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=14901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}