{"id":15193,"date":"2023-03-16T14:35:48","date_gmt":"2023-03-16T13:35:48","guid":{"rendered":"https:\/\/vived.io\/?p=15193"},"modified":"2023-03-16T14:35:51","modified_gmt":"2023-03-16T13:35:51","slug":"jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/","title":{"rendered":"JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC &#8211; JVM Weekly vol. 128"},"content":{"rendered":"\n<h2 id=\"1-jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc\" data-num=1>1. JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC<\/h2>\n\n\n\n<p>Dopiero co tydzie\u0144 temu poruszali\u015bmy temat tego, na jak ciekawe wydanie zapowiada si\u0119 JDK 21, a ju\u017c musimy do tematu wr\u00f3ci\u0107, poniewa\u017c grzechem by\u0142oby poinformowa\u0107 o kolejnych potencjalnych nowo\u015bciach, kt\u00f3re do jesiennego LTS-a trafi\u0105. Otrzymali\u015bmy bowiem dwie kolejne du\u017ce zapowiedzi w tym temacie.<\/p>\n\n\n\n<p>Zacznijmy od najwi\u0119kszej bomby, jak\u0105 jest pojawienie si\u0119 draftu Wirtualnych W\u0105tk\u00f3w w wersji stabilnej. Z jednej strony nale\u017ca\u0142o si\u0119 spodziewa\u0107 (drugi Preview by\u0142 naprawd\u0119 kosmetyczny), z drugiej nie by\u0142em pewien, czy jednak nie przyjdzie nam poczeka\u0107 na stabilizacj\u0119 pozosta\u0142ych feature projektu Loom i tw\u00f3rcy odpuszcz\u0105 sobie jeszcze jesiennego LTS-a. Machina jednak ruszy\u0142a &#8211; ukaza\u0142 si\u0119 <a href=\"https:\/\/openjdk.org\/jeps\/8303683\">oficjalny JEP Draft<\/a>, i to taki zawieraj\u0105cy minimaln\u0105 ilo\u015b\u0107 zmian. Jedyn\u0105 wi\u0119ksz\u0105 zmian\u0105 jest usuni\u0119cie mo\u017cliwo\u015bci wy\u0142\u0105czenia wsparcia <code class=\"\" data-line=\"\">ThreadLocal<\/code>. Jak <a href=\"https:\/\/mail.openjdk.org\/pipermail\/loom-dev\/2023-February\/005312.html\">pisze Ron Pressler<\/a>, funkcjonalno\u015b\u0107 by\u0142a \u017ale rozumiana i w planach tw\u00f3rc\u00f3w nigdy nie by\u0142o ca\u0142kowitego usuni\u0119cia ThreadLocala, jak mog\u0142oby wynika\u0107 z takiej mo\u017cliwo\u015bci. Dla wi\u0119kszej klarowno\u015bci komunikacyjnej w ko\u0142o wirtualnych w\u0105tk\u00f3w, <code class=\"\" data-line=\"\">ThreadLocal<\/code> i <code class=\"\" data-line=\"\">Scope Locals<\/code> zdecydowano si\u0119 z tej mo\u017cliwo\u015bci po prostu zrezygnowa\u0107.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"762\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-10-1024x762.png\" alt=\"\" class=\"wp-image-15206\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-10-1024x762.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-10-300x223.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-10-768x572.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-10-1536x1143.png 1536w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-10-2048x1524.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>I cho\u0107 JEP <a href=\"https:\/\/openjdk.org\/jeps\/8303683\">na razie pozostaje Draftem<\/a>, to je\u015bli tylko zostanie zaakceptowany, Virtual Threads wyjd\u0105 z Preview i zostan\u0105 stabiln\u0105 funkcjonalno\u015bci\u0105 w JDK 21. Teraz czekamy jeszcze na Structure Concurrency w preview i b\u0119dzie mo\u017cna powiedzie\u0107, \u017ce jesienna Java naprawd\u0119<\/p>\n\n\n\n<p>Drugi z nowych JEP-\u00f3w, tym razem zakwalifikowany jako kandydat do JDK 21, to <a href=\"https:\/\/openjdk.org\/jeps\/439\">JEP 439: Generational ZGC<\/a>. Pewnie wi\u0119kszo\u015b\u0107 czytaj\u0105cych te teksty s\u0142ysza\u0142o czym jest hipoteza generacyjna, ale jako, \u017ce moja c\u00f3rka nied\u0142ugo sko\u0144czy dwa latka, to spr\u00f3buje potrenowa\u0107 wyja\u015bnienia ELI5 (Explain me like I&#8217;m Five).<\/p>\n\n\n\n<p>Wyobra\u017a sobie, \u017ce masz w swoim pokoju mn\u00f3stwo zabawek, z kt\u00f3rych cz\u0119\u015b\u0107 w\u0142a\u015bnie dosta\u0142e\u015b, a cz\u0119\u015b\u0107 masz ju\u017c od dawna. Mo\u017cesz cz\u0119sto bawi\u0107 si\u0119 nowymi zabawkami, ale w ko\u0144cu znudz\u0105 ci si\u0119 i przestan\u0105 sprawia\u0107 frajd\u0119 (to jest a\u017c nazbyt prawdziwe&#8230;). Z drugiej strony, zabawkami kt\u00f3re masz od d\u0142u\u017cszego czasu mo\u017ce nie bawisz si\u0119 a\u017c tak cz\u0119sto, ale skoro od roku Ci si\u0119 to jeszcze nie znudzi\u0142o, jest spora szansa \u017ce nie stanie si\u0119 to jeszcze przez d\u0142u\u017cszy czas.<\/p>\n\n\n\n<p>Generacyjny garbage collector dzia\u0142a w ten sam spos\u00f3b. Dzieli obiekty w pami\u0119ci na dwie grupy, m\u0142ode obiekty i stare obiekty. M\u0142ode obiekty to te, kt\u00f3re zosta\u0142y dopiero co utworzone, a stare obiekty to te, kt\u00f3re s\u0105 ju\u017c od jakiego\u015b czasu. \u015amieciarka cz\u0119\u015bciej sprawdza m\u0142ode obiekty, poniewa\u017c maj\u0105 one tendencj\u0119 do &#8222;umierania m\u0142odo&#8221;, czyli s\u0105 tworzone, a nast\u0119pnie szybko staj\u0105 si\u0119 nieu\u017cywane. Stare obiekty s\u0105 sprawdzane rzadziej, poniewa\u017c jest bardziej prawdopodobne, \u017ce nadal s\u0105 potrzebne. Dziel\u0105c obiekty na generacje, garbage collector mo\u017ce zoptymalizowa\u0107 swoje zarz\u0105dzanie pami\u0119ci\u0105 i zmniejszy\u0107 czas i zasoby potrzebne do zbierania \u015bmieci.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"500\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-7.png\" alt=\"\" class=\"wp-image-15197\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-7.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-7-300x250.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption class=\"wp-element-caption\">Teraz ZGC b\u0119dzie robi\u0142 powy\u017csze jeszcze skuteczniej.<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Wyj\u0105tkiem jest tutaj w\u0142a\u015bnie ZGC \u2013 Garbage Collector, kt\u00f3ry s\u0142u\u017cy do czyszczenia pami\u0119ci nawet o wielko\u015bci terabajt\u00f3w bez przerwy d\u0142u\u017cszej ni\u017c kilka milisekund. ZGC okre\u015blany jest jako GC nisko-op\u00f3\u017anieniowe, kt\u00f3re mo\u017cna uzna\u0107 za swoisty state-of-the-art je\u015bli chodzi o maszyn\u0119 wirtualn\u0105 Javy. Nie jest to jednak rozwi\u0105zanie bez wad \u2013 design ZGC jest bardzo skomplikowany. Sprawi\u0142o to, \u017ce jego pierwsza (obecna) wersja jest jednogeneracyjna.<\/p>\n\n\n\n<p>W zwi\u0105zku z czym rozwi\u0105zanie zawsze mia\u0142o problem z tak zwanym \u201eoczyszczaniem m\u0142odej generacji\u201d, czyli w\u0142a\u015bnie tych kr\u00f3tko \u017cyj\u0105cych obiekt\u00f3w. Tw\u00f3rcy od samego pocz\u0105tku zapowiadali jednak, \u017ce nie poprzestan\u0105 na tym i teraz dostajemy w nasze r\u0119ce <a href=\"https:\/\/openjdk.org\/jeps\/439\">JEP 439: Generational ZGC<\/a>. Co ciekawe, dotychczasowo nie zamierzano utrzymywa\u0107 dw\u00f3ch wersji ZGC &#8211; po implementacji wersji Generacyjnej oryginalna implementacji mia\u0142a znikn\u0105\u0107. Okaza\u0142o si\u0119 jednak, \u017ce o ile nowy ZGC powinien by\u0107 lepszym rozwi\u0105zaniem dla wi\u0119kszo\u015bci przypadk\u00f3w u\u017cycia ni\u017c nie-generacyjny ZGC, to ci\u0105gle istniej\u0105 przypadki, w kt\u00f3rych lepiej sprawdza si\u0119 to drugie rozwi\u0105zanie. Dlatego te\u017c chwilowo tw\u00f3rcy zdecydowali si\u0119 na utrzymanie obu ZGC, z za\u0142o\u017ceniem pozbycia si\u0119 oryginalnej wersji w przysz\u0142o\u015bci. Jest to bardzo nietuzinkowa sytuacja, w zwi\u0105zku z czym ciekaw jestem JAK BARDZO z\u0142a jest wydajno\u015b\u0107 generacyjnego ZGC w tych niekt\u00f3rych przypadkach, \u017ce tw\u00f3rcy zdecydowali si\u0119 na utrzymaniu dw\u00f3ch wariant\u00f3w.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"544\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-12.png\" alt=\"\" class=\"wp-image-15212\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-12.png 500w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-12-276x300.png 276w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><figcaption class=\"wp-element-caption\">Strategia jest pewnie dobra &#8211; tylko \u017ceby to si\u0119 \u017ale nie sko\u0144czy\u0142o<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Je\u015bli chcecie dowiedzie\u0107 si\u0119 wi\u0119cej o samym ZGC, to w zale\u017cno\u015bci od tego jaka forma najlepiej do Was trafia, polecam prezentacje wideo <a href=\"https:\/\/www.youtube.com\/watch?v=U2Sx5lU0KM8\">Java\u2019s Highly Scalable Low-Latency Garbage Collector: ZGC<\/a> lub podcast <a href=\"https:\/\/inside.java\/2022\/06\/29\/podcast-024\/\">Towards Generational ZGC<\/a>.<\/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\/439\">JEP 439: Generational ZGC<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/openjdk.org\/jeps\/8303683\">JEP draft: Virtual Threads<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=U2Sx5lU0KM8\">Java\u2019s Highly Scalable Low-Latency Garbage Collector: ZGC<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/inside.java\/2022\/06\/29\/podcast-024\/\">Towards Generational ZGC<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"2-jak-spolecznosc-uzywa-jakarty-ee\" data-num=2>2. Jak spo\u0142eczno\u015b\u0107 u\u017cywa Jakarty EE?<\/h2>\n\n\n\n<p>We wrze\u015bniu 2022 roku OmniFish i OmniFaces przeprowadzi\u0142y ankiet\u0119 na temat Jakarta EE, zadaj\u0105c pytania zwi\u0105zane z jej wykorzystaniem, serwerami aplikacji i API. W zesz\u0142ym tygodniu pojawi\u0142y si\u0119 <a href=\"https:\/\/omnifish.ee\/2023\/03\/10\/jakarta-ee-survey-2022-2023-results\">jego wyniki<\/a>, zawieraj\u0105ce kilka ciekawych obserwacji.<\/p>\n\n\n\n<p>Zanim zaczn\u0119 dzieli\u0107 si\u0119 danymi z ankiety, ma\u0142y disclaimer &#8211; dane pochodz\u0105 z 720 odpowiedzi zebranych ze spo\u0142eczno\u015bci Jakarty EE. M\u00f3wimy wi\u0119c o zbiorze z jednej strony stosunkowo ma\u0142ym, z drugiej jednak ju\u017c statystycznie istotnym. Ze wzgl\u0119du jednak na tak\u0105, a nie inn\u0105 grup\u0119 badawcz\u0105 (mo\u017cna za\u0142o\u017cy\u0107, \u017ce w badaniu wzi\u0119li udzia\u0142 Ci najbardziej zaanga\u017cowani u\u017cytkownicy Jakarty EE), dane mog\u0105 by\u0107 zaburzone. Trzeba na nie spojrze\u0107 wi\u0119c z przymr\u00f3\u017ceniem oka i traktowa\u0107 raczej jako ciekawostk\u0119, ale w dalszym ci\u0105gu m\u00f3wi\u0105c\u0105 nam nieco o sentymencie ze strony spo\u0142eczno\u015bci.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/1_ee_versions-1-1024x675.png\" alt=\"\" width=\"512\" height=\"338\"\/><\/figure>\n<\/div>\n\n\n<p>Z danych wynika, \u017ce mimo walnego przechodzenia bibliotek i projekt\u00f3w na Jakarta EE 10, to wci\u0105\u017c Java EE 8 i Jakarta EE 8 s\u0105 najcz\u0119\u015bciej u\u017cywanymi wersjami. Trzeba jednak przyzna\u0107, \u017ce adopcja najnowszej Jakarty jest ca\u0142kiem obiecuj\u0105ca &#8211; projekt ten zajmuje obecnie trzeci\u0105 pozycj\u0119, wyprzedzaj\u0105c w ten spos\u00f3b Jakarta EE 9.<\/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\/image-9-1024x460.png\" alt=\"\" class=\"wp-image-15204\" width=\"512\" height=\"230\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-9-1024x460.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-9-300x135.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-9-768x345.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-9-1536x689.png 1536w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-9.png 1542w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/figure>\n<\/div>\n\n\n<p>Je\u015bli chodzi za\u015b o serwery aplikacyjne, to tutaj mamy do czynienia z wy\u015bcigiem \u0142eb w \u0142eb mi\u0119dzy WildFly a Payara Server. WildFly jest ci\u0105gle na czele stawki, ale Payara do\u015b\u0107 skutecznie zaskarbi\u0142a sobie serce spo\u0142eczno\u015bci. Oba projekty posiadaj\u0105 minimalny odsetek niezadowolonych\/neutralnie nastawionych u\u017cytkownik\u00f3w, w obu przypadkach znacznie przewa\u017caj\u0105 Ci kt\u00f3rzy wypowiadaj\u0105 si\u0119 o produktach w superlatywach<\/p>\n\n\n\n<p>Po drugiej stronie stawki plasuj\u0105 si\u0119 za\u015b WebSphere i WebLogic.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/9_which_mp-872x1024.png\" alt=\"\" width=\"436\" height=\"512\"\/><\/figure>\n<\/div>\n\n\n<p>Mnie osobi\u015bcie jednak najbardziej interesowa\u0142y pytania o MicroProfile. Podobnie jak w innych latach, tylko mniejszo\u015b\u0107 korzysta\u0142a z API MicroProfile, ale odsetek, kt\u00f3ry korzysta z tych API, ro\u015bnie co roku. W 2018 roku by\u0142o to 16%, w 2020 32%, a w 2022\/2023 ju\u017c 36% &#8211; wida\u0107 wi\u0119c wyra\u017any trend. Z ankiety wynika te\u017c, \u017ce koniem poci\u0105gowym jest Quarkus &#8211; to w\u0142a\u015bnie on jest deklarowany jako u\u017cywany produkt przez ponad 50% u\u017cytkownik\u00f3w MicroProfile. Quarkus wyra\u017anie zagarnia wi\u0119c pod siebie coraz wi\u0119cej spo\u0142eczno\u015bci, a przepa\u015b\u0107 mi\u0119dzy nim, a drugim w rankingu WildFly jeszcze si\u0119 powi\u0119ksza. Ciekawa jest tutaj niska pozycja Helidona MP, kt\u00f3ry zosta\u0142 wyprzedzony zar\u00f3wno przez OpenLiberty, jak i Payara Server\/Micro. Jak na to ile o samym projekcie si\u0119 m\u00f3wi to do\u015b\u0107 mocno wida\u0107, \u017ce traktowany jest on raczej jako eksperyment &#8211; przynajmniej przez spo\u0142eczno\u015b\u0107 Jakarty EE.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-13.png\" alt=\"\" class=\"wp-image-15220\" width=\"512\" height=\"246\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-13.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-13-300x144.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-13-768x369.png 768w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/figure>\n<\/div>\n\n\n<p>Z mojej perspektyw najciekawszym tematem zwi\u0105zanym z MicroProfile jest jednak sentyment spo\u0142eczno\u015bci w kierunku \u0142\u0105czenia projektu z Jakart\u0105 EE. Okazuje si\u0119, \u017ce u\u017cytkownicy nie maj\u0105 tendencji separatystycznych i prawie 70% \u017cyczy\u0142a by sobie migracji obu projekt\u00f3w. Wr\u00f3\u017cy to nienajgorzej na przysz\u0142o\u015b\u0107, zw\u0142aszcza bior\u0105c pod uwag\u0119 adopcj\u0119 przez MicroProfile 6.0 wprowadzonego w Jakarta EE 10 Core Profile, do czego dosz\u0142o ju\u017c po zebraniu wynik\u00f3w tego badania.<\/p>\n\n\n\n<p>Na koniec jeszcze raz chce zauwa\u017cy\u0107, \u017ce badanie mo\u017ce by\u0107 stronnicze w stron\u0119 bardziej aktywnych deweloper\u00f3w OSS. Dlatego te\u017c OmniFish planuje nast\u0119pn\u0105 wersj\u0119 badania przeprowadzi\u0107 we wsp\u00f3\u0142pracy z Eclipse Foundation.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-11.png\" alt=\"\" class=\"wp-image-15209\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-11.png 640w, https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-11-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><figcaption class=\"wp-element-caption\">No bo jak mawia\u0142 Mark Twain: \u201eS\u0105 trzy rodzaje k\u0142amstw: k\u0142amstwa, wielkie k\u0142amstwa i statystyki.\u201c<\/figcaption><\/figure>\n<\/div>\n\n\n<p>A jak ju\u017c jeste\u015bmy w temacie Jakarty EE, to bior\u0105c pod uwag\u0119 \u017ce ju\u017c w tym artykule mieli\u015bmy kilka wideo, to podrzuc\u0119 na koniec jeszcze bardzo ciekawe opracowanie historii wzajemnych relacji mi\u0119dzy Springiem, a Java EE. Ca\u0142o\u015b\u0107 pozwala lepiej zrozumie\u0107 zale\u017cno\u015bci \u0142\u0105cz\u0105ce obie platformy, i jak przez lata wp\u0142ywa\u0142y one na siebie. Ca\u0142o\u015b\u0107 powinna by\u0107 interesuj\u0105ca dla wszystkich, kt\u00f3rzy chcieliby pozna\u0107 korzenie najwa\u017cniejszych (chyba nie musimy ba\u0107 si\u0119 tego stwierdzenia) projekt\u00f3w ekosystemu Javy.<\/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:\/\/omnifish.ee\/2023\/03\/10\/jakarta-ee-survey-2022-2023-results\">Jakarta EE Survey 2022\/2023 \u2013 Results<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=8d7ez9wuJyM\">Has the J2EE vs Spring Infinity War reached an End Game? A short history of Java for the enterprise<\/a><\/li>\n<\/ul>\n\n\n\n<h2 id=\"3-release-radar-kotlin-hilla\" data-num=3>3. Release Radar: Kotlin, Hilla<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew-eap.html\">Kotlin 1.8.20-RC<\/a><\/h3>\n\n\n\n<p>Kotlin wyda\u0142 wersj\u0119 preview <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew-eap.html\">Kotlin 1.8.20-RC<\/a>. Zwykle nie pisz\u0119 o wersjach testowych, ale akurat Kotlin 1.x.20 to zawsze ciekawe wydanie, zas\u0142uguj\u0105cy na swoj\u0105&nbsp;wzmiank\u0119, nawet jeszcze na poziomie RC.<\/p>\n\n\n\n<p>Ciekawe zmiany pojawi\u0142y si\u0119 te\u017c w kontek\u015bcie kompilatora K2. Ten bowiem dosta\u0142 wsparcie (na razie jako preview) pluginu do serializacji, pojawi\u0142a si\u0119 te\u017c wersja Alpha kompilatora dla JS IR. Wreszcie, nowe podej\u015bcie do kompilacji przyrostowej jest teraz dost\u0119pne domy\u015blnie, co oznacza, \u017ce u\u017cytkownicy nie musz\u0105 ju\u017c okre\u015bla\u0107 <code class=\"\" data-line=\"\">kotlin.incremental.useClasspathSnapshot=true<\/code> w swoich <code class=\"\" data-line=\"\">gradle.properties<\/code>, aby j\u0105 w\u0142\u0105czy\u0107. W kontek\u015bcie interoperacyjno\u015bci z Jav\u0105, sam j\u0119zyk dostanie eksperymentalne wsparcie dla interfejsu <code class=\"\" data-line=\"\">AutoCloseable<\/code>. Doczekamy si\u0119 te\u017c kodowania Base64 w bibliotece standardowej.<\/p>\n\n\n\n<p>W wydaniu tym pojawia si\u0119 te\u017c (na razie w wersji eksperymentalne) nowy &#8222;target&#8221; dla j\u0119zyka &#8211; Kotlin\/Wasm. Nie jest to co prawda pierwszy raz, gdy mo\u017cemy kompilowa\u0107 j\u0119zyk do WebAssembly &#8211; do tej pory odbywa\u0142o si\u0119 to jednak przez Kotlin\/Native. Nowe podej\u015bcie (dzi\u0119ki pomini\u0119ciu LLVM w uk\u0142adance) ma zapewni\u0107 szybsz\u0105 kompilacj\u0119, a r\u00f3wnocze\u015bnie lepsz\u0105 interoperacyjno\u015b\u0107 z JavaScriptem. Przy okazji, zesp\u00f3\u0142 Kotlina zdecydowa\u0142 si\u0119 zrewidowa\u0107 list\u0119 platform wspieranych przez Kotlin\/Native i zdeprecjonowa\u0107 niekt\u00f3re z nich (min. W\u0142a\u015bnie <code class=\"\" data-line=\"\">wasm32<\/code>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/hilla.dev\/blog\/hilla-2-0-release\/\">Vaadin Hilla 2.0<\/a><\/h3>\n\n\n\n<p>Mniej wi\u0119cej rok temu Vaadin zaprezentowa\u0142 Hille &#8211; nowy framework webowy dla programist\u00f3w Java, kt\u00f3ry umo\u017cliwia \u0142atwe postawienie aplikacji \u201cpe\u0142nostosowej\u201d posiadaj\u0105cej backend oparty o Spring Boota i TypeScriptowy frontend. Znany wcze\u015bniej jako Vaadin Fusion, Hilla posiada kilka as\u00f3w w r\u0119kawie, takich jak ujednolicona konfiguracja dla Java i TypeScripta. Projekt posiada te\u017c bogaty zestaw komponent\u00f3w UI. Ca\u0142o\u015b\u0107 pozycjonuje si\u0119 na konkurencje dla bardziej znanego JHipstera.<\/p>\n\n\n\n<p>W zesz\u0142ym tygodniu pojawi\u0142a si\u0119 <a href=\"https:\/\/hilla.dev\/blog\/hilla-2-0-release\/\">wersja 2.0 projektu<\/a>, kt\u00f3ra zawiera nowe funkcje, takie jak ulepszony generator TypeScript, wsparcie dla web socket\u00f3w oraz GraalVM Native Image, uproszczone tworzenie theme oraz nowy SSO Kit, kt\u00f3ry umo\u017cliwia szybkie dodanie mo\u017cliwo\u015bci single sign-on do aplikacji Hilla. Nowe wydanie zbudowane jest w oparciu Spring Boot 3, Java 17 i Jakarta EE 10.<\/p>\n\n\n\n<p>Na koniec warto wspomnie\u0107, \u017ce tw\u00f3rcy ju\u017c dzisiaj zapowiadaj\u0105 Hille 2.1, kt\u00f3ra ma zosta\u0107 wydana w czerwcu 2023 roku i b\u0119dzie zawiera\u0107 lepsz\u0105 obs\u0142ug\u0119 formularzy, kolejne ulepszenia w SSO Kit oraz helpery do tworzenia aplikacji CRUD-owych. Umo\u017cliwiony ma by\u0107 te\u017c deployment Hilli na funkcje AWS Lambda.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Na tydzie\u0144 przed wydaniem JDK 20 w dalszym ci\u0105gu b\u0119dziemy pisa\u0107 o JDK 21, ale w dalszym ci\u0105gu jeste\u015bmy bombardowani nowymi JEP-ami. Opr\u00f3cz tego &#8211; stan spo\u0142eczno\u015bci Jakarta EE 10 i obwi\u0105zkowy Release Radar.<\/p>\n","protected":false},"author":10,"featured_media":15218,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[23],"tags":[],"class_list":["post-15193","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm"],"acf":{"estimated_reading_time":"9","feature_image_blog":false,"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2-4.png","feature_image_visible":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC - JVM Weekly vol. 128 - 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\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC - JVM Weekly vol. 128 - Vived\" \/>\n<meta property=\"og:description\" content=\"Na tydzie\u0144 przed wydaniem JDK 20 w dalszym ci\u0105gu b\u0119dziemy pisa\u0107 o JDK 21, ale w dalszym ci\u0105gu jeste\u015bmy bombardowani nowymi JEP-ami. Opr\u00f3cz tego - stan spo\u0142eczno\u015bci Jakarta EE 10 i obwi\u0105zkowy Release Radar.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-16T13:35:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-16T13:35:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2-4.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\\\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vived.io\\\/pl\\\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\\\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\\\/\\\/3.68.244.71\\\/#\\\/schema\\\/person\\\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC &#8211; JVM Weekly vol. 128\",\"datePublished\":\"2023-03-16T13:35:48+00:00\",\"dateModified\":\"2023-03-16T13:35:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vived.io\\\/pl\\\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\\\/\"},\"wordCount\":1937,\"publisher\":{\"@id\":\"https:\\\/\\\/3.68.244.71\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/vived.io\\\/pl\\\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vived.io\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/JVM-Weekly-1200x628_V2-4.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vived.io\\\/pl\\\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\\\/\",\"url\":\"https:\\\/\\\/vived.io\\\/pl\\\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\\\/\",\"name\":\"JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC - JVM Weekly vol. 128 - Vived\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/3.68.244.71\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vived.io\\\/pl\\\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vived.io\\\/pl\\\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vived.io\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/JVM-Weekly-1200x628_V2-4.png\",\"datePublished\":\"2023-03-16T13:35:48+00:00\",\"dateModified\":\"2023-03-16T13:35:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vived.io\\\/pl\\\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vived.io\\\/pl\\\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/vived.io\\\/pl\\\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vived.io\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/JVM-Weekly-1200x628_V2-4.png\",\"contentUrl\":\"https:\\\/\\\/vived.io\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/JVM-Weekly-1200x628_V2-4.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vived.io\\\/pl\\\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/vived.io\\\/pl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC &#8211; JVM Weekly vol. 128\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/3.68.244.71\\\/#website\",\"url\":\"https:\\\/\\\/3.68.244.71\\\/\",\"name\":\"Vived\",\"description\":\"platform empowering IT people and technology companies to synergic growth\",\"publisher\":{\"@id\":\"https:\\\/\\\/3.68.244.71\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/3.68.244.71\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/3.68.244.71\\\/#organization\",\"name\":\"Vived\",\"url\":\"https:\\\/\\\/3.68.244.71\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/3.68.244.71\\\/#\\\/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:\\\/\\\/3.68.244.71\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/3.68.244.71\\\/#\\\/schema\\\/person\\\/0eb0878110cb27edfbfe46e841fe6db3\",\"name\":\"Artur Skowro\u0144ski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"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":"JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC - JVM Weekly vol. 128 - 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\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/","og_locale":"pl_PL","og_type":"article","og_title":"JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC - JVM Weekly vol. 128 - Vived","og_description":"Na tydzie\u0144 przed wydaniem JDK 20 w dalszym ci\u0105gu b\u0119dziemy pisa\u0107 o JDK 21, ale w dalszym ci\u0105gu jeste\u015bmy bombardowani nowymi JEP-ami. Opr\u00f3cz tego - stan spo\u0142eczno\u015bci Jakarta EE 10 i obwi\u0105zkowy Release Radar.","og_url":"https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/","og_site_name":"Vived","article_published_time":"2023-03-16T13:35:48+00:00","article_modified_time":"2023-03-16T13:35:51+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2-4.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\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/3.68.244.71\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC &#8211; JVM Weekly vol. 128","datePublished":"2023-03-16T13:35:48+00:00","dateModified":"2023-03-16T13:35:51+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/"},"wordCount":1937,"publisher":{"@id":"https:\/\/3.68.244.71\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2-4.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/","url":"https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/","name":"JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC - JVM Weekly vol. 128 - Vived","isPartOf":{"@id":"https:\/\/3.68.244.71\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2-4.png","datePublished":"2023-03-16T13:35:48+00:00","dateModified":"2023-03-16T13:35:51+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2-4.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/JVM-Weekly-1200x628_V2-4.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jdk-21-strikes-again-stabilne-wirtualne-watki-i-generacyjny-zgc-jvm-weekly-vol-128\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC &#8211; JVM Weekly vol. 128"}]},{"@type":"WebSite","@id":"https:\/\/3.68.244.71\/#website","url":"https:\/\/3.68.244.71\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/3.68.244.71\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/3.68.244.71\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/3.68.244.71\/#organization","name":"Vived","url":"https:\/\/3.68.244.71\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/3.68.244.71\/#\/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:\/\/3.68.244.71\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/3.68.244.71\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","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. JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC<\/h2>\n","innerContent":["\n<h2>1. JDK 21 Strikes Again: Stabilne Wirtualne W\u0105tki i Generacyjny ZGC<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dopiero co tydzie\u0144 temu poruszali\u015bmy temat tego, na jak ciekawe wydanie zapowiada si\u0119 JDK 21, a ju\u017c musimy do tematu wr\u00f3ci\u0107, poniewa\u017c grzechem by\u0142oby poinformowa\u0107 o kolejnych potencjalnych nowo\u015bciach, kt\u00f3re do jesiennego LTS-a trafi\u0105. Otrzymali\u015bmy bowiem dwie kolejne du\u017ce zapowiedzi w tym temacie.<\/p>\n","innerContent":["\n<p>Dopiero co tydzie\u0144 temu poruszali\u015bmy temat tego, na jak ciekawe wydanie zapowiada si\u0119 JDK 21, a ju\u017c musimy do tematu wr\u00f3ci\u0107, poniewa\u017c grzechem by\u0142oby poinformowa\u0107 o kolejnych potencjalnych nowo\u015bciach, kt\u00f3re do jesiennego LTS-a trafi\u0105. Otrzymali\u015bmy bowiem dwie kolejne du\u017ce zapowiedzi w tym temacie.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zacznijmy od najwi\u0119kszej bomby, jak\u0105 jest pojawienie si\u0119 draftu Wirtualnych W\u0105tk\u00f3w w wersji stabilnej. Z jednej strony nale\u017ca\u0142o si\u0119 spodziewa\u0107 (drugi Preview by\u0142 naprawd\u0119 kosmetyczny), z drugiej nie by\u0142em pewien, czy jednak nie przyjdzie nam poczeka\u0107 na stabilizacj\u0119 pozosta\u0142ych feature projektu Loom i tw\u00f3rcy odpuszcz\u0105 sobie jeszcze jesiennego LTS-a. Machina jednak ruszy\u0142a - ukaza\u0142 si\u0119 <a href=\"https:\/\/openjdk.org\/jeps\/8303683\">oficjalny JEP Draft<\/a>, i to taki zawieraj\u0105cy minimaln\u0105 ilo\u015b\u0107 zmian. Jedyn\u0105 wi\u0119ksz\u0105 zmian\u0105 jest usuni\u0119cie mo\u017cliwo\u015bci wy\u0142\u0105czenia wsparcia <code>ThreadLocal<\/code>. Jak <a href=\"https:\/\/mail.openjdk.org\/pipermail\/loom-dev\/2023-February\/005312.html\">pisze Ron Pressler<\/a>, funkcjonalno\u015b\u0107 by\u0142a \u017ale rozumiana i w planach tw\u00f3rc\u00f3w nigdy nie by\u0142o ca\u0142kowitego usuni\u0119cia ThreadLocala, jak mog\u0142oby wynika\u0107 z takiej mo\u017cliwo\u015bci. Dla wi\u0119kszej klarowno\u015bci komunikacyjnej w ko\u0142o wirtualnych w\u0105tk\u00f3w, <code>ThreadLocal<\/code> i <code>Scope Locals<\/code> zdecydowano si\u0119 z tej mo\u017cliwo\u015bci po prostu zrezygnowa\u0107.<\/p>\n","innerContent":["\n<p>Zacznijmy od najwi\u0119kszej bomby, jak\u0105 jest pojawienie si\u0119 draftu Wirtualnych W\u0105tk\u00f3w w wersji stabilnej. Z jednej strony nale\u017ca\u0142o si\u0119 spodziewa\u0107 (drugi Preview by\u0142 naprawd\u0119 kosmetyczny), z drugiej nie by\u0142em pewien, czy jednak nie przyjdzie nam poczeka\u0107 na stabilizacj\u0119 pozosta\u0142ych feature projektu Loom i tw\u00f3rcy odpuszcz\u0105 sobie jeszcze jesiennego LTS-a. Machina jednak ruszy\u0142a - ukaza\u0142 si\u0119 <a href=\"https:\/\/openjdk.org\/jeps\/8303683\">oficjalny JEP Draft<\/a>, i to taki zawieraj\u0105cy minimaln\u0105 ilo\u015b\u0107 zmian. Jedyn\u0105 wi\u0119ksz\u0105 zmian\u0105 jest usuni\u0119cie mo\u017cliwo\u015bci wy\u0142\u0105czenia wsparcia <code>ThreadLocal<\/code>. Jak <a href=\"https:\/\/mail.openjdk.org\/pipermail\/loom-dev\/2023-February\/005312.html\">pisze Ron Pressler<\/a>, funkcjonalno\u015b\u0107 by\u0142a \u017ale rozumiana i w planach tw\u00f3rc\u00f3w nigdy nie by\u0142o ca\u0142kowitego usuni\u0119cia ThreadLocala, jak mog\u0142oby wynika\u0107 z takiej mo\u017cliwo\u015bci. Dla wi\u0119kszej klarowno\u015bci komunikacyjnej w ko\u0142o wirtualnych w\u0105tk\u00f3w, <code>ThreadLocal<\/code> i <code>Scope Locals<\/code> zdecydowano si\u0119 z tej mo\u017cliwo\u015bci po prostu zrezygnowa\u0107.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"id":15206,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-10-1024x762.png\" alt=\"\" class=\"wp-image-15206\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-10-1024x762.png\" alt=\"\" class=\"wp-image-15206\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>I cho\u0107 JEP <a href=\"https:\/\/openjdk.org\/jeps\/8303683\">na razie pozostaje Draftem<\/a>, to je\u015bli tylko zostanie zaakceptowany, Virtual Threads wyjd\u0105 z Preview i zostan\u0105 stabiln\u0105 funkcjonalno\u015bci\u0105 w JDK 21. Teraz czekamy jeszcze na Structure Concurrency w preview i b\u0119dzie mo\u017cna powiedzie\u0107, \u017ce jesienna Java naprawd\u0119<\/p>\n","innerContent":["\n<p>I cho\u0107 JEP <a href=\"https:\/\/openjdk.org\/jeps\/8303683\">na razie pozostaje Draftem<\/a>, to je\u015bli tylko zostanie zaakceptowany, Virtual Threads wyjd\u0105 z Preview i zostan\u0105 stabiln\u0105 funkcjonalno\u015bci\u0105 w JDK 21. Teraz czekamy jeszcze na Structure Concurrency w preview i b\u0119dzie mo\u017cna powiedzie\u0107, \u017ce jesienna Java naprawd\u0119<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Drugi z nowych JEP-\u00f3w, tym razem zakwalifikowany jako kandydat do JDK 21, to <a href=\"https:\/\/openjdk.org\/jeps\/439\">JEP 439: Generational ZGC<\/a>. Pewnie wi\u0119kszo\u015b\u0107 czytaj\u0105cych te teksty s\u0142ysza\u0142o czym jest hipoteza generacyjna, ale jako, \u017ce moja c\u00f3rka nied\u0142ugo sko\u0144czy dwa latka, to spr\u00f3buje potrenowa\u0107 wyja\u015bnienia ELI5 (Explain me like I'm Five).<\/p>\n","innerContent":["\n<p>Drugi z nowych JEP-\u00f3w, tym razem zakwalifikowany jako kandydat do JDK 21, to <a href=\"https:\/\/openjdk.org\/jeps\/439\">JEP 439: Generational ZGC<\/a>. Pewnie wi\u0119kszo\u015b\u0107 czytaj\u0105cych te teksty s\u0142ysza\u0142o czym jest hipoteza generacyjna, ale jako, \u017ce moja c\u00f3rka nied\u0142ugo sko\u0144czy dwa latka, to spr\u00f3buje potrenowa\u0107 wyja\u015bnienia ELI5 (Explain me like I'm Five).<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Wyobra\u017a sobie, \u017ce masz w swoim pokoju mn\u00f3stwo zabawek, z kt\u00f3rych cz\u0119\u015b\u0107 w\u0142a\u015bnie dosta\u0142e\u015b, a cz\u0119\u015b\u0107 masz ju\u017c od dawna. Mo\u017cesz cz\u0119sto bawi\u0107 si\u0119 nowymi zabawkami, ale w ko\u0144cu znudz\u0105 ci si\u0119 i przestan\u0105 sprawia\u0107 frajd\u0119 (to jest a\u017c nazbyt prawdziwe...). Z drugiej strony, zabawkami kt\u00f3re masz od d\u0142u\u017cszego czasu mo\u017ce nie bawisz si\u0119 a\u017c tak cz\u0119sto, ale skoro od roku Ci si\u0119 to jeszcze nie znudzi\u0142o, jest spora szansa \u017ce nie stanie si\u0119 to jeszcze przez d\u0142u\u017cszy czas.<\/p>\n","innerContent":["\n<p>Wyobra\u017a sobie, \u017ce masz w swoim pokoju mn\u00f3stwo zabawek, z kt\u00f3rych cz\u0119\u015b\u0107 w\u0142a\u015bnie dosta\u0142e\u015b, a cz\u0119\u015b\u0107 masz ju\u017c od dawna. Mo\u017cesz cz\u0119sto bawi\u0107 si\u0119 nowymi zabawkami, ale w ko\u0144cu znudz\u0105 ci si\u0119 i przestan\u0105 sprawia\u0107 frajd\u0119 (to jest a\u017c nazbyt prawdziwe...). Z drugiej strony, zabawkami kt\u00f3re masz od d\u0142u\u017cszego czasu mo\u017ce nie bawisz si\u0119 a\u017c tak cz\u0119sto, ale skoro od roku Ci si\u0119 to jeszcze nie znudzi\u0142o, jest spora szansa \u017ce nie stanie si\u0119 to jeszcze przez d\u0142u\u017cszy czas.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Generacyjny garbage collector dzia\u0142a w ten sam spos\u00f3b. Dzieli obiekty w pami\u0119ci na dwie grupy, m\u0142ode obiekty i stare obiekty. M\u0142ode obiekty to te, kt\u00f3re zosta\u0142y dopiero co utworzone, a stare obiekty to te, kt\u00f3re s\u0105 ju\u017c od jakiego\u015b czasu. \u015amieciarka cz\u0119\u015bciej sprawdza m\u0142ode obiekty, poniewa\u017c maj\u0105 one tendencj\u0119 do \"umierania m\u0142odo\", czyli s\u0105 tworzone, a nast\u0119pnie szybko staj\u0105 si\u0119 nieu\u017cywane. Stare obiekty s\u0105 sprawdzane rzadziej, poniewa\u017c jest bardziej prawdopodobne, \u017ce nadal s\u0105 potrzebne. Dziel\u0105c obiekty na generacje, garbage collector mo\u017ce zoptymalizowa\u0107 swoje zarz\u0105dzanie pami\u0119ci\u0105 i zmniejszy\u0107 czas i zasoby potrzebne do zbierania \u015bmieci.<\/p>\n","innerContent":["\n<p>Generacyjny garbage collector dzia\u0142a w ten sam spos\u00f3b. Dzieli obiekty w pami\u0119ci na dwie grupy, m\u0142ode obiekty i stare obiekty. M\u0142ode obiekty to te, kt\u00f3re zosta\u0142y dopiero co utworzone, a stare obiekty to te, kt\u00f3re s\u0105 ju\u017c od jakiego\u015b czasu. \u015amieciarka cz\u0119\u015bciej sprawdza m\u0142ode obiekty, poniewa\u017c maj\u0105 one tendencj\u0119 do \"umierania m\u0142odo\", czyli s\u0105 tworzone, a nast\u0119pnie szybko staj\u0105 si\u0119 nieu\u017cywane. Stare obiekty s\u0105 sprawdzane rzadziej, poniewa\u017c jest bardziej prawdopodobne, \u017ce nadal s\u0105 potrzebne. Dziel\u0105c obiekty na generacje, garbage collector mo\u017ce zoptymalizowa\u0107 swoje zarz\u0105dzanie pami\u0119ci\u0105 i zmniejszy\u0107 czas i zasoby potrzebne do zbierania \u015bmieci.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":15197,"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-7.png\" alt=\"\" class=\"wp-image-15197\"\/><figcaption class=\"wp-element-caption\">Teraz ZGC b\u0119dzie robi\u0142 powy\u017csze jeszcze skuteczniej.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-7.png\" alt=\"\" class=\"wp-image-15197\"\/><figcaption class=\"wp-element-caption\">Teraz ZGC b\u0119dzie robi\u0142 powy\u017csze jeszcze skuteczniej.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Wyj\u0105tkiem jest tutaj w\u0142a\u015bnie ZGC \u2013 Garbage Collector, kt\u00f3ry s\u0142u\u017cy do czyszczenia pami\u0119ci nawet o wielko\u015bci terabajt\u00f3w bez przerwy d\u0142u\u017cszej ni\u017c kilka milisekund. ZGC okre\u015blany jest jako GC nisko-op\u00f3\u017anieniowe, kt\u00f3re mo\u017cna uzna\u0107 za swoisty state-of-the-art je\u015bli chodzi o maszyn\u0119 wirtualn\u0105 Javy. Nie jest to jednak rozwi\u0105zanie bez wad \u2013 design ZGC jest bardzo skomplikowany. Sprawi\u0142o to, \u017ce jego pierwsza (obecna) wersja jest jednogeneracyjna.<\/p>\n","innerContent":["\n<p>Wyj\u0105tkiem jest tutaj w\u0142a\u015bnie ZGC \u2013 Garbage Collector, kt\u00f3ry s\u0142u\u017cy do czyszczenia pami\u0119ci nawet o wielko\u015bci terabajt\u00f3w bez przerwy d\u0142u\u017cszej ni\u017c kilka milisekund. ZGC okre\u015blany jest jako GC nisko-op\u00f3\u017anieniowe, kt\u00f3re mo\u017cna uzna\u0107 za swoisty state-of-the-art je\u015bli chodzi o maszyn\u0119 wirtualn\u0105 Javy. Nie jest to jednak rozwi\u0105zanie bez wad \u2013 design ZGC jest bardzo skomplikowany. Sprawi\u0142o to, \u017ce jego pierwsza (obecna) wersja jest jednogeneracyjna.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W zwi\u0105zku z czym rozwi\u0105zanie zawsze mia\u0142o problem z tak zwanym \u201eoczyszczaniem m\u0142odej generacji\u201d, czyli w\u0142a\u015bnie tych kr\u00f3tko \u017cyj\u0105cych obiekt\u00f3w. Tw\u00f3rcy od samego pocz\u0105tku zapowiadali jednak, \u017ce nie poprzestan\u0105 na tym i teraz dostajemy w nasze r\u0119ce <a href=\"https:\/\/openjdk.org\/jeps\/439\">JEP 439: Generational ZGC<\/a>. Co ciekawe, dotychczasowo nie zamierzano utrzymywa\u0107 dw\u00f3ch wersji ZGC - po implementacji wersji Generacyjnej oryginalna implementacji mia\u0142a znikn\u0105\u0107. Okaza\u0142o si\u0119 jednak, \u017ce o ile nowy ZGC powinien by\u0107 lepszym rozwi\u0105zaniem dla wi\u0119kszo\u015bci przypadk\u00f3w u\u017cycia ni\u017c nie-generacyjny ZGC, to ci\u0105gle istniej\u0105 przypadki, w kt\u00f3rych lepiej sprawdza si\u0119 to drugie rozwi\u0105zanie. Dlatego te\u017c chwilowo tw\u00f3rcy zdecydowali si\u0119 na utrzymanie obu ZGC, z za\u0142o\u017ceniem pozbycia si\u0119 oryginalnej wersji w przysz\u0142o\u015bci. Jest to bardzo nietuzinkowa sytuacja, w zwi\u0105zku z czym ciekaw jestem JAK BARDZO z\u0142a jest wydajno\u015b\u0107 generacyjnego ZGC w tych niekt\u00f3rych przypadkach, \u017ce tw\u00f3rcy zdecydowali si\u0119 na utrzymaniu dw\u00f3ch wariant\u00f3w.<\/p>\n","innerContent":["\n<p>W zwi\u0105zku z czym rozwi\u0105zanie zawsze mia\u0142o problem z tak zwanym \u201eoczyszczaniem m\u0142odej generacji\u201d, czyli w\u0142a\u015bnie tych kr\u00f3tko \u017cyj\u0105cych obiekt\u00f3w. Tw\u00f3rcy od samego pocz\u0105tku zapowiadali jednak, \u017ce nie poprzestan\u0105 na tym i teraz dostajemy w nasze r\u0119ce <a href=\"https:\/\/openjdk.org\/jeps\/439\">JEP 439: Generational ZGC<\/a>. Co ciekawe, dotychczasowo nie zamierzano utrzymywa\u0107 dw\u00f3ch wersji ZGC - po implementacji wersji Generacyjnej oryginalna implementacji mia\u0142a znikn\u0105\u0107. Okaza\u0142o si\u0119 jednak, \u017ce o ile nowy ZGC powinien by\u0107 lepszym rozwi\u0105zaniem dla wi\u0119kszo\u015bci przypadk\u00f3w u\u017cycia ni\u017c nie-generacyjny ZGC, to ci\u0105gle istniej\u0105 przypadki, w kt\u00f3rych lepiej sprawdza si\u0119 to drugie rozwi\u0105zanie. Dlatego te\u017c chwilowo tw\u00f3rcy zdecydowali si\u0119 na utrzymanie obu ZGC, z za\u0142o\u017ceniem pozbycia si\u0119 oryginalnej wersji w przysz\u0142o\u015bci. Jest to bardzo nietuzinkowa sytuacja, w zwi\u0105zku z czym ciekaw jestem JAK BARDZO z\u0142a jest wydajno\u015b\u0107 generacyjnego ZGC w tych niekt\u00f3rych przypadkach, \u017ce tw\u00f3rcy zdecydowali si\u0119 na utrzymaniu dw\u00f3ch wariant\u00f3w.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":15212,"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-12.png\" alt=\"\" class=\"wp-image-15212\"\/><figcaption class=\"wp-element-caption\">Strategia jest pewnie dobra - tylko \u017ceby to si\u0119 \u017ale nie sko\u0144czy\u0142o<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-12.png\" alt=\"\" class=\"wp-image-15212\"\/><figcaption class=\"wp-element-caption\">Strategia jest pewnie dobra - tylko \u017ceby to si\u0119 \u017ale nie sko\u0144czy\u0142o<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u015bli chcecie dowiedzie\u0107 si\u0119 wi\u0119cej o samym ZGC, to w zale\u017cno\u015bci od tego jaka forma najlepiej do Was trafia, polecam prezentacje wideo <a href=\"https:\/\/www.youtube.com\/watch?v=U2Sx5lU0KM8\">Java\u2019s Highly Scalable Low-Latency Garbage Collector: ZGC<\/a> lub podcast <a href=\"https:\/\/inside.java\/2022\/06\/29\/podcast-024\/\">Towards Generational ZGC<\/a>.<\/p>\n","innerContent":["\n<p>Je\u015bli chcecie dowiedzie\u0107 si\u0119 wi\u0119cej o samym ZGC, to w zale\u017cno\u015bci od tego jaka forma najlepiej do Was trafia, polecam prezentacje wideo <a href=\"https:\/\/www.youtube.com\/watch?v=U2Sx5lU0KM8\">Java\u2019s Highly Scalable Low-Latency Garbage Collector: ZGC<\/a> lub podcast <a href=\"https:\/\/inside.java\/2022\/06\/29\/podcast-024\/\">Towards Generational ZGC<\/a>.<\/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\/439\">JEP 439: Generational ZGC<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/openjdk.org\/jeps\/439\">JEP 439: Generational ZGC<\/a><\/li>\n"]},{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/openjdk.org\/jeps\/8303683\">JEP draft: Virtual Threads<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/openjdk.org\/jeps\/8303683\">JEP draft: Virtual Threads<\/a><\/li>\n"]},{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=U2Sx5lU0KM8\">Java\u2019s Highly Scalable Low-Latency Garbage Collector: ZGC<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=U2Sx5lU0KM8\">Java\u2019s Highly Scalable Low-Latency Garbage Collector: ZGC<\/a><\/li>\n"]},{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/inside.java\/2022\/06\/29\/podcast-024\/\">Towards Generational ZGC<\/a>.<\/li>\n","innerContent":["\n<li><a href=\"https:\/\/inside.java\/2022\/06\/29\/podcast-024\/\">Towards Generational ZGC<\/a>.<\/li>\n"]}],"innerHTML":"\n<ul>\n\n\n\n\n\n<\/ul>\n","innerContent":["\n<ul>",null,"\n\n",null,"\n\n",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. Jak spo\u0142eczno\u015b\u0107 u\u017cywa Jakarty EE?<\/h2>\n","innerContent":["\n<h2>2. Jak spo\u0142eczno\u015b\u0107 u\u017cywa Jakarty EE?<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>We wrze\u015bniu 2022 roku OmniFish i OmniFaces przeprowadzi\u0142y ankiet\u0119 na temat Jakarta EE, zadaj\u0105c pytania zwi\u0105zane z jej wykorzystaniem, serwerami aplikacji i API. W zesz\u0142ym tygodniu pojawi\u0142y si\u0119 <a href=\"https:\/\/omnifish.ee\/2023\/03\/10\/jakarta-ee-survey-2022-2023-results\">jego wyniki<\/a>, zawieraj\u0105ce kilka ciekawych obserwacji.<\/p>\n","innerContent":["\n<p>We wrze\u015bniu 2022 roku OmniFish i OmniFaces przeprowadzi\u0142y ankiet\u0119 na temat Jakarta EE, zadaj\u0105c pytania zwi\u0105zane z jej wykorzystaniem, serwerami aplikacji i API. W zesz\u0142ym tygodniu pojawi\u0142y si\u0119 <a href=\"https:\/\/omnifish.ee\/2023\/03\/10\/jakarta-ee-survey-2022-2023-results\">jego wyniki<\/a>, zawieraj\u0105ce kilka ciekawych obserwacji.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zanim zaczn\u0119 dzieli\u0107 si\u0119 danymi z ankiety, ma\u0142y disclaimer - dane pochodz\u0105 z 720 odpowiedzi zebranych ze spo\u0142eczno\u015bci Jakarty EE. M\u00f3wimy wi\u0119c o zbiorze z jednej strony stosunkowo ma\u0142ym, z drugiej jednak ju\u017c statystycznie istotnym. Ze wzgl\u0119du jednak na tak\u0105, a nie inn\u0105 grup\u0119 badawcz\u0105 (mo\u017cna za\u0142o\u017cy\u0107, \u017ce w badaniu wzi\u0119li udzia\u0142 Ci najbardziej zaanga\u017cowani u\u017cytkownicy Jakarty EE), dane mog\u0105 by\u0107 zaburzone. Trzeba na nie spojrze\u0107 wi\u0119c z przymr\u00f3\u017ceniem oka i traktowa\u0107 raczej jako ciekawostk\u0119, ale w dalszym ci\u0105gu m\u00f3wi\u0105c\u0105 nam nieco o sentymencie ze strony spo\u0142eczno\u015bci.<\/p>\n","innerContent":["\n<p>Zanim zaczn\u0119 dzieli\u0107 si\u0119 danymi z ankiety, ma\u0142y disclaimer - dane pochodz\u0105 z 720 odpowiedzi zebranych ze spo\u0142eczno\u015bci Jakarty EE. M\u00f3wimy wi\u0119c o zbiorze z jednej strony stosunkowo ma\u0142ym, z drugiej jednak ju\u017c statystycznie istotnym. Ze wzgl\u0119du jednak na tak\u0105, a nie inn\u0105 grup\u0119 badawcz\u0105 (mo\u017cna za\u0142o\u017cy\u0107, \u017ce w badaniu wzi\u0119li udzia\u0142 Ci najbardziej zaanga\u017cowani u\u017cytkownicy Jakarty EE), dane mog\u0105 by\u0107 zaburzone. Trzeba na nie spojrze\u0107 wi\u0119c z przymr\u00f3\u017ceniem oka i traktowa\u0107 raczej jako ciekawostk\u0119, ale w dalszym ci\u0105gu m\u00f3wi\u0105c\u0105 nam nieco o sentymencie ze strony spo\u0142eczno\u015bci.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","width":512,"height":338},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/1_ee_versions-1-1024x675.png\" alt=\"\" width=\"512\" height=\"338\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/1_ee_versions-1-1024x675.png\" alt=\"\" width=\"512\" height=\"338\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Z danych wynika, \u017ce mimo walnego przechodzenia bibliotek i projekt\u00f3w na Jakarta EE 10, to wci\u0105\u017c Java EE 8 i Jakarta EE 8 s\u0105 najcz\u0119\u015bciej u\u017cywanymi wersjami. Trzeba jednak przyzna\u0107, \u017ce adopcja najnowszej Jakarty jest ca\u0142kiem obiecuj\u0105ca - projekt ten zajmuje obecnie trzeci\u0105 pozycj\u0119, wyprzedzaj\u0105c w ten spos\u00f3b Jakarta EE 9.<\/p>\n","innerContent":["\n<p>Z danych wynika, \u017ce mimo walnego przechodzenia bibliotek i projekt\u00f3w na Jakarta EE 10, to wci\u0105\u017c Java EE 8 i Jakarta EE 8 s\u0105 najcz\u0119\u015bciej u\u017cywanymi wersjami. Trzeba jednak przyzna\u0107, \u017ce adopcja najnowszej Jakarty jest ca\u0142kiem obiecuj\u0105ca - projekt ten zajmuje obecnie trzeci\u0105 pozycj\u0119, wyprzedzaj\u0105c w ten spos\u00f3b Jakarta EE 9.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":15204,"width":512,"height":230,"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\/image-9-1024x460.png\" alt=\"\" class=\"wp-image-15204\" width=\"512\" height=\"230\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-9-1024x460.png\" alt=\"\" class=\"wp-image-15204\" width=\"512\" height=\"230\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u015bli chodzi za\u015b o serwery aplikacyjne, to tutaj mamy do czynienia z wy\u015bcigiem \u0142eb w \u0142eb mi\u0119dzy WildFly a Payara Server. WildFly jest ci\u0105gle na czele stawki, ale Payara do\u015b\u0107 skutecznie zaskarbi\u0142a sobie serce spo\u0142eczno\u015bci. Oba projekty posiadaj\u0105 minimalny odsetek niezadowolonych\/neutralnie nastawionych u\u017cytkownik\u00f3w, w obu przypadkach znacznie przewa\u017caj\u0105 Ci kt\u00f3rzy wypowiadaj\u0105 si\u0119 o produktach w superlatywach<\/p>\n","innerContent":["\n<p>Je\u015bli chodzi za\u015b o serwery aplikacyjne, to tutaj mamy do czynienia z wy\u015bcigiem \u0142eb w \u0142eb mi\u0119dzy WildFly a Payara Server. WildFly jest ci\u0105gle na czele stawki, ale Payara do\u015b\u0107 skutecznie zaskarbi\u0142a sobie serce spo\u0142eczno\u015bci. Oba projekty posiadaj\u0105 minimalny odsetek niezadowolonych\/neutralnie nastawionych u\u017cytkownik\u00f3w, w obu przypadkach znacznie przewa\u017caj\u0105 Ci kt\u00f3rzy wypowiadaj\u0105 si\u0119 o produktach w superlatywach<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Po drugiej stronie stawki plasuj\u0105 si\u0119 za\u015b WebSphere i WebLogic.<\/p>\n","innerContent":["\n<p>Po drugiej stronie stawki plasuj\u0105 si\u0119 za\u015b WebSphere i WebLogic.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","width":436,"height":512},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/9_which_mp-872x1024.png\" alt=\"\" width=\"436\" height=\"512\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/9_which_mp-872x1024.png\" alt=\"\" width=\"436\" height=\"512\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Mnie osobi\u015bcie jednak najbardziej interesowa\u0142y pytania o MicroProfile. Podobnie jak w innych latach, tylko mniejszo\u015b\u0107 korzysta\u0142a z API MicroProfile, ale odsetek, kt\u00f3ry korzysta z tych API, ro\u015bnie co roku. W 2018 roku by\u0142o to 16%, w 2020 32%, a w 2022\/2023 ju\u017c 36% - wida\u0107 wi\u0119c wyra\u017any trend. Z ankiety wynika te\u017c, \u017ce koniem poci\u0105gowym jest Quarkus - to w\u0142a\u015bnie on jest deklarowany jako u\u017cywany produkt przez ponad 50% u\u017cytkownik\u00f3w MicroProfile. Quarkus wyra\u017anie zagarnia wi\u0119c pod siebie coraz wi\u0119cej spo\u0142eczno\u015bci, a przepa\u015b\u0107 mi\u0119dzy nim, a drugim w rankingu WildFly jeszcze si\u0119 powi\u0119ksza. Ciekawa jest tutaj niska pozycja Helidona MP, kt\u00f3ry zosta\u0142 wyprzedzony zar\u00f3wno przez OpenLiberty, jak i Payara Server\/Micro. Jak na to ile o samym projekcie si\u0119 m\u00f3wi to do\u015b\u0107 mocno wida\u0107, \u017ce traktowany jest on raczej jako eksperyment - przynajmniej przez spo\u0142eczno\u015b\u0107 Jakarty EE.<\/p>\n","innerContent":["\n<p>Mnie osobi\u015bcie jednak najbardziej interesowa\u0142y pytania o MicroProfile. Podobnie jak w innych latach, tylko mniejszo\u015b\u0107 korzysta\u0142a z API MicroProfile, ale odsetek, kt\u00f3ry korzysta z tych API, ro\u015bnie co roku. W 2018 roku by\u0142o to 16%, w 2020 32%, a w 2022\/2023 ju\u017c 36% - wida\u0107 wi\u0119c wyra\u017any trend. Z ankiety wynika te\u017c, \u017ce koniem poci\u0105gowym jest Quarkus - to w\u0142a\u015bnie on jest deklarowany jako u\u017cywany produkt przez ponad 50% u\u017cytkownik\u00f3w MicroProfile. Quarkus wyra\u017anie zagarnia wi\u0119c pod siebie coraz wi\u0119cej spo\u0142eczno\u015bci, a przepa\u015b\u0107 mi\u0119dzy nim, a drugim w rankingu WildFly jeszcze si\u0119 powi\u0119ksza. Ciekawa jest tutaj niska pozycja Helidona MP, kt\u00f3ry zosta\u0142 wyprzedzony zar\u00f3wno przez OpenLiberty, jak i Payara Server\/Micro. Jak na to ile o samym projekcie si\u0119 m\u00f3wi to do\u015b\u0107 mocno wida\u0107, \u017ce traktowany jest on raczej jako eksperyment - przynajmniej przez spo\u0142eczno\u015b\u0107 Jakarty EE.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":15220,"width":512,"height":246,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-13.png\" alt=\"\" class=\"wp-image-15220\" width=\"512\" height=\"246\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-13.png\" alt=\"\" class=\"wp-image-15220\" width=\"512\" height=\"246\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Z mojej perspektyw najciekawszym tematem zwi\u0105zanym z MicroProfile jest jednak sentyment spo\u0142eczno\u015bci w kierunku \u0142\u0105czenia projektu z Jakart\u0105 EE. Okazuje si\u0119, \u017ce u\u017cytkownicy nie maj\u0105 tendencji separatystycznych i prawie 70% \u017cyczy\u0142a by sobie migracji obu projekt\u00f3w. Wr\u00f3\u017cy to nienajgorzej na przysz\u0142o\u015b\u0107, zw\u0142aszcza bior\u0105c pod uwag\u0119 adopcj\u0119 przez MicroProfile 6.0 wprowadzonego w Jakarta EE 10 Core Profile, do czego dosz\u0142o ju\u017c po zebraniu wynik\u00f3w tego badania.<\/p>\n","innerContent":["\n<p>Z mojej perspektyw najciekawszym tematem zwi\u0105zanym z MicroProfile jest jednak sentyment spo\u0142eczno\u015bci w kierunku \u0142\u0105czenia projektu z Jakart\u0105 EE. Okazuje si\u0119, \u017ce u\u017cytkownicy nie maj\u0105 tendencji separatystycznych i prawie 70% \u017cyczy\u0142a by sobie migracji obu projekt\u00f3w. Wr\u00f3\u017cy to nienajgorzej na przysz\u0142o\u015b\u0107, zw\u0142aszcza bior\u0105c pod uwag\u0119 adopcj\u0119 przez MicroProfile 6.0 wprowadzonego w Jakarta EE 10 Core Profile, do czego dosz\u0142o ju\u017c po zebraniu wynik\u00f3w tego badania.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Na koniec jeszcze raz chce zauwa\u017cy\u0107, \u017ce badanie mo\u017ce by\u0107 stronnicze w stron\u0119 bardziej aktywnych deweloper\u00f3w OSS. Dlatego te\u017c OmniFish planuje nast\u0119pn\u0105 wersj\u0119 badania przeprowadzi\u0107 we wsp\u00f3\u0142pracy z Eclipse Foundation.<\/p>\n","innerContent":["\n<p>Na koniec jeszcze raz chce zauwa\u017cy\u0107, \u017ce badanie mo\u017ce by\u0107 stronnicze w stron\u0119 bardziej aktywnych deweloper\u00f3w OSS. Dlatego te\u017c OmniFish planuje nast\u0119pn\u0105 wersj\u0119 badania przeprowadzi\u0107 we wsp\u00f3\u0142pracy z Eclipse Foundation.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":15209,"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-11.png\" alt=\"\" class=\"wp-image-15209\"\/><figcaption class=\"wp-element-caption\">No bo jak mawia\u0142 Mark Twain: \u201eS\u0105 trzy rodzaje k\u0142amstw: k\u0142amstwa, wielkie k\u0142amstwa i statystyki.\u201c<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/03\/image-11.png\" alt=\"\" class=\"wp-image-15209\"\/><figcaption class=\"wp-element-caption\">No bo jak mawia\u0142 Mark Twain: \u201eS\u0105 trzy rodzaje k\u0142amstw: k\u0142amstwa, wielkie k\u0142amstwa i statystyki.\u201c<\/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 jeste\u015bmy w temacie Jakarty EE, to bior\u0105c pod uwag\u0119 \u017ce ju\u017c w tym artykule mieli\u015bmy kilka wideo, to podrzuc\u0119 na koniec jeszcze bardzo ciekawe opracowanie historii wzajemnych relacji mi\u0119dzy Springiem, a Java EE. Ca\u0142o\u015b\u0107 pozwala lepiej zrozumie\u0107 zale\u017cno\u015bci \u0142\u0105cz\u0105ce obie platformy, i jak przez lata wp\u0142ywa\u0142y one na siebie. Ca\u0142o\u015b\u0107 powinna by\u0107 interesuj\u0105ca dla wszystkich, kt\u00f3rzy chcieliby pozna\u0107 korzenie najwa\u017cniejszych (chyba nie musimy ba\u0107 si\u0119 tego stwierdzenia) projekt\u00f3w ekosystemu Javy.<\/p>\n","innerContent":["\n<p>A jak ju\u017c jeste\u015bmy w temacie Jakarty EE, to bior\u0105c pod uwag\u0119 \u017ce ju\u017c w tym artykule mieli\u015bmy kilka wideo, to podrzuc\u0119 na koniec jeszcze bardzo ciekawe opracowanie historii wzajemnych relacji mi\u0119dzy Springiem, a Java EE. Ca\u0142o\u015b\u0107 pozwala lepiej zrozumie\u0107 zale\u017cno\u015bci \u0142\u0105cz\u0105ce obie platformy, i jak przez lata wp\u0142ywa\u0142y one na siebie. Ca\u0142o\u015b\u0107 powinna by\u0107 interesuj\u0105ca dla wszystkich, kt\u00f3rzy chcieliby pozna\u0107 korzenie najwa\u017cniejszych (chyba nie musimy ba\u0107 si\u0119 tego stwierdzenia) projekt\u00f3w ekosystemu Javy.<\/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:\/\/omnifish.ee\/2023\/03\/10\/jakarta-ee-survey-2022-2023-results\">Jakarta EE Survey 2022\/2023 \u2013 Results<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/omnifish.ee\/2023\/03\/10\/jakarta-ee-survey-2022-2023-results\">Jakarta EE Survey 2022\/2023 \u2013 Results<\/a><\/li>\n"]},{"blockName":"core\/list-item","attrs":[],"innerBlocks":[],"innerHTML":"\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=8d7ez9wuJyM\">Has the J2EE vs Spring Infinity War reached an End Game? A short history of Java for the enterprise<\/a><\/li>\n","innerContent":["\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=8d7ez9wuJyM\">Has the J2EE vs Spring Infinity War reached an End Game? A short history of Java for the enterprise<\/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. Release Radar: Kotlin, Hilla<\/h2>\n","innerContent":["\n<h2>3. Release Radar: Kotlin, Hilla<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew-eap.html\">Kotlin 1.8.20-RC<\/a><\/h3>\n","innerContent":["\n<h3><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew-eap.html\">Kotlin 1.8.20-RC<\/a><\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Kotlin wyda\u0142 wersj\u0119 preview <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew-eap.html\">Kotlin 1.8.20-RC<\/a>. Zwykle nie pisz\u0119 o wersjach testowych, ale akurat Kotlin 1.x.20 to zawsze ciekawe wydanie, zas\u0142uguj\u0105cy na swoj\u0105&nbsp;wzmiank\u0119, nawet jeszcze na poziomie RC.<\/p>\n","innerContent":["\n<p>Kotlin wyda\u0142 wersj\u0119 preview <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew-eap.html\">Kotlin 1.8.20-RC<\/a>. Zwykle nie pisz\u0119 o wersjach testowych, ale akurat Kotlin 1.x.20 to zawsze ciekawe wydanie, zas\u0142uguj\u0105cy na swoj\u0105&nbsp;wzmiank\u0119, nawet jeszcze na poziomie RC.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ciekawe zmiany pojawi\u0142y si\u0119 te\u017c w kontek\u015bcie kompilatora K2. Ten bowiem dosta\u0142 wsparcie (na razie jako preview) pluginu do serializacji, pojawi\u0142a si\u0119 te\u017c wersja Alpha kompilatora dla JS IR. Wreszcie, nowe podej\u015bcie do kompilacji przyrostowej jest teraz dost\u0119pne domy\u015blnie, co oznacza, \u017ce u\u017cytkownicy nie musz\u0105 ju\u017c okre\u015bla\u0107 <code>kotlin.incremental.useClasspathSnapshot=true<\/code> w swoich <code>gradle.properties<\/code>, aby j\u0105 w\u0142\u0105czy\u0107. W kontek\u015bcie interoperacyjno\u015bci z Jav\u0105, sam j\u0119zyk dostanie eksperymentalne wsparcie dla interfejsu <code>AutoCloseable<\/code>. Doczekamy si\u0119 te\u017c kodowania Base64 w bibliotece standardowej.<\/p>\n","innerContent":["\n<p>Ciekawe zmiany pojawi\u0142y si\u0119 te\u017c w kontek\u015bcie kompilatora K2. Ten bowiem dosta\u0142 wsparcie (na razie jako preview) pluginu do serializacji, pojawi\u0142a si\u0119 te\u017c wersja Alpha kompilatora dla JS IR. Wreszcie, nowe podej\u015bcie do kompilacji przyrostowej jest teraz dost\u0119pne domy\u015blnie, co oznacza, \u017ce u\u017cytkownicy nie musz\u0105 ju\u017c okre\u015bla\u0107 <code>kotlin.incremental.useClasspathSnapshot=true<\/code> w swoich <code>gradle.properties<\/code>, aby j\u0105 w\u0142\u0105czy\u0107. W kontek\u015bcie interoperacyjno\u015bci z Jav\u0105, sam j\u0119zyk dostanie eksperymentalne wsparcie dla interfejsu <code>AutoCloseable<\/code>. Doczekamy si\u0119 te\u017c kodowania Base64 w bibliotece standardowej.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W wydaniu tym pojawia si\u0119 te\u017c (na razie w wersji eksperymentalne) nowy \"target\" dla j\u0119zyka - Kotlin\/Wasm. Nie jest to co prawda pierwszy raz, gdy mo\u017cemy kompilowa\u0107 j\u0119zyk do WebAssembly - do tej pory odbywa\u0142o si\u0119 to jednak przez Kotlin\/Native. Nowe podej\u015bcie (dzi\u0119ki pomini\u0119ciu LLVM w uk\u0142adance) ma zapewni\u0107 szybsz\u0105 kompilacj\u0119, a r\u00f3wnocze\u015bnie lepsz\u0105 interoperacyjno\u015b\u0107 z JavaScriptem. Przy okazji, zesp\u00f3\u0142 Kotlina zdecydowa\u0142 si\u0119 zrewidowa\u0107 list\u0119 platform wspieranych przez Kotlin\/Native i zdeprecjonowa\u0107 niekt\u00f3re z nich (min. W\u0142a\u015bnie <code>wasm32<\/code>).<\/p>\n","innerContent":["\n<p>W wydaniu tym pojawia si\u0119 te\u017c (na razie w wersji eksperymentalne) nowy \"target\" dla j\u0119zyka - Kotlin\/Wasm. Nie jest to co prawda pierwszy raz, gdy mo\u017cemy kompilowa\u0107 j\u0119zyk do WebAssembly - do tej pory odbywa\u0142o si\u0119 to jednak przez Kotlin\/Native. Nowe podej\u015bcie (dzi\u0119ki pomini\u0119ciu LLVM w uk\u0142adance) ma zapewni\u0107 szybsz\u0105 kompilacj\u0119, a r\u00f3wnocze\u015bnie lepsz\u0105 interoperacyjno\u015b\u0107 z JavaScriptem. Przy okazji, zesp\u00f3\u0142 Kotlina zdecydowa\u0142 si\u0119 zrewidowa\u0107 list\u0119 platform wspieranych przez Kotlin\/Native i zdeprecjonowa\u0107 niekt\u00f3re z nich (min. W\u0142a\u015bnie <code>wasm32<\/code>).<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3><a href=\"https:\/\/hilla.dev\/blog\/hilla-2-0-release\/\">Vaadin Hilla 2.0<\/a><\/h3>\n","innerContent":["\n<h3><a href=\"https:\/\/hilla.dev\/blog\/hilla-2-0-release\/\">Vaadin Hilla 2.0<\/a><\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Mniej wi\u0119cej rok temu Vaadin zaprezentowa\u0142 Hille - nowy framework webowy dla programist\u00f3w Java, kt\u00f3ry umo\u017cliwia \u0142atwe postawienie aplikacji \u201cpe\u0142nostosowej\u201d posiadaj\u0105cej backend oparty o Spring Boota i TypeScriptowy frontend. Znany wcze\u015bniej jako Vaadin Fusion, Hilla posiada kilka as\u00f3w w r\u0119kawie, takich jak ujednolicona konfiguracja dla Java i TypeScripta. Projekt posiada te\u017c bogaty zestaw komponent\u00f3w UI. Ca\u0142o\u015b\u0107 pozycjonuje si\u0119 na konkurencje dla bardziej znanego JHipstera.<\/p>\n","innerContent":["\n<p>Mniej wi\u0119cej rok temu Vaadin zaprezentowa\u0142 Hille - nowy framework webowy dla programist\u00f3w Java, kt\u00f3ry umo\u017cliwia \u0142atwe postawienie aplikacji \u201cpe\u0142nostosowej\u201d posiadaj\u0105cej backend oparty o Spring Boota i TypeScriptowy frontend. Znany wcze\u015bniej jako Vaadin Fusion, Hilla posiada kilka as\u00f3w w r\u0119kawie, takich jak ujednolicona konfiguracja dla Java i TypeScripta. Projekt posiada te\u017c bogaty zestaw komponent\u00f3w UI. Ca\u0142o\u015b\u0107 pozycjonuje si\u0119 na konkurencje dla bardziej znanego JHipstera.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W zesz\u0142ym tygodniu pojawi\u0142a si\u0119 <a href=\"https:\/\/hilla.dev\/blog\/hilla-2-0-release\/\">wersja 2.0 projektu<\/a>, kt\u00f3ra zawiera nowe funkcje, takie jak ulepszony generator TypeScript, wsparcie dla web socket\u00f3w oraz GraalVM Native Image, uproszczone tworzenie theme oraz nowy SSO Kit, kt\u00f3ry umo\u017cliwia szybkie dodanie mo\u017cliwo\u015bci single sign-on do aplikacji Hilla. Nowe wydanie zbudowane jest w oparciu Spring Boot 3, Java 17 i Jakarta EE 10.<\/p>\n","innerContent":["\n<p>W zesz\u0142ym tygodniu pojawi\u0142a si\u0119 <a href=\"https:\/\/hilla.dev\/blog\/hilla-2-0-release\/\">wersja 2.0 projektu<\/a>, kt\u00f3ra zawiera nowe funkcje, takie jak ulepszony generator TypeScript, wsparcie dla web socket\u00f3w oraz GraalVM Native Image, uproszczone tworzenie theme oraz nowy SSO Kit, kt\u00f3ry umo\u017cliwia szybkie dodanie mo\u017cliwo\u015bci single sign-on do aplikacji Hilla. Nowe wydanie zbudowane jest w oparciu Spring Boot 3, Java 17 i Jakarta EE 10.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Na koniec warto wspomnie\u0107, \u017ce tw\u00f3rcy ju\u017c dzisiaj zapowiadaj\u0105 Hille 2.1, kt\u00f3ra ma zosta\u0107 wydana w czerwcu 2023 roku i b\u0119dzie zawiera\u0107 lepsz\u0105 obs\u0142ug\u0119 formularzy, kolejne ulepszenia w SSO Kit oraz helpery do tworzenia aplikacji CRUD-owych. Umo\u017cliwiony ma by\u0107 te\u017c deployment Hilli na funkcje AWS Lambda.<\/p>\n","innerContent":["\n<p>Na koniec warto wspomnie\u0107, \u017ce tw\u00f3rcy ju\u017c dzisiaj zapowiadaj\u0105 Hille 2.1, kt\u00f3ra ma zosta\u0107 wydana w czerwcu 2023 roku i b\u0119dzie zawiera\u0107 lepsz\u0105 obs\u0142ug\u0119 formularzy, kolejne ulepszenia w SSO Kit oraz helpery do tworzenia aplikacji CRUD-owych. Umo\u017cliwiony ma by\u0107 te\u017c deployment Hilli na funkcje AWS Lambda.<\/p>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/15193","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=15193"}],"version-history":[{"count":16,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/15193\/revisions"}],"predecessor-version":[{"id":15234,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/15193\/revisions\/15234"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/15218"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=15193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=15193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=15193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}