{"id":10711,"date":"2022-09-21T15:14:29","date_gmt":"2022-09-21T13:14:29","guid":{"rendered":"https:\/\/vived.io\/?p=10711"},"modified":"2022-09-21T18:48:36","modified_gmt":"2022-09-21T16:48:36","slug":"jdk-19-wydane-jvm-weekly-105","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/","title":{"rendered":"JDK 19 wydane! &#8211; JVM Weekly 105"},"content":{"rendered":"\n<p>No i mamy to! Zgodnie z zaplanowanym harmonogramem, ukaza\u0142o si\u0119 JDK 19. Wydanie to z jednej strony wydawa\u0107 si\u0119 mo\u017ce czym\u015b ma\u0142ym, jednak niech nie zmyl\u0105 Was pozory jedynie pojedynczej stabilnej funkcjonalno\u015bci &#8211; mamy bowiem do czynienia z jednym z najwa\u017cniejszych nowych JDK od lat, sk\u0142onny jestem stwierdzi\u0107, \u017ce nawet od czasu JDK 9 z jego systemem modu\u0142\u00f3w. Po raz pierwszy bowiem mamy okazj\u0119 wersje Preview projekt\u00f3w, kt\u00f3re stanowi\u0107 b\u0119d\u0105 przysz\u0142o\u015b\u0107 JVM.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"498\" height=\"280\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/rainbow-puke.gif\" alt=\"\" class=\"wp-image-10731\"\/><figcaption>Recenzja JDK 19 w formie graficznej<\/figcaption><\/figure><\/div>\n\n\n<p>Zanim przejd\u0119 do w\u0142asnego podsumowania poszczeg\u00f3lnych JEP\u00f3w, kt\u00f3re trafi\u0142y do tego wydania &#8211; je\u017celi chcecie zobaczy\u0107 oficjalne zapowiedzi, Oracle przygotowa\u0142o a\u017c trzy. Do wyboru macie:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/inside.java\/2022\/09\/20\/the-arrival-of-java-19\/\">release note od Oracle<\/a>, podsumowuj\u0105cy ilo\u015b\u0107 zmian i osoby zaanga\u017cowane w stworzenie JDK 19<\/li><li>bardziej <a href=\"https:\/\/www.youtube.com\/watch?v=6pN0Ymsl1H0\">biznesowo-korporacyjn\u0105 zapowied\u017a od Oracle<\/a><\/li><li><a href=\"https:\/\/inside.java\/2022\/09\/20\/podcast-026\/\">podcast<\/a>, kt\u00f3rego go\u015b\u0107mi s\u0105 Ron Pressler oraz Brian Goetz<\/li><\/ul>\n\n\n\n<p>To jak oficjaln\u0105 cz\u0119\u015b\u0107 mamy za sob\u0105, teraz par\u0119 groszy ode mnie. Postanowi\u0142em przej\u015b\u0107 przez poszczeg\u00f3lne JEP-y i przy ka\u017cdym podzieli\u0107 si\u0119 kr\u00f3tk\u0105 refleksj\u0105.<\/p>\n\n\n\n<h2 id=\"422-linux-risc-v-port\" data-num=1><a href=\"https:\/\/openjdk.org\/jeps\/422\">422: Linux\/RISC-V Port<\/a><\/h2>\n\n\n\n<p>No to zacznijmy od jedynej stabilnej zmiany w JDK 19 &#8211; ot\u00f3\u017c Java trafia na now\u0105 platform\u0119. Tym razem jest to Linux, ale nie taki zwyk\u0142y Linux. Tw\u00f3rcy Javy pokusili si\u0119 bowiem o wsparcie dystrybucji uruchamianych na procesorach z rodziny RISC-V.<\/p>\n\n\n\n<p>RISC-V jest stworzonym przez amerykan\u00f3w z Uniwersytetu w Berkley otwartym standardem, b\u0119d\u0105cym swego rodzaju alternatyw\u0105 dla ARM. RISC-V nie jest gotowym procesorem, a raczej architektura zestawu instrukcji (z angielskiego ISA), staraj\u0105cy si\u0119 dostarczy\u0107 \u015bci\u015ble wyspecjalizowanego zestawu takowych &#8211; reduced instruction set computer \u2013 RISC w\u0142a\u015bnie. Cytuj\u0105c Wikipedi\u0119:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>W kontra\u015bcie do wi\u0119kszo\u015bci ISA, RISC-V mo\u017ce by\u0107 swobodnie u\u017cywany w dowolnym celu, umo\u017cliwiaj\u0105c ka\u017cdemu projektowanie, produkcj\u0119 i sprzeda\u017c czip\u00f3w i oprogramowania RISC-V. Chocia\u017c nie jest pierwsz\u0105 otwart\u0105 architektur\u0105 ISA ma du\u017ce znaczenie, poniewa\u017c zosta\u0142 zaprojektowany z my\u015bl\u0105 o nowoczesnych skomputeryzowanych urz\u0105dzeniach, takich jak ogromne chmury obliczeniowe, wysokiej klasy telefony kom\u00f3rkowe i najmniejsze systemy wbudowane.<\/p><\/blockquote>\n\n\n\n<p>I dlatego te\u017c w\u0142a\u015bnie robi si\u0119 o tej architekturze ostatnio g\u0142o\u015bno. Bo o ile w sama sobie nie jest chi\u0144ska to faktem jest, \u017ce to rzeczywi\u015bcie w\u0142a\u015bnie Chi\u0144czycy zacz\u0119li w ni\u0105 mocno inwestowa\u0107. Opr\u00f3cz swoich niew\u0105tpliwych zalet od strony technicznej (programist\u00f3w RISC-V szuka obecnie min. Apple), architektura w wyniku ostatnich zawirowa\u0144 politycznych. Jako standard realnie otwarty jawi si\u0119 bowiem jako swoista bezpieczna przysta\u0144 dla wszystkich, kt\u00f3rzy nie chc\u0105 by\u0107 uzale\u017cnieni od widzimisie ARM i ameryka\u0144skiej strefy wp\u0142yw\u00f3w. St\u0105d te\u017c zainteresowanie ze strony Chin, Rosji czy te\u017c\u2026 Unii Europejskiej, kt\u00f3ra to w zesz\u0142ym roku og\u0142osi\u0142a stworzenie opartego o RISC-V chipa EPAC (European Processor Accelerator), kt\u00f3ry ma by\u0107 kamieniem milowym je\u015bli chodzi o uzyskanie przez UE pozycji na rynku producent\u00f3w procesor\u00f3w. W r\u0119ce wpad\u0142 mi te\u017c kiedy\u015b raport opublikowany przez firm\u0119 Conunterpoint, \u017ce do 2025 roku architektura RISC-V mo\u017ce nap\u0119dza\u0107 25% projekt\u00f3w zwi\u0105zanych z Internetem Rzeczy.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"547\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/df901214da1d72efc6ad07ddcff32e34.jpeg\" alt=\"\" class=\"wp-image-10724\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/df901214da1d72efc6ad07ddcff32e34.jpeg 768w, https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/df901214da1d72efc6ad07ddcff32e34-300x214.jpeg 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><figcaption>Ale si\u0119 wszyscy zasadzaj\u0105 na biednego Intela&#8230;<\/figcaption><\/figure><\/div>\n\n\n<p>Sam z zainteresowaniem obserwuje RISC-V i mam nadzieje, \u017ce spe\u0142ni ona pok\u0142adane w niej nadzieje. Je\u015bli chodzi o rynek procesor\u00f3w, nie ma chyba bardziej gor\u0105cego tematu (no, mo\u017ce poza kolejnymi iteracjami M1\/M2).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"375\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/img_62a889f16272a.gif\" alt=\"\" class=\"wp-image-10721\"\/><figcaption>Aczkolwiek nie k\u0142ammy si\u0119, ci\u0119\u017cko o bardziej niszowy feature. Ale pierwszy u\u017cytkownik testuje razem z grup\u0105 koleg\u00f3w<\/figcaption><\/figure><\/div>\n\n\n<p>Jedyny stabilny dodatek do JDK mamy za sob\u0105, czas zst\u0105pi\u0107 do piekie\u0142 featur\u00f3w preview.<\/p>\n\n\n\n<h2 id=\"425-virtual-threads-preview\" data-num=2><a href=\"https:\/\/openjdk.org\/jeps\/425\">425: Virtual Threads (Preview)<\/a><\/h2>\n\n\n\n<p>Zacznijmy od informacji na kt\u00f3r\u0105 wszyscy czekali (a kt\u00f3ra nie b\u0119dzie dla nikogo czytaj\u0105cego te przegl\u0105dy niespodziank\u0105) \u2013 w JDK 19 zobaczyli\u015bmy wreszcie pierwszy preview oczekiwanego od lat Looma. Spo\u0142eczno\u015b\u0107 bawi si\u0119 ca\u0142o\u015bci\u0105 w najlepsze od d\u0142u\u017cszego czasu, a teraz r\u00f3wnie\u017c programi\u015bci obawiaj\u0105cy si\u0119 wersji rozwojowych b\u0119d\u0105 mogli pobawi\u0107 si\u0119 wirtualnymi w\u0105tkami i bezbole\u015bnie sprawdzi\u0107, czy ca\u0142o\u015b\u0107 wytrzyma\u0142a ca\u0142y hype z jakim wi\u0105za\u0142y si\u0119 kolejne zapowiedzi projektu. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"270\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/giphy-4.gif\" alt=\"\" class=\"wp-image-10737\"\/><figcaption>Hype train na pewno jest rozp\u0119dzony, byle tory wytrzyma\u0142y<\/figcaption><\/figure><\/div>\n\n\n<p>Nie b\u0119d\u0119 si\u0119 tutaj mocno rozpisywa\u0142 &#8211; o eksperymentach spo\u0142eczno\u015b\u0107, kt\u00f3ra bawi si\u0119 wirtualnymi wirtualnymi w\u0105tkami ju\u017c od pewnego czasu, sprawdzaj\u0105c w praktyce projekt po\u015bwi\u0119ci\u0142em kiedy\u015b spor\u0105 cz\u0119\u015b\u0107 przegl\u0105du, wi\u0119c zach\u0119cam do odwiedzenia <a href=\"https:\/\/vived.substack.com\/p\/jvm-wednesday-2-loom-loom-loom-and\">jednej z poprzednich edycji<\/a>. Znajdziecie tam przegl\u0105d eksperyment\u00f3w, kt\u00f3re wyp\u0105czkowa\u0142y jeszcze w momencie opublikowania Javy we wczesnym dost\u0119pie. <\/p>\n\n\n\n<p>O ile jednak o wirtualnych w\u0105tkach powiedziano ju\u017c naprawd\u0119 du\u017co, o tyle znacznie ciszej jest o kolejnym wa\u017cnym, powi\u0105zanym z ni\u0105 featurze:<\/p>\n\n\n\n<h2 id=\"428-structured-concurrency-incubator\" data-num=3><a href=\"https:\/\/openjdk.org\/jeps\/428\">428: Structured Concurrency (Incubator)<\/a><\/h2>\n\n\n\n<p>D\u0142ugo oczekiwana Strukturalna Wsp\u00f3\u0142bie\u017cno\u015b\u0107. kt\u00f3ry w\u0142a\u015bnie trafi\u0142 do inkubacji, te\u017c jest bowiem cz\u0119\u015bci\u0105 Looma i stanowi naturalne uzupe\u0142nienie Wirtualnych W\u0105tk\u00f3w\u2026 <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"262\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/img_62a889ee52ecc.gif\" alt=\"\" class=\"wp-image-10717\"\/><figcaption>T\u0142um szaleje<\/figcaption><\/figure><\/div>\n\n\n<p>Czym jest strukturalna wsp\u00f3\u0142bie\u017cno\u015b\u0107? Je\u015bli kto\u015b nie chce pr\u00f3bowa\u0107 dokopywa\u0107 si\u0119 do jakich\u015b zakurzonych papier\u00f3w z lat 60-tych (bo tam mo\u017cna znale\u017a\u0107 wszystko) jej korzeni nale\u017cy doszukiwa\u0107 si\u0119 po\u015bcie blogowym <a href=\"https:\/\/250bpm.com\/blog:71\/\"><strong>Structured Concurrency<\/strong><\/a> z 2016 roku, napisanym przez Martina S\u00fastrika \u2013 tw\u00f3rcy ZeroMQ. To w\u0142a\u015bnie w nim zaprezentowa\u0142 on koncepcje enkapsulowania wsp\u00f3\u0142bie\u017cnych w\u0105tk\u00f3w wykonawczych za pomoc\u0105 blok\u00f3w kodu o jasnych miejscach startu i zako\u0144czenia, kt\u00f3re gwarantowa\u0142yby, \u017ce wszystkie w\u0105tki ko\u0144cz\u0105 prac\u0119 przed wyj\u015bciem z danego bloku. Tego typu podej\u015bcie w znacznym stopniu u\u0142atwia rozumowanie na temat kodu, a r\u00f3wnie\u017c obs\u0142ug\u0119 b\u0142\u0119d\u00f3w.<\/p>\n\n\n\n<p>Idea pewnie nigdy nie zdoby\u0142aby a\u017c takiej popularno\u015bci gdyby nie Roman Elizarov, architekt kotlinowych korutyn, kt\u00f3ry postanowi\u0142 wykorzysta\u0107 j\u0105 w praktyce przy projektowaniu mechanizmu. Efekty okaza\u0142y si\u0119 by\u0107 na tyle dobre, \u017ce w ca\u0142ym JVM-ie nast\u0105pi\u0142a spora zmiana w my\u015bleniu i \u2013 przyk\u0142adowo \u2013 oryginalna wersja projektu Loom posz\u0142a w zasadzie do kosza, a ostateczny wariant, o kt\u00f3rym pisali\u015bmy dwa tygodnie temu, to ju\u017c rozwi\u0105zanie w pe\u0142ni ze Strukturaln\u0105 Wsp\u00f3\u0142bie\u017cno\u015bci\u0105 kompatybilne.<\/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=\"Roman Elizarov \u2014 Structured concurrency\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/Mj5P47F6nJg?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><figcaption>BTW: Moim zdaniem to w\u0142a\u015bnie talk Elizarova jest najlepszym miejscem na szersze zrozumienie tematu strukturalnej wsp\u00f3\u0142bie\u017cno\u015bci.<\/figcaption><\/figure>\n\n\n\n<p>Je\u017celi to, o czym pisa\u0142em kojarzy Wam si\u0119 z wprowadzonym w Javie 1.7 <code>try-with-resources<\/code> to macie bardzo dobre skojarzenia. W\u0142a\u015bnie na tej znajomej programistom Javy konstrukcji projektanci Looma zdecydowali si\u0119 oprze\u0107 swoj\u0105 wersj\u0119 strukturalnej wsp\u00f3\u0142bie\u017cno\u015bci:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Response handle() throws ExecutionException, InterruptedException {\n    try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {\n        Future&lt;String&gt;  user  = scope.fork(() -&gt; findUser()); \n        Future&lt;Integer&gt; order = scope.fork(() -&gt; fetchOrder());\n        scope.join();          \/\/ Join both forks\n        scope.throwIfFailed(); \/\/ ... and propagate errors\n\n        \/\/ Here, both forks have succeeded, so compose their results\n        return new Response(user.resultNow(), order.resultNow());\n    }\n}<\/code><\/pre>\n\n\n\n<p>W powy\u017cszym przyk\u0142adzie blok try automatycznie \u201cposprz\u0105ta\u201d wszystkie stworzone w nim w\u0105tki w wypadku jakiegokolwiek problemu. Jasno sprecyzowany jest te\u017c cykl \u017cycia ca\u0142o\u015bci, wygodnie zbiera si\u0119 te\u017c rezultaty, poniewa\u017c ca\u0142o\u015b\u0107 zachowuje si\u0119 w zasadzie jak kod synchroniczny. <\/p>\n\n\n\n<p>W odr\u00f3\u017cnieniu od samych wirtualnych w\u0105tk\u00f3w, opublikownych jako Preview, JEP 428: Structured Concurrency znajduje si\u0119 w inkubacji &#8211; w zwi\u0105zku z czym powy\u017csze API mo\u017ce jeszcze ulec ewolucji. To co tw\u00f3rcy chc\u0105 teraz osi\u0105gn\u0105\u0107, to zdobycie opinii spo\u0142eczno\u015bci w celu doprecyzowania docelowe API. <\/p>\n\n\n\n<p>Ja na pewno si\u0119 pobawi\u0119. Mam nadzieje, \u017ce b\u0119dziecie mi towarzyszy\u0107 \ud83d\ude09<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Dobra, to jak Looma mamy z g\u0142owy, przechodzimy dalej &#8211; Projekt Panama.<\/p>\n\n\n\n<h2 id=\"424-foreign-function-memory-api-preview\" data-num=4><a href=\"https:\/\/openjdk.org\/jeps\/424\">424: Foreign Function &amp; Memory API (Preview)<\/a><\/h2>\n\n\n\n<p>Kolejny gracz wagi ultraci\u0119\u017ckiej, czyli efekt Projektu Panama, r\u00f3wnie\u017c widzimy w nowym wydaniu JDK. Przed nami materializuje si\u0119 nast\u0119pca JNI, kt\u00f3ry zapewni\u0107 ma nam now\u0105, lepsz\u0105 integracj\u0119 z natywnym kodem i pami\u0119ci\u0105. <\/p>\n\n\n\n<p>Nowe API jest naprawd\u0119 pot\u0119\u017cne &#8211; o mo\u017cliwo\u015bciach, kt\u00f3re daje piszemy regularnie (cho\u0107by w poprzedniej edycji). Temat jest na tyle szeroki, \u017ce aby pozna\u0107 wi\u0119cej szczeg\u00f3\u0142\u00f3w, polecam <a href=\"https:\/\/www.youtube.com\/watch?v=lBOwPYvdvLQ\">prezentacj\u0119 od Oracle<\/a>, kt\u00f3ra pokrywa w pe\u0142ni JEP-424. Posiada wiele przyk\u0142ad\u00f3w pozwalaj\u0105cych nie tylko lepiej zrozumie\u0107, jak pierwszego du\u017cego dziecka Projektu Panama u\u017cywa\u0107, ale r\u00f3wnie\u017c dlaczego w og\u00f3le warto si\u0119 nim zainteresowa\u0107.<\/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=\"Project Panama: Say Goodbye to JNI\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/4xFV-A7JToY?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\n\n\n<p><\/p>\n\n\n\n<h2 id=\"426-vector-api-fourth-incubator\" data-num=5><a href=\"https:\/\/openjdk.org\/jeps\/426\">426: Vector API (Fourth Incubator)<\/a><\/h2>\n\n\n\n<p>Co\u015b nie mo\u017ce wyj\u015b\u0107 z inkubacji to Vector API&#8230; To ju\u017c czwarty raz, kiedy dostajemy jego przebudow\u0119, co tylko udowadnia, za jak skomplikowany temat wzi\u0119li si\u0119 tw\u00f3rcy JVMa. Wsp\u00f3\u0142czesne procesory zapewniaj\u0105 mo\u017cliwo\u015b\u0107 r\u00f3wnoleg\u0142ego przetwarzania danych, ale miedzy poszczeg\u00f3lnymi implementacjami istniej\u0105 znacz\u0105ce r\u00f3\u017cnice. Vector API zapewni\u0107 ma specjaln\u0105, wsp\u00f3ln\u0105 warstw\u0119 abstrakcji. Jedn\u0105 z wa\u017cnych nowo\u015bci jest u\u017cycie nowo\u015bci wprowadzonych w dopiero co opisywanym <strong>JEP 424<\/strong>, jako, \u017ce wreszcie doczekali\u015bmy si\u0119 oficjalnego preview. <\/p>\n\n\n\n<p>Je\u017celi chcecie dowiedzie\u0107 si\u0119 wi\u0119cej o Vector API i motywacjach za nim stoj\u0105cych, zamiast lektury JEP-a polecam <a href=\"https:\/\/www.youtube.com\/watch?v=HARDCbSog0c\">odcinek podcastu Inside Java<\/a>, w kt\u00f3rym autorzy ca\u0142o\u015bci (John Rose i Paul Sandoz) opowiadaj\u0105 o motywacjach stoj\u0105cych za projektem, pozwalaj\u0105c lepiej zrozumie\u0107 zar\u00f3wno dlaczego jest tak istotny, jak i dlaczego jego implementacja jest tak wyboista i d\u0142uga.<\/p>\n\n\n\n<h2 id=\"427-pattern-matching-for-switch-third-preview\" data-num=6><a href=\"https:\/\/openjdk.org\/jeps\/427\">427: Pattern Matching for switch (Third Preview)<\/a><\/h2>\n\n\n\n<p>Tutaj (podobnie jak w wypadku Vector API) ochy i achy troch\u0119 mniejsze, bo to ju\u017c trzecia iteracja Pattern Matchingu dla javowych switchy. Zmiany wydaj\u0105 si\u0119 by\u0107 na plus \u2013 ca\u0142kiem podoba mi si\u0119 u\u017cycie s\u0142\u00f3wka when dla operacji warunkowych (cho\u0107 przyznam, \u017ce b\u0119dzie mi si\u0119 nieco gryz\u0142o z u\u017cyciem Kotlinowym). Czekam na switche bardzo i mam nadzieje, \u017ce to jest ostatnie preview i ju\u017c nied\u0142ugo doczekamy si\u0119 wersji stabilnej. A je\u015bli chcecie wi\u0119cej i nie lubicie formatu JEP\u00f3w, polecam kolejne wideo-wprowadzenie od Oracle, prowadzone przez Venkata Subramaniana, cz\u0119stego (i bardzo popularnego) go\u015bcia konferencji.<\/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=\"The Elegance of Pattern Matching in Modern Java\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/lBOwPYvdvLQ?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\n\n\n<h2 id=\"405-record-patterns-preview\" data-num=7><a href=\"https:\/\/openjdk.org\/jeps\/405\">405: Record Patterns (Preview)<\/a><\/h2>\n\n\n\n<p>Ostatnim z nowych JEP\u00f3w jest pierwsza wersja Preview pattern matchingu r\u00f3wnie\u017c dla Rekord\u00f3w. Ma on pozwoli\u0107 na \u0142atw\u0105 destrukturyzacje struktury i (przynajmniej z mojej perspektywy) stanowi\u0107 pierwsz\u0105 prawdziw\u0105 realn\u0105 przewag\u0119 tej struktury w stosunku do POJO generowanych przez IDE. Okazuje si\u0119, \u017ce dzi\u0119ki ustandaryzowanemu sposobowi w jaki rekordy s\u0105 tworzone i przechowywane na JVM, tw\u00f3rcy JDK maj\u0105 otwart\u0105 drog\u0119 na wprowadzenie nowych funkcjonalno\u015bci. Pierwsz\u0105 z nich (i na pewno nie ostatni\u0105 &#8211; zach\u0119cam lektur\u0119 dokumentu <a href=\"https:\/\/github.com\/openjdk\/amber-docs\/blob\/master\/eg-drafts\/reconstruction-records-and-classes.md\"><strong>Functional Transformation of Immutable Objects<\/strong><\/a>, kt\u00f3rym kiedy\u015b podzieli\u0142 si\u0119 Brian Goetz) jest w\u0142a\u015bnie wprowadzenie specjalnej sk\u0142adni dla pattern matchingu dedykowanej dla tej struktury.<\/p>\n\n\n\n<p>Je\u017celi jeste\u015bcie ciekawi, jak wygl\u0105da sk\u0142adnia, poni\u017cej znajdziecie <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>record Person (String name, String address) {}\n\nif (obj instanceof Person(var name, var address)) {\n        println(name)\n        println(address)\n}<\/code><\/pre>\n\n\n\n<p>Record Patterns umo\u017cliwiaj\u0105 r\u00f3wnie\u017c warunkowe castowanie<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (obj instanceof Person p) {\n   var name = p.name();\n   var address = p.address();\n}<\/code><\/pre>\n\n\n\n<p>Wewn\u0105trz bloku warunkowego mo\u017cemy w bezpieczny spos\u00f3b mo\u017cemy u\u017cywa\u0107 obiektu w taki spos\u00f3b, jakby ten zosta\u0142 poddany castingowi. Podejrzewa, \u017ce je\u015bli mieli\u015bcie do czynienia z Kotlinem, to ta struktura b\u0119dzie dla Was znajoma.<\/p>\n\n\n\n<p>Wi\u0119cej szczeg\u00f3\u0142 znajdziecie w JEPie, a je\u015bli chodzi o potencjalne przypadki u\u017cycia, bardzo dobre wprowadzenie znajdziecie w <a href=\"https:\/\/javaalmanac.io\/features\/recordpatterns\/\">Java Almanach<\/a><\/p>\n\n\n\n<h2 id=\"bonus-project-lanai-jako-default\" data-num=8>Bonus: Project Lanai jako default<\/h2>\n\n\n\n<p>To jednak nie wszystko, czego mo\u017cna si\u0119 spodziewa\u0107 po nowym wydaniu. JDK 19 to tak\u017ce przepi\u0119cie si\u0119 Javy na nowy spos\u00f3b renderowania aplikacji Desktopowych na komputerach z systemem macOS \u2013 <a href=\"https:\/\/inside.java\/2022\/04\/27\/quality-heads-up\/\">OpenGL zosta\u0142 zast\u0105piony przez Metal API<\/a>. Jest to inicjatywa, kt\u00f3rej efekty trafi\u0142y do Javy jeszcze w wersji 17 w ramach projektu Lanai, a od nast\u0119pnej wersji JDK zosta\u0142y w ko\u0144cu w\u0142\u0105czone jako domy\u015blne.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"188\" height=\"174\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/giphy-3.gif\" alt=\"\" class=\"wp-image-10735\"\/><\/figure><\/div>\n\n\n<p>Ufff, sporo tego. A wiecie co najbardziej mnie \u201cjara\u201d? Jest spora szansa, \u017ce cho\u0107 cz\u0119\u015b\u0107 z powy\u017cszych Preview ju\u017c nied\u0142ugo stanie si\u0119 stabilne wraz z nast\u0119pnym LTS (JDK 21). Ju\u017c nie mog\u0119 si\u0119 doczeka\u0107, jakie b\u0119d\u0105 kolejne pomys\u0142y tych wszystkich utalentowanych in\u017cynier\u00f3w, kt\u00f3rzy po latach pracy nad Loomem czy Panam\u0105 b\u0119d\u0105 mogli zabra\u0107 si\u0119 za co\u015b nowego. Ciekawe jak b\u0119dzie wygl\u0105da\u0142o JDK 29.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>PS: Wszystkich zapraszam na <a href=\"https:\/\/yavaconf.com\/\">YavaConf<\/a> w Warszawie, gdzie b\u0119d\u0119 mia\u0142 okazje zaprezentowa\u0107 sw\u00f3j nowy talk <strong>JVM Iceberg\u2026 we need to go deeper<\/strong>. Mo\u017cecie go potraktowa\u0107 jako live edycje tego Weekly \ud83e\udd1f<\/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\/2022\/09\/image-24.png\" alt=\"\" class=\"wp-image-10764\" width=\"600\" height=\"600\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/image-24.png 800w, https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/image-24-300x300.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/image-24-150x150.png 150w, https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/image-24-768x768.png 768w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>","protected":false},"excerpt":{"rendered":"<p>Dzisiaj temat m\u00f3g\u0142 by\u0107 tylko jeden &#8211; premiera JDK 19! Dlatego te\u017c po\u015bwi\u0119ci\u0142em jej ca\u0142\u0105 edycj\u0119, przechodz\u0105c przez poszczeg\u00f3lne JEPy sk\u0142adaj\u0105ce si\u0119 na to wydanie.<\/p>\n","protected":false},"author":10,"featured_media":10739,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[23],"tags":[],"class_list":["post-10711","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm"],"acf":{"estimated_reading_time":"10","feature_image_blog":{"ID":10744,"id":10744,"title":"19th-birthday-15","filename":"19th-birthday-15.gif","filesize":483044,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/19th-birthday-15.gif","link":"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/19th-birthday-15-2\/","alt":"","author":"10","description":"","caption":"","name":"19th-birthday-15-2","status":"inherit","uploaded_to":10711,"date":"2022-09-21 13:13:56","modified":"2022-09-21 16:44:21","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/vived.io\/wp-includes\/images\/media\/default.png","width":600,"height":600,"sizes":{"thumbnail":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/19th-birthday-15-150x150.gif","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/19th-birthday-15-300x300.gif","medium-width":300,"medium-height":300,"medium_large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/19th-birthday-15.gif","medium_large-width":600,"medium_large-height":600,"large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/19th-birthday-15.gif","large-width":600,"large-height":600,"1536x1536":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/19th-birthday-15.gif","1536x1536-width":600,"1536x1536-height":600,"2048x2048":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/19th-birthday-15.gif","2048x2048-width":600,"2048x2048-height":600,"gform-image-choice-sm":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/19th-birthday-15.gif","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":300,"gform-image-choice-md":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/19th-birthday-15.gif","gform-image-choice-md-width":400,"gform-image-choice-md-height":400,"gform-image-choice-lg":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/19th-birthday-15.gif","gform-image-choice-lg-width":600,"gform-image-choice-lg-height":600}},"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/JVM-Weekly-1200x628_V2-1-3.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>JDK 19 wydane! - JVM Weekly 105 - 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-19-wydane-jvm-weekly-105\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JDK 19 wydane! - JVM Weekly 105 - Vived\" \/>\n<meta property=\"og:description\" content=\"Dzisiaj temat m\u00f3g\u0142 by\u0107 tylko jeden - premiera JDK 19! Dlatego te\u017c po\u015bwi\u0119ci\u0142em jej ca\u0142\u0105 edycj\u0119, przechodz\u0105c przez poszczeg\u00f3lne JEPy sk\u0142adaj\u0105ce si\u0119 na to wydanie.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-21T13:14:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-21T16:48:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/JVM-Weekly-1200x628_V2-1-2.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-19-wydane-jvm-weekly-105\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JDK 19 wydane! &#8211; JVM Weekly 105\",\"datePublished\":\"2022-09-21T13:14:29+00:00\",\"dateModified\":\"2022-09-21T16:48:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/\"},\"wordCount\":2009,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/JVM-Weekly-1200x628_V2-1-2.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/\",\"url\":\"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/\",\"name\":\"JDK 19 wydane! - JVM Weekly 105 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/JVM-Weekly-1200x628_V2-1-2.png\",\"datePublished\":\"2022-09-21T13:14:29+00:00\",\"dateModified\":\"2022-09-21T16:48:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/JVM-Weekly-1200x628_V2-1-2.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/JVM-Weekly-1200x628_V2-1-2.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JDK 19 wydane! &#8211; JVM Weekly 105\"}]},{\"@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":"JDK 19 wydane! - JVM Weekly 105 - 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-19-wydane-jvm-weekly-105\/","og_locale":"pl_PL","og_type":"article","og_title":"JDK 19 wydane! - JVM Weekly 105 - Vived","og_description":"Dzisiaj temat m\u00f3g\u0142 by\u0107 tylko jeden - premiera JDK 19! Dlatego te\u017c po\u015bwi\u0119ci\u0142em jej ca\u0142\u0105 edycj\u0119, przechodz\u0105c przez poszczeg\u00f3lne JEPy sk\u0142adaj\u0105ce si\u0119 na to wydanie.","og_url":"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/","og_site_name":"Vived","article_published_time":"2022-09-21T13:14:29+00:00","article_modified_time":"2022-09-21T16:48:36+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/JVM-Weekly-1200x628_V2-1-2.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-19-wydane-jvm-weekly-105\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JDK 19 wydane! &#8211; JVM Weekly 105","datePublished":"2022-09-21T13:14:29+00:00","dateModified":"2022-09-21T16:48:36+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/"},"wordCount":2009,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/JVM-Weekly-1200x628_V2-1-2.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/","url":"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/","name":"JDK 19 wydane! - JVM Weekly 105 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/JVM-Weekly-1200x628_V2-1-2.png","datePublished":"2022-09-21T13:14:29+00:00","dateModified":"2022-09-21T16:48:36+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/JVM-Weekly-1200x628_V2-1-2.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/JVM-Weekly-1200x628_V2-1-2.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jdk-19-wydane-jvm-weekly-105\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JDK 19 wydane! &#8211; JVM Weekly 105"}]},{"@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\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>No i mamy to! Zgodnie z zaplanowanym harmonogramem, ukaza\u0142o si\u0119 JDK 19. Wydanie to z jednej strony wydawa\u0107 si\u0119 mo\u017ce czym\u015b ma\u0142ym, jednak niech nie zmyl\u0105 Was pozory jedynie pojedynczej stabilnej funkcjonalno\u015bci - mamy bowiem do czynienia z jednym z najwa\u017cniejszych nowych JDK od lat, sk\u0142onny jestem stwierdzi\u0107, \u017ce nawet od czasu JDK 9 z jego systemem modu\u0142\u00f3w. Po raz pierwszy bowiem mamy okazj\u0119 wersje Preview projekt\u00f3w, kt\u00f3re stanowi\u0107 b\u0119d\u0105 przysz\u0142o\u015b\u0107 JVM.<\/p>\n","innerContent":["\n<p>No i mamy to! Zgodnie z zaplanowanym harmonogramem, ukaza\u0142o si\u0119 JDK 19. Wydanie to z jednej strony wydawa\u0107 si\u0119 mo\u017ce czym\u015b ma\u0142ym, jednak niech nie zmyl\u0105 Was pozory jedynie pojedynczej stabilnej funkcjonalno\u015bci - mamy bowiem do czynienia z jednym z najwa\u017cniejszych nowych JDK od lat, sk\u0142onny jestem stwierdzi\u0107, \u017ce nawet od czasu JDK 9 z jego systemem modu\u0142\u00f3w. Po raz pierwszy bowiem mamy okazj\u0119 wersje Preview projekt\u00f3w, kt\u00f3re stanowi\u0107 b\u0119d\u0105 przysz\u0142o\u015b\u0107 JVM.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":10731,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/rainbow-puke.gif\" alt=\"\" class=\"wp-image-10731\"\/><figcaption>Recenzja JDK 19 w formie graficznej<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/rainbow-puke.gif\" alt=\"\" class=\"wp-image-10731\"\/><figcaption>Recenzja JDK 19 w formie graficznej<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zanim przejd\u0119 do w\u0142asnego podsumowania poszczeg\u00f3lnych JEP\u00f3w, kt\u00f3re trafi\u0142y do tego wydania - je\u017celi chcecie zobaczy\u0107 oficjalne zapowiedzi, Oracle przygotowa\u0142o a\u017c trzy. Do wyboru macie:<\/p>\n","innerContent":["\n<p>Zanim przejd\u0119 do w\u0142asnego podsumowania poszczeg\u00f3lnych JEP\u00f3w, kt\u00f3re trafi\u0142y do tego wydania - je\u017celi chcecie zobaczy\u0107 oficjalne zapowiedzi, Oracle przygotowa\u0142o a\u017c trzy. Do wyboru macie:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/inside.java\/2022\/09\/20\/the-arrival-of-java-19\/\">release note od Oracle<\/a>, podsumowuj\u0105cy ilo\u015b\u0107 zmian i osoby zaanga\u017cowane w stworzenie JDK 19<\/li><li>bardziej <a href=\"https:\/\/www.youtube.com\/watch?v=6pN0Ymsl1H0\">biznesowo-korporacyjn\u0105 zapowied\u017a od Oracle<\/a><\/li><li><a href=\"https:\/\/inside.java\/2022\/09\/20\/podcast-026\/\">podcast<\/a>, kt\u00f3rego go\u015b\u0107mi s\u0105 Ron Pressler oraz Brian Goetz<\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/inside.java\/2022\/09\/20\/the-arrival-of-java-19\/\">release note od Oracle<\/a>, podsumowuj\u0105cy ilo\u015b\u0107 zmian i osoby zaanga\u017cowane w stworzenie JDK 19<\/li><li>bardziej <a href=\"https:\/\/www.youtube.com\/watch?v=6pN0Ymsl1H0\">biznesowo-korporacyjn\u0105 zapowied\u017a od Oracle<\/a><\/li><li><a href=\"https:\/\/inside.java\/2022\/09\/20\/podcast-026\/\">podcast<\/a>, kt\u00f3rego go\u015b\u0107mi s\u0105 Ron Pressler oraz Brian Goetz<\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To jak oficjaln\u0105 cz\u0119\u015b\u0107 mamy za sob\u0105, teraz par\u0119 groszy ode mnie. Postanowi\u0142em przej\u015b\u0107 przez poszczeg\u00f3lne JEP-y i przy ka\u017cdym podzieli\u0107 si\u0119 kr\u00f3tk\u0105 refleksj\u0105.<\/p>\n","innerContent":["\n<p>To jak oficjaln\u0105 cz\u0119\u015b\u0107 mamy za sob\u0105, teraz par\u0119 groszy ode mnie. Postanowi\u0142em przej\u015b\u0107 przez poszczeg\u00f3lne JEP-y i przy ka\u017cdym podzieli\u0107 si\u0119 kr\u00f3tk\u0105 refleksj\u0105.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/422\">422: Linux\/RISC-V Port<\/a><\/h2>\n","innerContent":["\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/422\">422: Linux\/RISC-V Port<\/a><\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>No to zacznijmy od jedynej stabilnej zmiany w JDK 19 - ot\u00f3\u017c Java trafia na now\u0105 platform\u0119. Tym razem jest to Linux, ale nie taki zwyk\u0142y Linux. Tw\u00f3rcy Javy pokusili si\u0119 bowiem o wsparcie dystrybucji uruchamianych na procesorach z rodziny RISC-V.<\/p>\n","innerContent":["\n<p>No to zacznijmy od jedynej stabilnej zmiany w JDK 19 - ot\u00f3\u017c Java trafia na now\u0105 platform\u0119. Tym razem jest to Linux, ale nie taki zwyk\u0142y Linux. Tw\u00f3rcy Javy pokusili si\u0119 bowiem o wsparcie dystrybucji uruchamianych na procesorach z rodziny RISC-V.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>RISC-V jest stworzonym przez amerykan\u00f3w z Uniwersytetu w Berkley otwartym standardem, b\u0119d\u0105cym swego rodzaju alternatyw\u0105 dla ARM. RISC-V nie jest gotowym procesorem, a raczej architektura zestawu instrukcji (z angielskiego ISA), staraj\u0105cy si\u0119 dostarczy\u0107 \u015bci\u015ble wyspecjalizowanego zestawu takowych - reduced instruction set computer \u2013 RISC w\u0142a\u015bnie. Cytuj\u0105c Wikipedi\u0119:<\/p>\n","innerContent":["\n<p>RISC-V jest stworzonym przez amerykan\u00f3w z Uniwersytetu w Berkley otwartym standardem, b\u0119d\u0105cym swego rodzaju alternatyw\u0105 dla ARM. RISC-V nie jest gotowym procesorem, a raczej architektura zestawu instrukcji (z angielskiego ISA), staraj\u0105cy si\u0119 dostarczy\u0107 \u015bci\u015ble wyspecjalizowanego zestawu takowych - reduced instruction set computer \u2013 RISC w\u0142a\u015bnie. Cytuj\u0105c Wikipedi\u0119:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/quote","attrs":[],"innerBlocks":[],"innerHTML":"\n<blockquote class=\"wp-block-quote\"><p>W kontra\u015bcie do wi\u0119kszo\u015bci ISA, RISC-V mo\u017ce by\u0107 swobodnie u\u017cywany w dowolnym celu, umo\u017cliwiaj\u0105c ka\u017cdemu projektowanie, produkcj\u0119 i sprzeda\u017c czip\u00f3w i oprogramowania RISC-V. Chocia\u017c nie jest pierwsz\u0105 otwart\u0105 architektur\u0105 ISA ma du\u017ce znaczenie, poniewa\u017c zosta\u0142 zaprojektowany z my\u015bl\u0105 o nowoczesnych skomputeryzowanych urz\u0105dzeniach, takich jak ogromne chmury obliczeniowe, wysokiej klasy telefony kom\u00f3rkowe i najmniejsze systemy wbudowane.<\/p><\/blockquote>\n","innerContent":["\n<blockquote class=\"wp-block-quote\"><p>W kontra\u015bcie do wi\u0119kszo\u015bci ISA, RISC-V mo\u017ce by\u0107 swobodnie u\u017cywany w dowolnym celu, umo\u017cliwiaj\u0105c ka\u017cdemu projektowanie, produkcj\u0119 i sprzeda\u017c czip\u00f3w i oprogramowania RISC-V. Chocia\u017c nie jest pierwsz\u0105 otwart\u0105 architektur\u0105 ISA ma du\u017ce znaczenie, poniewa\u017c zosta\u0142 zaprojektowany z my\u015bl\u0105 o nowoczesnych skomputeryzowanych urz\u0105dzeniach, takich jak ogromne chmury obliczeniowe, wysokiej klasy telefony kom\u00f3rkowe i najmniejsze systemy wbudowane.<\/p><\/blockquote>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>I dlatego te\u017c w\u0142a\u015bnie robi si\u0119 o tej architekturze ostatnio g\u0142o\u015bno. Bo o ile w sama sobie nie jest chi\u0144ska to faktem jest, \u017ce to rzeczywi\u015bcie w\u0142a\u015bnie Chi\u0144czycy zacz\u0119li w ni\u0105 mocno inwestowa\u0107. Opr\u00f3cz swoich niew\u0105tpliwych zalet od strony technicznej (programist\u00f3w RISC-V szuka obecnie min. Apple), architektura w wyniku ostatnich zawirowa\u0144 politycznych. Jako standard realnie otwarty jawi si\u0119 bowiem jako swoista bezpieczna przysta\u0144 dla wszystkich, kt\u00f3rzy nie chc\u0105 by\u0107 uzale\u017cnieni od widzimisie ARM i ameryka\u0144skiej strefy wp\u0142yw\u00f3w. St\u0105d te\u017c zainteresowanie ze strony Chin, Rosji czy te\u017c\u2026 Unii Europejskiej, kt\u00f3ra to w zesz\u0142ym roku og\u0142osi\u0142a stworzenie opartego o RISC-V chipa EPAC (European Processor Accelerator), kt\u00f3ry ma by\u0107 kamieniem milowym je\u015bli chodzi o uzyskanie przez UE pozycji na rynku producent\u00f3w procesor\u00f3w. W r\u0119ce wpad\u0142 mi te\u017c kiedy\u015b raport opublikowany przez firm\u0119 Conunterpoint, \u017ce do 2025 roku architektura RISC-V mo\u017ce nap\u0119dza\u0107 25% projekt\u00f3w zwi\u0105zanych z Internetem Rzeczy.<\/p>\n","innerContent":["\n<p>I dlatego te\u017c w\u0142a\u015bnie robi si\u0119 o tej architekturze ostatnio g\u0142o\u015bno. Bo o ile w sama sobie nie jest chi\u0144ska to faktem jest, \u017ce to rzeczywi\u015bcie w\u0142a\u015bnie Chi\u0144czycy zacz\u0119li w ni\u0105 mocno inwestowa\u0107. Opr\u00f3cz swoich niew\u0105tpliwych zalet od strony technicznej (programist\u00f3w RISC-V szuka obecnie min. Apple), architektura w wyniku ostatnich zawirowa\u0144 politycznych. Jako standard realnie otwarty jawi si\u0119 bowiem jako swoista bezpieczna przysta\u0144 dla wszystkich, kt\u00f3rzy nie chc\u0105 by\u0107 uzale\u017cnieni od widzimisie ARM i ameryka\u0144skiej strefy wp\u0142yw\u00f3w. St\u0105d te\u017c zainteresowanie ze strony Chin, Rosji czy te\u017c\u2026 Unii Europejskiej, kt\u00f3ra to w zesz\u0142ym roku og\u0142osi\u0142a stworzenie opartego o RISC-V chipa EPAC (European Processor Accelerator), kt\u00f3ry ma by\u0107 kamieniem milowym je\u015bli chodzi o uzyskanie przez UE pozycji na rynku producent\u00f3w procesor\u00f3w. W r\u0119ce wpad\u0142 mi te\u017c kiedy\u015b raport opublikowany przez firm\u0119 Conunterpoint, \u017ce do 2025 roku architektura RISC-V mo\u017ce nap\u0119dza\u0107 25% projekt\u00f3w zwi\u0105zanych z Internetem Rzeczy.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":10724,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/df901214da1d72efc6ad07ddcff32e34.jpeg\" alt=\"\" class=\"wp-image-10724\"\/><figcaption>Ale si\u0119 wszyscy zasadzaj\u0105 na biednego Intela...<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/df901214da1d72efc6ad07ddcff32e34.jpeg\" alt=\"\" class=\"wp-image-10724\"\/><figcaption>Ale si\u0119 wszyscy zasadzaj\u0105 na biednego Intela...<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Sam z zainteresowaniem obserwuje RISC-V i mam nadzieje, \u017ce spe\u0142ni ona pok\u0142adane w niej nadzieje. Je\u015bli chodzi o rynek procesor\u00f3w, nie ma chyba bardziej gor\u0105cego tematu (no, mo\u017ce poza kolejnymi iteracjami M1\/M2).<\/p>\n","innerContent":["\n<p>Sam z zainteresowaniem obserwuje RISC-V i mam nadzieje, \u017ce spe\u0142ni ona pok\u0142adane w niej nadzieje. Je\u015bli chodzi o rynek procesor\u00f3w, nie ma chyba bardziej gor\u0105cego tematu (no, mo\u017ce poza kolejnymi iteracjami M1\/M2).<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":10721,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/img_62a889f16272a.gif\" alt=\"\" class=\"wp-image-10721\"\/><figcaption>Aczkolwiek nie k\u0142ammy si\u0119, ci\u0119\u017cko o bardziej niszowy feature. Ale pierwszy u\u017cytkownik testuje razem z grup\u0105 koleg\u00f3w<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/img_62a889f16272a.gif\" alt=\"\" class=\"wp-image-10721\"\/><figcaption>Aczkolwiek nie k\u0142ammy si\u0119, ci\u0119\u017cko o bardziej niszowy feature. Ale pierwszy u\u017cytkownik testuje razem z grup\u0105 koleg\u00f3w<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jedyny stabilny dodatek do JDK mamy za sob\u0105, czas zst\u0105pi\u0107 do piekie\u0142 featur\u00f3w preview.<\/p>\n","innerContent":["\n<p>Jedyny stabilny dodatek do JDK mamy za sob\u0105, czas zst\u0105pi\u0107 do piekie\u0142 featur\u00f3w preview.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/425\">425: Virtual Threads (Preview)<\/a><\/h2>\n","innerContent":["\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/425\">425: Virtual Threads (Preview)<\/a><\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zacznijmy od informacji na kt\u00f3r\u0105 wszyscy czekali (a kt\u00f3ra nie b\u0119dzie dla nikogo czytaj\u0105cego te przegl\u0105dy niespodziank\u0105) \u2013 w JDK 19 zobaczyli\u015bmy wreszcie pierwszy preview oczekiwanego od lat Looma. Spo\u0142eczno\u015b\u0107 bawi si\u0119 ca\u0142o\u015bci\u0105 w najlepsze od d\u0142u\u017cszego czasu, a teraz r\u00f3wnie\u017c programi\u015bci obawiaj\u0105cy si\u0119 wersji rozwojowych b\u0119d\u0105 mogli pobawi\u0107 si\u0119 wirtualnymi w\u0105tkami i bezbole\u015bnie sprawdzi\u0107, czy ca\u0142o\u015b\u0107 wytrzyma\u0142a ca\u0142y hype z jakim wi\u0105za\u0142y si\u0119 kolejne zapowiedzi projektu. <\/p>\n","innerContent":["\n<p>Zacznijmy od informacji na kt\u00f3r\u0105 wszyscy czekali (a kt\u00f3ra nie b\u0119dzie dla nikogo czytaj\u0105cego te przegl\u0105dy niespodziank\u0105) \u2013 w JDK 19 zobaczyli\u015bmy wreszcie pierwszy preview oczekiwanego od lat Looma. Spo\u0142eczno\u015b\u0107 bawi si\u0119 ca\u0142o\u015bci\u0105 w najlepsze od d\u0142u\u017cszego czasu, a teraz r\u00f3wnie\u017c programi\u015bci obawiaj\u0105cy si\u0119 wersji rozwojowych b\u0119d\u0105 mogli pobawi\u0107 si\u0119 wirtualnymi w\u0105tkami i bezbole\u015bnie sprawdzi\u0107, czy ca\u0142o\u015b\u0107 wytrzyma\u0142a ca\u0142y hype z jakim wi\u0105za\u0142y si\u0119 kolejne zapowiedzi projektu. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":10737,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/giphy-4.gif\" alt=\"\" class=\"wp-image-10737\"\/><figcaption>Hype train na pewno jest rozp\u0119dzony, byle tory wytrzyma\u0142y<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/giphy-4.gif\" alt=\"\" class=\"wp-image-10737\"\/><figcaption>Hype train na pewno jest rozp\u0119dzony, byle tory wytrzyma\u0142y<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Nie b\u0119d\u0119 si\u0119 tutaj mocno rozpisywa\u0142 - o eksperymentach spo\u0142eczno\u015b\u0107, kt\u00f3ra bawi si\u0119 wirtualnymi wirtualnymi w\u0105tkami ju\u017c od pewnego czasu, sprawdzaj\u0105c w praktyce projekt po\u015bwi\u0119ci\u0142em kiedy\u015b spor\u0105 cz\u0119\u015b\u0107 przegl\u0105du, wi\u0119c zach\u0119cam do odwiedzenia <a href=\"https:\/\/vived.substack.com\/p\/jvm-wednesday-2-loom-loom-loom-and\">jednej z poprzednich edycji<\/a>. Znajdziecie tam przegl\u0105d eksperyment\u00f3w, kt\u00f3re wyp\u0105czkowa\u0142y jeszcze w momencie opublikowania Javy we wczesnym dost\u0119pie. <\/p>\n","innerContent":["\n<p>Nie b\u0119d\u0119 si\u0119 tutaj mocno rozpisywa\u0142 - o eksperymentach spo\u0142eczno\u015b\u0107, kt\u00f3ra bawi si\u0119 wirtualnymi wirtualnymi w\u0105tkami ju\u017c od pewnego czasu, sprawdzaj\u0105c w praktyce projekt po\u015bwi\u0119ci\u0142em kiedy\u015b spor\u0105 cz\u0119\u015b\u0107 przegl\u0105du, wi\u0119c zach\u0119cam do odwiedzenia <a href=\"https:\/\/vived.substack.com\/p\/jvm-wednesday-2-loom-loom-loom-and\">jednej z poprzednich edycji<\/a>. Znajdziecie tam przegl\u0105d eksperyment\u00f3w, kt\u00f3re wyp\u0105czkowa\u0142y jeszcze w momencie opublikowania Javy we wczesnym dost\u0119pie. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>O ile jednak o wirtualnych w\u0105tkach powiedziano ju\u017c naprawd\u0119 du\u017co, o tyle znacznie ciszej jest o kolejnym wa\u017cnym, powi\u0105zanym z ni\u0105 featurze:<\/p>\n","innerContent":["\n<p>O ile jednak o wirtualnych w\u0105tkach powiedziano ju\u017c naprawd\u0119 du\u017co, o tyle znacznie ciszej jest o kolejnym wa\u017cnym, powi\u0105zanym z ni\u0105 featurze:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/428\">428: Structured Concurrency (Incubator)<\/a><\/h2>\n","innerContent":["\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/428\">428: Structured Concurrency (Incubator)<\/a><\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>D\u0142ugo oczekiwana Strukturalna Wsp\u00f3\u0142bie\u017cno\u015b\u0107. kt\u00f3ry w\u0142a\u015bnie trafi\u0142 do inkubacji, te\u017c jest bowiem cz\u0119\u015bci\u0105 Looma i stanowi naturalne uzupe\u0142nienie Wirtualnych W\u0105tk\u00f3w\u2026 <\/p>\n","innerContent":["\n<p>D\u0142ugo oczekiwana Strukturalna Wsp\u00f3\u0142bie\u017cno\u015b\u0107. kt\u00f3ry w\u0142a\u015bnie trafi\u0142 do inkubacji, te\u017c jest bowiem cz\u0119\u015bci\u0105 Looma i stanowi naturalne uzupe\u0142nienie Wirtualnych W\u0105tk\u00f3w\u2026 <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":10717,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/img_62a889ee52ecc.gif\" alt=\"\" class=\"wp-image-10717\"\/><figcaption>T\u0142um szaleje<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/img_62a889ee52ecc.gif\" alt=\"\" class=\"wp-image-10717\"\/><figcaption>T\u0142um szaleje<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Czym jest strukturalna wsp\u00f3\u0142bie\u017cno\u015b\u0107? Je\u015bli kto\u015b nie chce pr\u00f3bowa\u0107 dokopywa\u0107 si\u0119 do jakich\u015b zakurzonych papier\u00f3w z lat 60-tych (bo tam mo\u017cna znale\u017a\u0107 wszystko) jej korzeni nale\u017cy doszukiwa\u0107 si\u0119 po\u015bcie blogowym <a href=\"https:\/\/250bpm.com\/blog:71\/\"><strong>Structured Concurrency<\/strong><\/a> z 2016 roku, napisanym przez Martina S\u00fastrika \u2013 tw\u00f3rcy ZeroMQ. To w\u0142a\u015bnie w nim zaprezentowa\u0142 on koncepcje enkapsulowania wsp\u00f3\u0142bie\u017cnych w\u0105tk\u00f3w wykonawczych za pomoc\u0105 blok\u00f3w kodu o jasnych miejscach startu i zako\u0144czenia, kt\u00f3re gwarantowa\u0142yby, \u017ce wszystkie w\u0105tki ko\u0144cz\u0105 prac\u0119 przed wyj\u015bciem z danego bloku. Tego typu podej\u015bcie w znacznym stopniu u\u0142atwia rozumowanie na temat kodu, a r\u00f3wnie\u017c obs\u0142ug\u0119 b\u0142\u0119d\u00f3w.<\/p>\n","innerContent":["\n<p>Czym jest strukturalna wsp\u00f3\u0142bie\u017cno\u015b\u0107? Je\u015bli kto\u015b nie chce pr\u00f3bowa\u0107 dokopywa\u0107 si\u0119 do jakich\u015b zakurzonych papier\u00f3w z lat 60-tych (bo tam mo\u017cna znale\u017a\u0107 wszystko) jej korzeni nale\u017cy doszukiwa\u0107 si\u0119 po\u015bcie blogowym <a href=\"https:\/\/250bpm.com\/blog:71\/\"><strong>Structured Concurrency<\/strong><\/a> z 2016 roku, napisanym przez Martina S\u00fastrika \u2013 tw\u00f3rcy ZeroMQ. To w\u0142a\u015bnie w nim zaprezentowa\u0142 on koncepcje enkapsulowania wsp\u00f3\u0142bie\u017cnych w\u0105tk\u00f3w wykonawczych za pomoc\u0105 blok\u00f3w kodu o jasnych miejscach startu i zako\u0144czenia, kt\u00f3re gwarantowa\u0142yby, \u017ce wszystkie w\u0105tki ko\u0144cz\u0105 prac\u0119 przed wyj\u015bciem z danego bloku. Tego typu podej\u015bcie w znacznym stopniu u\u0142atwia rozumowanie na temat kodu, a r\u00f3wnie\u017c obs\u0142ug\u0119 b\u0142\u0119d\u00f3w.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Idea pewnie nigdy nie zdoby\u0142aby a\u017c takiej popularno\u015bci gdyby nie Roman Elizarov, architekt kotlinowych korutyn, kt\u00f3ry postanowi\u0142 wykorzysta\u0107 j\u0105 w praktyce przy projektowaniu mechanizmu. Efekty okaza\u0142y si\u0119 by\u0107 na tyle dobre, \u017ce w ca\u0142ym JVM-ie nast\u0105pi\u0142a spora zmiana w my\u015bleniu i \u2013 przyk\u0142adowo \u2013 oryginalna wersja projektu Loom posz\u0142a w zasadzie do kosza, a ostateczny wariant, o kt\u00f3rym pisali\u015bmy dwa tygodnie temu, to ju\u017c rozwi\u0105zanie w pe\u0142ni ze Strukturaln\u0105 Wsp\u00f3\u0142bie\u017cno\u015bci\u0105 kompatybilne.<\/p>\n","innerContent":["\n<p>Idea pewnie nigdy nie zdoby\u0142aby a\u017c takiej popularno\u015bci gdyby nie Roman Elizarov, architekt kotlinowych korutyn, kt\u00f3ry postanowi\u0142 wykorzysta\u0107 j\u0105 w praktyce przy projektowaniu mechanizmu. Efekty okaza\u0142y si\u0119 by\u0107 na tyle dobre, \u017ce w ca\u0142ym JVM-ie nast\u0105pi\u0142a spora zmiana w my\u015bleniu i \u2013 przyk\u0142adowo \u2013 oryginalna wersja projektu Loom posz\u0142a w zasadzie do kosza, a ostateczny wariant, o kt\u00f3rym pisali\u015bmy dwa tygodnie temu, to ju\u017c rozwi\u0105zanie w pe\u0142ni ze Strukturaln\u0105 Wsp\u00f3\u0142bie\u017cno\u015bci\u0105 kompatybilne.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/embed","attrs":{"url":"https:\/\/www.youtube.com\/watch?v=Mj5P47F6nJg","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=Mj5P47F6nJg\n<\/div><figcaption>BTW: Moim zdaniem to w\u0142a\u015bnie talk Elizarova jest najlepszym miejscem na szersze zrozumienie tematu strukturalnej wsp\u00f3\u0142bie\u017cno\u015bci.<\/figcaption><\/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=Mj5P47F6nJg\n<\/div><figcaption>BTW: Moim zdaniem to w\u0142a\u015bnie talk Elizarova jest najlepszym miejscem na szersze zrozumienie tematu strukturalnej wsp\u00f3\u0142bie\u017cno\u015bci.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u017celi to, o czym pisa\u0142em kojarzy Wam si\u0119 z wprowadzonym w Javie 1.7 <code>try-with-resources<\/code> to macie bardzo dobre skojarzenia. W\u0142a\u015bnie na tej znajomej programistom Javy konstrukcji projektanci Looma zdecydowali si\u0119 oprze\u0107 swoj\u0105 wersj\u0119 strukturalnej wsp\u00f3\u0142bie\u017cno\u015bci:<\/p>\n","innerContent":["\n<p>Je\u017celi to, o czym pisa\u0142em kojarzy Wam si\u0119 z wprowadzonym w Javie 1.7 <code>try-with-resources<\/code> to macie bardzo dobre skojarzenia. W\u0142a\u015bnie na tej znajomej programistom Javy konstrukcji projektanci Looma zdecydowali si\u0119 oprze\u0107 swoj\u0105 wersj\u0119 strukturalnej wsp\u00f3\u0142bie\u017cno\u015bci:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>Response handle() throws ExecutionException, InterruptedException {\n    try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {\n        Future&lt;String&gt;  user  = scope.fork(() -&gt; findUser()); \n        Future&lt;Integer&gt; order = scope.fork(() -&gt; fetchOrder());\n        scope.join();          \/\/ Join both forks\n        scope.throwIfFailed(); \/\/ ... and propagate errors\n\n        \/\/ Here, both forks have succeeded, so compose their results\n        return new Response(user.resultNow(), order.resultNow());\n    }\n}<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>Response handle() throws ExecutionException, InterruptedException {\n    try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {\n        Future&lt;String&gt;  user  = scope.fork(() -&gt; findUser()); \n        Future&lt;Integer&gt; order = scope.fork(() -&gt; fetchOrder());\n        scope.join();          \/\/ Join both forks\n        scope.throwIfFailed(); \/\/ ... and propagate errors\n\n        \/\/ Here, both forks have succeeded, so compose their results\n        return new Response(user.resultNow(), order.resultNow());\n    }\n}<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W powy\u017cszym przyk\u0142adzie blok try automatycznie \u201cposprz\u0105ta\u201d wszystkie stworzone w nim w\u0105tki w wypadku jakiegokolwiek problemu. Jasno sprecyzowany jest te\u017c cykl \u017cycia ca\u0142o\u015bci, wygodnie zbiera si\u0119 te\u017c rezultaty, poniewa\u017c ca\u0142o\u015b\u0107 zachowuje si\u0119 w zasadzie jak kod synchroniczny. <\/p>\n","innerContent":["\n<p>W powy\u017cszym przyk\u0142adzie blok try automatycznie \u201cposprz\u0105ta\u201d wszystkie stworzone w nim w\u0105tki w wypadku jakiegokolwiek problemu. Jasno sprecyzowany jest te\u017c cykl \u017cycia ca\u0142o\u015bci, wygodnie zbiera si\u0119 te\u017c rezultaty, poniewa\u017c ca\u0142o\u015b\u0107 zachowuje si\u0119 w zasadzie jak kod synchroniczny. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W odr\u00f3\u017cnieniu od samych wirtualnych w\u0105tk\u00f3w, opublikownych jako Preview, JEP 428: Structured Concurrency znajduje si\u0119 w inkubacji - w zwi\u0105zku z czym powy\u017csze API mo\u017ce jeszcze ulec ewolucji. To co tw\u00f3rcy chc\u0105 teraz osi\u0105gn\u0105\u0107, to zdobycie opinii spo\u0142eczno\u015bci w celu doprecyzowania docelowe API. <\/p>\n","innerContent":["\n<p>W odr\u00f3\u017cnieniu od samych wirtualnych w\u0105tk\u00f3w, opublikownych jako Preview, JEP 428: Structured Concurrency znajduje si\u0119 w inkubacji - w zwi\u0105zku z czym powy\u017csze API mo\u017ce jeszcze ulec ewolucji. To co tw\u00f3rcy chc\u0105 teraz osi\u0105gn\u0105\u0107, to zdobycie opinii spo\u0142eczno\u015bci w celu doprecyzowania docelowe API. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ja na pewno si\u0119 pobawi\u0119. Mam nadzieje, \u017ce b\u0119dziecie mi towarzyszy\u0107 \ud83d\ude09<\/p>\n","innerContent":["\n<p>Ja na pewno si\u0119 pobawi\u0119. Mam nadzieje, \u017ce b\u0119dziecie mi towarzyszy\u0107 \ud83d\ude09<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/separator","attrs":[],"innerBlocks":[],"innerHTML":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n","innerContent":["\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dobra, to jak Looma mamy z g\u0142owy, przechodzimy dalej - Projekt Panama.<\/p>\n","innerContent":["\n<p>Dobra, to jak Looma mamy z g\u0142owy, przechodzimy dalej - Projekt Panama.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/424\">424: Foreign Function &amp; Memory API (Preview)<\/a><\/h2>\n","innerContent":["\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/424\">424: Foreign Function &amp; Memory API (Preview)<\/a><\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Kolejny gracz wagi ultraci\u0119\u017ckiej, czyli efekt Projektu Panama, r\u00f3wnie\u017c widzimy w nowym wydaniu JDK. Przed nami materializuje si\u0119 nast\u0119pca JNI, kt\u00f3ry zapewni\u0107 ma nam now\u0105, lepsz\u0105 integracj\u0119 z natywnym kodem i pami\u0119ci\u0105. <\/p>\n","innerContent":["\n<p>Kolejny gracz wagi ultraci\u0119\u017ckiej, czyli efekt Projektu Panama, r\u00f3wnie\u017c widzimy w nowym wydaniu JDK. Przed nami materializuje si\u0119 nast\u0119pca JNI, kt\u00f3ry zapewni\u0107 ma nam now\u0105, lepsz\u0105 integracj\u0119 z natywnym kodem i pami\u0119ci\u0105. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Nowe API jest naprawd\u0119 pot\u0119\u017cne - o mo\u017cliwo\u015bciach, kt\u00f3re daje piszemy regularnie (cho\u0107by w poprzedniej edycji). Temat jest na tyle szeroki, \u017ce aby pozna\u0107 wi\u0119cej szczeg\u00f3\u0142\u00f3w, polecam <a href=\"https:\/\/www.youtube.com\/watch?v=lBOwPYvdvLQ\">prezentacj\u0119 od Oracle<\/a>, kt\u00f3ra pokrywa w pe\u0142ni JEP-424. Posiada wiele przyk\u0142ad\u00f3w pozwalaj\u0105cych nie tylko lepiej zrozumie\u0107, jak pierwszego du\u017cego dziecka Projektu Panama u\u017cywa\u0107, ale r\u00f3wnie\u017c dlaczego w og\u00f3le warto si\u0119 nim zainteresowa\u0107.<\/p>\n","innerContent":["\n<p>Nowe API jest naprawd\u0119 pot\u0119\u017cne - o mo\u017cliwo\u015bciach, kt\u00f3re daje piszemy regularnie (cho\u0107by w poprzedniej edycji). Temat jest na tyle szeroki, \u017ce aby pozna\u0107 wi\u0119cej szczeg\u00f3\u0142\u00f3w, polecam <a href=\"https:\/\/www.youtube.com\/watch?v=lBOwPYvdvLQ\">prezentacj\u0119 od Oracle<\/a>, kt\u00f3ra pokrywa w pe\u0142ni JEP-424. Posiada wiele przyk\u0142ad\u00f3w pozwalaj\u0105cych nie tylko lepiej zrozumie\u0107, jak pierwszego du\u017cego dziecka Projektu Panama u\u017cywa\u0107, ale r\u00f3wnie\u017c dlaczego w og\u00f3le warto si\u0119 nim zainteresowa\u0107.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/embed","attrs":{"url":"https:\/\/www.youtube.com\/watch?v=4xFV-A7JToY","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=4xFV-A7JToY\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=4xFV-A7JToY\n<\/div><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><\/p>\n","innerContent":["\n<p><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/426\">426: Vector API (Fourth Incubator)<\/a><\/h2>\n","innerContent":["\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/426\">426: Vector API (Fourth Incubator)<\/a><\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Co\u015b nie mo\u017ce wyj\u015b\u0107 z inkubacji to Vector API... To ju\u017c czwarty raz, kiedy dostajemy jego przebudow\u0119, co tylko udowadnia, za jak skomplikowany temat wzi\u0119li si\u0119 tw\u00f3rcy JVMa. Wsp\u00f3\u0142czesne procesory zapewniaj\u0105 mo\u017cliwo\u015b\u0107 r\u00f3wnoleg\u0142ego przetwarzania danych, ale miedzy poszczeg\u00f3lnymi implementacjami istniej\u0105 znacz\u0105ce r\u00f3\u017cnice. Vector API zapewni\u0107 ma specjaln\u0105, wsp\u00f3ln\u0105 warstw\u0119 abstrakcji. Jedn\u0105 z wa\u017cnych nowo\u015bci jest u\u017cycie nowo\u015bci wprowadzonych w dopiero co opisywanym <strong>JEP 424<\/strong>, jako, \u017ce wreszcie doczekali\u015bmy si\u0119 oficjalnego preview. <\/p>\n","innerContent":["\n<p>Co\u015b nie mo\u017ce wyj\u015b\u0107 z inkubacji to Vector API... To ju\u017c czwarty raz, kiedy dostajemy jego przebudow\u0119, co tylko udowadnia, za jak skomplikowany temat wzi\u0119li si\u0119 tw\u00f3rcy JVMa. Wsp\u00f3\u0142czesne procesory zapewniaj\u0105 mo\u017cliwo\u015b\u0107 r\u00f3wnoleg\u0142ego przetwarzania danych, ale miedzy poszczeg\u00f3lnymi implementacjami istniej\u0105 znacz\u0105ce r\u00f3\u017cnice. Vector API zapewni\u0107 ma specjaln\u0105, wsp\u00f3ln\u0105 warstw\u0119 abstrakcji. Jedn\u0105 z wa\u017cnych nowo\u015bci jest u\u017cycie nowo\u015bci wprowadzonych w dopiero co opisywanym <strong>JEP 424<\/strong>, jako, \u017ce wreszcie doczekali\u015bmy si\u0119 oficjalnego preview. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u017celi chcecie dowiedzie\u0107 si\u0119 wi\u0119cej o Vector API i motywacjach za nim stoj\u0105cych, zamiast lektury JEP-a polecam <a href=\"https:\/\/www.youtube.com\/watch?v=HARDCbSog0c\">odcinek podcastu Inside Java<\/a>, w kt\u00f3rym autorzy ca\u0142o\u015bci (John Rose i Paul Sandoz) opowiadaj\u0105 o motywacjach stoj\u0105cych za projektem, pozwalaj\u0105c lepiej zrozumie\u0107 zar\u00f3wno dlaczego jest tak istotny, jak i dlaczego jego implementacja jest tak wyboista i d\u0142uga.<\/p>\n","innerContent":["\n<p>Je\u017celi chcecie dowiedzie\u0107 si\u0119 wi\u0119cej o Vector API i motywacjach za nim stoj\u0105cych, zamiast lektury JEP-a polecam <a href=\"https:\/\/www.youtube.com\/watch?v=HARDCbSog0c\">odcinek podcastu Inside Java<\/a>, w kt\u00f3rym autorzy ca\u0142o\u015bci (John Rose i Paul Sandoz) opowiadaj\u0105 o motywacjach stoj\u0105cych za projektem, pozwalaj\u0105c lepiej zrozumie\u0107 zar\u00f3wno dlaczego jest tak istotny, jak i dlaczego jego implementacja jest tak wyboista i d\u0142uga.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/427\">427: Pattern Matching for switch (Third Preview)<\/a><\/h2>\n","innerContent":["\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/427\">427: Pattern Matching for switch (Third Preview)<\/a><\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Tutaj (podobnie jak w wypadku Vector API) ochy i achy troch\u0119 mniejsze, bo to ju\u017c trzecia iteracja Pattern Matchingu dla javowych switchy. Zmiany wydaj\u0105 si\u0119 by\u0107 na plus \u2013 ca\u0142kiem podoba mi si\u0119 u\u017cycie s\u0142\u00f3wka when dla operacji warunkowych (cho\u0107 przyznam, \u017ce b\u0119dzie mi si\u0119 nieco gryz\u0142o z u\u017cyciem Kotlinowym). Czekam na switche bardzo i mam nadzieje, \u017ce to jest ostatnie preview i ju\u017c nied\u0142ugo doczekamy si\u0119 wersji stabilnej. A je\u015bli chcecie wi\u0119cej i nie lubicie formatu JEP\u00f3w, polecam kolejne wideo-wprowadzenie od Oracle, prowadzone przez Venkata Subramaniana, cz\u0119stego (i bardzo popularnego) go\u015bcia konferencji.<\/p>\n","innerContent":["\n<p>Tutaj (podobnie jak w wypadku Vector API) ochy i achy troch\u0119 mniejsze, bo to ju\u017c trzecia iteracja Pattern Matchingu dla javowych switchy. Zmiany wydaj\u0105 si\u0119 by\u0107 na plus \u2013 ca\u0142kiem podoba mi si\u0119 u\u017cycie s\u0142\u00f3wka when dla operacji warunkowych (cho\u0107 przyznam, \u017ce b\u0119dzie mi si\u0119 nieco gryz\u0142o z u\u017cyciem Kotlinowym). Czekam na switche bardzo i mam nadzieje, \u017ce to jest ostatnie preview i ju\u017c nied\u0142ugo doczekamy si\u0119 wersji stabilnej. A je\u015bli chcecie wi\u0119cej i nie lubicie formatu JEP\u00f3w, polecam kolejne wideo-wprowadzenie od Oracle, prowadzone przez Venkata Subramaniana, cz\u0119stego (i bardzo popularnego) go\u015bcia konferencji.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/embed","attrs":{"url":"https:\/\/www.youtube.com\/watch?v=lBOwPYvdvLQ","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=lBOwPYvdvLQ\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=lBOwPYvdvLQ\n<\/div><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/405\">405: Record Patterns (Preview)<\/a><\/h2>\n","innerContent":["\n<h2><a href=\"https:\/\/openjdk.org\/jeps\/405\">405: Record Patterns (Preview)<\/a><\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ostatnim z nowych JEP\u00f3w jest pierwsza wersja Preview pattern matchingu r\u00f3wnie\u017c dla Rekord\u00f3w. Ma on pozwoli\u0107 na \u0142atw\u0105 destrukturyzacje struktury i (przynajmniej z mojej perspektywy) stanowi\u0107 pierwsz\u0105 prawdziw\u0105 realn\u0105 przewag\u0119 tej struktury w stosunku do POJO generowanych przez IDE. Okazuje si\u0119, \u017ce dzi\u0119ki ustandaryzowanemu sposobowi w jaki rekordy s\u0105 tworzone i przechowywane na JVM, tw\u00f3rcy JDK maj\u0105 otwart\u0105 drog\u0119 na wprowadzenie nowych funkcjonalno\u015bci. Pierwsz\u0105 z nich (i na pewno nie ostatni\u0105 - zach\u0119cam lektur\u0119 dokumentu <a href=\"https:\/\/github.com\/openjdk\/amber-docs\/blob\/master\/eg-drafts\/reconstruction-records-and-classes.md\"><strong>Functional Transformation of Immutable Objects<\/strong><\/a>, kt\u00f3rym kiedy\u015b podzieli\u0142 si\u0119 Brian Goetz) jest w\u0142a\u015bnie wprowadzenie specjalnej sk\u0142adni dla pattern matchingu dedykowanej dla tej struktury.<\/p>\n","innerContent":["\n<p>Ostatnim z nowych JEP\u00f3w jest pierwsza wersja Preview pattern matchingu r\u00f3wnie\u017c dla Rekord\u00f3w. Ma on pozwoli\u0107 na \u0142atw\u0105 destrukturyzacje struktury i (przynajmniej z mojej perspektywy) stanowi\u0107 pierwsz\u0105 prawdziw\u0105 realn\u0105 przewag\u0119 tej struktury w stosunku do POJO generowanych przez IDE. Okazuje si\u0119, \u017ce dzi\u0119ki ustandaryzowanemu sposobowi w jaki rekordy s\u0105 tworzone i przechowywane na JVM, tw\u00f3rcy JDK maj\u0105 otwart\u0105 drog\u0119 na wprowadzenie nowych funkcjonalno\u015bci. Pierwsz\u0105 z nich (i na pewno nie ostatni\u0105 - zach\u0119cam lektur\u0119 dokumentu <a href=\"https:\/\/github.com\/openjdk\/amber-docs\/blob\/master\/eg-drafts\/reconstruction-records-and-classes.md\"><strong>Functional Transformation of Immutable Objects<\/strong><\/a>, kt\u00f3rym kiedy\u015b podzieli\u0142 si\u0119 Brian Goetz) jest w\u0142a\u015bnie wprowadzenie specjalnej sk\u0142adni dla pattern matchingu dedykowanej dla tej struktury.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u017celi jeste\u015bcie ciekawi, jak wygl\u0105da sk\u0142adnia, poni\u017cej znajdziecie <\/p>\n","innerContent":["\n<p>Je\u017celi jeste\u015bcie ciekawi, jak wygl\u0105da sk\u0142adnia, poni\u017cej znajdziecie <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>record Person (String name, String address) {}\n\nif (obj instanceof Person(var name, var address)) {\n        println(name)\n        println(address)\n}<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>record Person (String name, String address) {}\n\nif (obj instanceof Person(var name, var address)) {\n        println(name)\n        println(address)\n}<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Record Patterns umo\u017cliwiaj\u0105 r\u00f3wnie\u017c warunkowe castowanie<\/p>\n","innerContent":["\n<p>Record Patterns umo\u017cliwiaj\u0105 r\u00f3wnie\u017c warunkowe castowanie<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>if (obj instanceof Person p) {\n   var name = p.name();\n   var address = p.address();\n}<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>if (obj instanceof Person p) {\n   var name = p.name();\n   var address = p.address();\n}<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Wewn\u0105trz bloku warunkowego mo\u017cemy w bezpieczny spos\u00f3b mo\u017cemy u\u017cywa\u0107 obiektu w taki spos\u00f3b, jakby ten zosta\u0142 poddany castingowi. Podejrzewa, \u017ce je\u015bli mieli\u015bcie do czynienia z Kotlinem, to ta struktura b\u0119dzie dla Was znajoma.<\/p>\n","innerContent":["\n<p>Wewn\u0105trz bloku warunkowego mo\u017cemy w bezpieczny spos\u00f3b mo\u017cemy u\u017cywa\u0107 obiektu w taki spos\u00f3b, jakby ten zosta\u0142 poddany castingowi. Podejrzewa, \u017ce je\u015bli mieli\u015bcie do czynienia z Kotlinem, to ta struktura b\u0119dzie dla Was znajoma.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Wi\u0119cej szczeg\u00f3\u0142 znajdziecie w JEPie, a je\u015bli chodzi o potencjalne przypadki u\u017cycia, bardzo dobre wprowadzenie znajdziecie w <a href=\"https:\/\/javaalmanac.io\/features\/recordpatterns\/\">Java Almanach<\/a><\/p>\n","innerContent":["\n<p>Wi\u0119cej szczeg\u00f3\u0142 znajdziecie w JEPie, a je\u015bli chodzi o potencjalne przypadki u\u017cycia, bardzo dobre wprowadzenie znajdziecie w <a href=\"https:\/\/javaalmanac.io\/features\/recordpatterns\/\">Java Almanach<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>Bonus: Project Lanai jako default<\/h2>\n","innerContent":["\n<h2>Bonus: Project Lanai jako default<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To jednak nie wszystko, czego mo\u017cna si\u0119 spodziewa\u0107 po nowym wydaniu. JDK 19 to tak\u017ce przepi\u0119cie si\u0119 Javy na nowy spos\u00f3b renderowania aplikacji Desktopowych na komputerach z systemem macOS \u2013 <a href=\"https:\/\/inside.java\/2022\/04\/27\/quality-heads-up\/\">OpenGL zosta\u0142 zast\u0105piony przez Metal API<\/a>. Jest to inicjatywa, kt\u00f3rej efekty trafi\u0142y do Javy jeszcze w wersji 17 w ramach projektu Lanai, a od nast\u0119pnej wersji JDK zosta\u0142y w ko\u0144cu w\u0142\u0105czone jako domy\u015blne.<\/p>\n","innerContent":["\n<p>To jednak nie wszystko, czego mo\u017cna si\u0119 spodziewa\u0107 po nowym wydaniu. JDK 19 to tak\u017ce przepi\u0119cie si\u0119 Javy na nowy spos\u00f3b renderowania aplikacji Desktopowych na komputerach z systemem macOS \u2013 <a href=\"https:\/\/inside.java\/2022\/04\/27\/quality-heads-up\/\">OpenGL zosta\u0142 zast\u0105piony przez Metal API<\/a>. Jest to inicjatywa, kt\u00f3rej efekty trafi\u0142y do Javy jeszcze w wersji 17 w ramach projektu Lanai, a od nast\u0119pnej wersji JDK zosta\u0142y w ko\u0144cu w\u0142\u0105czone jako domy\u015blne.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/separator","attrs":[],"innerBlocks":[],"innerHTML":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n","innerContent":["\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":10735,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/giphy-3.gif\" alt=\"\" class=\"wp-image-10735\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/giphy-3.gif\" alt=\"\" class=\"wp-image-10735\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ufff, sporo tego. A wiecie co najbardziej mnie \u201cjara\u201d? Jest spora szansa, \u017ce cho\u0107 cz\u0119\u015b\u0107 z powy\u017cszych Preview ju\u017c nied\u0142ugo stanie si\u0119 stabilne wraz z nast\u0119pnym LTS (JDK 21). Ju\u017c nie mog\u0119 si\u0119 doczeka\u0107, jakie b\u0119d\u0105 kolejne pomys\u0142y tych wszystkich utalentowanych in\u017cynier\u00f3w, kt\u00f3rzy po latach pracy nad Loomem czy Panam\u0105 b\u0119d\u0105 mogli zabra\u0107 si\u0119 za co\u015b nowego. Ciekawe jak b\u0119dzie wygl\u0105da\u0142o JDK 29.<\/p>\n","innerContent":["\n<p>Ufff, sporo tego. A wiecie co najbardziej mnie \u201cjara\u201d? Jest spora szansa, \u017ce cho\u0107 cz\u0119\u015b\u0107 z powy\u017cszych Preview ju\u017c nied\u0142ugo stanie si\u0119 stabilne wraz z nast\u0119pnym LTS (JDK 21). Ju\u017c nie mog\u0119 si\u0119 doczeka\u0107, jakie b\u0119d\u0105 kolejne pomys\u0142y tych wszystkich utalentowanych in\u017cynier\u00f3w, kt\u00f3rzy po latach pracy nad Loomem czy Panam\u0105 b\u0119d\u0105 mogli zabra\u0107 si\u0119 za co\u015b nowego. Ciekawe jak b\u0119dzie wygl\u0105da\u0142o JDK 29.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/separator","attrs":[],"innerBlocks":[],"innerHTML":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n","innerContent":["\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>PS: Wszystkich zapraszam na <a href=\"https:\/\/yavaconf.com\/\">YavaConf<\/a> w Warszawie, gdzie b\u0119d\u0119 mia\u0142 okazje zaprezentowa\u0107 sw\u00f3j nowy talk <strong>JVM Iceberg\u2026 we need to go deeper<\/strong>. Mo\u017cecie go potraktowa\u0107 jako live edycje tego Weekly \ud83e\udd1f<\/p>\n","innerContent":["\n<p>PS: Wszystkich zapraszam na <a href=\"https:\/\/yavaconf.com\/\">YavaConf<\/a> w Warszawie, gdzie b\u0119d\u0119 mia\u0142 okazje zaprezentowa\u0107 sw\u00f3j nowy talk <strong>JVM Iceberg\u2026 we need to go deeper<\/strong>. Mo\u017cecie go potraktowa\u0107 jako live edycje tego Weekly \ud83e\udd1f<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":10764,"width":600,"height":600,"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\/2022\/09\/image-24.png\" alt=\"\" class=\"wp-image-10764\" width=\"600\" height=\"600\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/09\/image-24.png\" alt=\"\" class=\"wp-image-10764\" width=\"600\" height=\"600\"\/><\/figure>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10711","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=10711"}],"version-history":[{"count":13,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10711\/revisions"}],"predecessor-version":[{"id":10770,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10711\/revisions\/10770"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/10739"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}