{"id":9936,"date":"2022-08-03T09:49:57","date_gmt":"2022-08-03T07:49:57","guid":{"rendered":"https:\/\/vived.io\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/"},"modified":"2022-09-19T13:10:35","modified_gmt":"2022-09-19T11:10:35","slug":"jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/","title":{"rendered":"JVM Weekly #98 &#8211; Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom"},"content":{"rendered":"\n<h2 id=\"1-java-1-7-konczy-zywot\" data-num=1>1. Java 1.7 ko\u0144czy \u017cywot \u2620\ufe0f<\/h2>\n\n\n\n<p>I w\u0142a\u015bnie od tego ostatniego tematu zaczniemy. Du\u017co m\u00f3wi si\u0119 bowiem o powolnym umieraniu Javy 8, ale tak naprawd\u0119 gdzie\u015b w jej cieniu pozostawa\u0142a inna, przez lata bardzo popularna wersja. To w\u0142a\u015bnie na JDK 7 na lata zatrzyma\u0142o si\u0119 wiele projekt\u00f3w, i cho\u0107 jej u\u017cycie powoli staje si\u0119 raczej homeopatyczne (wed\u0142ug <a href=\"https:\/\/newrelic.com\/resources\/report\/2022-state-of-java-ecosystem\">r\u00f3\u017cnych raport\u00f3w<\/a> zasila ona od jednego do pi\u0119ciu procent aplikacji), to jednak w dalszym ciagu pozostaje sporo napisanego w niej kodu do migracji, kt\u00f3ry potrzebowa\u0142 po prostu hmmm&#8230; motywacji.<\/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\/08\/offer-cant-refuse.gif\" alt=\"\" class=\"wp-image-6158\" width=\"498\" height=\"276\"\/><figcaption>Czy raczej propozycji nie do odrzucenia.<\/figcaption><\/figure><\/div>\n\n\n<p>Takowa w\u0142a\u015bnie po raz kolejny si\u0119 pojawia, poniewa\u017c w poprzedni weekend (31 lipca 2022) zako\u0144czy\u0142 si\u0119 okres Rozszerzonego Wsparcia dla Javy 7. Zgodnie z definicj\u0105 Oracle Lifetime Support Policy, &#8222;Si\u00f3demka&#8221; przechodzi teraz w tryb Sustaining Support. Co to oznacza w praktyce? Nie b\u0119d\u0105 dostarczane dalsze aktualizacje \u0142atek, poprawki b\u0142\u0119d\u00f3w i zabezpiecze\u0144, ani implementacje funkcji&#8230; nie b\u0119dzie niczego. Jedyne co daje Ci Sustaining Support to <a href=\"https:\/\/www.spinnakersupport.com\/blog\/2020\/06\/04\/the-few-pros-and-many-cons-of-oracle-sustaining-support\/\">(bardzo drogie)<\/a> zagwarantowanie, \u017ce je\u015bli nagle pojawi si\u0119 jaki\u015b olbrzymi problem z Twoj\u0105 wersj\u0105 Javy, to w zasadzie&#8230; masz do kogo zadzwoni\u0107. Oracle nie gwarantuje bowiem, \u017ce Tw\u00f3j problem rozwi\u0105\u017ce &#8211; aczkolwiek historycznie du\u017ce firmy id\u0105 swoim wiernym, p\u0142ac\u0105cym klientom na r\u0119k\u0119. Taki np. Microsoft w czerwcu tego roku wyda\u0142 <a href=\"https:\/\/www.catalog.update.microsoft.com\/Search.aspx?q=windows+xp\">pierwszy od 2017 nowy patch do Windowsa XP<\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"480\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-4.gif\" alt=\"\" class=\"wp-image-6160\"\/><figcaption>Dajcie im ju\u017c umrze\u0107!<\/figcaption><\/figure><\/div>\n\n\n<p><\/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:\/\/coderoasis.com\/java-7-end-of-life\/\">Bye bye! It&#8217;s Finally the End of Life of Java 7<\/a><\/li><li><a href=\"https:\/\/www.spinnakersupport.com\/blog\/2020\/06\/04\/the-few-pros-and-many-cons-of-oracle-sustaining-support\/\">The Few Pros \u2013 and Many Cons \u2013 of Oracle Sustaining Support<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"2-graalvm-ulatwia-prace-z-zewnetrznymi-bibliotekami\" data-num=2>2. GraalVM u\u0142atwia prac\u0119 z zewn\u0119trznymi bibliotekami<\/h2>\n\n\n\n<p>Porozmawiali\u015bmy o przesz\u0142o\u015bci JVMa, czas spojrze\u0107 w jego przysz\u0142o\u015b\u0107. A \u017caden inny projekt nie oddaje takowej lepiej ni\u017c GraalVM, regularnie rozwijana alternatywna maszyna wirtualna dla Javy i nie tylko. Z regularno\u015bci\u0105 zegarka szwajcarskiego wypluwane s\u0105 jej nowe edycje, a w zesz\u0142ym tygodniu otrzymali\u015bmy kolejn\u0105. Co przynosi <a href=\"https:\/\/medium.com\/graalvm\/graalvm-22-2-smaller-jdk-size-improved-memory-usage-better-library-support-and-more-cb34b5b68ec0\">wersja 22.2<\/a>?<\/p>\n\n\n\n<p>Pierwsz\u0105 du\u017c\u0105 rzecz\u0105 jest modularyzacja. Do tej pory niezale\u017cnie od tego, kt\u00f3ry z wielu j\u0119zyk\u00f3w wspieranych przez GraalVM by\u0142 przez nas u\u017cywany (a w pewnie 90% przypadk\u00f3w jest to jednak Java), bazowy obraz zawiera\u0142 pliki niezb\u0119dne do uruchomienia np. JavaScript czy LLVM, a tak\u017ce np. VisualVM. Z drugiej strony, taki Python czy Ruby musia\u0142y by\u0107 ju\u017c bezpo\u015brednio doinstalowywane. Teraz sytuacja zosta\u0142a posprz\u0105tana i ka\u017cdy z dodatkowych modu\u0142\u00f3w musi by\u0107 doinstalowywany &#8211; &#8222;go\u0142y&#8221; GraalVM wspiera wy\u0142\u0105cznie Jav\u0119. Zalet\u0105 tego rozwi\u0105zania jest to, \u017ce uda\u0142o si\u0119 mocno zredukowa\u0107 bazowy rozmiar obrazu, kosztem kilku dodatkowych komend dla programist\u00f3w LLVM czy JS. Dla wi\u0119kszego dobra.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"270\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/hot-fuzz.gif\" alt=\"\" class=\"wp-image-6161\"\/><figcaption>Reakcja programist\u00f3w JavaScript na zapowiedzi GraalVM<\/figcaption><\/figure><\/div>\n\n\n<p>To oczywi\u015bcie nie wszystko. Nowy GraalVM to te\u017c lepsza obs\u0142uga bibliotek zewn\u0119trznych. Jako, \u017ce GraalVM tworzy statyczny obraz zawieraj\u0105cy pre-kompilowane klasy, na etapie tworzenia artefaktu wynikowego zmuszony jest do wyczyszczenia tych klas, kt\u00f3re nie s\u0105 u\u017cywane z poziomu wej\u015bcia aplikacji. O ile brzmi to rozs\u0105dnie, to w Javie do\u015b\u0107 mocno rozpanoszy\u0142 si\u0119 mechanizm refleksji, kt\u00f3ry sprawia, \u017ce aplikacja mo\u017ce odnie\u015b\u0107 si\u0119 do arbitralnie dowolnej klasy dost\u0119pnej na classpath. A co je\u015bli takowego classpath nie ma? Szcz\u0119\u015bliwie, mo\u017cemy przekaza\u0107 GraalVM list\u0119 klas, kt\u00f3rych nie powinien czy\u015bci\u0107 (programi\u015bci Androida znaj\u0105 ten mechanizm pewnie z ProGuarda). W wypadku bibliotek third-party prowadzi\u0142o to jednak do duplikacji pracy, gdy ka\u017cdy projekt musia\u0142 w zasadzie robi\u0107 to samodzielnie. Dlatego wraz z nowym GraalVM pojawi\u0142o si\u0119 <a href=\"https:\/\/github.com\/oracle\/graalvm-reachability-metadata\">GraalVM Reachability Metadata Repository<\/a>, spo\u0142eczno\u015bciowe centrum pozwalaj\u0105ce dzieli\u0107 si\u0119 takimi definicjami &#8211; troch\u0119 jak to mam miejsce z typami w TypeScripcie. Co najwa\u017cniejsze &#8211; GraalVM Native Build Tools mog\u0105 zosta\u0107 skonfigurowane, aby automatycznie zaci\u0105ga\u0107 definicje do znalezionych w kodzie zale\u017cno\u015bci.<\/p>\n\n\n\n<p>Nowy GraalVM to r\u00f3wnie\u017c kilka innych nowo\u015bci &#8211; mo\u017cliwo\u015b\u0107 \u0142atwiejszego generowania ThreadDump\u00f3w, optymalizacje i poprawki wydajno\u015bciowe czy wsparcie Apple Silicon (bo od czasu wydania M2 ci\u0119\u017cko ju\u017c u\u017cywa\u0107 nazwy M1) w GraalVM Enterprise. Po wi\u0119cej szczeg\u00f3\u0142\u00f3w zapraszam do lektury <a href=\"https:\/\/medium.com\/graalvm\/graalvm-22-2-smaller-jdk-size-improved-memory-usage-better-library-support-and-more-cb34b5b68ec0\">posta towarzysz\u0105cego nowemu wydaniu<\/a>.<\/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:\/\/medium.com\/graalvm\/graalvm-22-2-smaller-jdk-size-improved-memory-usage-better-library-support-and-more-cb34b5b68ec0\">GraalVM 22.2 Released<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"3-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\" data-num=3>3. Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom<\/h2>\n\n\n\n<p>Projekt Loom coraz bardziej nam si\u0119 panoszy. Par\u0119 edycji temu opisywali\u015bmy pierwsze eksperymenty tw\u00f3rc\u00f3w Quarkusa z t\u0105 technologi\u0105, koniec lipca przyni\u00f3s\u0142 za\u015b og\u0142oszenie ze strony tw\u00f3rc\u00f3w Vert.x. Ten do\u015b\u0107 eksperymentalny projekt, kt\u00f3ry pocz\u0105tkowo pozycjonowa\u0142 si\u0119 jako alternatywa dla Node.js na JVM, aktualnie stanowi swoisty inkubator koncepcji zwi\u0105zanych z reaktywnym i asynchronicznym programowaniem na JVM &#8211; do\u015b\u0107 powiedzie\u0107, \u017ce np. taki Hibernate Reactive to w\u0142a\u015bciwie nak\u0142adka nad stworzonymi w ramach Vert.x reaktywnymi sterownikami do baz danych.<\/p>\n\n\n\n<p>Teraz framework bierze si\u0119 za nowe zadanie &#8211; stworzenie referencyjnej wersji u\u017cycia wirtualnych w\u0105tk\u00f3w na potrzeby system\u00f3w reaktywnych. Loom to bowiem w zasadzie bardzo internalowa funkcjonalno\u015b\u0107 &#8211; to co otrzymujemy wraz z projektem, to budulec dla tw\u00f3rc\u00f3w framework\u00f3w, kt\u00f3rych teraz zadaniem jest stworzy\u0107 abstrakcje, kt\u00f3re b\u0119d\u0105 dopiero u\u017cywane przez &#8222;programist\u00f3w przemys\u0142owych&#8221;. I w\u0142a\u015bnie to zadanie bierze sobie Vert.x na plecy, og\u0142aszaj\u0105c <strong>Virtual threads incubator<\/strong>, projekt, kt\u00f3ry ma na celu dostarczeniu gotowych rozwi\u0105za\u0144 i wzorc\u00f3w. Na ten moment pierwsz\u0105, nie ostatni\u0105 z propozycji jest <strong><a href=\"https:\/\/github.com\/vert-x3\/vertx-virtual-threads-incubator\/tree\/main\/vertx-async-await-incubator\">Vert.x Async\/Await<\/a><\/strong>, ale ju\u017c nied\u0142ugo powinni\u015bmy dosta\u0107 kolejne. Osobi\u015bcie zamierzam \u015bledzi\u0107 nowo\u015bci w repozytorium <a href=\"https:\/\/github.com\/vert-x3\/vertx-virtual-threads-incubator\"><strong>vert-x3\/vertx-virtual-threads-incubator<\/strong><\/a> i jak pojawi\u0105 si\u0119 kolejne ciekawe propozycje, na pewno trafi\u0105 one do tego przegl\u0105du.<\/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\/08\/giphy-7.gif\" alt=\"\" class=\"wp-image-6165\"\/><figcaption>Znaj\u0105c tw\u00f3rc\u00f3w Vert.x &#8211; oh, to b\u0119dzie fun!<\/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:\/\/vertx.io\/blog\/vertx-virtual-threads-incubator\/\">Vert.x virtual threads incubator<\/a><\/li><li><a href=\"https:\/\/github.com\/vert-x3\/vertx-virtual-threads-incubator\">vert-x3\/vertx-virtual-threads-incubator<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"4-helidon-3-0-java-17-jakarta-ee-i-microprofile\" data-num=4>4. Helidon 3.0 &#8211; Java 17, Jakarta EE i MicroProfile<\/h2>\n\n\n\n<p>No, a na koniec mamy dla Was nowe wydanie <a href=\"https:\/\/medium.com\/helidon\/helidon-3-0-is-released-1bd2df1f999b\">Helidona &#8211; edycj\u0119 3.0<\/a>. Mimo, \u017ce framework pozostaje nieco w cieniu popularniejszych rozwi\u0105za\u0144, takich jak Spring, Micronaut czy Quarkus, Helidon stanowi swoist\u0105 implementacje referencyjn\u0105 dla MicroProfile i &#8222;mikro&#8221; Jakarty EE od samego Oracle. Dlatego przygl\u0105dniemy si\u0119, co przynosi nowa wersja.<\/p>\n\n\n\n<p>I tutaj pierwsze zaskoczenie &#8211; ot\u00f3\u017c nowa edycja wymaga do dzia\u0142ania minimum JDK 17. Oracle idzie jak burza.w procesie wypychania u\u017cytkownik\u00f3w na najnowsze LTS&#8217;y &#8211; jak wida\u0107 na za\u0142\u0105czonym przyk\u0142adzie, przyj\u0119li metod\u0119 kija (minimalne wspierane wydania) i marchewki (istotne nowo\u015bci).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"300\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/fe2a38f4-4dbd-4f91-b64a-db5e24718f7f_text.gif\" alt=\"\" class=\"wp-image-6168\"\/><figcaption>Przy czym Java 17 to na dobr\u0105 spraw\u0119 te\u017c marchewka <\/figcaption><\/figure><\/div>\n\n\n<p>Bo za takow\u0105 &#8222;istotn\u0105 nowo\u015b\u0107&#8221; z pewno\u015bci\u0105 uzna\u0107 mo\u017cna wsparcie dla MicroProfile 5.0 oraz wyselekcjonowanych aspekt\u00f3w Jakarta EE 9.1. W jaki\u015b spos\u00f3b zabawnym jest dla mnie, \u017ce wraz z tym podbiciem r\u00f3wnie\u017c framework od Oracle pozbywa si\u0119 trademarkowanej paczki <strong>javax.<\/strong> na rzecz <strong>jakarta.<\/strong>. Tw\u00f3rcy chwal\u0105 si\u0119, \u017ce jest to pierwszy produkt korporacji kt\u00f3ry dokona\u0142 tej zmiany. Z funkcjonalno\u015bci w Helidonie pojawi\u0142 si\u0119 r\u00f3wnie\u017c <a href=\"https:\/\/openjdk.org\/jeps\/290\"><strong>JEP 290: Filter Incoming Serialization Data<\/strong><\/a>, czyli usprawnienia bezpiecze\u0144stwa podczas procesu serializacji i deserializacji (takowa jest domy\u015blnie w Helidonie 3.0 zreszt\u0105 wy\u0142\u0105czona), a tak\u017ce ulepszenia dla routing API.<\/p>\n\n\n\n<p>Jednak nie tylko nowe mo\u017cliwo\u015bci samego frameworka s\u0105 istotne, ale te\u017c to jak si\u0119 go u\u017cywa (o czym zapominaj\u0105 tw\u00f3rcy wspomnianego ju\u017c Vert.x&#8217;a, maj\u0105cego legendarnie fataln\u0105 dokumentacj\u0119 i release notes). Nowy Helidon przynosi te\u017c usprawnienia w kontek\u015bcie Developer Experience. Wraz z now\u0105 wersj\u0105 otrzymujemy bowiem nowy generator projekt\u00f3w &#8211; <a href=\"https:\/\/helidon.io\/starter\/3.0.0\">zar\u00f3wno w wersji webowej<\/a>, na mod\u0142\u0119 tego od Springa czy Jakarta EE pozwalaj\u0105cy \u0142atwo prekonfigurowa\u0107 baz\u0119 dla helidonowego projektu, jak i w formie CLI, dla tych preferuj\u0105cych terminal.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"250\" height=\"169\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-9.gif\" alt=\"\" class=\"wp-image-6170\"\/><figcaption>Podsumowuj\u0105c &#8211; du\u017co tego. My\u015bl\u0119, \u017ce ka\u017cdy u\u017cytkownik Helidona powinien by\u0107 zadowolony z migracji na now\u0105 wersj\u0119.<\/figcaption><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142o<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/medium.com\/helidon\/helidon-3-0-is-released-1bd2df1f999b\">Helidon 3.0 Released<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Po paru tygodniach posuchy, dzisiaj mamy ca\u0142kiem spory wysyp nowo\u015bci (nareszcie!). Do tego stopnia, \u017ce dzisiaj zajmiemy si\u0119 tylko i wy\u0142\u0105cznie javowymi, a najciekawsze informacje oko\u0142o-kotlinowe pojawi\u0105 si\u0119 za tydzie\u0144. Zatem dzisiaj GraalVM, Helidon 3.0, wirtualne w\u0105tki w Vert.x oraz&#8230; ostateczny koniec Javy 1.7 (wypisujcie miasta). <\/p>\n","protected":false},"author":10,"featured_media":8982,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[259],"tags":[],"class_list":["post-9936","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm-pl"],"acf":{"estimated_reading_time":"6","feature_image_blog":{"ID":8983,"id":8983,"title":"animal-mouse-experiment-laboratory-159483","filename":"animal-mouse-experiment-laboratory-159483.jpeg","filesize":304169,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/animal-mouse-experiment-laboratory-159483.jpeg","link":"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/animal-mouse-experiment-laboratory-159483-2\/","alt":"","author":"10","description":"","caption":"","name":"animal-mouse-experiment-laboratory-159483-2","status":"inherit","uploaded_to":9936,"date":"2022-08-03 07:49:24","modified":"2022-08-03 07:49:24","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/vived.io\/wp-includes\/images\/media\/default.png","width":2048,"height":1335,"sizes":{"thumbnail":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/animal-mouse-experiment-laboratory-159483-150x150.jpeg","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/animal-mouse-experiment-laboratory-159483-300x196.jpeg","medium-width":300,"medium-height":196,"medium_large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/animal-mouse-experiment-laboratory-159483-768x501.jpeg","medium_large-width":768,"medium_large-height":501,"large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/animal-mouse-experiment-laboratory-159483-1024x668.jpeg","large-width":1024,"large-height":668,"1536x1536":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/animal-mouse-experiment-laboratory-159483-1536x1001.jpeg","1536x1536-width":1536,"1536x1536-height":1001,"2048x2048":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/animal-mouse-experiment-laboratory-159483.jpeg","2048x2048-width":2048,"2048x2048-height":1335,"gform-image-choice-sm":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/animal-mouse-experiment-laboratory-159483.jpeg","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":196,"gform-image-choice-md":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/animal-mouse-experiment-laboratory-159483.jpeg","gform-image-choice-md-width":400,"gform-image-choice-md-height":261,"gform-image-choice-lg":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/animal-mouse-experiment-laboratory-159483.jpeg","gform-image-choice-lg-width":600,"gform-image-choice-lg-height":391}},"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM.png","feature_image_visible":true},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JVM Weekly #98 - Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom - 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\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Weekly #98 - Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom - Vived\" \/>\n<meta property=\"og:description\" content=\"Po paru tygodniach posuchy, dzisiaj mamy ca\u0142kiem spory wysyp nowo\u015bci (nareszcie!). Do tego stopnia, \u017ce dzisiaj zajmiemy si\u0119 tylko i wy\u0142\u0105cznie javowymi, a najciekawsze informacje oko\u0142o-kotlinowe pojawi\u0105 si\u0119 za tydzie\u0144. Zatem dzisiaj GraalVM, Helidon 3.0, wirtualne w\u0105tki w Vert.x oraz... ostateczny koniec Javy 1.7 (wypisujcie miasta).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-03T07:49:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM.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\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Weekly #98 &#8211; Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom\",\"datePublished\":\"2022-08-03T07:49:57+00:00\",\"dateModified\":\"2022-09-19T11:10:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/\"},\"wordCount\":1303,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/\",\"name\":\"JVM Weekly #98 - Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM.png\",\"datePublished\":\"2022-08-03T07:49:57+00:00\",\"dateModified\":\"2022-09-19T11:10:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Weekly #98 &#8211; Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom\"}]},{\"@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":"JVM Weekly #98 - Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom - 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\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Weekly #98 - Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom - Vived","og_description":"Po paru tygodniach posuchy, dzisiaj mamy ca\u0142kiem spory wysyp nowo\u015bci (nareszcie!). Do tego stopnia, \u017ce dzisiaj zajmiemy si\u0119 tylko i wy\u0142\u0105cznie javowymi, a najciekawsze informacje oko\u0142o-kotlinowe pojawi\u0105 si\u0119 za tydzie\u0144. Zatem dzisiaj GraalVM, Helidon 3.0, wirtualne w\u0105tki w Vert.x oraz... ostateczny koniec Javy 1.7 (wypisujcie miasta).","og_url":"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/","og_site_name":"Vived","article_published_time":"2022-08-03T07:49:57+00:00","article_modified_time":"2022-09-19T11:10:35+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM.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\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Weekly #98 &#8211; Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom","datePublished":"2022-08-03T07:49:57+00:00","dateModified":"2022-09-19T11:10:35+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/"},"wordCount":1303,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/","url":"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/","name":"JVM Weekly #98 - Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM.png","datePublished":"2022-08-03T07:49:57+00:00","dateModified":"2022-09-19T11:10:35+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-weekly-98-tworcy-vert-x-zaczynaja-eksperymentowac-z-project-loom\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Weekly #98 &#8211; Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom"}]},{"@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. Java 1.7 ko\u0144czy \u017cywot \u2620\ufe0f<\/h2>\n","innerContent":["\n<h2>1. Java 1.7 ko\u0144czy \u017cywot \u2620\ufe0f<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>I w\u0142a\u015bnie od tego ostatniego tematu zaczniemy. Du\u017co m\u00f3wi si\u0119 bowiem o powolnym umieraniu Javy 8, ale tak naprawd\u0119 gdzie\u015b w jej cieniu pozostawa\u0142a inna, przez lata bardzo popularna wersja. To w\u0142a\u015bnie na JDK 7 na lata zatrzyma\u0142o si\u0119 wiele projekt\u00f3w, i cho\u0107 jej u\u017cycie powoli staje si\u0119 raczej homeopatyczne (wed\u0142ug <a href=\"https:\/\/newrelic.com\/resources\/report\/2022-state-of-java-ecosystem\">r\u00f3\u017cnych raport\u00f3w<\/a> zasila ona od jednego do pi\u0119ciu procent aplikacji), to jednak w dalszym ciagu pozostaje sporo napisanego w niej kodu do migracji, kt\u00f3ry potrzebowa\u0142 po prostu hmmm... motywacji.<\/p>\n","innerContent":["\n<p>I w\u0142a\u015bnie od tego ostatniego tematu zaczniemy. Du\u017co m\u00f3wi si\u0119 bowiem o powolnym umieraniu Javy 8, ale tak naprawd\u0119 gdzie\u015b w jej cieniu pozostawa\u0142a inna, przez lata bardzo popularna wersja. To w\u0142a\u015bnie na JDK 7 na lata zatrzyma\u0142o si\u0119 wiele projekt\u00f3w, i cho\u0107 jej u\u017cycie powoli staje si\u0119 raczej homeopatyczne (wed\u0142ug <a href=\"https:\/\/newrelic.com\/resources\/report\/2022-state-of-java-ecosystem\">r\u00f3\u017cnych raport\u00f3w<\/a> zasila ona od jednego do pi\u0119ciu procent aplikacji), to jednak w dalszym ciagu pozostaje sporo napisanego w niej kodu do migracji, kt\u00f3ry potrzebowa\u0142 po prostu hmmm... motywacji.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":6158,"width":498,"height":276,"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\/08\/offer-cant-refuse.gif\" alt=\"\" class=\"wp-image-6158\" width=\"498\" height=\"276\"\/><figcaption>Czy raczej propozycji nie do odrzucenia.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/offer-cant-refuse.gif\" alt=\"\" class=\"wp-image-6158\" width=\"498\" height=\"276\"\/><figcaption>Czy raczej propozycji nie do odrzucenia.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Takowa w\u0142a\u015bnie po raz kolejny si\u0119 pojawia, poniewa\u017c w poprzedni weekend (31 lipca 2022) zako\u0144czy\u0142 si\u0119 okres Rozszerzonego Wsparcia dla Javy 7. Zgodnie z definicj\u0105 Oracle Lifetime Support Policy, \"Si\u00f3demka\" przechodzi teraz w tryb Sustaining Support. Co to oznacza w praktyce? Nie b\u0119d\u0105 dostarczane dalsze aktualizacje \u0142atek, poprawki b\u0142\u0119d\u00f3w i zabezpiecze\u0144, ani implementacje funkcji... nie b\u0119dzie niczego. Jedyne co daje Ci Sustaining Support to <a href=\"https:\/\/www.spinnakersupport.com\/blog\/2020\/06\/04\/the-few-pros-and-many-cons-of-oracle-sustaining-support\/\">(bardzo drogie)<\/a> zagwarantowanie, \u017ce je\u015bli nagle pojawi si\u0119 jaki\u015b olbrzymi problem z Twoj\u0105 wersj\u0105 Javy, to w zasadzie... masz do kogo zadzwoni\u0107. Oracle nie gwarantuje bowiem, \u017ce Tw\u00f3j problem rozwi\u0105\u017ce - aczkolwiek historycznie du\u017ce firmy id\u0105 swoim wiernym, p\u0142ac\u0105cym klientom na r\u0119k\u0119. Taki np. Microsoft w czerwcu tego roku wyda\u0142 <a href=\"https:\/\/www.catalog.update.microsoft.com\/Search.aspx?q=windows+xp\">pierwszy od 2017 nowy patch do Windowsa XP<\/a>.<\/p>\n","innerContent":["\n<p>Takowa w\u0142a\u015bnie po raz kolejny si\u0119 pojawia, poniewa\u017c w poprzedni weekend (31 lipca 2022) zako\u0144czy\u0142 si\u0119 okres Rozszerzonego Wsparcia dla Javy 7. Zgodnie z definicj\u0105 Oracle Lifetime Support Policy, \"Si\u00f3demka\" przechodzi teraz w tryb Sustaining Support. Co to oznacza w praktyce? Nie b\u0119d\u0105 dostarczane dalsze aktualizacje \u0142atek, poprawki b\u0142\u0119d\u00f3w i zabezpiecze\u0144, ani implementacje funkcji... nie b\u0119dzie niczego. Jedyne co daje Ci Sustaining Support to <a href=\"https:\/\/www.spinnakersupport.com\/blog\/2020\/06\/04\/the-few-pros-and-many-cons-of-oracle-sustaining-support\/\">(bardzo drogie)<\/a> zagwarantowanie, \u017ce je\u015bli nagle pojawi si\u0119 jaki\u015b olbrzymi problem z Twoj\u0105 wersj\u0105 Javy, to w zasadzie... masz do kogo zadzwoni\u0107. Oracle nie gwarantuje bowiem, \u017ce Tw\u00f3j problem rozwi\u0105\u017ce - aczkolwiek historycznie du\u017ce firmy id\u0105 swoim wiernym, p\u0142ac\u0105cym klientom na r\u0119k\u0119. Taki np. Microsoft w czerwcu tego roku wyda\u0142 <a href=\"https:\/\/www.catalog.update.microsoft.com\/Search.aspx?q=windows+xp\">pierwszy od 2017 nowy patch do Windowsa XP<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":6160,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-4.gif\" alt=\"\" class=\"wp-image-6160\"\/><figcaption>Dajcie im ju\u017c umrze\u0107!<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-4.gif\" alt=\"\" class=\"wp-image-6160\"\/><figcaption>Dajcie im ju\u017c umrze\u0107!<\/figcaption><\/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":{"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:\/\/coderoasis.com\/java-7-end-of-life\/\">Bye bye! It's Finally the End of Life of Java 7<\/a><\/li><li><a href=\"https:\/\/www.spinnakersupport.com\/blog\/2020\/06\/04\/the-few-pros-and-many-cons-of-oracle-sustaining-support\/\">The Few Pros \u2013 and Many Cons \u2013 of Oracle Sustaining Support<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/coderoasis.com\/java-7-end-of-life\/\">Bye bye! It's Finally the End of Life of Java 7<\/a><\/li><li><a href=\"https:\/\/www.spinnakersupport.com\/blog\/2020\/06\/04\/the-few-pros-and-many-cons-of-oracle-sustaining-support\/\">The Few Pros \u2013 and Many Cons \u2013 of Oracle Sustaining Support<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. GraalVM u\u0142atwia prac\u0119 z zewn\u0119trznymi bibliotekami<\/h2>\n","innerContent":["\n<h2>2. GraalVM u\u0142atwia prac\u0119 z zewn\u0119trznymi bibliotekami<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Porozmawiali\u015bmy o przesz\u0142o\u015bci JVMa, czas spojrze\u0107 w jego przysz\u0142o\u015b\u0107. A \u017caden inny projekt nie oddaje takowej lepiej ni\u017c GraalVM, regularnie rozwijana alternatywna maszyna wirtualna dla Javy i nie tylko. Z regularno\u015bci\u0105 zegarka szwajcarskiego wypluwane s\u0105 jej nowe edycje, a w zesz\u0142ym tygodniu otrzymali\u015bmy kolejn\u0105. Co przynosi <a href=\"https:\/\/medium.com\/graalvm\/graalvm-22-2-smaller-jdk-size-improved-memory-usage-better-library-support-and-more-cb34b5b68ec0\">wersja 22.2<\/a>?<\/p>\n","innerContent":["\n<p>Porozmawiali\u015bmy o przesz\u0142o\u015bci JVMa, czas spojrze\u0107 w jego przysz\u0142o\u015b\u0107. A \u017caden inny projekt nie oddaje takowej lepiej ni\u017c GraalVM, regularnie rozwijana alternatywna maszyna wirtualna dla Javy i nie tylko. Z regularno\u015bci\u0105 zegarka szwajcarskiego wypluwane s\u0105 jej nowe edycje, a w zesz\u0142ym tygodniu otrzymali\u015bmy kolejn\u0105. Co przynosi <a href=\"https:\/\/medium.com\/graalvm\/graalvm-22-2-smaller-jdk-size-improved-memory-usage-better-library-support-and-more-cb34b5b68ec0\">wersja 22.2<\/a>?<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Pierwsz\u0105 du\u017c\u0105 rzecz\u0105 jest modularyzacja. Do tej pory niezale\u017cnie od tego, kt\u00f3ry z wielu j\u0119zyk\u00f3w wspieranych przez GraalVM by\u0142 przez nas u\u017cywany (a w pewnie 90% przypadk\u00f3w jest to jednak Java), bazowy obraz zawiera\u0142 pliki niezb\u0119dne do uruchomienia np. JavaScript czy LLVM, a tak\u017ce np. VisualVM. Z drugiej strony, taki Python czy Ruby musia\u0142y by\u0107 ju\u017c bezpo\u015brednio doinstalowywane. Teraz sytuacja zosta\u0142a posprz\u0105tana i ka\u017cdy z dodatkowych modu\u0142\u00f3w musi by\u0107 doinstalowywany - \"go\u0142y\" GraalVM wspiera wy\u0142\u0105cznie Jav\u0119. Zalet\u0105 tego rozwi\u0105zania jest to, \u017ce uda\u0142o si\u0119 mocno zredukowa\u0107 bazowy rozmiar obrazu, kosztem kilku dodatkowych komend dla programist\u00f3w LLVM czy JS. Dla wi\u0119kszego dobra.<\/p>\n","innerContent":["\n<p>Pierwsz\u0105 du\u017c\u0105 rzecz\u0105 jest modularyzacja. Do tej pory niezale\u017cnie od tego, kt\u00f3ry z wielu j\u0119zyk\u00f3w wspieranych przez GraalVM by\u0142 przez nas u\u017cywany (a w pewnie 90% przypadk\u00f3w jest to jednak Java), bazowy obraz zawiera\u0142 pliki niezb\u0119dne do uruchomienia np. JavaScript czy LLVM, a tak\u017ce np. VisualVM. Z drugiej strony, taki Python czy Ruby musia\u0142y by\u0107 ju\u017c bezpo\u015brednio doinstalowywane. Teraz sytuacja zosta\u0142a posprz\u0105tana i ka\u017cdy z dodatkowych modu\u0142\u00f3w musi by\u0107 doinstalowywany - \"go\u0142y\" GraalVM wspiera wy\u0142\u0105cznie Jav\u0119. Zalet\u0105 tego rozwi\u0105zania jest to, \u017ce uda\u0142o si\u0119 mocno zredukowa\u0107 bazowy rozmiar obrazu, kosztem kilku dodatkowych komend dla programist\u00f3w LLVM czy JS. Dla wi\u0119kszego dobra.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":6161,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/hot-fuzz.gif\" alt=\"\" class=\"wp-image-6161\"\/><figcaption>Reakcja programist\u00f3w JavaScript na zapowiedzi GraalVM<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/hot-fuzz.gif\" alt=\"\" class=\"wp-image-6161\"\/><figcaption>Reakcja programist\u00f3w JavaScript na zapowiedzi GraalVM<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To oczywi\u015bcie nie wszystko. Nowy GraalVM to te\u017c lepsza obs\u0142uga bibliotek zewn\u0119trznych. Jako, \u017ce GraalVM tworzy statyczny obraz zawieraj\u0105cy pre-kompilowane klasy, na etapie tworzenia artefaktu wynikowego zmuszony jest do wyczyszczenia tych klas, kt\u00f3re nie s\u0105 u\u017cywane z poziomu wej\u015bcia aplikacji. O ile brzmi to rozs\u0105dnie, to w Javie do\u015b\u0107 mocno rozpanoszy\u0142 si\u0119 mechanizm refleksji, kt\u00f3ry sprawia, \u017ce aplikacja mo\u017ce odnie\u015b\u0107 si\u0119 do arbitralnie dowolnej klasy dost\u0119pnej na classpath. A co je\u015bli takowego classpath nie ma? Szcz\u0119\u015bliwie, mo\u017cemy przekaza\u0107 GraalVM list\u0119 klas, kt\u00f3rych nie powinien czy\u015bci\u0107 (programi\u015bci Androida znaj\u0105 ten mechanizm pewnie z ProGuarda). W wypadku bibliotek third-party prowadzi\u0142o to jednak do duplikacji pracy, gdy ka\u017cdy projekt musia\u0142 w zasadzie robi\u0107 to samodzielnie. Dlatego wraz z nowym GraalVM pojawi\u0142o si\u0119 <a href=\"https:\/\/github.com\/oracle\/graalvm-reachability-metadata\">GraalVM Reachability Metadata Repository<\/a>, spo\u0142eczno\u015bciowe centrum pozwalaj\u0105ce dzieli\u0107 si\u0119 takimi definicjami - troch\u0119 jak to mam miejsce z typami w TypeScripcie. Co najwa\u017cniejsze - GraalVM Native Build Tools mog\u0105 zosta\u0107 skonfigurowane, aby automatycznie zaci\u0105ga\u0107 definicje do znalezionych w kodzie zale\u017cno\u015bci.<\/p>\n","innerContent":["\n<p>To oczywi\u015bcie nie wszystko. Nowy GraalVM to te\u017c lepsza obs\u0142uga bibliotek zewn\u0119trznych. Jako, \u017ce GraalVM tworzy statyczny obraz zawieraj\u0105cy pre-kompilowane klasy, na etapie tworzenia artefaktu wynikowego zmuszony jest do wyczyszczenia tych klas, kt\u00f3re nie s\u0105 u\u017cywane z poziomu wej\u015bcia aplikacji. O ile brzmi to rozs\u0105dnie, to w Javie do\u015b\u0107 mocno rozpanoszy\u0142 si\u0119 mechanizm refleksji, kt\u00f3ry sprawia, \u017ce aplikacja mo\u017ce odnie\u015b\u0107 si\u0119 do arbitralnie dowolnej klasy dost\u0119pnej na classpath. A co je\u015bli takowego classpath nie ma? Szcz\u0119\u015bliwie, mo\u017cemy przekaza\u0107 GraalVM list\u0119 klas, kt\u00f3rych nie powinien czy\u015bci\u0107 (programi\u015bci Androida znaj\u0105 ten mechanizm pewnie z ProGuarda). W wypadku bibliotek third-party prowadzi\u0142o to jednak do duplikacji pracy, gdy ka\u017cdy projekt musia\u0142 w zasadzie robi\u0107 to samodzielnie. Dlatego wraz z nowym GraalVM pojawi\u0142o si\u0119 <a href=\"https:\/\/github.com\/oracle\/graalvm-reachability-metadata\">GraalVM Reachability Metadata Repository<\/a>, spo\u0142eczno\u015bciowe centrum pozwalaj\u0105ce dzieli\u0107 si\u0119 takimi definicjami - troch\u0119 jak to mam miejsce z typami w TypeScripcie. Co najwa\u017cniejsze - GraalVM Native Build Tools mog\u0105 zosta\u0107 skonfigurowane, aby automatycznie zaci\u0105ga\u0107 definicje do znalezionych w kodzie zale\u017cno\u015bci.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Nowy GraalVM to r\u00f3wnie\u017c kilka innych nowo\u015bci - mo\u017cliwo\u015b\u0107 \u0142atwiejszego generowania ThreadDump\u00f3w, optymalizacje i poprawki wydajno\u015bciowe czy wsparcie Apple Silicon (bo od czasu wydania M2 ci\u0119\u017cko ju\u017c u\u017cywa\u0107 nazwy M1) w GraalVM Enterprise. Po wi\u0119cej szczeg\u00f3\u0142\u00f3w zapraszam do lektury <a href=\"https:\/\/medium.com\/graalvm\/graalvm-22-2-smaller-jdk-size-improved-memory-usage-better-library-support-and-more-cb34b5b68ec0\">posta towarzysz\u0105cego nowemu wydaniu<\/a>.<\/p>\n","innerContent":["\n<p>Nowy GraalVM to r\u00f3wnie\u017c kilka innych nowo\u015bci - mo\u017cliwo\u015b\u0107 \u0142atwiejszego generowania ThreadDump\u00f3w, optymalizacje i poprawki wydajno\u015bciowe czy wsparcie Apple Silicon (bo od czasu wydania M2 ci\u0119\u017cko ju\u017c u\u017cywa\u0107 nazwy M1) w GraalVM Enterprise. Po wi\u0119cej szczeg\u00f3\u0142\u00f3w zapraszam do lektury <a href=\"https:\/\/medium.com\/graalvm\/graalvm-22-2-smaller-jdk-size-improved-memory-usage-better-library-support-and-more-cb34b5b68ec0\">posta towarzysz\u0105cego nowemu wydaniu<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/medium.com\/graalvm\/graalvm-22-2-smaller-jdk-size-improved-memory-usage-better-library-support-and-more-cb34b5b68ec0\">GraalVM 22.2 Released<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/medium.com\/graalvm\/graalvm-22-2-smaller-jdk-size-improved-memory-usage-better-library-support-and-more-cb34b5b68ec0\">GraalVM 22.2 Released<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>3. Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom<\/h2>\n","innerContent":["\n<h2>3. Tw\u00f3rcy Vert.x zaczynaj\u0105 eksperymentowa\u0107 z Project Loom<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Projekt Loom coraz bardziej nam si\u0119 panoszy. Par\u0119 edycji temu opisywali\u015bmy pierwsze eksperymenty tw\u00f3rc\u00f3w Quarkusa z t\u0105 technologi\u0105, koniec lipca przyni\u00f3s\u0142 za\u015b og\u0142oszenie ze strony tw\u00f3rc\u00f3w Vert.x. Ten do\u015b\u0107 eksperymentalny projekt, kt\u00f3ry pocz\u0105tkowo pozycjonowa\u0142 si\u0119 jako alternatywa dla Node.js na JVM, aktualnie stanowi swoisty inkubator koncepcji zwi\u0105zanych z reaktywnym i asynchronicznym programowaniem na JVM - do\u015b\u0107 powiedzie\u0107, \u017ce np. taki Hibernate Reactive to w\u0142a\u015bciwie nak\u0142adka nad stworzonymi w ramach Vert.x reaktywnymi sterownikami do baz danych.<\/p>\n","innerContent":["\n<p>Projekt Loom coraz bardziej nam si\u0119 panoszy. Par\u0119 edycji temu opisywali\u015bmy pierwsze eksperymenty tw\u00f3rc\u00f3w Quarkusa z t\u0105 technologi\u0105, koniec lipca przyni\u00f3s\u0142 za\u015b og\u0142oszenie ze strony tw\u00f3rc\u00f3w Vert.x. Ten do\u015b\u0107 eksperymentalny projekt, kt\u00f3ry pocz\u0105tkowo pozycjonowa\u0142 si\u0119 jako alternatywa dla Node.js na JVM, aktualnie stanowi swoisty inkubator koncepcji zwi\u0105zanych z reaktywnym i asynchronicznym programowaniem na JVM - do\u015b\u0107 powiedzie\u0107, \u017ce np. taki Hibernate Reactive to w\u0142a\u015bciwie nak\u0142adka nad stworzonymi w ramach Vert.x reaktywnymi sterownikami do baz danych.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Teraz framework bierze si\u0119 za nowe zadanie - stworzenie referencyjnej wersji u\u017cycia wirtualnych w\u0105tk\u00f3w na potrzeby system\u00f3w reaktywnych. Loom to bowiem w zasadzie bardzo internalowa funkcjonalno\u015b\u0107 - to co otrzymujemy wraz z projektem, to budulec dla tw\u00f3rc\u00f3w framework\u00f3w, kt\u00f3rych teraz zadaniem jest stworzy\u0107 abstrakcje, kt\u00f3re b\u0119d\u0105 dopiero u\u017cywane przez \"programist\u00f3w przemys\u0142owych\". I w\u0142a\u015bnie to zadanie bierze sobie Vert.x na plecy, og\u0142aszaj\u0105c <strong>Virtual threads incubator<\/strong>, projekt, kt\u00f3ry ma na celu dostarczeniu gotowych rozwi\u0105za\u0144 i wzorc\u00f3w. Na ten moment pierwsz\u0105, nie ostatni\u0105 z propozycji jest <strong><a href=\"https:\/\/github.com\/vert-x3\/vertx-virtual-threads-incubator\/tree\/main\/vertx-async-await-incubator\">Vert.x Async\/Await<\/a><\/strong>, ale ju\u017c nied\u0142ugo powinni\u015bmy dosta\u0107 kolejne. Osobi\u015bcie zamierzam \u015bledzi\u0107 nowo\u015bci w repozytorium <a href=\"https:\/\/github.com\/vert-x3\/vertx-virtual-threads-incubator\"><strong>vert-x3\/vertx-virtual-threads-incubator<\/strong><\/a> i jak pojawi\u0105 si\u0119 kolejne ciekawe propozycje, na pewno trafi\u0105 one do tego przegl\u0105du.<\/p>\n","innerContent":["\n<p>Teraz framework bierze si\u0119 za nowe zadanie - stworzenie referencyjnej wersji u\u017cycia wirtualnych w\u0105tk\u00f3w na potrzeby system\u00f3w reaktywnych. Loom to bowiem w zasadzie bardzo internalowa funkcjonalno\u015b\u0107 - to co otrzymujemy wraz z projektem, to budulec dla tw\u00f3rc\u00f3w framework\u00f3w, kt\u00f3rych teraz zadaniem jest stworzy\u0107 abstrakcje, kt\u00f3re b\u0119d\u0105 dopiero u\u017cywane przez \"programist\u00f3w przemys\u0142owych\". I w\u0142a\u015bnie to zadanie bierze sobie Vert.x na plecy, og\u0142aszaj\u0105c <strong>Virtual threads incubator<\/strong>, projekt, kt\u00f3ry ma na celu dostarczeniu gotowych rozwi\u0105za\u0144 i wzorc\u00f3w. Na ten moment pierwsz\u0105, nie ostatni\u0105 z propozycji jest <strong><a href=\"https:\/\/github.com\/vert-x3\/vertx-virtual-threads-incubator\/tree\/main\/vertx-async-await-incubator\">Vert.x Async\/Await<\/a><\/strong>, ale ju\u017c nied\u0142ugo powinni\u015bmy dosta\u0107 kolejne. Osobi\u015bcie zamierzam \u015bledzi\u0107 nowo\u015bci w repozytorium <a href=\"https:\/\/github.com\/vert-x3\/vertx-virtual-threads-incubator\"><strong>vert-x3\/vertx-virtual-threads-incubator<\/strong><\/a> i jak pojawi\u0105 si\u0119 kolejne ciekawe propozycje, na pewno trafi\u0105 one do tego przegl\u0105du.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":6165,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-7.gif\" alt=\"\" class=\"wp-image-6165\"\/><figcaption>Znaj\u0105c tw\u00f3rc\u00f3w Vert.x - oh, to b\u0119dzie fun!<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-7.gif\" alt=\"\" class=\"wp-image-6165\"\/><figcaption>Znaj\u0105c tw\u00f3rc\u00f3w Vert.x - oh, to b\u0119dzie fun!<\/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:\/\/vertx.io\/blog\/vertx-virtual-threads-incubator\/\">Vert.x virtual threads incubator<\/a><\/li><li><a href=\"https:\/\/github.com\/vert-x3\/vertx-virtual-threads-incubator\">vert-x3\/vertx-virtual-threads-incubator<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/vertx.io\/blog\/vertx-virtual-threads-incubator\/\">Vert.x virtual threads incubator<\/a><\/li><li><a href=\"https:\/\/github.com\/vert-x3\/vertx-virtual-threads-incubator\">vert-x3\/vertx-virtual-threads-incubator<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>4. Helidon 3.0 - Java 17, Jakarta EE i MicroProfile<\/h2>\n","innerContent":["\n<h2>4. Helidon 3.0 - Java 17, Jakarta EE i MicroProfile<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>No, a na koniec mamy dla Was nowe wydanie <a href=\"https:\/\/medium.com\/helidon\/helidon-3-0-is-released-1bd2df1f999b\">Helidona - edycj\u0119 3.0<\/a>. Mimo, \u017ce framework pozostaje nieco w cieniu popularniejszych rozwi\u0105za\u0144, takich jak Spring, Micronaut czy Quarkus, Helidon stanowi swoist\u0105 implementacje referencyjn\u0105 dla MicroProfile i \"mikro\" Jakarty EE od samego Oracle. Dlatego przygl\u0105dniemy si\u0119, co przynosi nowa wersja.<\/p>\n","innerContent":["\n<p>No, a na koniec mamy dla Was nowe wydanie <a href=\"https:\/\/medium.com\/helidon\/helidon-3-0-is-released-1bd2df1f999b\">Helidona - edycj\u0119 3.0<\/a>. Mimo, \u017ce framework pozostaje nieco w cieniu popularniejszych rozwi\u0105za\u0144, takich jak Spring, Micronaut czy Quarkus, Helidon stanowi swoist\u0105 implementacje referencyjn\u0105 dla MicroProfile i \"mikro\" Jakarty EE od samego Oracle. Dlatego przygl\u0105dniemy si\u0119, co przynosi nowa wersja.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>I tutaj pierwsze zaskoczenie - ot\u00f3\u017c nowa edycja wymaga do dzia\u0142ania minimum JDK 17. Oracle idzie jak burza.w procesie wypychania u\u017cytkownik\u00f3w na najnowsze LTS'y - jak wida\u0107 na za\u0142\u0105czonym przyk\u0142adzie, przyj\u0119li metod\u0119 kija (minimalne wspierane wydania) i marchewki (istotne nowo\u015bci).<\/p>\n","innerContent":["\n<p>I tutaj pierwsze zaskoczenie - ot\u00f3\u017c nowa edycja wymaga do dzia\u0142ania minimum JDK 17. Oracle idzie jak burza.w procesie wypychania u\u017cytkownik\u00f3w na najnowsze LTS'y - jak wida\u0107 na za\u0142\u0105czonym przyk\u0142adzie, przyj\u0119li metod\u0119 kija (minimalne wspierane wydania) i marchewki (istotne nowo\u015bci).<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":6168,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/fe2a38f4-4dbd-4f91-b64a-db5e24718f7f_text.gif\" alt=\"\" class=\"wp-image-6168\"\/><figcaption>Przy czym Java 17 to na dobr\u0105 spraw\u0119 te\u017c marchewka <\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/fe2a38f4-4dbd-4f91-b64a-db5e24718f7f_text.gif\" alt=\"\" class=\"wp-image-6168\"\/><figcaption>Przy czym Java 17 to na dobr\u0105 spraw\u0119 te\u017c marchewka <\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Bo za takow\u0105 \"istotn\u0105 nowo\u015b\u0107\" z pewno\u015bci\u0105 uzna\u0107 mo\u017cna wsparcie dla MicroProfile 5.0 oraz wyselekcjonowanych aspekt\u00f3w Jakarta EE 9.1. W jaki\u015b spos\u00f3b zabawnym jest dla mnie, \u017ce wraz z tym podbiciem r\u00f3wnie\u017c framework od Oracle pozbywa si\u0119 trademarkowanej paczki <strong>javax.<\/strong> na rzecz <strong>jakarta.<\/strong>. Tw\u00f3rcy chwal\u0105 si\u0119, \u017ce jest to pierwszy produkt korporacji kt\u00f3ry dokona\u0142 tej zmiany. Z funkcjonalno\u015bci w Helidonie pojawi\u0142 si\u0119 r\u00f3wnie\u017c <a href=\"https:\/\/openjdk.org\/jeps\/290\"><strong>JEP 290: Filter Incoming Serialization Data<\/strong><\/a>, czyli usprawnienia bezpiecze\u0144stwa podczas procesu serializacji i deserializacji (takowa jest domy\u015blnie w Helidonie 3.0 zreszt\u0105 wy\u0142\u0105czona), a tak\u017ce ulepszenia dla routing API.<\/p>\n","innerContent":["\n<p>Bo za takow\u0105 \"istotn\u0105 nowo\u015b\u0107\" z pewno\u015bci\u0105 uzna\u0107 mo\u017cna wsparcie dla MicroProfile 5.0 oraz wyselekcjonowanych aspekt\u00f3w Jakarta EE 9.1. W jaki\u015b spos\u00f3b zabawnym jest dla mnie, \u017ce wraz z tym podbiciem r\u00f3wnie\u017c framework od Oracle pozbywa si\u0119 trademarkowanej paczki <strong>javax.<\/strong> na rzecz <strong>jakarta.<\/strong>. Tw\u00f3rcy chwal\u0105 si\u0119, \u017ce jest to pierwszy produkt korporacji kt\u00f3ry dokona\u0142 tej zmiany. Z funkcjonalno\u015bci w Helidonie pojawi\u0142 si\u0119 r\u00f3wnie\u017c <a href=\"https:\/\/openjdk.org\/jeps\/290\"><strong>JEP 290: Filter Incoming Serialization Data<\/strong><\/a>, czyli usprawnienia bezpiecze\u0144stwa podczas procesu serializacji i deserializacji (takowa jest domy\u015blnie w Helidonie 3.0 zreszt\u0105 wy\u0142\u0105czona), a tak\u017ce ulepszenia dla routing API.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jednak nie tylko nowe mo\u017cliwo\u015bci samego frameworka s\u0105 istotne, ale te\u017c to jak si\u0119 go u\u017cywa (o czym zapominaj\u0105 tw\u00f3rcy wspomnianego ju\u017c Vert.x'a, maj\u0105cego legendarnie fataln\u0105 dokumentacj\u0119 i release notes). Nowy Helidon przynosi te\u017c usprawnienia w kontek\u015bcie Developer Experience. Wraz z now\u0105 wersj\u0105 otrzymujemy bowiem nowy generator projekt\u00f3w - <a href=\"https:\/\/helidon.io\/starter\/3.0.0\">zar\u00f3wno w wersji webowej<\/a>, na mod\u0142\u0119 tego od Springa czy Jakarta EE pozwalaj\u0105cy \u0142atwo prekonfigurowa\u0107 baz\u0119 dla helidonowego projektu, jak i w formie CLI, dla tych preferuj\u0105cych terminal.<\/p>\n","innerContent":["\n<p>Jednak nie tylko nowe mo\u017cliwo\u015bci samego frameworka s\u0105 istotne, ale te\u017c to jak si\u0119 go u\u017cywa (o czym zapominaj\u0105 tw\u00f3rcy wspomnianego ju\u017c Vert.x'a, maj\u0105cego legendarnie fataln\u0105 dokumentacj\u0119 i release notes). Nowy Helidon przynosi te\u017c usprawnienia w kontek\u015bcie Developer Experience. Wraz z now\u0105 wersj\u0105 otrzymujemy bowiem nowy generator projekt\u00f3w - <a href=\"https:\/\/helidon.io\/starter\/3.0.0\">zar\u00f3wno w wersji webowej<\/a>, na mod\u0142\u0119 tego od Springa czy Jakarta EE pozwalaj\u0105cy \u0142atwo prekonfigurowa\u0107 baz\u0119 dla helidonowego projektu, jak i w formie CLI, dla tych preferuj\u0105cych terminal.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":6170,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-9.gif\" alt=\"\" class=\"wp-image-6170\"\/><figcaption>Podsumowuj\u0105c - du\u017co tego. My\u015bl\u0119, \u017ce ka\u017cdy u\u017cytkownik Helidona powinien by\u0107 zadowolony z migracji na now\u0105 wersj\u0119.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-9.gif\" alt=\"\" class=\"wp-image-6170\"\/><figcaption>Podsumowuj\u0105c - du\u017co tego. My\u015bl\u0119, \u017ce ka\u017cdy u\u017cytkownik Helidona powinien by\u0107 zadowolony z migracji na now\u0105 wersj\u0119.<\/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\u0142o<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142o<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/medium.com\/helidon\/helidon-3-0-is-released-1bd2df1f999b\">Helidon 3.0 Released<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/medium.com\/helidon\/helidon-3-0-is-released-1bd2df1f999b\">Helidon 3.0 Released<\/a><\/li><\/ul>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9936","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=9936"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9936\/revisions"}],"predecessor-version":[{"id":10462,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9936\/revisions\/10462"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/8982"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=9936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=9936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=9936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}