{"id":11209,"date":"2022-10-12T10:56:20","date_gmt":"2022-10-12T08:56:20","guid":{"rendered":"https:\/\/vived.io\/?p=11209"},"modified":"2022-10-12T15:49:52","modified_gmt":"2022-10-12T13:49:52","slug":"wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/","title":{"rendered":"Wysyp nowych JEP\u00f3w: Templating, kolekcje, Project Liliput i inne &#8211; JVM Weekly 108"},"content":{"rendered":"\n<h2 id=\"1-wysyp-nowych-jepow-spring-templating-kolekcje-project-liliput-i-inne\" data-num=1>1. Wysyp nowych JEP\u00f3w &#8211; Spring Templating, kolekcje, Project Liliput i inne<\/h2>\n\n\n\n<p>Jeste\u015bmy do\u015b\u0107 \u015bwie\u017co po premierze nowego JDK, dlatego te\u017c do\u015b\u0107 klasycznie wchodzimy w okres wi\u0119kszego dynamizmu publikacji nowych JEP-\u00f3w. W ostatnich tygodniach pojawi\u0142o si\u0119 par\u0119 ciekawych, kt\u00f3rym teraz si\u0119 przygl\u0105dniemy.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Nieca\u0142y miesi\u0105c temu <a href=\"https:\/\/vived.substack.com\/p\/what-does-the-future-hold-for-project\">opowiada\u0142em o wymianach mailowych dotycz\u0105cych projektu Amber<\/a>, a ju\u017c jeste\u015bmy w stanie zobaczy\u0107 ich pierwsze efekty. Ot\u00f3\u017c zar\u00f3wno <a href=\"https:\/\/bugs.openjdk.org\/browse\/JDK-8294349\">nienazwane lokalne zmienne<\/a>, jak i <a href=\"https:\/\/openjdk.org\/jeps\/8294078\">Pattern Matching dla Rekord\u00f3w<\/a> doczeka\u0142y si\u0119 swoich w\u0142asnych JEP-\u00f3w w formie Draft. W por\u00f3wnaniu do wcze\u015bniejszych, nieco chaotycznych z perspektywy zewn\u0119trznego czytelnika dyskusji mailingowych, zainteresowani s\u0105 w stanie teraz zapozna\u0107 si\u0119 z bardziej wykrystalizowan\u0105, skondensowan\u0105 propozycj\u0105. <\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Kandydackich JEP-\u00f3w, kt\u00f3ry tym razem mo\u017ce zainteresowa\u0107 szerok\u0105 publik\u0119 jest <a href=\"https:\/\/openjdk.org\/jeps\/431\"><strong>JEP 431: Sequenced Collections<\/strong><\/a>. Jak sama nazwa wskazuje, jest to propozycja wsp\u00f3lnego interfejsu dla kolekcji zachowuj\u0105cych kolejno\u015b\u0107 znajduj\u0105cych si\u0119 w nich element\u00f3w. Ch\u0119\u0107 wsp\u00f3lnej abstrakcji wynika z tego, \u017ce w tym momencie w zasadzie ka\u017cda ze znajduj\u0105cych si\u0119 w JDK kolekcji zachowuje si\u0119 w tej materii nieco inaczej. Nowy interfejs ma zapewni\u0107 ustandaryzowany spos\u00f3b wybierania pierwszego i ostatniego elementu kolekcji.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void addFirst(E)\nvoid addLast(E)\nE getFirst()\nE getLast()\nE removeFirst()\nE removeLast()<\/code><\/pre>\n\n\n\n<p>Rozbudowane maj\u0105 by\u0107 te\u017c interfejsy poszczeg\u00f3lnych kolekcji, a ka\u017cda z powy\u017cszych metod doczeka\u0107 ma si\u0119 defaultowej implementacji. Jest to wi\u0119c kolejny przyk\u0142ad, jak wprowadzone jeszcze w JDK 8 mechanizmy u\u0142atwiaj\u0105 ewolucj\u0119 API biblioteki standardowej<\/p>\n\n\n\n<p>Kocham fakt, \u017ce w summary ca\u0142o\u015bci znalaz\u0142 si\u0119 cytat z Kierkegaard  <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>&#8222;Life can only be understood backwards; but it must be lived forwards.&#8221; <\/p><\/blockquote>\n\n\n\n<p>Stuart Marks, tw\u00f3rca JEP-a musi mie\u0107 zaci\u0105gi do filozofii \ud83d\ude09 A \u017ce te\u017c uwielbiam du\u0144czyka, to te\u017c mi si\u0119 zrobi\u0142o od razu ch\u0142odno na serduszku.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"463\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/image-13.png\" alt=\"\" class=\"wp-image-11223\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/image-13.png 700w, https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/image-13-300x198.png 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><figcaption>Inny cytat mistrza<\/figcaption><\/figure><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Kolejnym JEP-em, nad kt\u00f3rym trwaj\u0105 obecnie intensywne prace jest <strong><a href=\"https:\/\/openjdk.org\/jeps\/430\">JEP 430: String Templates (Preview)<\/a><\/strong>. Zaskakuj\u0105ce jest, jak do\u015b\u0107 p\u00f3\u017ano w swoim cyklu \u017cycia (j\u0119zyk ma w ko\u0144cu ju\u017c troch\u0119 lat na karku) tw\u00f3rcy Javy zdecydowali si\u0119 zabra\u0107 za u\u0142atwienie programistom pracy z d\u0142u\u017cszymi fragmentami tekstu, czyli na funkcjonalno\u015b\u0107 istniej\u0105c\u0105 w zasadzie w chyba ka\u017cdym innym j\u0119zyku JVM-owym. Po d\u0142ugich latach dopieszczania blok\u00f3w tekstu, kolejnym krokiem jest ich udynamicznienie. Tw\u00f3rcy proponuj\u0105 nast\u0119puj\u0105cy syntax:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String name = &quot;Joan&quot;;\nString info = STR.&quot;My name is \\{name}&quot;;\nassert info.equals(&quot;My name is Joan&quot;);   \/\/ true<\/code><\/pre>\n\n\n\n<p>W kt\u00f3rym STR to tak zwany <code>template processor<\/code>, automatycznie importowany do ka\u017cdego pliku Javowego .<\/p>\n\n\n\n<p>Bardzo polecam lektur\u0119 oryginalnego JEP-a. W \u015brodku znajdziecie bowiem do\u015b\u0107 gruntowne por\u00f3wnanie syntax&#8217;u templatingu (i \u0142\u0105cz\u0105cej si\u0119 z nim interpolacji) w innych j\u0119zyk\u00f3w, a tak\u017ce sensownie wy\u0142o\u017cone argumenty za i przeciw poszczeg\u00f3lnymi podej\u015bciami. Na szali po\u0142o\u017cone zostaj\u0105 r\u00f3wnie\u017c rozwi\u0105zania ju\u017c w JDK istniej\u0105ce. Og\u00f3lnie ca\u0142o\u015b\u0107 jest dla mnie kolejnym przyk\u0142adem tego, jak &#8222;oczywiste&#8221; na pierwszy rzut oka rozwi\u0105zania wcale nie s\u0105 takie oczywiste. I to w\u0142a\u015bnie zwykle ta lekcja stanowi dla mnie o warto\u015bci lektury JEP-\u00f3w.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>A na koniec &#8211; Project Liliput, o kt\u00f3rym by\u0142o cicho jako\u015b od maja i wczoraj rano wzi\u0105\u0142 mnie z zaskoczenia nowym JEP-em: <strong><a href=\"https:\/\/openjdk.org\/jeps\/8294992\">64 bit object headers<\/a><\/strong>. celem Liliputa jest zmniejszenie rozmiaru nag\u0142\u00f3wk\u00f3w obiekt\u00f3w Java w maszynie JVM Hotspot ze 128 bit\u00f3w do 64 bit\u00f3w lub mniej. W tej chwili bowiem ka\u017cdy obiekt, niezale\u017cnie czy ma\u0142y, czy du\u017cy, posiada sta\u0142y narzut w teorii 128-bit\u00f3w, a w praktyce (przy w\u0142\u0105czonej kompresji nag\u0142\u00f3wk\u00f3w) 96-bit\u00f3w. W ramach tej przestrzeni znajduj\u0105 si\u0119 wska\u017aniki do obiektu, jego hashcode, dane zwi\u0105zane z Garbage Collectorami czy te\u017c lockami. 128-bit\u00f3w nie wydaje si\u0119 du\u017cym narzutem pami\u0119ci, nale\u017cy jednak pami\u0119ta\u0107, \u017ce m\u00f3wimy tutaj o nag\u0142\u00f3wku, kt\u00f3ry dok\u0142adany jest do ka\u017cdego jednego obiektu. W wielu zastosowaniach np. Gdy tworzone jest wiele malutkich obiekt\u00f3w (tw\u00f3rcy powo\u0142uj\u0105 si\u0119 np. na machin\u0119 learning), ten narzut staje si\u0119 bardzo istotny, st\u0105d prace nad Liliputem. Tw\u00f3rcom uda\u0142o si\u0119 w tej chwili uzyska\u0107 64-bitowe nag\u0142\u00f3wki, kosztem zmniejszenia mo\u017cliwego poziomu skomplikowania hashcodu i kilku innych optymalizacji. Wspomniany JEP zawiera szczeg\u00f3\u0142y, kt\u00f3re dok\u0142adnie fragmenty uleg\u0142y redukcji i jakie implikacje zmiany mog\u0105 mie\u0107 dla przysz\u0142ego rozwoju min. Valhalli.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"281\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/giphy-2.gif\" alt=\"\" class=\"wp-image-11212\"\/><figcaption>Bo grzebanie w internalach JVM to jednak troch\u0119 Jenga<\/figcaption><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/openjdk.org\/jeps\/430\">JEP 430: String Templates (Preview)<\/a><\/li><li><a href=\"https:\/\/openjdk.org\/jeps\/431\">JEP 431: Sequenced Collections<\/a><\/li><li><a href=\"https:\/\/bugs.openjdk.org\/browse\/JDK-8294349\">Unnamed local variables and patterns<\/a><\/li><li><a href=\"https:\/\/openjdk.org\/jeps\/8294078\">JEP draft: Record Patterns (Second Preview)<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"2-spring-eksperymentuje-z-virtualnymi-watkami-spozni-sie-z-modulami\" data-num=2>2. Spring eksperymentuje z Virtualnymi W\u0105tkami, sp\u00f3\u017ani si\u0119 z modu\u0142ami.<\/h2>\n\n\n\n<p>W zesz\u0142ym tygodniu, w ramach konferencji JAX London, odby\u0142a si\u0119 sesja dotycz\u0105ca zbli\u017caj\u0105cej si\u0119 wielkimi krokami premiery nowego Springa <strong><a href=\"https:\/\/jaxlondon.com\/java-core-jvm-languages\/spring-boot-3-and-spring-framework-6-a-new-generation\">Spring Boot 3 and Spring Framework 6 \u2013 a new generation<\/a><\/strong>. Niestety, nagranie nie jest dost\u0119pne w sieci, ale <a href=\"https:\/\/www.infoq.com\/news\/2022\/10\/spring-boot-3-jax-london\/\">Infoq podzieli\u0142o si\u0119 tym, co rzeczona sesja zawiera\u0142a<\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"564\" height=\"478\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/image-12.png\" alt=\"\" class=\"wp-image-11220\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/image-12.png 564w, https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/image-12-300x254.png 300w\" sizes=\"auto, (max-width: 564px) 100vw, 564px\" \/><figcaption>Tak\u017ce teraz ja, troch\u0119 g\u0142uchym telefonem, relacjonuje dalej.<\/figcaption><\/figure><\/div>\n\n\n<p>Z pewno\u015bci\u0105 dobr\u0105 wiadomo\u015bci\u0105 jest to, \u017ce dotrzymany ma by\u0107 termin obu wyda\u0144, i nowych edycji mo\u017cemy spodziewa\u0107 si\u0119 ko\u0144c\u00f3wk\u0105 listopada, wi\u0119c ju\u017c ca\u0142kiem nied\u0142ugo. Nie b\u0119dzie to jednak tak bogate wydanie, jak zapowiada\u0142o si\u0119 przy pierwszych zapowiedziach &#8211; okazuje si\u0119 bowiem, \u017ce d\u0142ugo oczekiwane wsparcie JPMSa, systemu modu\u0142\u00f3w Javy, nie b\u0119dzie gotowe na premier\u0119. Jak przyznaj\u0105 tw\u00f3rcy, mo\u017cna si\u0119 spodziewa\u0107 jego pojawienia w p\u00f3\u017aniejszych wersjach, ale pierwsza wersja Spring Framework 6 skupia si\u0119 szczeg\u00f3lnie na wsparciu kompilacji Ahead-of-Time i GraalVM, a modu\u0142y utrudnia\u0142yby ten proces, komplikuj\u0105c tak zwan\u0105 &#8222;analiz\u0119 osi\u0105galno\u015bci&#8221;. Nale\u017cy bowiem pami\u0119ta\u0107, \u017ce w odr\u00f3\u017cnieniu od nowych graczy na rynku framework\u00f3w jak Quarkus, Helidon czy Micronaut, Spring bardzo, bardzo mocno opiera si\u0119 na Reflection API. Dla niego wi\u0119c proces wsparcia dla GraalVM, kt\u00f3ry refleksji nie wspiera jest wi\u0119c znacznie trudniejszy.<\/p>\n\n\n\n<p>St\u0105d te\u017c modu\u0142y zesz\u0142y na dalszy plan, tw\u00f3rcy jasno bowiem pisz\u0105, \u017ce licz\u0105 tutaj na Project Leyden, maj\u0105cy ustandaryzowa\u0107 tworzenie kompilacji AoT na JVM. Jako \u017ce jest to cz\u0119\u015b\u0107 JDK, musi bra\u0107 JPMSa pod uwag\u0119, co powinno sprawi\u0107, \u017ce praca programist\u00f3w zewn\u0119trznych w tym aspekcie b\u0119dzie \u0142atwiejsza. Na ten moment Spring wybiera jednak wsparcie Natywnych Obraz\u00f3w.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"400\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/kid-jenga-fail-1.gif\" alt=\"\" class=\"wp-image-11214\"\/><figcaption>Jak \u017cem rzek\u0142 &#8211; Jenga.<\/figcaption><\/figure><\/div>\n\n\n<p>Kolejn\u0105 rzecz\u0105, kt\u00f3rej tw\u00f3rcy Springa si\u0119 przygl\u0105daj\u0105, jest rozw\u00f3j wirtualnych w\u0105tk\u00f3w. We wtorek pojawi\u0142a si\u0119 do\u015b\u0107 obszerna publikacja, kt\u00f3ra <a href=\"https:\/\/spring.io\/blog\/2022\/10\/11\/embracing-virtual-threads\">stanowi chyba pierwsze oficjalne stanowisko Springa w tej kwestii<\/a>. Ponownie d\u0142ugie dziedzictwo frameworki k\u0142adzie si\u0119 tutaj cieniem &#8211; framework posiada du\u017ce ilo\u015bci blok\u00f3w <code>synchronized<\/code>, co cho\u0107 samo w sobie nie stanowi blokera, to jednak ca\u0142y proces troch\u0119 komplikuje. Tw\u00f3rcy zdaj\u0105 sobie z tego jednak spraw\u0119 i analizuj\u0105, kt\u00f3rymi fragmentami musz\u0105 zaj\u0105\u0107 si\u0119 w pierwszej kolejno\u015bci i eksperymentuj\u0105 z dostarczonymi przez JDK metodami. IMHO jako spo\u0142eczno\u015b\u0107 powinno nas to podej\u015bcie cieszy\u0107. Mi\u0142o, \u017ce Springowi zale\u017cy na tym, aby realnie co\u015b na tych wirtualnych w\u0105tkach zyska\u0107, a nie tylko odhaczy\u0107 sobie kolejny &#8222;rewolucyjny&#8221; feature. Ponownie, nowi gracze maj\u0105 \u0142atwiej ni\u017c wieloletni gigant.<\/p>\n\n\n\n<p>Og\u00f3lnie pokazuje to, \u017ce Annotation Procesory, na kt\u00f3rych bazuje Micronaut i koledzy, by\u0142y du\u017cym game-changerem dla przestrzeni framework\u00f3w. A nie ma chyba lepszego sposobu, \u017ceby przekona\u0107 si\u0119 jak du\u017cym, ni\u017c si\u0119 tym narz\u0119dziem pobawi\u0107 i&#8230; zbudowa\u0107 w\u0142asny framework. Zainteresowani? To mam dla Was na koniec co\u015b naprawd\u0119 fajnego. Jacek Dubikowski rozpocz\u0105\u0142 w tym tygodniu seri\u0119 <a href=\"https:\/\/medium.com\/virtuslab\/build-your-own-framework-using-an-annotation-processor-9824be4fb9a7\"><strong>Build your own framework using an annotation processor<\/strong><\/a> opisuj\u0105c\u0105, nomen omen, proces tworzenia od zera w\u0142asnego frameworku &#8211; takiego hobbystycznego, nie \u017ce zaraz wleci na produkcj\u0119 (Java to nie JavaScript). <a href=\"https:\/\/medium.com\/virtuslab\/build-your-own-framework-using-an-annotation-processor-9824be4fb9a7\">Pierwszy artyku\u0142<\/a> dotyczy implementacji Dependency Injection i krok po kroku przeprowadza przez mechanizmy takiego procesu, a tak\u017ce potencjalne problemy mog\u0105ce si\u0119 pojawi\u0107 po drodze. Polecam, zawsze uwa\u017ca\u0142em, \u017ce reverse engineering i &#8222;tinkering&#8221; to najlepsze narz\u0119dzia edukacyjne.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.infoq.com\/news\/2022\/10\/spring-boot-3-jax-london\/\">Spring Boot 3 Ships November 2022, Delays Java Module Support<\/a><\/li><li><a href=\"https:\/\/jaxlondon.com\/java-core-jvm-languages\/spring-boot-3-and-spring-framework-6-a-new-generation\">Spring Boot 3 and Spring Framework 6 \u2013 a new generation<\/a><\/li><li><a href=\"https:\/\/spring.io\/blog\/2022\/10\/11\/embracing-virtual-threads\">Embracing Virtual Threads<\/a><\/li><li><a href=\"https:\/\/medium.com\/virtuslab\/build-your-own-framework-using-an-annotation-processor-9824be4fb9a7\">Build your own framework using an annotation processor<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Dzisiaj mamy dwa g\u0142\u00f3wne tematy &#8211; mas\u0119 nowych JEP-\u00f3w (w tym wreszcie takie, kt\u00f3re mog\u0105 zainteresowa\u0107 szersze grono) oraz kilka zapowiedzi ze strony Springa &#8211; tw\u00f3rcy uchylili bowiem r\u0105bka tego, jak przebiegaj\u0105 prace nad modernizacj\u0105 frameworku. Dowiecie si\u0119 te\u017c, ile pracy jest ze zbudowaniem w\u0142asnego.<\/p>\n","protected":false},"author":10,"featured_media":11231,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[23],"tags":[],"class_list":["post-11209","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm"],"acf":{"estimated_reading_time":"6","feature_image_blog":{"ID":11234,"id":11234,"title":"FloatingPoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4","filename":"FloatingPoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4.png","filesize":4547964,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/FloatingPoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4.png","link":"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/floatingpoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4-2\/","alt":"","author":"10","description":"","caption":"","name":"floatingpoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4-2","status":"inherit","uploaded_to":11209,"date":"2022-10-12 08:54:42","modified":"2022-10-12 13:44:33","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/vived.io\/wp-includes\/images\/media\/default.png","width":1664,"height":2432,"sizes":{"thumbnail":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/FloatingPoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4-150x150.png","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/FloatingPoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4-205x300.png","medium-width":205,"medium-height":300,"medium_large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/FloatingPoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4-768x1122.png","medium_large-width":768,"medium_large-height":1122,"large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/FloatingPoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4-701x1024.png","large-width":701,"large-height":1024,"1536x1536":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/FloatingPoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4-1051x1536.png","1536x1536-width":1051,"1536x1536-height":1536,"2048x2048":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/FloatingPoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4.png","2048x2048-width":1401,"2048x2048-height":2048,"gform-image-choice-sm":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/FloatingPoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4.png","gform-image-choice-sm-width":205,"gform-image-choice-sm-height":300,"gform-image-choice-md":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/FloatingPoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4.png","gform-image-choice-md-width":274,"gform-image-choice-md-height":400,"gform-image-choice-lg":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/FloatingPoint_jenga_made_of_cheese_e4be6015-8c88-4288-8afd-d9ba769eadd4.png","gform-image-choice-lg-width":411,"gform-image-choice-lg-height":600}},"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/JVM-Weekly-1200x628_V2-1-2.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>Wysyp nowych JEP\u00f3w: Templating, kolekcje, Project Liliput i inne - JVM Weekly 108 - 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\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wysyp nowych JEP\u00f3w: Templating, kolekcje, Project Liliput i inne - JVM Weekly 108 - Vived\" \/>\n<meta property=\"og:description\" content=\"Dzisiaj mamy dwa g\u0142\u00f3wne tematy - mas\u0119 nowych JEP-\u00f3w (w tym wreszcie takie, kt\u00f3re mog\u0105 zainteresowa\u0107 szersze grono) oraz kilka zapowiedzi ze strony Springa - tw\u00f3rcy uchylili bowiem r\u0105bka tego, jak przebiegaj\u0105 prace nad modernizacj\u0105 frameworku. Dowiecie si\u0119 te\u017c, ile pracy jest ze zbudowaniem w\u0142asnego.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-12T08:56:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-10-12T13:49:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/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\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"Wysyp nowych JEP\u00f3w: Templating, kolekcje, Project Liliput i inne &#8211; JVM Weekly 108\",\"datePublished\":\"2022-10-12T08:56:20+00:00\",\"dateModified\":\"2022-10-12T13:49:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/\"},\"wordCount\":1370,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/JVM-Weekly-1200x628_V2-1-2.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/\",\"url\":\"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/\",\"name\":\"Wysyp nowych JEP\u00f3w: Templating, kolekcje, Project Liliput i inne - JVM Weekly 108 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/JVM-Weekly-1200x628_V2-1-2.png\",\"datePublished\":\"2022-10-12T08:56:20+00:00\",\"dateModified\":\"2022-10-12T13:49:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/JVM-Weekly-1200x628_V2-1-2.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/JVM-Weekly-1200x628_V2-1-2.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wysyp nowych JEP\u00f3w: Templating, kolekcje, Project Liliput i inne &#8211; JVM Weekly 108\"}]},{\"@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":"Wysyp nowych JEP\u00f3w: Templating, kolekcje, Project Liliput i inne - JVM Weekly 108 - 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\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/","og_locale":"pl_PL","og_type":"article","og_title":"Wysyp nowych JEP\u00f3w: Templating, kolekcje, Project Liliput i inne - JVM Weekly 108 - Vived","og_description":"Dzisiaj mamy dwa g\u0142\u00f3wne tematy - mas\u0119 nowych JEP-\u00f3w (w tym wreszcie takie, kt\u00f3re mog\u0105 zainteresowa\u0107 szersze grono) oraz kilka zapowiedzi ze strony Springa - tw\u00f3rcy uchylili bowiem r\u0105bka tego, jak przebiegaj\u0105 prace nad modernizacj\u0105 frameworku. Dowiecie si\u0119 te\u017c, ile pracy jest ze zbudowaniem w\u0142asnego.","og_url":"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/","og_site_name":"Vived","article_published_time":"2022-10-12T08:56:20+00:00","article_modified_time":"2022-10-12T13:49:52+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/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\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"Wysyp nowych JEP\u00f3w: Templating, kolekcje, Project Liliput i inne &#8211; JVM Weekly 108","datePublished":"2022-10-12T08:56:20+00:00","dateModified":"2022-10-12T13:49:52+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/"},"wordCount":1370,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/JVM-Weekly-1200x628_V2-1-2.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/","url":"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/","name":"Wysyp nowych JEP\u00f3w: Templating, kolekcje, Project Liliput i inne - JVM Weekly 108 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/JVM-Weekly-1200x628_V2-1-2.png","datePublished":"2022-10-12T08:56:20+00:00","dateModified":"2022-10-12T13:49:52+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/JVM-Weekly-1200x628_V2-1-2.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/JVM-Weekly-1200x628_V2-1-2.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/wysyp-nowych-jepow-templating-kolekcje-project-liliput-i-inne-jvm-weekly-108\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"Wysyp nowych JEP\u00f3w: Templating, kolekcje, Project Liliput i inne &#8211; JVM Weekly 108"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","caption":"Artur Skowro\u0144ski"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>1. Wysyp nowych JEP\u00f3w - Spring Templating, kolekcje, Project Liliput i inne<\/h2>\n","innerContent":["\n<h2>1. Wysyp nowych JEP\u00f3w - Spring Templating, kolekcje, Project Liliput i inne<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jeste\u015bmy do\u015b\u0107 \u015bwie\u017co po premierze nowego JDK, dlatego te\u017c do\u015b\u0107 klasycznie wchodzimy w okres wi\u0119kszego dynamizmu publikacji nowych JEP-\u00f3w. W ostatnich tygodniach pojawi\u0142o si\u0119 par\u0119 ciekawych, kt\u00f3rym teraz si\u0119 przygl\u0105dniemy.<\/p>\n","innerContent":["\n<p>Jeste\u015bmy do\u015b\u0107 \u015bwie\u017co po premierze nowego JDK, dlatego te\u017c do\u015b\u0107 klasycznie wchodzimy w okres wi\u0119kszego dynamizmu publikacji nowych JEP-\u00f3w. W ostatnich tygodniach pojawi\u0142o si\u0119 par\u0119 ciekawych, kt\u00f3rym teraz si\u0119 przygl\u0105dniemy.<\/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>Nieca\u0142y miesi\u0105c temu <a href=\"https:\/\/vived.substack.com\/p\/what-does-the-future-hold-for-project\">opowiada\u0142em o wymianach mailowych dotycz\u0105cych projektu Amber<\/a>, a ju\u017c jeste\u015bmy w stanie zobaczy\u0107 ich pierwsze efekty. Ot\u00f3\u017c zar\u00f3wno <a href=\"https:\/\/bugs.openjdk.org\/browse\/JDK-8294349\">nienazwane lokalne zmienne<\/a>, jak i <a href=\"https:\/\/openjdk.org\/jeps\/8294078\">Pattern Matching dla Rekord\u00f3w<\/a> doczeka\u0142y si\u0119 swoich w\u0142asnych JEP-\u00f3w w formie Draft. W por\u00f3wnaniu do wcze\u015bniejszych, nieco chaotycznych z perspektywy zewn\u0119trznego czytelnika dyskusji mailingowych, zainteresowani s\u0105 w stanie teraz zapozna\u0107 si\u0119 z bardziej wykrystalizowan\u0105, skondensowan\u0105 propozycj\u0105. <\/p>\n","innerContent":["\n<p>Nieca\u0142y miesi\u0105c temu <a href=\"https:\/\/vived.substack.com\/p\/what-does-the-future-hold-for-project\">opowiada\u0142em o wymianach mailowych dotycz\u0105cych projektu Amber<\/a>, a ju\u017c jeste\u015bmy w stanie zobaczy\u0107 ich pierwsze efekty. Ot\u00f3\u017c zar\u00f3wno <a href=\"https:\/\/bugs.openjdk.org\/browse\/JDK-8294349\">nienazwane lokalne zmienne<\/a>, jak i <a href=\"https:\/\/openjdk.org\/jeps\/8294078\">Pattern Matching dla Rekord\u00f3w<\/a> doczeka\u0142y si\u0119 swoich w\u0142asnych JEP-\u00f3w w formie Draft. W por\u00f3wnaniu do wcze\u015bniejszych, nieco chaotycznych z perspektywy zewn\u0119trznego czytelnika dyskusji mailingowych, zainteresowani s\u0105 w stanie teraz zapozna\u0107 si\u0119 z bardziej wykrystalizowan\u0105, skondensowan\u0105 propozycj\u0105. <\/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>Kandydackich JEP-\u00f3w, kt\u00f3ry tym razem mo\u017ce zainteresowa\u0107 szerok\u0105 publik\u0119 jest <a href=\"https:\/\/openjdk.org\/jeps\/431\"><strong>JEP 431: Sequenced Collections<\/strong><\/a>. Jak sama nazwa wskazuje, jest to propozycja wsp\u00f3lnego interfejsu dla kolekcji zachowuj\u0105cych kolejno\u015b\u0107 znajduj\u0105cych si\u0119 w nich element\u00f3w. Ch\u0119\u0107 wsp\u00f3lnej abstrakcji wynika z tego, \u017ce w tym momencie w zasadzie ka\u017cda ze znajduj\u0105cych si\u0119 w JDK kolekcji zachowuje si\u0119 w tej materii nieco inaczej. Nowy interfejs ma zapewni\u0107 ustandaryzowany spos\u00f3b wybierania pierwszego i ostatniego elementu kolekcji.<\/p>\n","innerContent":["\n<p>Kandydackich JEP-\u00f3w, kt\u00f3ry tym razem mo\u017ce zainteresowa\u0107 szerok\u0105 publik\u0119 jest <a href=\"https:\/\/openjdk.org\/jeps\/431\"><strong>JEP 431: Sequenced Collections<\/strong><\/a>. Jak sama nazwa wskazuje, jest to propozycja wsp\u00f3lnego interfejsu dla kolekcji zachowuj\u0105cych kolejno\u015b\u0107 znajduj\u0105cych si\u0119 w nich element\u00f3w. Ch\u0119\u0107 wsp\u00f3lnej abstrakcji wynika z tego, \u017ce w tym momencie w zasadzie ka\u017cda ze znajduj\u0105cych si\u0119 w JDK kolekcji zachowuje si\u0119 w tej materii nieco inaczej. Nowy interfejs ma zapewni\u0107 ustandaryzowany spos\u00f3b wybierania pierwszego i ostatniego elementu kolekcji.<\/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>void addFirst(E)\nvoid addLast(E)\nE getFirst()\nE getLast()\nE removeFirst()\nE removeLast()<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>void addFirst(E)\nvoid addLast(E)\nE getFirst()\nE getLast()\nE removeFirst()\nE removeLast()<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Rozbudowane maj\u0105 by\u0107 te\u017c interfejsy poszczeg\u00f3lnych kolekcji, a ka\u017cda z powy\u017cszych metod doczeka\u0107 ma si\u0119 defaultowej implementacji. Jest to wi\u0119c kolejny przyk\u0142ad, jak wprowadzone jeszcze w JDK 8 mechanizmy u\u0142atwiaj\u0105 ewolucj\u0119 API biblioteki standardowej<\/p>\n","innerContent":["\n<p>Rozbudowane maj\u0105 by\u0107 te\u017c interfejsy poszczeg\u00f3lnych kolekcji, a ka\u017cda z powy\u017cszych metod doczeka\u0107 ma si\u0119 defaultowej implementacji. Jest to wi\u0119c kolejny przyk\u0142ad, jak wprowadzone jeszcze w JDK 8 mechanizmy u\u0142atwiaj\u0105 ewolucj\u0119 API biblioteki standardowej<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Kocham fakt, \u017ce w summary ca\u0142o\u015bci znalaz\u0142 si\u0119 cytat z Kierkegaard  <\/p>\n","innerContent":["\n<p>Kocham fakt, \u017ce w summary ca\u0142o\u015bci znalaz\u0142 si\u0119 cytat z Kierkegaard  <\/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>\"Life can only be understood backwards; but it must be lived forwards.\" <\/p><\/blockquote>\n","innerContent":["\n<blockquote class=\"wp-block-quote\"><p>\"Life can only be understood backwards; but it must be lived forwards.\" <\/p><\/blockquote>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Stuart Marks, tw\u00f3rca JEP-a musi mie\u0107 zaci\u0105gi do filozofii \ud83d\ude09 A \u017ce te\u017c uwielbiam du\u0144czyka, to te\u017c mi si\u0119 zrobi\u0142o od razu ch\u0142odno na serduszku.<\/p>\n","innerContent":["\n<p>Stuart Marks, tw\u00f3rca JEP-a musi mie\u0107 zaci\u0105gi do filozofii \ud83d\ude09 A \u017ce te\u017c uwielbiam du\u0144czyka, to te\u017c mi si\u0119 zrobi\u0142o od razu ch\u0142odno na serduszku.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":11223,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/image-13.png\" alt=\"\" class=\"wp-image-11223\"\/><figcaption>Inny cytat mistrza<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/image-13.png\" alt=\"\" class=\"wp-image-11223\"\/><figcaption>Inny cytat mistrza<\/figcaption><\/figure>\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>Kolejnym JEP-em, nad kt\u00f3rym trwaj\u0105 obecnie intensywne prace jest <strong><a href=\"https:\/\/openjdk.org\/jeps\/430\">JEP 430: String Templates (Preview)<\/a><\/strong>. Zaskakuj\u0105ce jest, jak do\u015b\u0107 p\u00f3\u017ano w swoim cyklu \u017cycia (j\u0119zyk ma w ko\u0144cu ju\u017c troch\u0119 lat na karku) tw\u00f3rcy Javy zdecydowali si\u0119 zabra\u0107 za u\u0142atwienie programistom pracy z d\u0142u\u017cszymi fragmentami tekstu, czyli na funkcjonalno\u015b\u0107 istniej\u0105c\u0105 w zasadzie w chyba ka\u017cdym innym j\u0119zyku JVM-owym. Po d\u0142ugich latach dopieszczania blok\u00f3w tekstu, kolejnym krokiem jest ich udynamicznienie. Tw\u00f3rcy proponuj\u0105 nast\u0119puj\u0105cy syntax:<\/p>\n","innerContent":["\n<p>Kolejnym JEP-em, nad kt\u00f3rym trwaj\u0105 obecnie intensywne prace jest <strong><a href=\"https:\/\/openjdk.org\/jeps\/430\">JEP 430: String Templates (Preview)<\/a><\/strong>. Zaskakuj\u0105ce jest, jak do\u015b\u0107 p\u00f3\u017ano w swoim cyklu \u017cycia (j\u0119zyk ma w ko\u0144cu ju\u017c troch\u0119 lat na karku) tw\u00f3rcy Javy zdecydowali si\u0119 zabra\u0107 za u\u0142atwienie programistom pracy z d\u0142u\u017cszymi fragmentami tekstu, czyli na funkcjonalno\u015b\u0107 istniej\u0105c\u0105 w zasadzie w chyba ka\u017cdym innym j\u0119zyku JVM-owym. Po d\u0142ugich latach dopieszczania blok\u00f3w tekstu, kolejnym krokiem jest ich udynamicznienie. Tw\u00f3rcy proponuj\u0105 nast\u0119puj\u0105cy syntax:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>String name = \"Joan\";\nString info = STR.\"My name is \\{name}\";\nassert info.equals(\"My name is Joan\");   \/\/ true<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>String name = \"Joan\";\nString info = STR.\"My name is \\{name}\";\nassert info.equals(\"My name is Joan\");   \/\/ true<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W kt\u00f3rym STR to tak zwany <code>template processor<\/code>, automatycznie importowany do ka\u017cdego pliku Javowego .<\/p>\n","innerContent":["\n<p>W kt\u00f3rym STR to tak zwany <code>template processor<\/code>, automatycznie importowany do ka\u017cdego pliku Javowego .<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Bardzo polecam lektur\u0119 oryginalnego JEP-a. W \u015brodku znajdziecie bowiem do\u015b\u0107 gruntowne por\u00f3wnanie syntax'u templatingu (i \u0142\u0105cz\u0105cej si\u0119 z nim interpolacji) w innych j\u0119zyk\u00f3w, a tak\u017ce sensownie wy\u0142o\u017cone argumenty za i przeciw poszczeg\u00f3lnymi podej\u015bciami. Na szali po\u0142o\u017cone zostaj\u0105 r\u00f3wnie\u017c rozwi\u0105zania ju\u017c w JDK istniej\u0105ce. Og\u00f3lnie ca\u0142o\u015b\u0107 jest dla mnie kolejnym przyk\u0142adem tego, jak \"oczywiste\" na pierwszy rzut oka rozwi\u0105zania wcale nie s\u0105 takie oczywiste. I to w\u0142a\u015bnie zwykle ta lekcja stanowi dla mnie o warto\u015bci lektury JEP-\u00f3w.<\/p>\n","innerContent":["\n<p>Bardzo polecam lektur\u0119 oryginalnego JEP-a. W \u015brodku znajdziecie bowiem do\u015b\u0107 gruntowne por\u00f3wnanie syntax'u templatingu (i \u0142\u0105cz\u0105cej si\u0119 z nim interpolacji) w innych j\u0119zyk\u00f3w, a tak\u017ce sensownie wy\u0142o\u017cone argumenty za i przeciw poszczeg\u00f3lnymi podej\u015bciami. Na szali po\u0142o\u017cone zostaj\u0105 r\u00f3wnie\u017c rozwi\u0105zania ju\u017c w JDK istniej\u0105ce. Og\u00f3lnie ca\u0142o\u015b\u0107 jest dla mnie kolejnym przyk\u0142adem tego, jak \"oczywiste\" na pierwszy rzut oka rozwi\u0105zania wcale nie s\u0105 takie oczywiste. I to w\u0142a\u015bnie zwykle ta lekcja stanowi dla mnie o warto\u015bci lektury JEP-\u00f3w.<\/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>A na koniec - Project Liliput, o kt\u00f3rym by\u0142o cicho jako\u015b od maja i wczoraj rano wzi\u0105\u0142 mnie z zaskoczenia nowym JEP-em: <strong><a href=\"https:\/\/openjdk.org\/jeps\/8294992\">64 bit object headers<\/a><\/strong>. celem Liliputa jest zmniejszenie rozmiaru nag\u0142\u00f3wk\u00f3w obiekt\u00f3w Java w maszynie JVM Hotspot ze 128 bit\u00f3w do 64 bit\u00f3w lub mniej. W tej chwili bowiem ka\u017cdy obiekt, niezale\u017cnie czy ma\u0142y, czy du\u017cy, posiada sta\u0142y narzut w teorii 128-bit\u00f3w, a w praktyce (przy w\u0142\u0105czonej kompresji nag\u0142\u00f3wk\u00f3w) 96-bit\u00f3w. W ramach tej przestrzeni znajduj\u0105 si\u0119 wska\u017aniki do obiektu, jego hashcode, dane zwi\u0105zane z Garbage Collectorami czy te\u017c lockami. 128-bit\u00f3w nie wydaje si\u0119 du\u017cym narzutem pami\u0119ci, nale\u017cy jednak pami\u0119ta\u0107, \u017ce m\u00f3wimy tutaj o nag\u0142\u00f3wku, kt\u00f3ry dok\u0142adany jest do ka\u017cdego jednego obiektu. W wielu zastosowaniach np. Gdy tworzone jest wiele malutkich obiekt\u00f3w (tw\u00f3rcy powo\u0142uj\u0105 si\u0119 np. na machin\u0119 learning), ten narzut staje si\u0119 bardzo istotny, st\u0105d prace nad Liliputem. Tw\u00f3rcom uda\u0142o si\u0119 w tej chwili uzyska\u0107 64-bitowe nag\u0142\u00f3wki, kosztem zmniejszenia mo\u017cliwego poziomu skomplikowania hashcodu i kilku innych optymalizacji. Wspomniany JEP zawiera szczeg\u00f3\u0142y, kt\u00f3re dok\u0142adnie fragmenty uleg\u0142y redukcji i jakie implikacje zmiany mog\u0105 mie\u0107 dla przysz\u0142ego rozwoju min. Valhalli.<\/p>\n","innerContent":["\n<p>A na koniec - Project Liliput, o kt\u00f3rym by\u0142o cicho jako\u015b od maja i wczoraj rano wzi\u0105\u0142 mnie z zaskoczenia nowym JEP-em: <strong><a href=\"https:\/\/openjdk.org\/jeps\/8294992\">64 bit object headers<\/a><\/strong>. celem Liliputa jest zmniejszenie rozmiaru nag\u0142\u00f3wk\u00f3w obiekt\u00f3w Java w maszynie JVM Hotspot ze 128 bit\u00f3w do 64 bit\u00f3w lub mniej. W tej chwili bowiem ka\u017cdy obiekt, niezale\u017cnie czy ma\u0142y, czy du\u017cy, posiada sta\u0142y narzut w teorii 128-bit\u00f3w, a w praktyce (przy w\u0142\u0105czonej kompresji nag\u0142\u00f3wk\u00f3w) 96-bit\u00f3w. W ramach tej przestrzeni znajduj\u0105 si\u0119 wska\u017aniki do obiektu, jego hashcode, dane zwi\u0105zane z Garbage Collectorami czy te\u017c lockami. 128-bit\u00f3w nie wydaje si\u0119 du\u017cym narzutem pami\u0119ci, nale\u017cy jednak pami\u0119ta\u0107, \u017ce m\u00f3wimy tutaj o nag\u0142\u00f3wku, kt\u00f3ry dok\u0142adany jest do ka\u017cdego jednego obiektu. W wielu zastosowaniach np. Gdy tworzone jest wiele malutkich obiekt\u00f3w (tw\u00f3rcy powo\u0142uj\u0105 si\u0119 np. na machin\u0119 learning), ten narzut staje si\u0119 bardzo istotny, st\u0105d prace nad Liliputem. Tw\u00f3rcom uda\u0142o si\u0119 w tej chwili uzyska\u0107 64-bitowe nag\u0142\u00f3wki, kosztem zmniejszenia mo\u017cliwego poziomu skomplikowania hashcodu i kilku innych optymalizacji. Wspomniany JEP zawiera szczeg\u00f3\u0142y, kt\u00f3re dok\u0142adnie fragmenty uleg\u0142y redukcji i jakie implikacje zmiany mog\u0105 mie\u0107 dla przysz\u0142ego rozwoju min. Valhalli.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":11212,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/giphy-2.gif\" alt=\"\" class=\"wp-image-11212\"\/><figcaption>Bo grzebanie w internalach JVM to jednak troch\u0119 Jenga<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/giphy-2.gif\" alt=\"\" class=\"wp-image-11212\"\/><figcaption>Bo grzebanie w internalach JVM to jednak troch\u0119 Jenga<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/openjdk.org\/jeps\/430\">JEP 430: String Templates (Preview)<\/a><\/li><li><a href=\"https:\/\/openjdk.org\/jeps\/431\">JEP 431: Sequenced Collections<\/a><\/li><li><a href=\"https:\/\/bugs.openjdk.org\/browse\/JDK-8294349\">Unnamed local variables and patterns<\/a><\/li><li><a href=\"https:\/\/openjdk.org\/jeps\/8294078\">JEP draft: Record Patterns (Second Preview)<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/openjdk.org\/jeps\/430\">JEP 430: String Templates (Preview)<\/a><\/li><li><a href=\"https:\/\/openjdk.org\/jeps\/431\">JEP 431: Sequenced Collections<\/a><\/li><li><a href=\"https:\/\/bugs.openjdk.org\/browse\/JDK-8294349\">Unnamed local variables and patterns<\/a><\/li><li><a href=\"https:\/\/openjdk.org\/jeps\/8294078\">JEP draft: Record Patterns (Second Preview)<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. Spring eksperymentuje z Virtualnymi W\u0105tkami, sp\u00f3\u017ani si\u0119 z modu\u0142ami.<\/h2>\n","innerContent":["\n<h2>2. Spring eksperymentuje z Virtualnymi W\u0105tkami, sp\u00f3\u017ani si\u0119 z modu\u0142ami.<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W zesz\u0142ym tygodniu, w ramach konferencji JAX London, odby\u0142a si\u0119 sesja dotycz\u0105ca zbli\u017caj\u0105cej si\u0119 wielkimi krokami premiery nowego Springa <strong><a href=\"https:\/\/jaxlondon.com\/java-core-jvm-languages\/spring-boot-3-and-spring-framework-6-a-new-generation\">Spring Boot 3 and Spring Framework 6 \u2013 a new generation<\/a><\/strong>. Niestety, nagranie nie jest dost\u0119pne w sieci, ale <a href=\"https:\/\/www.infoq.com\/news\/2022\/10\/spring-boot-3-jax-london\/\">Infoq podzieli\u0142o si\u0119 tym, co rzeczona sesja zawiera\u0142a<\/a>.<\/p>\n","innerContent":["\n<p>W zesz\u0142ym tygodniu, w ramach konferencji JAX London, odby\u0142a si\u0119 sesja dotycz\u0105ca zbli\u017caj\u0105cej si\u0119 wielkimi krokami premiery nowego Springa <strong><a href=\"https:\/\/jaxlondon.com\/java-core-jvm-languages\/spring-boot-3-and-spring-framework-6-a-new-generation\">Spring Boot 3 and Spring Framework 6 \u2013 a new generation<\/a><\/strong>. Niestety, nagranie nie jest dost\u0119pne w sieci, ale <a href=\"https:\/\/www.infoq.com\/news\/2022\/10\/spring-boot-3-jax-london\/\">Infoq podzieli\u0142o si\u0119 tym, co rzeczona sesja zawiera\u0142a<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":11220,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/image-12.png\" alt=\"\" class=\"wp-image-11220\"\/><figcaption>Tak\u017ce teraz ja, troch\u0119 g\u0142uchym telefonem, relacjonuje dalej.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/image-12.png\" alt=\"\" class=\"wp-image-11220\"\/><figcaption>Tak\u017ce teraz ja, troch\u0119 g\u0142uchym telefonem, relacjonuje dalej.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Z pewno\u015bci\u0105 dobr\u0105 wiadomo\u015bci\u0105 jest to, \u017ce dotrzymany ma by\u0107 termin obu wyda\u0144, i nowych edycji mo\u017cemy spodziewa\u0107 si\u0119 ko\u0144c\u00f3wk\u0105 listopada, wi\u0119c ju\u017c ca\u0142kiem nied\u0142ugo. Nie b\u0119dzie to jednak tak bogate wydanie, jak zapowiada\u0142o si\u0119 przy pierwszych zapowiedziach - okazuje si\u0119 bowiem, \u017ce d\u0142ugo oczekiwane wsparcie JPMSa, systemu modu\u0142\u00f3w Javy, nie b\u0119dzie gotowe na premier\u0119. Jak przyznaj\u0105 tw\u00f3rcy, mo\u017cna si\u0119 spodziewa\u0107 jego pojawienia w p\u00f3\u017aniejszych wersjach, ale pierwsza wersja Spring Framework 6 skupia si\u0119 szczeg\u00f3lnie na wsparciu kompilacji Ahead-of-Time i GraalVM, a modu\u0142y utrudnia\u0142yby ten proces, komplikuj\u0105c tak zwan\u0105 \"analiz\u0119 osi\u0105galno\u015bci\". Nale\u017cy bowiem pami\u0119ta\u0107, \u017ce w odr\u00f3\u017cnieniu od nowych graczy na rynku framework\u00f3w jak Quarkus, Helidon czy Micronaut, Spring bardzo, bardzo mocno opiera si\u0119 na Reflection API. Dla niego wi\u0119c proces wsparcia dla GraalVM, kt\u00f3ry refleksji nie wspiera jest wi\u0119c znacznie trudniejszy.<\/p>\n","innerContent":["\n<p>Z pewno\u015bci\u0105 dobr\u0105 wiadomo\u015bci\u0105 jest to, \u017ce dotrzymany ma by\u0107 termin obu wyda\u0144, i nowych edycji mo\u017cemy spodziewa\u0107 si\u0119 ko\u0144c\u00f3wk\u0105 listopada, wi\u0119c ju\u017c ca\u0142kiem nied\u0142ugo. Nie b\u0119dzie to jednak tak bogate wydanie, jak zapowiada\u0142o si\u0119 przy pierwszych zapowiedziach - okazuje si\u0119 bowiem, \u017ce d\u0142ugo oczekiwane wsparcie JPMSa, systemu modu\u0142\u00f3w Javy, nie b\u0119dzie gotowe na premier\u0119. Jak przyznaj\u0105 tw\u00f3rcy, mo\u017cna si\u0119 spodziewa\u0107 jego pojawienia w p\u00f3\u017aniejszych wersjach, ale pierwsza wersja Spring Framework 6 skupia si\u0119 szczeg\u00f3lnie na wsparciu kompilacji Ahead-of-Time i GraalVM, a modu\u0142y utrudnia\u0142yby ten proces, komplikuj\u0105c tak zwan\u0105 \"analiz\u0119 osi\u0105galno\u015bci\". Nale\u017cy bowiem pami\u0119ta\u0107, \u017ce w odr\u00f3\u017cnieniu od nowych graczy na rynku framework\u00f3w jak Quarkus, Helidon czy Micronaut, Spring bardzo, bardzo mocno opiera si\u0119 na Reflection API. Dla niego wi\u0119c proces wsparcia dla GraalVM, kt\u00f3ry refleksji nie wspiera jest wi\u0119c znacznie trudniejszy.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>St\u0105d te\u017c modu\u0142y zesz\u0142y na dalszy plan, tw\u00f3rcy jasno bowiem pisz\u0105, \u017ce licz\u0105 tutaj na Project Leyden, maj\u0105cy ustandaryzowa\u0107 tworzenie kompilacji AoT na JVM. Jako \u017ce jest to cz\u0119\u015b\u0107 JDK, musi bra\u0107 JPMSa pod uwag\u0119, co powinno sprawi\u0107, \u017ce praca programist\u00f3w zewn\u0119trznych w tym aspekcie b\u0119dzie \u0142atwiejsza. Na ten moment Spring wybiera jednak wsparcie Natywnych Obraz\u00f3w.<\/p>\n","innerContent":["\n<p>St\u0105d te\u017c modu\u0142y zesz\u0142y na dalszy plan, tw\u00f3rcy jasno bowiem pisz\u0105, \u017ce licz\u0105 tutaj na Project Leyden, maj\u0105cy ustandaryzowa\u0107 tworzenie kompilacji AoT na JVM. Jako \u017ce jest to cz\u0119\u015b\u0107 JDK, musi bra\u0107 JPMSa pod uwag\u0119, co powinno sprawi\u0107, \u017ce praca programist\u00f3w zewn\u0119trznych w tym aspekcie b\u0119dzie \u0142atwiejsza. Na ten moment Spring wybiera jednak wsparcie Natywnych Obraz\u00f3w.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":11214,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/kid-jenga-fail-1.gif\" alt=\"\" class=\"wp-image-11214\"\/><figcaption>Jak \u017cem rzek\u0142 - Jenga.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/10\/kid-jenga-fail-1.gif\" alt=\"\" class=\"wp-image-11214\"\/><figcaption>Jak \u017cem rzek\u0142 - Jenga.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Kolejn\u0105 rzecz\u0105, kt\u00f3rej tw\u00f3rcy Springa si\u0119 przygl\u0105daj\u0105, jest rozw\u00f3j wirtualnych w\u0105tk\u00f3w. We wtorek pojawi\u0142a si\u0119 do\u015b\u0107 obszerna publikacja, kt\u00f3ra <a href=\"https:\/\/spring.io\/blog\/2022\/10\/11\/embracing-virtual-threads\">stanowi chyba pierwsze oficjalne stanowisko Springa w tej kwestii<\/a>. Ponownie d\u0142ugie dziedzictwo frameworki k\u0142adzie si\u0119 tutaj cieniem - framework posiada du\u017ce ilo\u015bci blok\u00f3w <code>synchronized<\/code>, co cho\u0107 samo w sobie nie stanowi blokera, to jednak ca\u0142y proces troch\u0119 komplikuje. Tw\u00f3rcy zdaj\u0105 sobie z tego jednak spraw\u0119 i analizuj\u0105, kt\u00f3rymi fragmentami musz\u0105 zaj\u0105\u0107 si\u0119 w pierwszej kolejno\u015bci i eksperymentuj\u0105 z dostarczonymi przez JDK metodami. IMHO jako spo\u0142eczno\u015b\u0107 powinno nas to podej\u015bcie cieszy\u0107. Mi\u0142o, \u017ce Springowi zale\u017cy na tym, aby realnie co\u015b na tych wirtualnych w\u0105tkach zyska\u0107, a nie tylko odhaczy\u0107 sobie kolejny \"rewolucyjny\" feature. Ponownie, nowi gracze maj\u0105 \u0142atwiej ni\u017c wieloletni gigant.<\/p>\n","innerContent":["\n<p>Kolejn\u0105 rzecz\u0105, kt\u00f3rej tw\u00f3rcy Springa si\u0119 przygl\u0105daj\u0105, jest rozw\u00f3j wirtualnych w\u0105tk\u00f3w. We wtorek pojawi\u0142a si\u0119 do\u015b\u0107 obszerna publikacja, kt\u00f3ra <a href=\"https:\/\/spring.io\/blog\/2022\/10\/11\/embracing-virtual-threads\">stanowi chyba pierwsze oficjalne stanowisko Springa w tej kwestii<\/a>. Ponownie d\u0142ugie dziedzictwo frameworki k\u0142adzie si\u0119 tutaj cieniem - framework posiada du\u017ce ilo\u015bci blok\u00f3w <code>synchronized<\/code>, co cho\u0107 samo w sobie nie stanowi blokera, to jednak ca\u0142y proces troch\u0119 komplikuje. Tw\u00f3rcy zdaj\u0105 sobie z tego jednak spraw\u0119 i analizuj\u0105, kt\u00f3rymi fragmentami musz\u0105 zaj\u0105\u0107 si\u0119 w pierwszej kolejno\u015bci i eksperymentuj\u0105 z dostarczonymi przez JDK metodami. IMHO jako spo\u0142eczno\u015b\u0107 powinno nas to podej\u015bcie cieszy\u0107. Mi\u0142o, \u017ce Springowi zale\u017cy na tym, aby realnie co\u015b na tych wirtualnych w\u0105tkach zyska\u0107, a nie tylko odhaczy\u0107 sobie kolejny \"rewolucyjny\" feature. Ponownie, nowi gracze maj\u0105 \u0142atwiej ni\u017c wieloletni gigant.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Og\u00f3lnie pokazuje to, \u017ce Annotation Procesory, na kt\u00f3rych bazuje Micronaut i koledzy, by\u0142y du\u017cym game-changerem dla przestrzeni framework\u00f3w. A nie ma chyba lepszego sposobu, \u017ceby przekona\u0107 si\u0119 jak du\u017cym, ni\u017c si\u0119 tym narz\u0119dziem pobawi\u0107 i... zbudowa\u0107 w\u0142asny framework. Zainteresowani? To mam dla Was na koniec co\u015b naprawd\u0119 fajnego. Jacek Dubikowski rozpocz\u0105\u0142 w tym tygodniu seri\u0119 <a href=\"https:\/\/medium.com\/virtuslab\/build-your-own-framework-using-an-annotation-processor-9824be4fb9a7\"><strong>Build your own framework using an annotation processor<\/strong><\/a> opisuj\u0105c\u0105, nomen omen, proces tworzenia od zera w\u0142asnego frameworku - takiego hobbystycznego, nie \u017ce zaraz wleci na produkcj\u0119 (Java to nie JavaScript). <a href=\"https:\/\/medium.com\/virtuslab\/build-your-own-framework-using-an-annotation-processor-9824be4fb9a7\">Pierwszy artyku\u0142<\/a> dotyczy implementacji Dependency Injection i krok po kroku przeprowadza przez mechanizmy takiego procesu, a tak\u017ce potencjalne problemy mog\u0105ce si\u0119 pojawi\u0107 po drodze. Polecam, zawsze uwa\u017ca\u0142em, \u017ce reverse engineering i \"tinkering\" to najlepsze narz\u0119dzia edukacyjne.<\/p>\n","innerContent":["\n<p>Og\u00f3lnie pokazuje to, \u017ce Annotation Procesory, na kt\u00f3rych bazuje Micronaut i koledzy, by\u0142y du\u017cym game-changerem dla przestrzeni framework\u00f3w. A nie ma chyba lepszego sposobu, \u017ceby przekona\u0107 si\u0119 jak du\u017cym, ni\u017c si\u0119 tym narz\u0119dziem pobawi\u0107 i... zbudowa\u0107 w\u0142asny framework. Zainteresowani? To mam dla Was na koniec co\u015b naprawd\u0119 fajnego. Jacek Dubikowski rozpocz\u0105\u0142 w tym tygodniu seri\u0119 <a href=\"https:\/\/medium.com\/virtuslab\/build-your-own-framework-using-an-annotation-processor-9824be4fb9a7\"><strong>Build your own framework using an annotation processor<\/strong><\/a> opisuj\u0105c\u0105, nomen omen, proces tworzenia od zera w\u0142asnego frameworku - takiego hobbystycznego, nie \u017ce zaraz wleci na produkcj\u0119 (Java to nie JavaScript). <a href=\"https:\/\/medium.com\/virtuslab\/build-your-own-framework-using-an-annotation-processor-9824be4fb9a7\">Pierwszy artyku\u0142<\/a> dotyczy implementacji Dependency Injection i krok po kroku przeprowadza przez mechanizmy takiego procesu, a tak\u017ce potencjalne problemy mog\u0105ce si\u0119 pojawi\u0107 po drodze. Polecam, zawsze uwa\u017ca\u0142em, \u017ce reverse engineering i \"tinkering\" to najlepsze narz\u0119dzia edukacyjne.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/www.infoq.com\/news\/2022\/10\/spring-boot-3-jax-london\/\">Spring Boot 3 Ships November 2022, Delays Java Module Support<\/a><\/li><li><a href=\"https:\/\/jaxlondon.com\/java-core-jvm-languages\/spring-boot-3-and-spring-framework-6-a-new-generation\">Spring Boot 3 and Spring Framework 6 \u2013 a new generation<\/a><\/li><li><a href=\"https:\/\/spring.io\/blog\/2022\/10\/11\/embracing-virtual-threads\">Embracing Virtual Threads<\/a><\/li><li><a href=\"https:\/\/medium.com\/virtuslab\/build-your-own-framework-using-an-annotation-processor-9824be4fb9a7\">Build your own framework using an annotation processor<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/www.infoq.com\/news\/2022\/10\/spring-boot-3-jax-london\/\">Spring Boot 3 Ships November 2022, Delays Java Module Support<\/a><\/li><li><a href=\"https:\/\/jaxlondon.com\/java-core-jvm-languages\/spring-boot-3-and-spring-framework-6-a-new-generation\">Spring Boot 3 and Spring Framework 6 \u2013 a new generation<\/a><\/li><li><a href=\"https:\/\/spring.io\/blog\/2022\/10\/11\/embracing-virtual-threads\">Embracing Virtual Threads<\/a><\/li><li><a href=\"https:\/\/medium.com\/virtuslab\/build-your-own-framework-using-an-annotation-processor-9824be4fb9a7\">Build your own framework using an annotation processor<\/a><\/li><\/ul>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/11209","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=11209"}],"version-history":[{"count":13,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/11209\/revisions"}],"predecessor-version":[{"id":11245,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/11209\/revisions\/11245"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/11231"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=11209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=11209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=11209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}