{"id":16795,"date":"2023-09-27T00:23:19","date_gmt":"2023-09-26T22:23:19","guid":{"rendered":"https:\/\/vived.io\/?p=16795"},"modified":"2023-09-27T08:51:53","modified_gmt":"2023-09-27T06:51:53","slug":"co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/","title":{"rendered":"Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105 &#8211; JVM Weekly vol. 150"},"content":{"rendered":"\n<h2 id=\"1-ciag-dalszy-publikacji-w-temacie-jdk-21\" data-num=1>1. Ci\u0105g dalszy publikacji w temacie JDK 21<\/h2>\n\n\n\n<p>Jako, \u017ce od premiery nowego JDK 21 min\u0105\u0142 dopiero tydzie\u0144, przygl\u0105dnijmy si\u0119 nowym publikacjom, kt\u00f3re zd\u0105\u017cy\u0142y si\u0119 od zesz\u0142ego tygodnia pojawi\u0107.<\/p>\n\n\n\n<p>Rozpocznijmy od tematu wirtualnych w\u0105tk\u00f3w, kt\u00f3ry w ostatnim czasie dominuje w wielu dyskusjach. Coraz cz\u0119\u015bciej natykamy si\u0119 r\u00f3wnie\u017c na materia\u0142y, kt\u00f3re pozwalaj\u0105 nam zrozumie\u0107 ten temat g\u0142\u0119biej. W\u0142a\u015bnie miniony tydzie\u0144 przyni\u00f3s\u0142 nam oficjalny przewodnik od Oracle, przedstawiaj\u0105cy techniki i najlepsze praktyki zwi\u0105zane z <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/21\/core\/virtual-threads.html\">Wirtualnymi W\u0105tkami<\/a>. To doskona\u0142e wprowadzenie, w kt\u00f3rym nie zabrak\u0142o r\u00f3wnie\u017c miejsca dla <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/21\/core\/structured-concurrency.html\">strukturalnej wsp\u00f3\u0142bie\u017cno\u015bci<\/a> &#8211; tematu, kt\u00f3ry nie jest tak szeroko omawiany w innych \u017ar\u00f3d\u0142ach. Wirtualne w\u0105tki zosta\u0142y ponadto docenione w drugim artykule opublikowanym przez Quarkusa, koncentruj\u0105cym si\u0119 na <a href=\"https:\/\/quarkus.io\/blog\/virtual-threads-2\/\">przyk\u0142adach ich wykorzystania w podstawowych operacjach CRUD<\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"460\" height=\"460\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/ezgif-1-7cf0204d32.gif\" alt=\"\" class=\"wp-image-16812\"\/><figcaption class=\"wp-element-caption\">B\u0105d\u017amy szczerzy: to w\u0142a\u015bnie w taki spos\u00f3b wi\u0119kszo\u015b\u0107 z nas b\u0119dzie je wykorzystywa\u0107.<\/figcaption><\/figure><\/div>\n\n\n<p>Nast\u0119pny tekst, kt\u00f3ry chcia\u0142em Wam podrzuci\u0107 to <a href=\"https:\/\/horstmann.com\/unblog\/2023-09-19\/index.html\">Java 21: The Nice, The Meh, and the &#8230; Momentous<\/a>, kt\u00f3ry jest swoist\u0105 recenzj\u0105 nowej Javy. Autor, Cay Horstmann, dokona\u0142 analiz\u0119 nowych funkcji w JDK 21, podkre\u015blaj\u0105c kluczowe ulepszenia w por\u00f3wnaniu z Java 17. Skupiaj\u0105c si\u0119 na praktycznych implikacjach tych funkcji dla programist\u00f3w, autor akcentuje znaczenie (kto by si\u0119 spodziewa\u0142) wirtualnych w\u0105tk\u00f3w, kt\u00f3re odpowiadaj\u0105 w jego perspektywie na z\u0142o\u017cono\u015bci programowania asynchronicznego. Pozosta\u0142e funkcje, chocia\u017c przydatne, wydaj\u0105 si\u0119 by\u0107 mniej przekonuj\u0105ce do aktualizacji same w sobie. Niemniej jednak, bior\u0105c pod uwag\u0119 szereg nowych funkcjonalno\u015bci w po\u0142\u0105czeniu z wielo\u015bci\u0105 poprawek b\u0142\u0119d\u00f3w, autor dochodzi do wniosku, \u017ce aktualizacja do Java 21 jest rozs\u0105dnym wyborem, zw\u0142aszcza dla tych, kt\u00f3rzy zmagaj\u0105 si\u0119 z programowaniem reaktywnym lub rozwa\u017caj\u0105 jego wykorzystanie. Ca\u0142o\u015b\u0107 og\u00f3lnie jest ciekaw\u0105 analiz\u0105 nowego wydania i my\u015bl\u0119, \u017ce warto zapozna\u0107 si\u0119 z perspektyw\u0105 autora, nawet je\u015bli nie jest ona jako\u015b wywrotowa.<\/p>\n\n\n\n<p>Wywrotowo\u015b\u0107 zostawimy sobie bowiem na kolejn\u0105 publikacje, w kt\u00f3rej Stuart Marks <a href=\"https:\/\/stuartmarks.wordpress.com\/2023\/09\/22\/my-favorite-jdk-21-feature-javadoc-search-url\/\">opowiada o swojej ulubionej funkcji JDK 21<\/a>, a mianowicie&#8230; mo\u017cliwo\u015bci przeszukiwania Javadoc przez URL. Cho\u0107 funkcja ta zosta\u0142a wprowadzona ju\u017c w JDK 19, to zyska\u0142a na popularno\u015bci w zwi\u0105zku z wprowadzeniem JDK 21 &#8211; w ko\u0144cu to (nie do ko\u0144ca) LTS. Wcze\u015bniejsze wersje Javadoc pozwala\u0142y na wyszukiwanie, ale nowsze JDK umo\u017cliwiaj\u0105 tworzenie URL, kt\u00f3re prowadz\u0105 bezpo\u015brednio do wynik\u00f3w wyszukiwania. Marks z entuzjazmem opisuje, jak ta funkcja usprawnia korzystanie z dokumentacji, pozwala na tworzenie skrypt\u00f3w i u\u0142atwia dost\u0119p do informacji &#8211; w tek\u015bcie pojawia si\u0119 kilka przyk\u0142ad\u00f3w.<\/p>\n\n\n\n<p>Doczekali\u015bmy si\u0119 te\u017c, jak zawsze, <a href=\"https:\/\/seanjmullan.org\/blog\/2023\/09\/22\/jdk21\">tekstu Seana Mullana<\/a> po\u015bwi\u0119conego strike nowo\u015bciom w przestrzeni bezpiecze\u0144stwa w nowej Javie. Aktualizacje te obejmuj\u0105 nowe API do Mechanizmu Enkapsulacji Klucza (KEM) dla Kryptografii Po-Kwantowej (PQC), implementacj\u0119 weryfikacji podpisu HSS\/LMS w celu ochrony przed atakami komputer\u00f3w kwantowych oraz wsparcie dla r\u00f3\u017cnych algorytm\u00f3w kryptografii opartej na has\u0142ach PBES2. Wydanie to przynosi r\u00f3wnie\u017c ulepszenia w PKI poprzez dodane g\u0142\u00f3wne certyfikaty CA oraz poprawione limity czasowe dla OCSP, certyfikat\u00f3w i listy CRL. Dodatkowo, domy\u015blny rozmiar grupy Diffie-Hellmana dla TLS zosta\u0142 zwi\u0119kszony, a XML Signature teraz obs\u0142uguje algorytm EdDSA z nowymi w\u0142a\u015bciwo\u015bciami systemowymi i \u015brodkami bezpiecze\u0144stwa.<\/p>\n\n\n\n<p>A i na sam koniec, ukaza\u0142y si\u0119 te\u017c dystrybucje <a href=\"https:\/\/aws.amazon.com\/about-aws\/whats-new\/2023\/09\/amazon-corretto-21-generally-available\/\">JDK 21 od Amazonu<\/a> oraz <a href=\"https:\/\/bell-sw.com\/blog\/liberica-jdk-21-lts-release-a-lasting-foundation-for-your-java-application\/\">BellSoftu<\/a>. Ja jednak dalej czekam na Temurina, kt\u00f3ry jak na razie posiada tylko <a href=\"https:\/\/adoptium.net\/en-GB\/blog\/2023\/08\/early-access-builds\/\">Buildy EA<\/a><\/p>\n\n\n\n<p>Ale jak ju\u017c zaspoilerowa\u0142em, premierze JDK 21 towarzyszy\u0142o jeszcze jedno, siostrzane wydanie:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"250\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/2338e-anigif_enhanced-buzz-17681-1374166704-211.gif.webp\" alt=\"\" class=\"wp-image-16815\"\/><figcaption class=\"wp-element-caption\">Buduje napi\u0119cie<\/figcaption><\/figure><\/div>\n\n\n<h2 id=\"2-co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca\" data-num=2>2. Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105<\/h2>\n\n\n\n<p>Opr\u00f3cz premiery samego JDK 21 (kt\u00f3r\u0105 wszyscy \u017cyjemy), Oracle opublikowa\u0142o <a href=\"https:\/\/medium.com\/graalvm\/graalvm-for-jdk-21-is-here-ee01177dd12d\">now\u0105 wersj\u0119 GraalVM dla JDK 21<\/a>.<\/p>\n\n\n\n<p>Jednym z najwa\u017cniejszych ulepsze\u0144, w duchu nowego JDK, jest pe\u0142ne wsparcie dla wirtualnych w\u0105tk\u00f3w. R\u00f3wnie\u017c proces budowy Native Image zosta\u0142 ulepszony, wprowadzaj\u0105c strategie inicjacji klasy, wsparcie dla wydarze\u0144 JFR i sporo pomniejszych usprawnie\u0144 &#8222;Developer Experience&#8221;, wprowadzaj\u0105c sporo nowych flag konfiguracyjnych. Ca\u0142e SDK GraalVM zosta\u0142o przeprojektowane dla lepszej modularno\u015bci (podzia\u0142 SDK projektu na <code>org.graalvm.nativeimage<\/code>, <code>org.graalvm.polyglot<\/code>, <code>org.graalvm.word<\/code> oraz <code>org.graalvm.collections<\/code>) , zachowuj\u0105c przy tym wsteczn\u0105 kompatybilno\u015b\u0107. <\/p>\n\n\n\n<p>Dodatkowo, po raz kolejny zwi\u0119kszono wydajno\u015b\u0107 Native Image. Aplikacje uruchamiane za pomoc\u0105 GraalVM Native Image, zoptymalizowane za pomoc\u0105 profile-guided optimization (PGO) i G1 GC, wykazuj\u0105 wy\u017csz\u0105 przepustowo\u015b\u0107 w por\u00f3wnaniu z tymi dzia\u0142aj\u0105cymi z JIT i kompilatorem C2 JIT &#8211; znikaj\u0105 wi\u0119c argumenty o tym, \u017ce JIT jest bardziej optymalny w d\u0142ugim okresie czasu. Przy tej beczce miodu pami\u0119tajmy jednak, \u017ce PGO dost\u0119pny jest wy\u0142\u0105cznie w Oracle GraalVM (dawny Enterprise Edition). Tutaj te\u017c mam pozytywne wiadomo\u015bci &#8211; <a href=\"https:\/\/www.oracle.com\/java\/technologies\/javase\/jdk-faqs.html#GraalVM-licensing\">zaktualizowany zosta\u0142 FAQ takowego<\/a>, przynosz\u0105c spor\u0105 ilo\u015b\u0107 klaryfikacji. Wed\u0142ug zapewnie\u0144 Thomasa Wuerthingera (leada GraalVM), a tak\u017ce po mojej rozmowie z prawnikami wygl\u0105da na to, \u017ce Oracle GraalVM jest teraz rzeczywi\u015bci dopuszczalny w u\u017cyciu w aplikacjach SaaS.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"496\" height=\"331\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/image-10.png\" alt=\"\" class=\"wp-image-16801\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/image-10.png 496w, https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/image-10-300x200.png 300w\" sizes=\"auto, (max-width: 496px) 100vw, 496px\" \/><figcaption class=\"wp-element-caption\">Zaznaczam jednak, \u017ce &#8222;Powy\u017csze nie stanowi porady prawnej, a jedynie komentarz laika. Przed u\u017cyciem skontaktujcie si\u0119 z Waszym w\u0142asnym dzia\u0142em prawnym&#8221;<\/figcaption><\/figure><\/div>\n\n\n<p>Jeszcze jedn\u0105 optymalizacj\u0105 jest wsparcie dla pozostaj\u0105cego w Preview Java Vector API (JEP 338), co pozwala na wektoryzuj\u0105c wiele operacji JVM w natywne instrukcje procesora. Co zaskakuj\u0105ce, jest to zachowanie domy\u015blnie w\u0142\u0105czone, ale mo\u017ce by\u0107 wy\u0142\u0105czone za pomoc\u0105 opcji <code>-Dgraal.OptimizeVectorAPI=false<\/code>.<\/p>\n\n\n\n<p>GraalVM wprowadzi\u0142 r\u00f3wnie\u017c wsparcie dla mechanizmu ARM Pointer Authentication Code (PAC) na wspieranym sprz\u0119cie. Ten mechanizm zabezpiecze\u0144 pomaga w minimalizacji atak\u00f3w typu return-oriented programming (ROP) poprzez weryfikacj\u0119 integralno\u015bci adresu powrotu funkcji. Funkcja ta jest dost\u0119pna za pomoc\u0105 opcji <code>-H:EnableCFI<\/code>.<\/p>\n\n\n\n<p>To jeszcze nie koniec, nowa wersja GraalVM wprowadza znacz\u0105ce aktualizacje do wieloj\u0119zycznego \u015brodowiska uruchomieniowego, Truffle. Truffle framework umo\u017cliwiaj\u0105cy tworzenie interpreter\u00f3w j\u0119zyk\u00f3w programowania, kt\u00f3re s\u0105 zoptymalizowane pod kompilator Just-In-Time (JIT) GraalVM, co umo\u017cliwia im uzyskiwania wysokiej wydajno\u015bci. Kluczow\u0105 cech\u0105 Truffle jest to, \u017ce pozwala on tw\u00f3rcom j\u0119zyk\u00f3w skoncentrowa\u0107 si\u0119 na samej semantyce j\u0119zyka, podczas gdy aspekty optymalizacyjne s\u0105 automatycznie obs\u0142ugiwanych przez framework. Ponadto j\u0119zyki oparte na Truffle mog\u0105 by\u0107 \u0142atwo integrowane, umo\u017cliwiaj\u0105c wsp\u00f3\u0142dzia\u0142anie r\u00f3\u017cnych j\u0119zyk\u00f3w w jednym \u015brodowisku uruchomieniowym.<\/p>\n\n\n\n<p>Truffle zosta\u0142o teraz od\u0142\u0105czone od GraalVM JDK, co pozwala na niezale\u017cne pobieranie interpreter\u00f3w dla takich j\u0119zyk\u00f3w jak JavaScript, Python, Ruby, Java na Truffle, WebAssembly i LLVM. Te samodzielne \u015brodowiska s\u0105 dost\u0119pne zar\u00f3wno w wersji natywnej (skompilowanej przed uruchomieniem) jak i opartej na JVM. Co wi\u0119cej, zamiast wcze\u015bniej wymaganego narz\u0119dzia <code>gu<\/code>, wszystkie j\u0119zyki GraalVM s\u0105 teraz dost\u0119pne w Maven Central, co upraszcza wbudowywanie j\u0119zyk\u00f3w w aplikacje Javowe. Wi\u0119cej znajdziecie w po\u015bcie <a href=\"https:\/\/medium.com\/graalvm\/truffle-unchained-13887b77b62c\">Truffle Unchained<\/a>.<\/p>\n\n\n\n<p>A i to jeszcze nie koniec &#8211; Oracle zacz\u0119\u0142o bowiem systematyzowa\u0107 narz\u0119dzi\u00f3wk\u0119 w ko\u0142o GraalVM pod wsp\u00f3ln\u0105 etykiet\u0105 Graal Stack Components, na kt\u00f3r\u0105 sk\u0142adaj\u0105 si\u0119 GraalVM, Graal Cloud Native oraz GraalOS. O GraalVM ju\u017c rozmawiali\u015bmy, ale czas przygl\u0105dn\u0105\u0107 si\u0119 pozosta\u0142ym.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"572\" height=\"346\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/image-11.png\" alt=\"\" class=\"wp-image-16805\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/image-11.png 572w, https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/image-11-300x181.png 300w\" sizes=\"auto, (max-width: 572px) 100vw, 572px\" \/><figcaption class=\"wp-element-caption\">A jak zastanawiali\u015bcie si\u0119, sk\u0105d kr\u00f3lik w tytule tego tekstu &#8211; jako, \u017ce zwierzak na powy\u017cszym screenie jest maskotk\u0105 Graal Stack, od razu w mojej g\u0142owie pojawi\u0142a si\u0119 Bestia z Jasikini Caerbannog (<a href=\"https:\/\/www.youtube.com\/watch?v=pmu5sRIizdw\">Monthy Python i \u015awi\u0119ty Graal<\/a>, jakby kto\u015b nie zna\u0142 klasyki). Ale \u017ce moje skojarzenia id\u0105 w dziwne strony, to ju\u017c si\u0119 chyba przyzwyczaili\u015bcie.<\/figcaption><\/figure><\/div>\n\n\n<p><a href=\"https:\/\/www.graal.cloud\/gcn\/get-started\/\">Graal Cloud Native (GCN)<\/a> to specjalna wersja zestawu modu\u0142\u00f3w frameworka Micronaut wraz z wymaganymi bibliotekami, kt\u00f3ry zosta\u0142 teraz &#8222;b\u0142ogos\u0142awionych&#8221;, referencyjnym rozwi\u0105zaniem do do tworzenia mikroserwis\u00f3w. Modu\u0142y zosta\u0142y zaprojektowane od podstaw, aby mog\u0142y by\u0107 kompilowane z GraalVM Native Image, tworz\u0105c natywne pliki wykonywalne idealne dla aplikacji chmurowych. Umo\u017cliwiaj\u0105 one pe\u0142ne wykorzystanie mocy chmurowych platform us\u0142ugowych i mog\u0105 by\u0107 prekompilowane do Native Image &#8211; dzi\u0119ki temu startuj\u0105 natychmiast, oferuj\u0105 pe\u0142n\u0105 wydajno\u015b\u0107 od chwili startu, bez konieczno\u015bci rozgrzewania i charakteryzuj\u0105 si\u0119 niewielkim zu\u017cyciem pami\u0119ci. GCN oferuje modu\u0142y umo\u017cliwiaj\u0105ce niezale\u017cne od platformy wsparcie dla podstawowych us\u0142ug chmurowych, takich jak przechowywanie obiekt\u00f3w, zarz\u0105dzanie sekretami, strumieniowanie i \u015bledzenie. Dzi\u0119ki temu rozw\u00f3j aplikacji jest bardziej uniwersalny i mniej zale\u017cny od konkretnego dostawcy chmury. List\u0119 modu\u0142\u00f3w znajdziecie na poni\u017cszym screenie.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"639\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled-2-1024x639.png\" alt=\"\" class=\"wp-image-16803\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled-2-1024x639.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled-2-300x187.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled-2-768x479.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled-2-1536x958.png 1536w, https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled-2-2048x1277.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>W sk\u0142ad GCN wchodz\u0105 r\u00f3wnie\u017c narz\u0119dzia do tworzenia projekt\u00f3w oraz rozszerzenie do VS Code &#8211; <a href=\"https:\/\/www.graalvm.org\/22.3\/tools\/vscode\/micronaut-extension\/\">GraalVM Tools for Micronaut.<\/a><\/p>\n\n\n\n<p>To jednak nie wszystko, bo podczas Oracle Cloud World 2023, Oracle <a href=\"https:\/\/blogs.oracle.com\/java\/post\/introducing-graalos\">przedstawi\u0142 GraalOS<\/a> &#8211; ostatni klocek Graal Stack Components. Jest to runtime dla \u015brodowisk chmurowych, maj\u0105c\u0105 na celu optymalizacj\u0119 wydajno\u015bci i efektywno\u015bci funkcji Serverless. Wykorzystuj\u0105c kompilacj\u0119 ahead-of-time (AOT) oferowan\u0105 przez GraalVM, GraalOS konwertuje aplikacje w samodzielne natywne pliki wykonywalne, eliminuj\u0105c nieu\u017cywane klasy, metody i pola. Dodatkowo, podobnie jak AWS SnapStart, GraalOS ma rozwi\u0105zywa\u0107 problem &#8222;cold startu&#8221;, wyst\u0119puj\u0105cego podczas pierwszego wywo\u0142ania funkcji po okresie bezczynno\u015bci. Ma te\u017c posiada\u0107 mo\u017cliwo\u015b\u0107 &#8222;zamra\u017cania&#8221; stanu w dowolnym momencie.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.graal.cloud\/graalos\/\">GraalOS<\/a> zostanie \u015brodowiskiem uruchomieniowym dla Oracle Cloud Infrastructure Functions, czyni\u0105c je bardzo interesuj\u0105c\u0105 opcj\u0105 dla chc\u0105cych odpala\u0107 funkcje serverless w oparciu o Graala. Co prawda AWS Lambda pozwala ju\u017c dzi\u015b na uruchomienie GraalVM w ramach tak zwanych &#8222;Custom Runtime&#8221;, ale sprowadza si\u0119 to do uruchomienia kontenera z aplikacj\u0105 GraalVM &#8211; GraalOS pozwala na omini\u0119cie tej warstwy, eliminuj\u0105c narzut zwi\u0105zany z uruchamianiem kontenera i inicjalizacj\u0105 JVM. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled_Project_V1-1-1024x512.gif\" alt=\"\" class=\"wp-image-16822\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled_Project_V1-1-1024x512.gif 1024w, https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled_Project_V1-1-300x150.gif 300w, https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled_Project_V1-1-768x384.gif 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Warto doda\u0107, \u017ce na chwil\u0119 obecn\u0105 funkcji nie mo\u017cna jeszcze przetestowa\u0107. Niemniej jednak istnieje mo\u017cliwo\u015b\u0107 zapisania si\u0119 na wczesny dost\u0119p. Ja to zrobi\u0142em, ch\u0119tnie si\u0119 rozwi\u0105zaniem pobawi\u0119.<\/p>\n\n\n\n<p>A je\u015bli chcecie zobaczy\u0107 opracowanie &#8211;  GraalVM te\u017c mia\u0142 sw\u00f3j publiczny stream releasowy. Je\u017celi chcecie &#8222;poczu\u0107&#8221; klimat takiego nowego wydania i pozna\u0107 nowe funkcjonalno\u015bci u \u017ar\u00f3d\u0142a &#8211; zapraszam do ogl\u0105dni\u0119cia. Znajdziecie tam bowiem informacje o kilku dodatkowych nowo\u015bciach, o kt\u00f3rych nie wspomina\u0142em w tek\u015bcie:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"embed-responsive embed-responsive-16by9\"><iframe loading=\"lazy\" title=\"GraalVM for JDK 21 Release Stream \ud83d\ude80\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/L2xtYwFRAPo?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Dzisiaj kontynuacja z temat\u00f3w z poprzedniego tygodnia &#8211; JDK 21 oraz GraalVM for JDK 21, ale tak\u017ce masa innych zapowiedzi zwi\u0105zanych z Graal&#8217;em.  <\/p>\n","protected":false},"author":10,"featured_media":16825,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[259,1],"tags":[],"class_list":["post-16795","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm-pl","category-no-category"],"acf":{"estimated_reading_time":"8","feature_image_blog":false,"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/JVM-Weekly-1200x628_V2-4.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>Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105 - JVM Weekly vol. 150 - 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\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105 - JVM Weekly vol. 150 - Vived\" \/>\n<meta property=\"og:description\" content=\"Dzisiaj kontynuacja z temat\u00f3w z poprzedniego tygodnia - JDK 21 oraz GraalVM for JDK 21, ale tak\u017ce masa innych zapowiedzi zwi\u0105zanych z Graal&#039;em.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-26T22:23:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-27T06:51:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/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\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105 &#8211; JVM Weekly vol. 150\",\"datePublished\":\"2023-09-26T22:23:19+00:00\",\"dateModified\":\"2023-09-27T06:51:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/\"},\"wordCount\":1721,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/JVM-Weekly-1200x628_V2-4.png\",\"articleSection\":[\"JVM\",\"No category\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/\",\"url\":\"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/\",\"name\":\"Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105 - JVM Weekly vol. 150 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/JVM-Weekly-1200x628_V2-4.png\",\"datePublished\":\"2023-09-26T22:23:19+00:00\",\"dateModified\":\"2023-09-27T06:51:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/JVM-Weekly-1200x628_V2-4.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/JVM-Weekly-1200x628_V2-4.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105 &#8211; JVM Weekly vol. 150\"}]},{\"@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":"Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105 - JVM Weekly vol. 150 - 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\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/","og_locale":"pl_PL","og_type":"article","og_title":"Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105 - JVM Weekly vol. 150 - Vived","og_description":"Dzisiaj kontynuacja z temat\u00f3w z poprzedniego tygodnia - JDK 21 oraz GraalVM for JDK 21, ale tak\u017ce masa innych zapowiedzi zwi\u0105zanych z Graal'em.","og_url":"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/","og_site_name":"Vived","article_published_time":"2023-09-26T22:23:19+00:00","article_modified_time":"2023-09-27T06:51:53+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/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\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105 &#8211; JVM Weekly vol. 150","datePublished":"2023-09-26T22:23:19+00:00","dateModified":"2023-09-27T06:51:53+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/"},"wordCount":1721,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/JVM-Weekly-1200x628_V2-4.png","articleSection":["JVM","No category"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/","url":"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/","name":"Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105 - JVM Weekly vol. 150 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/JVM-Weekly-1200x628_V2-4.png","datePublished":"2023-09-26T22:23:19+00:00","dateModified":"2023-09-27T06:51:53+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/JVM-Weekly-1200x628_V2-4.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/JVM-Weekly-1200x628_V2-4.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/co-ma-graalvm-dla-jdk-21-wspolnego-z-krolikiem-z-jaskini-caerbannog-obydwa-zaskakuja-moca-jvm-weekly-vol-150\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105 &#8211; JVM Weekly vol. 150"}]},{"@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 class=\"wp-block-heading\">1. Ci\u0105g dalszy publikacji w temacie JDK 21<\/h2>\n","innerContent":["\n<h2 class=\"wp-block-heading\">1. Ci\u0105g dalszy publikacji w temacie JDK 21<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jako, \u017ce od premiery nowego JDK 21 min\u0105\u0142 dopiero tydzie\u0144, przygl\u0105dnijmy si\u0119 nowym publikacjom, kt\u00f3re zd\u0105\u017cy\u0142y si\u0119 od zesz\u0142ego tygodnia pojawi\u0107.<\/p>\n","innerContent":["\n<p>Jako, \u017ce od premiery nowego JDK 21 min\u0105\u0142 dopiero tydzie\u0144, przygl\u0105dnijmy si\u0119 nowym publikacjom, kt\u00f3re zd\u0105\u017cy\u0142y si\u0119 od zesz\u0142ego tygodnia pojawi\u0107.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Rozpocznijmy od tematu wirtualnych w\u0105tk\u00f3w, kt\u00f3ry w ostatnim czasie dominuje w wielu dyskusjach. Coraz cz\u0119\u015bciej natykamy si\u0119 r\u00f3wnie\u017c na materia\u0142y, kt\u00f3re pozwalaj\u0105 nam zrozumie\u0107 ten temat g\u0142\u0119biej. W\u0142a\u015bnie miniony tydzie\u0144 przyni\u00f3s\u0142 nam oficjalny przewodnik od Oracle, przedstawiaj\u0105cy techniki i najlepsze praktyki zwi\u0105zane z <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/21\/core\/virtual-threads.html\">Wirtualnymi W\u0105tkami<\/a>. To doskona\u0142e wprowadzenie, w kt\u00f3rym nie zabrak\u0142o r\u00f3wnie\u017c miejsca dla <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/21\/core\/structured-concurrency.html\">strukturalnej wsp\u00f3\u0142bie\u017cno\u015bci<\/a> - tematu, kt\u00f3ry nie jest tak szeroko omawiany w innych \u017ar\u00f3d\u0142ach. Wirtualne w\u0105tki zosta\u0142y ponadto docenione w drugim artykule opublikowanym przez Quarkusa, koncentruj\u0105cym si\u0119 na <a href=\"https:\/\/quarkus.io\/blog\/virtual-threads-2\/\">przyk\u0142adach ich wykorzystania w podstawowych operacjach CRUD<\/a>.<\/p>\n","innerContent":["\n<p>Rozpocznijmy od tematu wirtualnych w\u0105tk\u00f3w, kt\u00f3ry w ostatnim czasie dominuje w wielu dyskusjach. Coraz cz\u0119\u015bciej natykamy si\u0119 r\u00f3wnie\u017c na materia\u0142y, kt\u00f3re pozwalaj\u0105 nam zrozumie\u0107 ten temat g\u0142\u0119biej. W\u0142a\u015bnie miniony tydzie\u0144 przyni\u00f3s\u0142 nam oficjalny przewodnik od Oracle, przedstawiaj\u0105cy techniki i najlepsze praktyki zwi\u0105zane z <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/21\/core\/virtual-threads.html\">Wirtualnymi W\u0105tkami<\/a>. To doskona\u0142e wprowadzenie, w kt\u00f3rym nie zabrak\u0142o r\u00f3wnie\u017c miejsca dla <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/21\/core\/structured-concurrency.html\">strukturalnej wsp\u00f3\u0142bie\u017cno\u015bci<\/a> - tematu, kt\u00f3ry nie jest tak szeroko omawiany w innych \u017ar\u00f3d\u0142ach. Wirtualne w\u0105tki zosta\u0142y ponadto docenione w drugim artykule opublikowanym przez Quarkusa, koncentruj\u0105cym si\u0119 na <a href=\"https:\/\/quarkus.io\/blog\/virtual-threads-2\/\">przyk\u0142adach ich wykorzystania w podstawowych operacjach CRUD<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":16812,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/ezgif-1-7cf0204d32.gif\" alt=\"\" class=\"wp-image-16812\"\/><figcaption class=\"wp-element-caption\">B\u0105d\u017amy szczerzy: to w\u0142a\u015bnie w taki spos\u00f3b wi\u0119kszo\u015b\u0107 z nas b\u0119dzie je wykorzystywa\u0107.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/ezgif-1-7cf0204d32.gif\" alt=\"\" class=\"wp-image-16812\"\/><figcaption class=\"wp-element-caption\">B\u0105d\u017amy szczerzy: to w\u0142a\u015bnie w taki spos\u00f3b wi\u0119kszo\u015b\u0107 z nas b\u0119dzie je wykorzystywa\u0107.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Nast\u0119pny tekst, kt\u00f3ry chcia\u0142em Wam podrzuci\u0107 to <a href=\"https:\/\/horstmann.com\/unblog\/2023-09-19\/index.html\">Java 21: The Nice, The Meh, and the ... Momentous<\/a>, kt\u00f3ry jest swoist\u0105 recenzj\u0105 nowej Javy. Autor, Cay Horstmann, dokona\u0142 analiz\u0119 nowych funkcji w JDK 21, podkre\u015blaj\u0105c kluczowe ulepszenia w por\u00f3wnaniu z Java 17. Skupiaj\u0105c si\u0119 na praktycznych implikacjach tych funkcji dla programist\u00f3w, autor akcentuje znaczenie (kto by si\u0119 spodziewa\u0142) wirtualnych w\u0105tk\u00f3w, kt\u00f3re odpowiadaj\u0105 w jego perspektywie na z\u0142o\u017cono\u015bci programowania asynchronicznego. Pozosta\u0142e funkcje, chocia\u017c przydatne, wydaj\u0105 si\u0119 by\u0107 mniej przekonuj\u0105ce do aktualizacji same w sobie. Niemniej jednak, bior\u0105c pod uwag\u0119 szereg nowych funkcjonalno\u015bci w po\u0142\u0105czeniu z wielo\u015bci\u0105 poprawek b\u0142\u0119d\u00f3w, autor dochodzi do wniosku, \u017ce aktualizacja do Java 21 jest rozs\u0105dnym wyborem, zw\u0142aszcza dla tych, kt\u00f3rzy zmagaj\u0105 si\u0119 z programowaniem reaktywnym lub rozwa\u017caj\u0105 jego wykorzystanie. Ca\u0142o\u015b\u0107 og\u00f3lnie jest ciekaw\u0105 analiz\u0105 nowego wydania i my\u015bl\u0119, \u017ce warto zapozna\u0107 si\u0119 z perspektyw\u0105 autora, nawet je\u015bli nie jest ona jako\u015b wywrotowa.<\/p>\n","innerContent":["\n<p>Nast\u0119pny tekst, kt\u00f3ry chcia\u0142em Wam podrzuci\u0107 to <a href=\"https:\/\/horstmann.com\/unblog\/2023-09-19\/index.html\">Java 21: The Nice, The Meh, and the ... Momentous<\/a>, kt\u00f3ry jest swoist\u0105 recenzj\u0105 nowej Javy. Autor, Cay Horstmann, dokona\u0142 analiz\u0119 nowych funkcji w JDK 21, podkre\u015blaj\u0105c kluczowe ulepszenia w por\u00f3wnaniu z Java 17. Skupiaj\u0105c si\u0119 na praktycznych implikacjach tych funkcji dla programist\u00f3w, autor akcentuje znaczenie (kto by si\u0119 spodziewa\u0142) wirtualnych w\u0105tk\u00f3w, kt\u00f3re odpowiadaj\u0105 w jego perspektywie na z\u0142o\u017cono\u015bci programowania asynchronicznego. Pozosta\u0142e funkcje, chocia\u017c przydatne, wydaj\u0105 si\u0119 by\u0107 mniej przekonuj\u0105ce do aktualizacji same w sobie. Niemniej jednak, bior\u0105c pod uwag\u0119 szereg nowych funkcjonalno\u015bci w po\u0142\u0105czeniu z wielo\u015bci\u0105 poprawek b\u0142\u0119d\u00f3w, autor dochodzi do wniosku, \u017ce aktualizacja do Java 21 jest rozs\u0105dnym wyborem, zw\u0142aszcza dla tych, kt\u00f3rzy zmagaj\u0105 si\u0119 z programowaniem reaktywnym lub rozwa\u017caj\u0105 jego wykorzystanie. Ca\u0142o\u015b\u0107 og\u00f3lnie jest ciekaw\u0105 analiz\u0105 nowego wydania i my\u015bl\u0119, \u017ce warto zapozna\u0107 si\u0119 z perspektyw\u0105 autora, nawet je\u015bli nie jest ona jako\u015b wywrotowa.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Wywrotowo\u015b\u0107 zostawimy sobie bowiem na kolejn\u0105 publikacje, w kt\u00f3rej Stuart Marks <a href=\"https:\/\/stuartmarks.wordpress.com\/2023\/09\/22\/my-favorite-jdk-21-feature-javadoc-search-url\/\">opowiada o swojej ulubionej funkcji JDK 21<\/a>, a mianowicie... mo\u017cliwo\u015bci przeszukiwania Javadoc przez URL. Cho\u0107 funkcja ta zosta\u0142a wprowadzona ju\u017c w JDK 19, to zyska\u0142a na popularno\u015bci w zwi\u0105zku z wprowadzeniem JDK 21 - w ko\u0144cu to (nie do ko\u0144ca) LTS. Wcze\u015bniejsze wersje Javadoc pozwala\u0142y na wyszukiwanie, ale nowsze JDK umo\u017cliwiaj\u0105 tworzenie URL, kt\u00f3re prowadz\u0105 bezpo\u015brednio do wynik\u00f3w wyszukiwania. Marks z entuzjazmem opisuje, jak ta funkcja usprawnia korzystanie z dokumentacji, pozwala na tworzenie skrypt\u00f3w i u\u0142atwia dost\u0119p do informacji - w tek\u015bcie pojawia si\u0119 kilka przyk\u0142ad\u00f3w.<\/p>\n","innerContent":["\n<p>Wywrotowo\u015b\u0107 zostawimy sobie bowiem na kolejn\u0105 publikacje, w kt\u00f3rej Stuart Marks <a href=\"https:\/\/stuartmarks.wordpress.com\/2023\/09\/22\/my-favorite-jdk-21-feature-javadoc-search-url\/\">opowiada o swojej ulubionej funkcji JDK 21<\/a>, a mianowicie... mo\u017cliwo\u015bci przeszukiwania Javadoc przez URL. Cho\u0107 funkcja ta zosta\u0142a wprowadzona ju\u017c w JDK 19, to zyska\u0142a na popularno\u015bci w zwi\u0105zku z wprowadzeniem JDK 21 - w ko\u0144cu to (nie do ko\u0144ca) LTS. Wcze\u015bniejsze wersje Javadoc pozwala\u0142y na wyszukiwanie, ale nowsze JDK umo\u017cliwiaj\u0105 tworzenie URL, kt\u00f3re prowadz\u0105 bezpo\u015brednio do wynik\u00f3w wyszukiwania. Marks z entuzjazmem opisuje, jak ta funkcja usprawnia korzystanie z dokumentacji, pozwala na tworzenie skrypt\u00f3w i u\u0142atwia dost\u0119p do informacji - w tek\u015bcie pojawia si\u0119 kilka przyk\u0142ad\u00f3w.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Doczekali\u015bmy si\u0119 te\u017c, jak zawsze, <a href=\"https:\/\/seanjmullan.org\/blog\/2023\/09\/22\/jdk21\">tekstu Seana Mullana<\/a> po\u015bwi\u0119conego strike nowo\u015bciom w przestrzeni bezpiecze\u0144stwa w nowej Javie. Aktualizacje te obejmuj\u0105 nowe API do Mechanizmu Enkapsulacji Klucza (KEM) dla Kryptografii Po-Kwantowej (PQC), implementacj\u0119 weryfikacji podpisu HSS\/LMS w celu ochrony przed atakami komputer\u00f3w kwantowych oraz wsparcie dla r\u00f3\u017cnych algorytm\u00f3w kryptografii opartej na has\u0142ach PBES2. Wydanie to przynosi r\u00f3wnie\u017c ulepszenia w PKI poprzez dodane g\u0142\u00f3wne certyfikaty CA oraz poprawione limity czasowe dla OCSP, certyfikat\u00f3w i listy CRL. Dodatkowo, domy\u015blny rozmiar grupy Diffie-Hellmana dla TLS zosta\u0142 zwi\u0119kszony, a XML Signature teraz obs\u0142uguje algorytm EdDSA z nowymi w\u0142a\u015bciwo\u015bciami systemowymi i \u015brodkami bezpiecze\u0144stwa.<\/p>\n","innerContent":["\n<p>Doczekali\u015bmy si\u0119 te\u017c, jak zawsze, <a href=\"https:\/\/seanjmullan.org\/blog\/2023\/09\/22\/jdk21\">tekstu Seana Mullana<\/a> po\u015bwi\u0119conego strike nowo\u015bciom w przestrzeni bezpiecze\u0144stwa w nowej Javie. Aktualizacje te obejmuj\u0105 nowe API do Mechanizmu Enkapsulacji Klucza (KEM) dla Kryptografii Po-Kwantowej (PQC), implementacj\u0119 weryfikacji podpisu HSS\/LMS w celu ochrony przed atakami komputer\u00f3w kwantowych oraz wsparcie dla r\u00f3\u017cnych algorytm\u00f3w kryptografii opartej na has\u0142ach PBES2. Wydanie to przynosi r\u00f3wnie\u017c ulepszenia w PKI poprzez dodane g\u0142\u00f3wne certyfikaty CA oraz poprawione limity czasowe dla OCSP, certyfikat\u00f3w i listy CRL. Dodatkowo, domy\u015blny rozmiar grupy Diffie-Hellmana dla TLS zosta\u0142 zwi\u0119kszony, a XML Signature teraz obs\u0142uguje algorytm EdDSA z nowymi w\u0142a\u015bciwo\u015bciami systemowymi i \u015brodkami bezpiecze\u0144stwa.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A i na sam koniec, ukaza\u0142y si\u0119 te\u017c dystrybucje <a href=\"https:\/\/aws.amazon.com\/about-aws\/whats-new\/2023\/09\/amazon-corretto-21-generally-available\/\">JDK 21 od Amazonu<\/a> oraz <a href=\"https:\/\/bell-sw.com\/blog\/liberica-jdk-21-lts-release-a-lasting-foundation-for-your-java-application\/\">BellSoftu<\/a>. Ja jednak dalej czekam na Temurina, kt\u00f3ry jak na razie posiada tylko <a href=\"https:\/\/adoptium.net\/en-GB\/blog\/2023\/08\/early-access-builds\/\">Buildy EA<\/a><\/p>\n","innerContent":["\n<p>A i na sam koniec, ukaza\u0142y si\u0119 te\u017c dystrybucje <a href=\"https:\/\/aws.amazon.com\/about-aws\/whats-new\/2023\/09\/amazon-corretto-21-generally-available\/\">JDK 21 od Amazonu<\/a> oraz <a href=\"https:\/\/bell-sw.com\/blog\/liberica-jdk-21-lts-release-a-lasting-foundation-for-your-java-application\/\">BellSoftu<\/a>. Ja jednak dalej czekam na Temurina, kt\u00f3ry jak na razie posiada tylko <a href=\"https:\/\/adoptium.net\/en-GB\/blog\/2023\/08\/early-access-builds\/\">Buildy EA<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ale jak ju\u017c zaspoilerowa\u0142em, premierze JDK 21 towarzyszy\u0142o jeszcze jedno, siostrzane wydanie:<\/p>\n","innerContent":["\n<p>Ale jak ju\u017c zaspoilerowa\u0142em, premierze JDK 21 towarzyszy\u0142o jeszcze jedno, siostrzane wydanie:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":16815,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/2338e-anigif_enhanced-buzz-17681-1374166704-211.gif.webp\" alt=\"\" class=\"wp-image-16815\"\/><figcaption class=\"wp-element-caption\">Buduje napi\u0119cie<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/2338e-anigif_enhanced-buzz-17681-1374166704-211.gif.webp\" alt=\"\" class=\"wp-image-16815\"\/><figcaption class=\"wp-element-caption\">Buduje napi\u0119cie<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2 class=\"wp-block-heading\">2. Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105<\/h2>\n","innerContent":["\n<h2 class=\"wp-block-heading\">2. Co ma GraalVM dla JDK 21 wsp\u00f3lnego z kr\u00f3likiem z jaskini Caerbannog? Obydwa zaskakuj\u0105 moc\u0105<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Opr\u00f3cz premiery samego JDK 21 (kt\u00f3r\u0105 wszyscy \u017cyjemy), Oracle opublikowa\u0142o <a href=\"https:\/\/medium.com\/graalvm\/graalvm-for-jdk-21-is-here-ee01177dd12d\">now\u0105 wersj\u0119 GraalVM dla JDK 21<\/a>.<\/p>\n","innerContent":["\n<p>Opr\u00f3cz premiery samego JDK 21 (kt\u00f3r\u0105 wszyscy \u017cyjemy), Oracle opublikowa\u0142o <a href=\"https:\/\/medium.com\/graalvm\/graalvm-for-jdk-21-is-here-ee01177dd12d\">now\u0105 wersj\u0119 GraalVM dla JDK 21<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jednym z najwa\u017cniejszych ulepsze\u0144, w duchu nowego JDK, jest pe\u0142ne wsparcie dla wirtualnych w\u0105tk\u00f3w. R\u00f3wnie\u017c proces budowy Native Image zosta\u0142 ulepszony, wprowadzaj\u0105c strategie inicjacji klasy, wsparcie dla wydarze\u0144 JFR i sporo pomniejszych usprawnie\u0144 \"Developer Experience\", wprowadzaj\u0105c sporo nowych flag konfiguracyjnych. Ca\u0142e SDK GraalVM zosta\u0142o przeprojektowane dla lepszej modularno\u015bci (podzia\u0142 SDK projektu na <code>org.graalvm.nativeimage<\/code>, <code>org.graalvm.polyglot<\/code>, <code>org.graalvm.word<\/code> oraz <code>org.graalvm.collections<\/code>) , zachowuj\u0105c przy tym wsteczn\u0105 kompatybilno\u015b\u0107. <\/p>\n","innerContent":["\n<p>Jednym z najwa\u017cniejszych ulepsze\u0144, w duchu nowego JDK, jest pe\u0142ne wsparcie dla wirtualnych w\u0105tk\u00f3w. R\u00f3wnie\u017c proces budowy Native Image zosta\u0142 ulepszony, wprowadzaj\u0105c strategie inicjacji klasy, wsparcie dla wydarze\u0144 JFR i sporo pomniejszych usprawnie\u0144 \"Developer Experience\", wprowadzaj\u0105c sporo nowych flag konfiguracyjnych. Ca\u0142e SDK GraalVM zosta\u0142o przeprojektowane dla lepszej modularno\u015bci (podzia\u0142 SDK projektu na <code>org.graalvm.nativeimage<\/code>, <code>org.graalvm.polyglot<\/code>, <code>org.graalvm.word<\/code> oraz <code>org.graalvm.collections<\/code>) , zachowuj\u0105c przy tym wsteczn\u0105 kompatybilno\u015b\u0107. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dodatkowo, po raz kolejny zwi\u0119kszono wydajno\u015b\u0107 Native Image. Aplikacje uruchamiane za pomoc\u0105 GraalVM Native Image, zoptymalizowane za pomoc\u0105 profile-guided optimization (PGO) i G1 GC, wykazuj\u0105 wy\u017csz\u0105 przepustowo\u015b\u0107 w por\u00f3wnaniu z tymi dzia\u0142aj\u0105cymi z JIT i kompilatorem C2 JIT - znikaj\u0105 wi\u0119c argumenty o tym, \u017ce JIT jest bardziej optymalny w d\u0142ugim okresie czasu. Przy tej beczce miodu pami\u0119tajmy jednak, \u017ce PGO dost\u0119pny jest wy\u0142\u0105cznie w Oracle GraalVM (dawny Enterprise Edition). Tutaj te\u017c mam pozytywne wiadomo\u015bci - <a href=\"https:\/\/www.oracle.com\/java\/technologies\/javase\/jdk-faqs.html#GraalVM-licensing\">zaktualizowany zosta\u0142 FAQ takowego<\/a>, przynosz\u0105c spor\u0105 ilo\u015b\u0107 klaryfikacji. Wed\u0142ug zapewnie\u0144 Thomasa Wuerthingera (leada GraalVM), a tak\u017ce po mojej rozmowie z prawnikami wygl\u0105da na to, \u017ce Oracle GraalVM jest teraz rzeczywi\u015bci dopuszczalny w u\u017cyciu w aplikacjach SaaS.<\/p>\n","innerContent":["\n<p>Dodatkowo, po raz kolejny zwi\u0119kszono wydajno\u015b\u0107 Native Image. Aplikacje uruchamiane za pomoc\u0105 GraalVM Native Image, zoptymalizowane za pomoc\u0105 profile-guided optimization (PGO) i G1 GC, wykazuj\u0105 wy\u017csz\u0105 przepustowo\u015b\u0107 w por\u00f3wnaniu z tymi dzia\u0142aj\u0105cymi z JIT i kompilatorem C2 JIT - znikaj\u0105 wi\u0119c argumenty o tym, \u017ce JIT jest bardziej optymalny w d\u0142ugim okresie czasu. Przy tej beczce miodu pami\u0119tajmy jednak, \u017ce PGO dost\u0119pny jest wy\u0142\u0105cznie w Oracle GraalVM (dawny Enterprise Edition). Tutaj te\u017c mam pozytywne wiadomo\u015bci - <a href=\"https:\/\/www.oracle.com\/java\/technologies\/javase\/jdk-faqs.html#GraalVM-licensing\">zaktualizowany zosta\u0142 FAQ takowego<\/a>, przynosz\u0105c spor\u0105 ilo\u015b\u0107 klaryfikacji. Wed\u0142ug zapewnie\u0144 Thomasa Wuerthingera (leada GraalVM), a tak\u017ce po mojej rozmowie z prawnikami wygl\u0105da na to, \u017ce Oracle GraalVM jest teraz rzeczywi\u015bci dopuszczalny w u\u017cyciu w aplikacjach SaaS.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":16801,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/image-10.png\" alt=\"\" class=\"wp-image-16801\"\/><figcaption class=\"wp-element-caption\">Zaznaczam jednak, \u017ce \"Powy\u017csze nie stanowi porady prawnej, a jedynie komentarz laika. Przed u\u017cyciem skontaktujcie si\u0119 z Waszym w\u0142asnym dzia\u0142em prawnym\"<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/image-10.png\" alt=\"\" class=\"wp-image-16801\"\/><figcaption class=\"wp-element-caption\">Zaznaczam jednak, \u017ce \"Powy\u017csze nie stanowi porady prawnej, a jedynie komentarz laika. Przed u\u017cyciem skontaktujcie si\u0119 z Waszym w\u0142asnym dzia\u0142em prawnym\"<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jeszcze jedn\u0105 optymalizacj\u0105 jest wsparcie dla pozostaj\u0105cego w Preview Java Vector API (JEP 338), co pozwala na wektoryzuj\u0105c wiele operacji JVM w natywne instrukcje procesora. Co zaskakuj\u0105ce, jest to zachowanie domy\u015blnie w\u0142\u0105czone, ale mo\u017ce by\u0107 wy\u0142\u0105czone za pomoc\u0105 opcji <code>-Dgraal.OptimizeVectorAPI=false<\/code>.<\/p>\n","innerContent":["\n<p>Jeszcze jedn\u0105 optymalizacj\u0105 jest wsparcie dla pozostaj\u0105cego w Preview Java Vector API (JEP 338), co pozwala na wektoryzuj\u0105c wiele operacji JVM w natywne instrukcje procesora. Co zaskakuj\u0105ce, jest to zachowanie domy\u015blnie w\u0142\u0105czone, ale mo\u017ce by\u0107 wy\u0142\u0105czone za pomoc\u0105 opcji <code>-Dgraal.OptimizeVectorAPI=false<\/code>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>GraalVM wprowadzi\u0142 r\u00f3wnie\u017c wsparcie dla mechanizmu ARM Pointer Authentication Code (PAC) na wspieranym sprz\u0119cie. Ten mechanizm zabezpiecze\u0144 pomaga w minimalizacji atak\u00f3w typu return-oriented programming (ROP) poprzez weryfikacj\u0119 integralno\u015bci adresu powrotu funkcji. Funkcja ta jest dost\u0119pna za pomoc\u0105 opcji <code>-H:EnableCFI<\/code>.<\/p>\n","innerContent":["\n<p>GraalVM wprowadzi\u0142 r\u00f3wnie\u017c wsparcie dla mechanizmu ARM Pointer Authentication Code (PAC) na wspieranym sprz\u0119cie. Ten mechanizm zabezpiecze\u0144 pomaga w minimalizacji atak\u00f3w typu return-oriented programming (ROP) poprzez weryfikacj\u0119 integralno\u015bci adresu powrotu funkcji. Funkcja ta jest dost\u0119pna za pomoc\u0105 opcji <code>-H:EnableCFI<\/code>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To jeszcze nie koniec, nowa wersja GraalVM wprowadza znacz\u0105ce aktualizacje do wieloj\u0119zycznego \u015brodowiska uruchomieniowego, Truffle. Truffle framework umo\u017cliwiaj\u0105cy tworzenie interpreter\u00f3w j\u0119zyk\u00f3w programowania, kt\u00f3re s\u0105 zoptymalizowane pod kompilator Just-In-Time (JIT) GraalVM, co umo\u017cliwia im uzyskiwania wysokiej wydajno\u015bci. Kluczow\u0105 cech\u0105 Truffle jest to, \u017ce pozwala on tw\u00f3rcom j\u0119zyk\u00f3w skoncentrowa\u0107 si\u0119 na samej semantyce j\u0119zyka, podczas gdy aspekty optymalizacyjne s\u0105 automatycznie obs\u0142ugiwanych przez framework. Ponadto j\u0119zyki oparte na Truffle mog\u0105 by\u0107 \u0142atwo integrowane, umo\u017cliwiaj\u0105c wsp\u00f3\u0142dzia\u0142anie r\u00f3\u017cnych j\u0119zyk\u00f3w w jednym \u015brodowisku uruchomieniowym.<\/p>\n","innerContent":["\n<p>To jeszcze nie koniec, nowa wersja GraalVM wprowadza znacz\u0105ce aktualizacje do wieloj\u0119zycznego \u015brodowiska uruchomieniowego, Truffle. Truffle framework umo\u017cliwiaj\u0105cy tworzenie interpreter\u00f3w j\u0119zyk\u00f3w programowania, kt\u00f3re s\u0105 zoptymalizowane pod kompilator Just-In-Time (JIT) GraalVM, co umo\u017cliwia im uzyskiwania wysokiej wydajno\u015bci. Kluczow\u0105 cech\u0105 Truffle jest to, \u017ce pozwala on tw\u00f3rcom j\u0119zyk\u00f3w skoncentrowa\u0107 si\u0119 na samej semantyce j\u0119zyka, podczas gdy aspekty optymalizacyjne s\u0105 automatycznie obs\u0142ugiwanych przez framework. Ponadto j\u0119zyki oparte na Truffle mog\u0105 by\u0107 \u0142atwo integrowane, umo\u017cliwiaj\u0105c wsp\u00f3\u0142dzia\u0142anie r\u00f3\u017cnych j\u0119zyk\u00f3w w jednym \u015brodowisku uruchomieniowym.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Truffle zosta\u0142o teraz od\u0142\u0105czone od GraalVM JDK, co pozwala na niezale\u017cne pobieranie interpreter\u00f3w dla takich j\u0119zyk\u00f3w jak JavaScript, Python, Ruby, Java na Truffle, WebAssembly i LLVM. Te samodzielne \u015brodowiska s\u0105 dost\u0119pne zar\u00f3wno w wersji natywnej (skompilowanej przed uruchomieniem) jak i opartej na JVM. Co wi\u0119cej, zamiast wcze\u015bniej wymaganego narz\u0119dzia <code>gu<\/code>, wszystkie j\u0119zyki GraalVM s\u0105 teraz dost\u0119pne w Maven Central, co upraszcza wbudowywanie j\u0119zyk\u00f3w w aplikacje Javowe. Wi\u0119cej znajdziecie w po\u015bcie <a href=\"https:\/\/medium.com\/graalvm\/truffle-unchained-13887b77b62c\">Truffle Unchained<\/a>.<\/p>\n","innerContent":["\n<p>Truffle zosta\u0142o teraz od\u0142\u0105czone od GraalVM JDK, co pozwala na niezale\u017cne pobieranie interpreter\u00f3w dla takich j\u0119zyk\u00f3w jak JavaScript, Python, Ruby, Java na Truffle, WebAssembly i LLVM. Te samodzielne \u015brodowiska s\u0105 dost\u0119pne zar\u00f3wno w wersji natywnej (skompilowanej przed uruchomieniem) jak i opartej na JVM. Co wi\u0119cej, zamiast wcze\u015bniej wymaganego narz\u0119dzia <code>gu<\/code>, wszystkie j\u0119zyki GraalVM s\u0105 teraz dost\u0119pne w Maven Central, co upraszcza wbudowywanie j\u0119zyk\u00f3w w aplikacje Javowe. Wi\u0119cej znajdziecie w po\u015bcie <a href=\"https:\/\/medium.com\/graalvm\/truffle-unchained-13887b77b62c\">Truffle Unchained<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A i to jeszcze nie koniec - Oracle zacz\u0119\u0142o bowiem systematyzowa\u0107 narz\u0119dzi\u00f3wk\u0119 w ko\u0142o GraalVM pod wsp\u00f3ln\u0105 etykiet\u0105 Graal Stack Components, na kt\u00f3r\u0105 sk\u0142adaj\u0105 si\u0119 GraalVM, Graal Cloud Native oraz GraalOS. O GraalVM ju\u017c rozmawiali\u015bmy, ale czas przygl\u0105dn\u0105\u0107 si\u0119 pozosta\u0142ym.<\/p>\n","innerContent":["\n<p>A i to jeszcze nie koniec - Oracle zacz\u0119\u0142o bowiem systematyzowa\u0107 narz\u0119dzi\u00f3wk\u0119 w ko\u0142o GraalVM pod wsp\u00f3ln\u0105 etykiet\u0105 Graal Stack Components, na kt\u00f3r\u0105 sk\u0142adaj\u0105 si\u0119 GraalVM, Graal Cloud Native oraz GraalOS. O GraalVM ju\u017c rozmawiali\u015bmy, ale czas przygl\u0105dn\u0105\u0107 si\u0119 pozosta\u0142ym.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":16805,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/image-11.png\" alt=\"\" class=\"wp-image-16805\"\/><figcaption class=\"wp-element-caption\">A jak zastanawiali\u015bcie si\u0119, sk\u0105d kr\u00f3lik w tytule tego tekstu - jako, \u017ce zwierzak na powy\u017cszym screenie jest maskotk\u0105 Graal Stack, od razu w mojej g\u0142owie pojawi\u0142a si\u0119 Bestia z Jasikini Caerbannog (<a href=\"https:\/\/www.youtube.com\/watch?v=pmu5sRIizdw\">Monthy Python i \u015awi\u0119ty Graal<\/a>, jakby kto\u015b nie zna\u0142 klasyki). Ale \u017ce moje skojarzenia id\u0105 w dziwne strony, to ju\u017c si\u0119 chyba przyzwyczaili\u015bcie.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/image-11.png\" alt=\"\" class=\"wp-image-16805\"\/><figcaption class=\"wp-element-caption\">A jak zastanawiali\u015bcie si\u0119, sk\u0105d kr\u00f3lik w tytule tego tekstu - jako, \u017ce zwierzak na powy\u017cszym screenie jest maskotk\u0105 Graal Stack, od razu w mojej g\u0142owie pojawi\u0142a si\u0119 Bestia z Jasikini Caerbannog (<a href=\"https:\/\/www.youtube.com\/watch?v=pmu5sRIizdw\">Monthy Python i \u015awi\u0119ty Graal<\/a>, jakby kto\u015b nie zna\u0142 klasyki). Ale \u017ce moje skojarzenia id\u0105 w dziwne strony, to ju\u017c si\u0119 chyba przyzwyczaili\u015bcie.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><a href=\"https:\/\/www.graal.cloud\/gcn\/get-started\/\">Graal Cloud Native (GCN)<\/a> to specjalna wersja zestawu modu\u0142\u00f3w frameworka Micronaut wraz z wymaganymi bibliotekami, kt\u00f3ry zosta\u0142 teraz \"b\u0142ogos\u0142awionych\", referencyjnym rozwi\u0105zaniem do do tworzenia mikroserwis\u00f3w. Modu\u0142y zosta\u0142y zaprojektowane od podstaw, aby mog\u0142y by\u0107 kompilowane z GraalVM Native Image, tworz\u0105c natywne pliki wykonywalne idealne dla aplikacji chmurowych. Umo\u017cliwiaj\u0105 one pe\u0142ne wykorzystanie mocy chmurowych platform us\u0142ugowych i mog\u0105 by\u0107 prekompilowane do Native Image - dzi\u0119ki temu startuj\u0105 natychmiast, oferuj\u0105 pe\u0142n\u0105 wydajno\u015b\u0107 od chwili startu, bez konieczno\u015bci rozgrzewania i charakteryzuj\u0105 si\u0119 niewielkim zu\u017cyciem pami\u0119ci. GCN oferuje modu\u0142y umo\u017cliwiaj\u0105ce niezale\u017cne od platformy wsparcie dla podstawowych us\u0142ug chmurowych, takich jak przechowywanie obiekt\u00f3w, zarz\u0105dzanie sekretami, strumieniowanie i \u015bledzenie. Dzi\u0119ki temu rozw\u00f3j aplikacji jest bardziej uniwersalny i mniej zale\u017cny od konkretnego dostawcy chmury. List\u0119 modu\u0142\u00f3w znajdziecie na poni\u017cszym screenie.<\/p>\n","innerContent":["\n<p><a href=\"https:\/\/www.graal.cloud\/gcn\/get-started\/\">Graal Cloud Native (GCN)<\/a> to specjalna wersja zestawu modu\u0142\u00f3w frameworka Micronaut wraz z wymaganymi bibliotekami, kt\u00f3ry zosta\u0142 teraz \"b\u0142ogos\u0142awionych\", referencyjnym rozwi\u0105zaniem do do tworzenia mikroserwis\u00f3w. Modu\u0142y zosta\u0142y zaprojektowane od podstaw, aby mog\u0142y by\u0107 kompilowane z GraalVM Native Image, tworz\u0105c natywne pliki wykonywalne idealne dla aplikacji chmurowych. Umo\u017cliwiaj\u0105 one pe\u0142ne wykorzystanie mocy chmurowych platform us\u0142ugowych i mog\u0105 by\u0107 prekompilowane do Native Image - dzi\u0119ki temu startuj\u0105 natychmiast, oferuj\u0105 pe\u0142n\u0105 wydajno\u015b\u0107 od chwili startu, bez konieczno\u015bci rozgrzewania i charakteryzuj\u0105 si\u0119 niewielkim zu\u017cyciem pami\u0119ci. GCN oferuje modu\u0142y umo\u017cliwiaj\u0105ce niezale\u017cne od platformy wsparcie dla podstawowych us\u0142ug chmurowych, takich jak przechowywanie obiekt\u00f3w, zarz\u0105dzanie sekretami, strumieniowanie i \u015bledzenie. Dzi\u0119ki temu rozw\u00f3j aplikacji jest bardziej uniwersalny i mniej zale\u017cny od konkretnego dostawcy chmury. List\u0119 modu\u0142\u00f3w znajdziecie na poni\u017cszym screenie.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"id":16803,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled-2-1024x639.png\" alt=\"\" class=\"wp-image-16803\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled-2-1024x639.png\" alt=\"\" class=\"wp-image-16803\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W sk\u0142ad GCN wchodz\u0105 r\u00f3wnie\u017c narz\u0119dzia do tworzenia projekt\u00f3w oraz rozszerzenie do VS Code - <a href=\"https:\/\/www.graalvm.org\/22.3\/tools\/vscode\/micronaut-extension\/\">GraalVM Tools for Micronaut.<\/a><\/p>\n","innerContent":["\n<p>W sk\u0142ad GCN wchodz\u0105 r\u00f3wnie\u017c narz\u0119dzia do tworzenia projekt\u00f3w oraz rozszerzenie do VS Code - <a href=\"https:\/\/www.graalvm.org\/22.3\/tools\/vscode\/micronaut-extension\/\">GraalVM Tools for Micronaut.<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To jednak nie wszystko, bo podczas Oracle Cloud World 2023, Oracle <a href=\"https:\/\/blogs.oracle.com\/java\/post\/introducing-graalos\">przedstawi\u0142 GraalOS<\/a> - ostatni klocek Graal Stack Components. Jest to runtime dla \u015brodowisk chmurowych, maj\u0105c\u0105 na celu optymalizacj\u0119 wydajno\u015bci i efektywno\u015bci funkcji Serverless. Wykorzystuj\u0105c kompilacj\u0119 ahead-of-time (AOT) oferowan\u0105 przez GraalVM, GraalOS konwertuje aplikacje w samodzielne natywne pliki wykonywalne, eliminuj\u0105c nieu\u017cywane klasy, metody i pola. Dodatkowo, podobnie jak AWS SnapStart, GraalOS ma rozwi\u0105zywa\u0107 problem \"cold startu\", wyst\u0119puj\u0105cego podczas pierwszego wywo\u0142ania funkcji po okresie bezczynno\u015bci. Ma te\u017c posiada\u0107 mo\u017cliwo\u015b\u0107 \"zamra\u017cania\" stanu w dowolnym momencie.<\/p>\n","innerContent":["\n<p>To jednak nie wszystko, bo podczas Oracle Cloud World 2023, Oracle <a href=\"https:\/\/blogs.oracle.com\/java\/post\/introducing-graalos\">przedstawi\u0142 GraalOS<\/a> - ostatni klocek Graal Stack Components. Jest to runtime dla \u015brodowisk chmurowych, maj\u0105c\u0105 na celu optymalizacj\u0119 wydajno\u015bci i efektywno\u015bci funkcji Serverless. Wykorzystuj\u0105c kompilacj\u0119 ahead-of-time (AOT) oferowan\u0105 przez GraalVM, GraalOS konwertuje aplikacje w samodzielne natywne pliki wykonywalne, eliminuj\u0105c nieu\u017cywane klasy, metody i pola. Dodatkowo, podobnie jak AWS SnapStart, GraalOS ma rozwi\u0105zywa\u0107 problem \"cold startu\", wyst\u0119puj\u0105cego podczas pierwszego wywo\u0142ania funkcji po okresie bezczynno\u015bci. Ma te\u017c posiada\u0107 mo\u017cliwo\u015b\u0107 \"zamra\u017cania\" stanu w dowolnym momencie.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><a href=\"https:\/\/www.graal.cloud\/graalos\/\">GraalOS<\/a> zostanie \u015brodowiskiem uruchomieniowym dla Oracle Cloud Infrastructure Functions, czyni\u0105c je bardzo interesuj\u0105c\u0105 opcj\u0105 dla chc\u0105cych odpala\u0107 funkcje serverless w oparciu o Graala. Co prawda AWS Lambda pozwala ju\u017c dzi\u015b na uruchomienie GraalVM w ramach tak zwanych \"Custom Runtime\", ale sprowadza si\u0119 to do uruchomienia kontenera z aplikacj\u0105 GraalVM - GraalOS pozwala na omini\u0119cie tej warstwy, eliminuj\u0105c narzut zwi\u0105zany z uruchamianiem kontenera i inicjalizacj\u0105 JVM. <\/p>\n","innerContent":["\n<p><a href=\"https:\/\/www.graal.cloud\/graalos\/\">GraalOS<\/a> zostanie \u015brodowiskiem uruchomieniowym dla Oracle Cloud Infrastructure Functions, czyni\u0105c je bardzo interesuj\u0105c\u0105 opcj\u0105 dla chc\u0105cych odpala\u0107 funkcje serverless w oparciu o Graala. Co prawda AWS Lambda pozwala ju\u017c dzi\u015b na uruchomienie GraalVM w ramach tak zwanych \"Custom Runtime\", ale sprowadza si\u0119 to do uruchomienia kontenera z aplikacj\u0105 GraalVM - GraalOS pozwala na omini\u0119cie tej warstwy, eliminuj\u0105c narzut zwi\u0105zany z uruchamianiem kontenera i inicjalizacj\u0105 JVM. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"id":16822,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled_Project_V1-1-1024x512.gif\" alt=\"\" class=\"wp-image-16822\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/09\/Untitled_Project_V1-1-1024x512.gif\" alt=\"\" class=\"wp-image-16822\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Warto doda\u0107, \u017ce na chwil\u0119 obecn\u0105 funkcji nie mo\u017cna jeszcze przetestowa\u0107. Niemniej jednak istnieje mo\u017cliwo\u015b\u0107 zapisania si\u0119 na wczesny dost\u0119p. Ja to zrobi\u0142em, ch\u0119tnie si\u0119 rozwi\u0105zaniem pobawi\u0119.<\/p>\n","innerContent":["\n<p>Warto doda\u0107, \u017ce na chwil\u0119 obecn\u0105 funkcji nie mo\u017cna jeszcze przetestowa\u0107. Niemniej jednak istnieje mo\u017cliwo\u015b\u0107 zapisania si\u0119 na wczesny dost\u0119p. Ja to zrobi\u0142em, ch\u0119tnie si\u0119 rozwi\u0105zaniem pobawi\u0119.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A je\u015bli chcecie zobaczy\u0107 opracowanie -  GraalVM te\u017c mia\u0142 sw\u00f3j publiczny stream releasowy. Je\u017celi chcecie \"poczu\u0107\" klimat takiego nowego wydania i pozna\u0107 nowe funkcjonalno\u015bci u \u017ar\u00f3d\u0142a - zapraszam do ogl\u0105dni\u0119cia. Znajdziecie tam bowiem informacje o kilku dodatkowych nowo\u015bciach, o kt\u00f3rych nie wspomina\u0142em w tek\u015bcie:<\/p>\n","innerContent":["\n<p>A je\u015bli chcecie zobaczy\u0107 opracowanie -  GraalVM te\u017c mia\u0142 sw\u00f3j publiczny stream releasowy. Je\u017celi chcecie \"poczu\u0107\" klimat takiego nowego wydania i pozna\u0107 nowe funkcjonalno\u015bci u \u017ar\u00f3d\u0142a - zapraszam do ogl\u0105dni\u0119cia. Znajdziecie tam bowiem informacje o kilku dodatkowych nowo\u015bciach, o kt\u00f3rych nie wspomina\u0142em w tek\u015bcie:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/embed","attrs":{"url":"https:\/\/www.youtube.com\/watch?v=L2xtYwFRAPo","type":"video","providerNameSlug":"youtube","responsive":true,"className":"wp-embed-aspect-16-9 wp-has-aspect-ratio"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/www.youtube.com\/watch?v=L2xtYwFRAPo\n<\/div><\/figure>\n","innerContent":["\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/www.youtube.com\/watch?v=L2xtYwFRAPo\n<\/div><\/figure>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/16795","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=16795"}],"version-history":[{"count":20,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/16795\/revisions"}],"predecessor-version":[{"id":16839,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/16795\/revisions\/16839"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/16825"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=16795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=16795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=16795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}