{"id":9951,"date":"2022-06-29T08:15:30","date_gmt":"2022-06-29T06:15:30","guid":{"rendered":"https:\/\/vived.io\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/"},"modified":"2022-09-19T13:10:36","modified_gmt":"2022-09-19T11:10:36","slug":"jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/","title":{"rendered":"JVM Wednesday vol 93 &#8211; Czym jest programowanie zorientowane na dane?"},"content":{"rendered":"\n<h2 id=\"1-czemu-projekt-amber-to-programowanie-zorientowane-na-dane\" data-num=1>1. Czemu Projekt Amber to programowanie zorientowane na dane?<\/h2>\n\n\n\n<p>Ze wszystkich JVM-owych projekt\u00f3w, Amber jest tym, kt\u00f3ry dostaje chyba najmniej serducha spo\u0142eczno\u015bci i jest najmniej dookre\u015blony. No bo czym jest ten legendarny &#8222;Developer Experience&#8221; czy &#8222;produktywno\u015b\u0107&#8221;, kt\u00f3ra przy\u015bwieca Amberowi? Ca\u0142y projekt to taka swoista parasolka, pod kt\u00f3r\u0105 chowa si\u0119 w zasadzie wszystko i trudno jest znale\u017a\u0107 jeden termin, elegancko spinaj\u0105cy wszystkie znajduj\u0105ce si\u0119 pod ni\u0105 inicjatywy.<\/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\/06\/giphy-1-3.gif\" alt=\"\" class=\"wp-image-5512\"\/><\/figure><\/div>\n\n\n<p>Dlatego te\u017c moje oczy przyku\u0142 tak bardzo <a href=\"https:\/\/www.infoq.com\/articles\/data-oriented-programming-java\/\">artyku\u0142 Briana Goetza<\/a> (nie jest to pierwszy raz, gdy edycj\u0119 zaczynamy od niego), w kt\u00f3rym postanowi\u0142 on u\u017cy\u0107 do opisania zestawu funkcjonalno\u015bci kt\u00f3re Amber przyni\u00f3s\u0142 (takich jak var, rekordy, sealed classy czy pattern matching) terminu Data-Oriented Programming &#8211; programowanie zorientowane na dane. Jak pisze sam autor<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Programowanie zorientowane na dane zach\u0119ca nas do modelowania danych jako (niezmiennych) danych, a kod, w kt\u00f3rym zawarta jest logika biznesowa dotycz\u0105ca dzia\u0142ania na tych danych, powinien by\u0107 przechowywany oddzielnie.<\/p><\/blockquote>\n\n\n\n<p>Czyli w skr\u00f3cie&#8230; anemiczne obiekty i serwisy kt\u00f3re je obs\u0142uguj\u0105&#8230; co\u015b co programi\u015bci Springa robi\u0105 w zasadzie od zawsze.<\/p>\n\n\n\n<p>Ale to tak naprawd\u0119 wierzcho\u0142ek g\u00f3ry lodowej. Tekst Goetza, kt\u00f3ry serdecznie polecam, to poza technicznym wprowadzeniem w najnowsze zdobycze Javy tak\u017ce naprawd\u0119 ciekawa, nieco filozoficzna dekompozycja tego, czym jest  programowanie obiektowe. Brian dokonuje pr\u00f3by zrozumienia, dlaczego OOP nie jest ju\u017c tak popularne jak kiedy\u015b. Jednym z mo\u017cliwych powod\u00f3w w jego oczach jest&#8230; odej\u015bcie od Monolitu i regularne zmniejszanie rozmiaru naszych projekt\u00f3w (mikroserwisy, funkcje serverless).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"516\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-16.png\" alt=\"\" class=\"wp-image-5509\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-16.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-16-300x258.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption>A je\u017celi nie macie ochoty na filozofi\u0119 &#8211; jest to te\u017c sp\u00f3jny &#8222;tutorial&#8221; ostatnio dodanych featur\u00f3w.<\/figcaption><\/figure><\/div>\n\n\n<p>Ale nie tylko o Amberze pisano ostatnio w spo\u0142eczno\u015bci. Na blogu Inside Java pojawi\u0142a si\u0119 <a href=\"https:\/\/inside.java\/2022\/06\/27\/introduction-to-project-panama-part-2\/\">druga cz\u0119\u015b\u0107<\/a> go\u015bcinnej serii dotycz\u0105cej projektu Panama stworzonych przez Denysa Makogona. O Panamie, czyli daniu programistom Java dost\u0119pu do zasob\u00f3w systemu mieli\u015bmy okazj\u0119 pisa\u0107 niedawno w kontek\u015bcie eksperyment\u00f3w z algorytmami sortowania, ale ci\u0119\u017cko tamten artyku\u0142 nazwa\u0107 dobrym&#8230; wprowadzeniem. Tekst Makogona znacznie lepiej sprawdza si\u0119 jako praca u podstaw.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.youtube.com\/watch?v=FaxTTbsgb34\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"360\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-15.png\" alt=\"\" class=\"wp-image-5508\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-15.png 480w, https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-15-300x225.png 300w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/a><figcaption>A&#8230; w sobot\u0119 pisa\u0142em, \u017ce nie mia\u0142em okazji ogl\u0105da\u0107 w ramach Confitury prezentacji Jarka Pa\u0142ki <a href=\"https:\/\/www.youtube.com\/watch?v=FaxTTbsgb34\">&#8222;Bare Metal Java&#8221;<\/a> (co jest tutaj zakamuflowan\u0105 nazw\u0105 na Project Amber), ale we wtorek na <a href=\"https:\/\/meetup-segfault.konfeo.com\/pl\/groups\">Segfaultowym Meetupie<\/a> wreszcie mi si\u0119 uda\u0142o. Serdecznie polecam &#8211; super wprowadzenie do tego, co ze sob\u0105 przynosi natywna pami\u0119\u0107 i natywne funkcje.<\/figcaption><\/figure><\/div>\n\n\n<h2 id=\"2-nadchodzi-nowy-jboss-eap\" data-num=2>2. Nadchodzi nowy JBoss EAP<\/h2>\n\n\n\n<p>Zwykle, gdy piszemy o Jakarcie EE, dyskusja kr\u0119ci si\u0119 o samej specyfikacji albo WildFly&#8217;a &#8211; najbardziej &#8222;pr\u0119\u017cnego&#8221; ze wszystkich serwer\u00f3w aplikacyjnych. Jest ku temu dobry pow\u00f3d &#8211; to w\u0142a\u015bnie &#8222;wa\u017cka&#8221; jako jedyny z serwer\u00f3w aplikacyjnych rozwija si\u0119 w dynamiczny spos\u00f3b. Taki na przyk\u0142ad JBoss EAP (Enterprise Application Platform, nie Early Access Preview) ukazuje si\u0119 do\u015b\u0107 rzadko, ale te\u017c dlatego ka\u017cda nowa &#8222;du\u017ca wersja&#8221; stanowi spore wydarzenie. Dlatego te\u017c sam fakt <a href=\"https:\/\/developers.redhat.com\/articles\/2022\/06\/24\/road-jboss-eap-8#jakarta_ee_evolution\">og\u0142oszenia przez RedHata<\/a>, \u017ce pocz\u0105tkiem przysz\u0142ego roku pojawi si\u0119 jego \u00f3sma edycja przykuwa wzrok.<\/p>\n\n\n\n<p>JBoss EAP jest oparty na znanym naszym czytelnikom WildFly&#8217;u. Je\u017celi tw\u00f3rcy b\u0119d\u0105 chcieli zapewni\u0107 pe\u0142nie kompatybilno\u015bci (a to zapowiadaj\u0105), b\u0119d\u0105 musieli oprze\u0107 si\u0119 na WildFly w wersji minimum 27. Tw\u00f3rcy JBossa celowo omin\u0119li Jakarta EE 9 &#8211; ta bowiem wi\u0105za\u0142a si\u0119 g\u0142\u00f3wnie z migracj\u0105 namespace javax.* na jakarta.* . RedHat ba\u0142 si\u0119, \u017ce wymuszanie tak niebiznesowej zmiany na tw\u00f3rcach aplikacji oka\u017ce si\u0119 by\u0107 strza\u0142em w kolano i potencjalnie wyp\u0142oszy pozosta\u0142ych przy projekcie programist\u00f3w.<\/p>\n\n\n\n<p>Co wa\u017cne, ju\u017c ko\u0144cem roku u\u017cytkownicy b\u0119d\u0105 mieli okazj\u0119 przetestowa\u0107 &#8211; wtedy pojawi si\u0119 bowiem wersja Beta nowego wydania. <\/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\/06\/headesk.webp\" alt=\"\" class=\"wp-image-5514\"\/><figcaption>Mi\u0142ego migrowania namespac\u00f3w. Chwa\u0142a <a href=\"https:\/\/www.jetbrains.com\/idea\/guide\/tutorials\/migrating-javax-jakarta\/\">JetBrains za narz\u0119dzia i tutoriale<\/a>.<\/figcaption><\/figure><\/div>\n\n\n<h2 id=\"3-release-radar-zio-jooq-i-quarkus\" data-num=3>3. Release Radar: ZIO, jOOQ i Quarkus<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">ZIO 2.0<\/h3>\n\n\n\n<p>ZIO to jedna z popularniejszych scalowych bibliotek, implementacja Monady IO. Monada IO jest specjaln\u0105 monad\u0105, kt\u00f3ra opakowuje wyra\u017cenia w spos\u00f3b umo\u017cliwiaj\u0105cy &#8222;funkcyjny czyste&#8221; wykonywania operacji wej\u015bcia-wyj\u015bcia (IO). Co wprowadza druga edycja?<\/p>\n\n\n\n<p>Zacznijmy od informacji, kt\u00f3ra ju\u017c nied\u0142ugo zacznie pewnie pojawia\u0107 si\u0119 coraz cz\u0119\u015bciej &#8211; nowe ZIO zosta\u0142o zoptymalizowane pod Looma. To zreszt\u0105 nie jedyna konotacja z Jav\u0105 &#8211; tw\u00f3rcy chwal\u0105 si\u0119, \u017ce API biblioteki zosta\u0142o usprawnione i ma teraz by\u0107 przyjemniejsze w u\u017cyciu dla programist\u00f3w, kt\u00f3rzy maj\u0105 wi\u0119cej do\u015bwiadczenia z Jav\u0105. Poprawieniu uleg\u0142y funkcje streamingu, a tak\u017ce wydajno\u015b\u0107 ca\u0142o\u015bci. Tw\u00f3rcy chwal\u0105 si\u0119 te\u017c usprawnieniem monitoringu.<\/p>\n\n\n\n<p>Ca\u0142y <a href=\"https:\/\/degoes.net\/articles\/zio-2.0\">blog post z og\u0142oszeniem<\/a> jest bardzo ciekawy i pe\u0142en szczeg\u00f3\u0142\u00f3w, a je\u015bli zainteresowa\u0142 Was temat Monad IO &#8211; zapraszam do <a href=\"https:\/\/www.youtube.com\/watch?v=fCoQb-zqYDI\">bardzo dobrego opracowania w formie 36 minutowego filmiku<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">jOOQ 3.17.0<\/h3>\n\n\n\n<p>W ostatnim tygodniu pojawi\u0142 si\u0119 r\u00f3wnie\u017c <a href=\"https:\/\/blog.jooq.org\/3-17-0-release-with-computed-columns-audit-columns-pattern-matching-reactive-transactions-and-kotlin-coroutine-support\/\">jOOQ w wersji 3.17<\/a>. Nowa wersja &#8222;pod mask\u0105&#8221; lepiej wspiera teraz zar\u00f3wno reaktywno\u015b\u0107, jak i kotlinowe korutyny. Nowa wersja porzuca r\u00f3wnie\u017c wsparcie zar\u00f3wno dla Javy 8, jak i Javy 11 &#8211; darmowa wersja uruchomi si\u0119 jedynie z Java 17. Je\u017celi jeste\u015bcie zmuszeni u\u017cywa\u0107 starszych LTS-\u00f3w, pozostaje Wam tylko wersja komercyjna. W zamian za to, tw\u00f3rcy obiecuj\u0105 szersze wsparcie dla funkcjonalno\u015bci dost\u0119pnych w nowej Javie (jako efekty Projektu Amber), jak rekordy czy sealed classy.<\/p>\n\n\n\n<p>Je\u017celi chodzi o funkcjonalno\u015bci, to z pewno\u015bci\u0105 najwi\u0119ksz\u0105 nowo\u015bci\u0105 s\u0105 kolumny wyliczane wy\u0142\u0105cznie na potrzeby klienta. Mo\u017cna je potraktowa\u0107 jako &#8222;widoki&#8221; zapisane w jOOQ, dla poszczeg\u00f3lnych kolumn. Szczeg\u00f3lnie u\u017cyteczn\u0105 kombinacj\u0105 funkcji jest po\u0142\u0105czenie tych kolumn wyliczanych z nowym modyfikatorem widoczno\u015bci, kt\u00f3ry umo\u017cliwia zachowanie le\u017c\u0105cych u ich podstaw kolumn podstawowych jako prywatnych, a wi\u0119c niewidocznych dla kodu u\u017cytkownika. Pozwalaj\u0105 te\u017c na generowanie kolumn audytowych. Niestety, funkcjonalno\u015b\u0107 dost\u0119pna jest jedynie w wariancie komercyjnym. Ten te\u017c otrzymuje ulepszenie wsparcia dla transformowania mi\u0119dzy formatami.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"417\" height=\"213\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/d25.gif\" alt=\"\" class=\"wp-image-5517\"\/><figcaption>To nie dla Open-Source, dla pana commercial support to<\/figcaption><\/figure><\/div>\n\n\n<p>Z drobniejszych zmian &#8211; pojawi\u0142o si\u0119 wsparcie dla nowych typ\u00f3w danych PostgreSQL, a tak\u017ce nowe API dla Implicit (dorozumianych) JOIN\u00f3w. Te ju\u017c trafi\u0142y do wszystkich.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Quarkus 2.10<\/h3>\n\n\n\n<p>Na koniec za\u015b nowy <a href=\"https:\/\/quarkus.io\/blog\/quarkus-2-10-0-final-released\/\">Quarkus 2.10<\/a>, kt\u00f3ry podobnie jak poprzednicy jest bardzo interesuj\u0105cy.<\/p>\n\n\n\n<p>Dopiero co przy okazji ZIO przewidywa\u0142em, \u017ce Loom zacznie si\u0119 panoszy\u0107 w\u015br\u00f3d zapowiedzi nowych funkcjonalno\u015bci, by m\u00f3c do tematu wr\u00f3ci\u0107 teraz &#8211; Quarkus zapowiedzia\u0142 bowiem pierwsze przymiarki do wsparcia Looma. Zrobi\u0142 to w i\u015bcie javowym stylu, poniewa\u017c dodano po prostu&#8230; adnotacje @RunOnVirtualThread.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"267\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-17-1024x267.png\" alt=\"\" class=\"wp-image-5515\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-17-1024x267.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-17-300x78.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-17-768x200.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-17.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Annotatiomania lubi to \ud83d\udc4d<\/figcaption><\/figure>\n\n\n\n<p>Wi\u0119kszo\u015b\u0107 zmian kr\u0119ci si\u0119 w\u0142a\u015bnie w ko\u0142o asynchronicznego I\/O. Dostajemy bowiem usprawnienia SmallRye Reactive Messaging, wsparcie Kubernetesa w Reactive SQL Client oraz nieblokuj\u0105cy wariant wsparcia do GraphQL. Drobne usprawnienia trafi\u0142y do quarkus-cache i quarkus-bootstrap-maven-plugin.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tym razem pierwsze skrzypce gra Release Radar &#8211; mamy kilka naprawd\u0119 mocnych premier, wszyscy przygotowuj\u0105 si\u0119 na Looma, r\u00f3wnie\u017c w \u015bwiecie Scalowym. Opr\u00f3cz tego, wr\u00f3cimy sobie do tematu Looma i Panamy oraz zerkniemy, co szykuje si\u0119 w nowym JBossie.<\/p>\n","protected":false},"author":10,"featured_media":8779,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[259],"tags":[],"class_list":["post-9951","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm-pl"],"acf":{"estimated_reading_time":"5","feature_image_blog":{"ID":8780,"id":8780,"title":"data_5e81c7d468857","filename":"data_5e81c7d468857.jpeg","filesize":20431,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/data_5e81c7d468857.jpeg","link":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/data_5e81c7d468857-2\/","alt":"","author":"10","description":"","caption":"","name":"data_5e81c7d468857-2","status":"inherit","uploaded_to":9951,"date":"2022-06-29 06:14:48","modified":"2022-06-29 06:14:48","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/vived.io\/wp-includes\/images\/media\/default.png","width":696,"height":392,"sizes":{"thumbnail":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/data_5e81c7d468857-150x150.jpeg","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/data_5e81c7d468857-300x169.jpeg","medium-width":300,"medium-height":169,"medium_large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/data_5e81c7d468857.jpeg","medium_large-width":696,"medium_large-height":392,"large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/data_5e81c7d468857.jpeg","large-width":696,"large-height":392,"1536x1536":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/data_5e81c7d468857.jpeg","1536x1536-width":696,"1536x1536-height":392,"2048x2048":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/data_5e81c7d468857.jpeg","2048x2048-width":696,"2048x2048-height":392,"gform-image-choice-sm":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/data_5e81c7d468857.jpeg","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":169,"gform-image-choice-md":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/data_5e81c7d468857.jpeg","gform-image-choice-md-width":400,"gform-image-choice-md-height":225,"gform-image-choice-lg":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/data_5e81c7d468857.jpeg","gform-image-choice-lg-width":600,"gform-image-choice-lg-height":338}},"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-4.png","feature_image_visible":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JVM Wednesday vol 93 - Czym jest programowanie zorientowane na dane? - 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-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Wednesday vol 93 - Czym jest programowanie zorientowane na dane? - Vived\" \/>\n<meta property=\"og:description\" content=\"Tym razem pierwsze skrzypce gra Release Radar - mamy kilka naprawd\u0119 mocnych premier, wszyscy przygotowuj\u0105 si\u0119 na Looma, r\u00f3wnie\u017c w \u015bwiecie Scalowym. Opr\u00f3cz tego, wr\u00f3cimy sobie do tematu Looma i Panamy oraz zerkniemy, co szykuje si\u0119 w nowym JBossie.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-29T06:15:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-4.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Wednesday vol 93 &#8211; Czym jest programowanie zorientowane na dane?\",\"datePublished\":\"2022-06-29T06:15:30+00:00\",\"dateModified\":\"2022-09-19T11:10:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/\"},\"wordCount\":1143,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-4.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/\",\"name\":\"JVM Wednesday vol 93 - Czym jest programowanie zorientowane na dane? - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-4.png\",\"datePublished\":\"2022-06-29T06:15:30+00:00\",\"dateModified\":\"2022-09-19T11:10:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-4.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-4.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Wednesday vol 93 &#8211; Czym jest programowanie zorientowane na dane?\"}]},{\"@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 Wednesday vol 93 - Czym jest programowanie zorientowane na dane? - 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-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Wednesday vol 93 - Czym jest programowanie zorientowane na dane? - Vived","og_description":"Tym razem pierwsze skrzypce gra Release Radar - mamy kilka naprawd\u0119 mocnych premier, wszyscy przygotowuj\u0105 si\u0119 na Looma, r\u00f3wnie\u017c w \u015bwiecie Scalowym. Opr\u00f3cz tego, wr\u00f3cimy sobie do tematu Looma i Panamy oraz zerkniemy, co szykuje si\u0119 w nowym JBossie.","og_url":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/","og_site_name":"Vived","article_published_time":"2022-06-29T06:15:30+00:00","article_modified_time":"2022-09-19T11:10:36+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-4.png","type":"image\/png"}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Wednesday vol 93 &#8211; Czym jest programowanie zorientowane na dane?","datePublished":"2022-06-29T06:15:30+00:00","dateModified":"2022-09-19T11:10:36+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/"},"wordCount":1143,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-4.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/","url":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/","name":"JVM Wednesday vol 93 - Czym jest programowanie zorientowane na dane? - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-4.png","datePublished":"2022-06-29T06:15:30+00:00","dateModified":"2022-09-19T11:10:36+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-4.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-4.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-93-czym-jest-programowanie-zorientowane-na-dane\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Wednesday vol 93 &#8211; Czym jest programowanie zorientowane na dane?"}]},{"@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. Czemu Projekt Amber to programowanie zorientowane na dane?<\/h2>\n","innerContent":["\n<h2>1. Czemu Projekt Amber to programowanie zorientowane na dane?<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ze wszystkich JVM-owych projekt\u00f3w, Amber jest tym, kt\u00f3ry dostaje chyba najmniej serducha spo\u0142eczno\u015bci i jest najmniej dookre\u015blony. No bo czym jest ten legendarny \"Developer Experience\" czy \"produktywno\u015b\u0107\", kt\u00f3ra przy\u015bwieca Amberowi? Ca\u0142y projekt to taka swoista parasolka, pod kt\u00f3r\u0105 chowa si\u0119 w zasadzie wszystko i trudno jest znale\u017a\u0107 jeden termin, elegancko spinaj\u0105cy wszystkie znajduj\u0105ce si\u0119 pod ni\u0105 inicjatywy.<\/p>\n","innerContent":["\n<p>Ze wszystkich JVM-owych projekt\u00f3w, Amber jest tym, kt\u00f3ry dostaje chyba najmniej serducha spo\u0142eczno\u015bci i jest najmniej dookre\u015blony. No bo czym jest ten legendarny \"Developer Experience\" czy \"produktywno\u015b\u0107\", kt\u00f3ra przy\u015bwieca Amberowi? Ca\u0142y projekt to taka swoista parasolka, pod kt\u00f3r\u0105 chowa si\u0119 w zasadzie wszystko i trudno jest znale\u017a\u0107 jeden termin, elegancko spinaj\u0105cy wszystkie znajduj\u0105ce si\u0119 pod ni\u0105 inicjatywy.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":5512,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/giphy-1-3.gif\" alt=\"\" class=\"wp-image-5512\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/giphy-1-3.gif\" alt=\"\" class=\"wp-image-5512\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dlatego te\u017c moje oczy przyku\u0142 tak bardzo <a href=\"https:\/\/www.infoq.com\/articles\/data-oriented-programming-java\/\">artyku\u0142 Briana Goetza<\/a> (nie jest to pierwszy raz, gdy edycj\u0119 zaczynamy od niego), w kt\u00f3rym postanowi\u0142 on u\u017cy\u0107 do opisania zestawu funkcjonalno\u015bci kt\u00f3re Amber przyni\u00f3s\u0142 (takich jak var, rekordy, sealed classy czy pattern matching) terminu Data-Oriented Programming - programowanie zorientowane na dane. Jak pisze sam autor<\/p>\n","innerContent":["\n<p>Dlatego te\u017c moje oczy przyku\u0142 tak bardzo <a href=\"https:\/\/www.infoq.com\/articles\/data-oriented-programming-java\/\">artyku\u0142 Briana Goetza<\/a> (nie jest to pierwszy raz, gdy edycj\u0119 zaczynamy od niego), w kt\u00f3rym postanowi\u0142 on u\u017cy\u0107 do opisania zestawu funkcjonalno\u015bci kt\u00f3re Amber przyni\u00f3s\u0142 (takich jak var, rekordy, sealed classy czy pattern matching) terminu Data-Oriented Programming - programowanie zorientowane na dane. Jak pisze sam autor<\/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>Programowanie zorientowane na dane zach\u0119ca nas do modelowania danych jako (niezmiennych) danych, a kod, w kt\u00f3rym zawarta jest logika biznesowa dotycz\u0105ca dzia\u0142ania na tych danych, powinien by\u0107 przechowywany oddzielnie.<\/p><\/blockquote>\n","innerContent":["\n<blockquote class=\"wp-block-quote\"><p>Programowanie zorientowane na dane zach\u0119ca nas do modelowania danych jako (niezmiennych) danych, a kod, w kt\u00f3rym zawarta jest logika biznesowa dotycz\u0105ca dzia\u0142ania na tych danych, powinien by\u0107 przechowywany oddzielnie.<\/p><\/blockquote>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Czyli w skr\u00f3cie... anemiczne obiekty i serwisy kt\u00f3re je obs\u0142uguj\u0105... co\u015b co programi\u015bci Springa robi\u0105 w zasadzie od zawsze.<\/p>\n","innerContent":["\n<p>Czyli w skr\u00f3cie... anemiczne obiekty i serwisy kt\u00f3re je obs\u0142uguj\u0105... co\u015b co programi\u015bci Springa robi\u0105 w zasadzie od zawsze.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ale to tak naprawd\u0119 wierzcho\u0142ek g\u00f3ry lodowej. Tekst Goetza, kt\u00f3ry serdecznie polecam, to poza technicznym wprowadzeniem w najnowsze zdobycze Javy tak\u017ce naprawd\u0119 ciekawa, nieco filozoficzna dekompozycja tego, czym jest  programowanie obiektowe. Brian dokonuje pr\u00f3by zrozumienia, dlaczego OOP nie jest ju\u017c tak popularne jak kiedy\u015b. Jednym z mo\u017cliwych powod\u00f3w w jego oczach jest... odej\u015bcie od Monolitu i regularne zmniejszanie rozmiaru naszych projekt\u00f3w (mikroserwisy, funkcje serverless).<\/p>\n","innerContent":["\n<p>Ale to tak naprawd\u0119 wierzcho\u0142ek g\u00f3ry lodowej. Tekst Goetza, kt\u00f3ry serdecznie polecam, to poza technicznym wprowadzeniem w najnowsze zdobycze Javy tak\u017ce naprawd\u0119 ciekawa, nieco filozoficzna dekompozycja tego, czym jest  programowanie obiektowe. Brian dokonuje pr\u00f3by zrozumienia, dlaczego OOP nie jest ju\u017c tak popularne jak kiedy\u015b. Jednym z mo\u017cliwych powod\u00f3w w jego oczach jest... odej\u015bcie od Monolitu i regularne zmniejszanie rozmiaru naszych projekt\u00f3w (mikroserwisy, funkcje serverless).<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":5509,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-16.png\" alt=\"\" class=\"wp-image-5509\"\/><figcaption>A je\u017celi nie macie ochoty na filozofi\u0119 - jest to te\u017c sp\u00f3jny \"tutorial\" ostatnio dodanych featur\u00f3w.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-16.png\" alt=\"\" class=\"wp-image-5509\"\/><figcaption>A je\u017celi nie macie ochoty na filozofi\u0119 - jest to te\u017c sp\u00f3jny \"tutorial\" ostatnio dodanych featur\u00f3w.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ale nie tylko o Amberze pisano ostatnio w spo\u0142eczno\u015bci. Na blogu Inside Java pojawi\u0142a si\u0119 <a href=\"https:\/\/inside.java\/2022\/06\/27\/introduction-to-project-panama-part-2\/\">druga cz\u0119\u015b\u0107<\/a> go\u015bcinnej serii dotycz\u0105cej projektu Panama stworzonych przez Denysa Makogona. O Panamie, czyli daniu programistom Java dost\u0119pu do zasob\u00f3w systemu mieli\u015bmy okazj\u0119 pisa\u0107 niedawno w kontek\u015bcie eksperyment\u00f3w z algorytmami sortowania, ale ci\u0119\u017cko tamten artyku\u0142 nazwa\u0107 dobrym... wprowadzeniem. Tekst Makogona znacznie lepiej sprawdza si\u0119 jako praca u podstaw.<\/p>\n","innerContent":["\n<p>Ale nie tylko o Amberze pisano ostatnio w spo\u0142eczno\u015bci. Na blogu Inside Java pojawi\u0142a si\u0119 <a href=\"https:\/\/inside.java\/2022\/06\/27\/introduction-to-project-panama-part-2\/\">druga cz\u0119\u015b\u0107<\/a> go\u015bcinnej serii dotycz\u0105cej projektu Panama stworzonych przez Denysa Makogona. O Panamie, czyli daniu programistom Java dost\u0119pu do zasob\u00f3w systemu mieli\u015bmy okazj\u0119 pisa\u0107 niedawno w kontek\u015bcie eksperyment\u00f3w z algorytmami sortowania, ale ci\u0119\u017cko tamten artyku\u0142 nazwa\u0107 dobrym... wprowadzeniem. Tekst Makogona znacznie lepiej sprawdza si\u0119 jako praca u podstaw.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":5508,"sizeSlug":"full","linkDestination":"custom"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/www.youtube.com\/watch?v=FaxTTbsgb34\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-15.png\" alt=\"\" class=\"wp-image-5508\"\/><\/a><figcaption>A... w sobot\u0119 pisa\u0142em, \u017ce nie mia\u0142em okazji ogl\u0105da\u0107 w ramach Confitury prezentacji Jarka Pa\u0142ki <a href=\"https:\/\/www.youtube.com\/watch?v=FaxTTbsgb34\">\"Bare Metal Java\"<\/a> (co jest tutaj zakamuflowan\u0105 nazw\u0105 na Project Amber), ale we wtorek na <a href=\"https:\/\/meetup-segfault.konfeo.com\/pl\/groups\">Segfaultowym Meetupie<\/a> wreszcie mi si\u0119 uda\u0142o. Serdecznie polecam - super wprowadzenie do tego, co ze sob\u0105 przynosi natywna pami\u0119\u0107 i natywne funkcje.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/www.youtube.com\/watch?v=FaxTTbsgb34\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-15.png\" alt=\"\" class=\"wp-image-5508\"\/><\/a><figcaption>A... w sobot\u0119 pisa\u0142em, \u017ce nie mia\u0142em okazji ogl\u0105da\u0107 w ramach Confitury prezentacji Jarka Pa\u0142ki <a href=\"https:\/\/www.youtube.com\/watch?v=FaxTTbsgb34\">\"Bare Metal Java\"<\/a> (co jest tutaj zakamuflowan\u0105 nazw\u0105 na Project Amber), ale we wtorek na <a href=\"https:\/\/meetup-segfault.konfeo.com\/pl\/groups\">Segfaultowym Meetupie<\/a> wreszcie mi si\u0119 uda\u0142o. Serdecznie polecam - super wprowadzenie do tego, co ze sob\u0105 przynosi natywna pami\u0119\u0107 i natywne funkcje.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. Nadchodzi nowy JBoss EAP<\/h2>\n","innerContent":["\n<h2>2. Nadchodzi nowy JBoss EAP<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zwykle, gdy piszemy o Jakarcie EE, dyskusja kr\u0119ci si\u0119 o samej specyfikacji albo WildFly'a - najbardziej \"pr\u0119\u017cnego\" ze wszystkich serwer\u00f3w aplikacyjnych. Jest ku temu dobry pow\u00f3d - to w\u0142a\u015bnie \"wa\u017cka\" jako jedyny z serwer\u00f3w aplikacyjnych rozwija si\u0119 w dynamiczny spos\u00f3b. Taki na przyk\u0142ad JBoss EAP (Enterprise Application Platform, nie Early Access Preview) ukazuje si\u0119 do\u015b\u0107 rzadko, ale te\u017c dlatego ka\u017cda nowa \"du\u017ca wersja\" stanowi spore wydarzenie. Dlatego te\u017c sam fakt <a href=\"https:\/\/developers.redhat.com\/articles\/2022\/06\/24\/road-jboss-eap-8#jakarta_ee_evolution\">og\u0142oszenia przez RedHata<\/a>, \u017ce pocz\u0105tkiem przysz\u0142ego roku pojawi si\u0119 jego \u00f3sma edycja przykuwa wzrok.<\/p>\n","innerContent":["\n<p>Zwykle, gdy piszemy o Jakarcie EE, dyskusja kr\u0119ci si\u0119 o samej specyfikacji albo WildFly'a - najbardziej \"pr\u0119\u017cnego\" ze wszystkich serwer\u00f3w aplikacyjnych. Jest ku temu dobry pow\u00f3d - to w\u0142a\u015bnie \"wa\u017cka\" jako jedyny z serwer\u00f3w aplikacyjnych rozwija si\u0119 w dynamiczny spos\u00f3b. Taki na przyk\u0142ad JBoss EAP (Enterprise Application Platform, nie Early Access Preview) ukazuje si\u0119 do\u015b\u0107 rzadko, ale te\u017c dlatego ka\u017cda nowa \"du\u017ca wersja\" stanowi spore wydarzenie. Dlatego te\u017c sam fakt <a href=\"https:\/\/developers.redhat.com\/articles\/2022\/06\/24\/road-jboss-eap-8#jakarta_ee_evolution\">og\u0142oszenia przez RedHata<\/a>, \u017ce pocz\u0105tkiem przysz\u0142ego roku pojawi si\u0119 jego \u00f3sma edycja przykuwa wzrok.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>JBoss EAP jest oparty na znanym naszym czytelnikom WildFly'u. Je\u017celi tw\u00f3rcy b\u0119d\u0105 chcieli zapewni\u0107 pe\u0142nie kompatybilno\u015bci (a to zapowiadaj\u0105), b\u0119d\u0105 musieli oprze\u0107 si\u0119 na WildFly w wersji minimum 27. Tw\u00f3rcy JBossa celowo omin\u0119li Jakarta EE 9 - ta bowiem wi\u0105za\u0142a si\u0119 g\u0142\u00f3wnie z migracj\u0105 namespace javax.* na jakarta.* . RedHat ba\u0142 si\u0119, \u017ce wymuszanie tak niebiznesowej zmiany na tw\u00f3rcach aplikacji oka\u017ce si\u0119 by\u0107 strza\u0142em w kolano i potencjalnie wyp\u0142oszy pozosta\u0142ych przy projekcie programist\u00f3w.<\/p>\n","innerContent":["\n<p>JBoss EAP jest oparty na znanym naszym czytelnikom WildFly'u. Je\u017celi tw\u00f3rcy b\u0119d\u0105 chcieli zapewni\u0107 pe\u0142nie kompatybilno\u015bci (a to zapowiadaj\u0105), b\u0119d\u0105 musieli oprze\u0107 si\u0119 na WildFly w wersji minimum 27. Tw\u00f3rcy JBossa celowo omin\u0119li Jakarta EE 9 - ta bowiem wi\u0105za\u0142a si\u0119 g\u0142\u00f3wnie z migracj\u0105 namespace javax.* na jakarta.* . RedHat ba\u0142 si\u0119, \u017ce wymuszanie tak niebiznesowej zmiany na tw\u00f3rcach aplikacji oka\u017ce si\u0119 by\u0107 strza\u0142em w kolano i potencjalnie wyp\u0142oszy pozosta\u0142ych przy projekcie programist\u00f3w.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Co wa\u017cne, ju\u017c ko\u0144cem roku u\u017cytkownicy b\u0119d\u0105 mieli okazj\u0119 przetestowa\u0107 - wtedy pojawi si\u0119 bowiem wersja Beta nowego wydania. <\/p>\n","innerContent":["\n<p>Co wa\u017cne, ju\u017c ko\u0144cem roku u\u017cytkownicy b\u0119d\u0105 mieli okazj\u0119 przetestowa\u0107 - wtedy pojawi si\u0119 bowiem wersja Beta nowego wydania. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":5514,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/headesk.webp\" alt=\"\" class=\"wp-image-5514\"\/><figcaption>Mi\u0142ego migrowania namespac\u00f3w. Chwa\u0142a <a href=\"https:\/\/www.jetbrains.com\/idea\/guide\/tutorials\/migrating-javax-jakarta\/\">JetBrains za narz\u0119dzia i tutoriale<\/a>.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/headesk.webp\" alt=\"\" class=\"wp-image-5514\"\/><figcaption>Mi\u0142ego migrowania namespac\u00f3w. Chwa\u0142a <a href=\"https:\/\/www.jetbrains.com\/idea\/guide\/tutorials\/migrating-javax-jakarta\/\">JetBrains za narz\u0119dzia i tutoriale<\/a>.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>3. Release Radar: ZIO, jOOQ i Quarkus<\/h2>\n","innerContent":["\n<h2>3. Release Radar: ZIO, jOOQ i Quarkus<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>ZIO 2.0<\/h3>\n","innerContent":["\n<h3>ZIO 2.0<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>ZIO to jedna z popularniejszych scalowych bibliotek, implementacja Monady IO. Monada IO jest specjaln\u0105 monad\u0105, kt\u00f3ra opakowuje wyra\u017cenia w spos\u00f3b umo\u017cliwiaj\u0105cy \"funkcyjny czyste\" wykonywania operacji wej\u015bcia-wyj\u015bcia (IO). Co wprowadza druga edycja?<\/p>\n","innerContent":["\n<p>ZIO to jedna z popularniejszych scalowych bibliotek, implementacja Monady IO. Monada IO jest specjaln\u0105 monad\u0105, kt\u00f3ra opakowuje wyra\u017cenia w spos\u00f3b umo\u017cliwiaj\u0105cy \"funkcyjny czyste\" wykonywania operacji wej\u015bcia-wyj\u015bcia (IO). Co wprowadza druga edycja?<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zacznijmy od informacji, kt\u00f3ra ju\u017c nied\u0142ugo zacznie pewnie pojawia\u0107 si\u0119 coraz cz\u0119\u015bciej - nowe ZIO zosta\u0142o zoptymalizowane pod Looma. To zreszt\u0105 nie jedyna konotacja z Jav\u0105 - tw\u00f3rcy chwal\u0105 si\u0119, \u017ce API biblioteki zosta\u0142o usprawnione i ma teraz by\u0107 przyjemniejsze w u\u017cyciu dla programist\u00f3w, kt\u00f3rzy maj\u0105 wi\u0119cej do\u015bwiadczenia z Jav\u0105. Poprawieniu uleg\u0142y funkcje streamingu, a tak\u017ce wydajno\u015b\u0107 ca\u0142o\u015bci. Tw\u00f3rcy chwal\u0105 si\u0119 te\u017c usprawnieniem monitoringu.<\/p>\n","innerContent":["\n<p>Zacznijmy od informacji, kt\u00f3ra ju\u017c nied\u0142ugo zacznie pewnie pojawia\u0107 si\u0119 coraz cz\u0119\u015bciej - nowe ZIO zosta\u0142o zoptymalizowane pod Looma. To zreszt\u0105 nie jedyna konotacja z Jav\u0105 - tw\u00f3rcy chwal\u0105 si\u0119, \u017ce API biblioteki zosta\u0142o usprawnione i ma teraz by\u0107 przyjemniejsze w u\u017cyciu dla programist\u00f3w, kt\u00f3rzy maj\u0105 wi\u0119cej do\u015bwiadczenia z Jav\u0105. Poprawieniu uleg\u0142y funkcje streamingu, a tak\u017ce wydajno\u015b\u0107 ca\u0142o\u015bci. Tw\u00f3rcy chwal\u0105 si\u0119 te\u017c usprawnieniem monitoringu.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ca\u0142y <a href=\"https:\/\/degoes.net\/articles\/zio-2.0\">blog post z og\u0142oszeniem<\/a> jest bardzo ciekawy i pe\u0142en szczeg\u00f3\u0142\u00f3w, a je\u015bli zainteresowa\u0142 Was temat Monad IO - zapraszam do <a href=\"https:\/\/www.youtube.com\/watch?v=fCoQb-zqYDI\">bardzo dobrego opracowania w formie 36 minutowego filmiku<\/a><\/p>\n","innerContent":["\n<p>Ca\u0142y <a href=\"https:\/\/degoes.net\/articles\/zio-2.0\">blog post z og\u0142oszeniem<\/a> jest bardzo ciekawy i pe\u0142en szczeg\u00f3\u0142\u00f3w, a je\u015bli zainteresowa\u0142 Was temat Monad IO - zapraszam do <a href=\"https:\/\/www.youtube.com\/watch?v=fCoQb-zqYDI\">bardzo dobrego opracowania w formie 36 minutowego filmiku<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>jOOQ 3.17.0<\/h3>\n","innerContent":["\n<h3>jOOQ 3.17.0<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W ostatnim tygodniu pojawi\u0142 si\u0119 r\u00f3wnie\u017c <a href=\"https:\/\/blog.jooq.org\/3-17-0-release-with-computed-columns-audit-columns-pattern-matching-reactive-transactions-and-kotlin-coroutine-support\/\">jOOQ w wersji 3.17<\/a>. Nowa wersja \"pod mask\u0105\" lepiej wspiera teraz zar\u00f3wno reaktywno\u015b\u0107, jak i kotlinowe korutyny. Nowa wersja porzuca r\u00f3wnie\u017c wsparcie zar\u00f3wno dla Javy 8, jak i Javy 11 - darmowa wersja uruchomi si\u0119 jedynie z Java 17. Je\u017celi jeste\u015bcie zmuszeni u\u017cywa\u0107 starszych LTS-\u00f3w, pozostaje Wam tylko wersja komercyjna. W zamian za to, tw\u00f3rcy obiecuj\u0105 szersze wsparcie dla funkcjonalno\u015bci dost\u0119pnych w nowej Javie (jako efekty Projektu Amber), jak rekordy czy sealed classy.<\/p>\n","innerContent":["\n<p>W ostatnim tygodniu pojawi\u0142 si\u0119 r\u00f3wnie\u017c <a href=\"https:\/\/blog.jooq.org\/3-17-0-release-with-computed-columns-audit-columns-pattern-matching-reactive-transactions-and-kotlin-coroutine-support\/\">jOOQ w wersji 3.17<\/a>. Nowa wersja \"pod mask\u0105\" lepiej wspiera teraz zar\u00f3wno reaktywno\u015b\u0107, jak i kotlinowe korutyny. Nowa wersja porzuca r\u00f3wnie\u017c wsparcie zar\u00f3wno dla Javy 8, jak i Javy 11 - darmowa wersja uruchomi si\u0119 jedynie z Java 17. Je\u017celi jeste\u015bcie zmuszeni u\u017cywa\u0107 starszych LTS-\u00f3w, pozostaje Wam tylko wersja komercyjna. W zamian za to, tw\u00f3rcy obiecuj\u0105 szersze wsparcie dla funkcjonalno\u015bci dost\u0119pnych w nowej Javie (jako efekty Projektu Amber), jak rekordy czy sealed classy.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u017celi chodzi o funkcjonalno\u015bci, to z pewno\u015bci\u0105 najwi\u0119ksz\u0105 nowo\u015bci\u0105 s\u0105 kolumny wyliczane wy\u0142\u0105cznie na potrzeby klienta. Mo\u017cna je potraktowa\u0107 jako \"widoki\" zapisane w jOOQ, dla poszczeg\u00f3lnych kolumn. Szczeg\u00f3lnie u\u017cyteczn\u0105 kombinacj\u0105 funkcji jest po\u0142\u0105czenie tych kolumn wyliczanych z nowym modyfikatorem widoczno\u015bci, kt\u00f3ry umo\u017cliwia zachowanie le\u017c\u0105cych u ich podstaw kolumn podstawowych jako prywatnych, a wi\u0119c niewidocznych dla kodu u\u017cytkownika. Pozwalaj\u0105 te\u017c na generowanie kolumn audytowych. Niestety, funkcjonalno\u015b\u0107 dost\u0119pna jest jedynie w wariancie komercyjnym. Ten te\u017c otrzymuje ulepszenie wsparcia dla transformowania mi\u0119dzy formatami.<\/p>\n","innerContent":["\n<p>Je\u017celi chodzi o funkcjonalno\u015bci, to z pewno\u015bci\u0105 najwi\u0119ksz\u0105 nowo\u015bci\u0105 s\u0105 kolumny wyliczane wy\u0142\u0105cznie na potrzeby klienta. Mo\u017cna je potraktowa\u0107 jako \"widoki\" zapisane w jOOQ, dla poszczeg\u00f3lnych kolumn. Szczeg\u00f3lnie u\u017cyteczn\u0105 kombinacj\u0105 funkcji jest po\u0142\u0105czenie tych kolumn wyliczanych z nowym modyfikatorem widoczno\u015bci, kt\u00f3ry umo\u017cliwia zachowanie le\u017c\u0105cych u ich podstaw kolumn podstawowych jako prywatnych, a wi\u0119c niewidocznych dla kodu u\u017cytkownika. Pozwalaj\u0105 te\u017c na generowanie kolumn audytowych. Niestety, funkcjonalno\u015b\u0107 dost\u0119pna jest jedynie w wariancie komercyjnym. Ten te\u017c otrzymuje ulepszenie wsparcia dla transformowania mi\u0119dzy formatami.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":5517,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/d25.gif\" alt=\"\" class=\"wp-image-5517\"\/><figcaption>To nie dla Open-Source, dla pana commercial support to<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/d25.gif\" alt=\"\" class=\"wp-image-5517\"\/><figcaption>To nie dla Open-Source, dla pana commercial support to<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Z drobniejszych zmian - pojawi\u0142o si\u0119 wsparcie dla nowych typ\u00f3w danych PostgreSQL, a tak\u017ce nowe API dla Implicit (dorozumianych) JOIN\u00f3w. Te ju\u017c trafi\u0142y do wszystkich.<\/p>\n","innerContent":["\n<p>Z drobniejszych zmian - pojawi\u0142o si\u0119 wsparcie dla nowych typ\u00f3w danych PostgreSQL, a tak\u017ce nowe API dla Implicit (dorozumianych) JOIN\u00f3w. Te ju\u017c trafi\u0142y do wszystkich.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>Quarkus 2.10<\/h3>\n","innerContent":["\n<h3>Quarkus 2.10<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Na koniec za\u015b nowy <a href=\"https:\/\/quarkus.io\/blog\/quarkus-2-10-0-final-released\/\">Quarkus 2.10<\/a>, kt\u00f3ry podobnie jak poprzednicy jest bardzo interesuj\u0105cy.<\/p>\n","innerContent":["\n<p>Na koniec za\u015b nowy <a href=\"https:\/\/quarkus.io\/blog\/quarkus-2-10-0-final-released\/\">Quarkus 2.10<\/a>, kt\u00f3ry podobnie jak poprzednicy jest bardzo interesuj\u0105cy.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dopiero co przy okazji ZIO przewidywa\u0142em, \u017ce Loom zacznie si\u0119 panoszy\u0107 w\u015br\u00f3d zapowiedzi nowych funkcjonalno\u015bci, by m\u00f3c do tematu wr\u00f3ci\u0107 teraz - Quarkus zapowiedzia\u0142 bowiem pierwsze przymiarki do wsparcia Looma. Zrobi\u0142 to w i\u015bcie javowym stylu, poniewa\u017c dodano po prostu... adnotacje @RunOnVirtualThread.<\/p>\n","innerContent":["\n<p>Dopiero co przy okazji ZIO przewidywa\u0142em, \u017ce Loom zacznie si\u0119 panoszy\u0107 w\u015br\u00f3d zapowiedzi nowych funkcjonalno\u015bci, by m\u00f3c do tematu wr\u00f3ci\u0107 teraz - Quarkus zapowiedzia\u0142 bowiem pierwsze przymiarki do wsparcia Looma. Zrobi\u0142 to w i\u015bcie javowym stylu, poniewa\u017c dodano po prostu... adnotacje @RunOnVirtualThread.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"id":5515,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-17-1024x267.png\" alt=\"\" class=\"wp-image-5515\"\/><figcaption>Annotatiomania lubi to \ud83d\udc4d<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-17-1024x267.png\" alt=\"\" class=\"wp-image-5515\"\/><figcaption>Annotatiomania lubi to \ud83d\udc4d<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Wi\u0119kszo\u015b\u0107 zmian kr\u0119ci si\u0119 w\u0142a\u015bnie w ko\u0142o asynchronicznego I\/O. Dostajemy bowiem usprawnienia SmallRye Reactive Messaging, wsparcie Kubernetesa w Reactive SQL Client oraz nieblokuj\u0105cy wariant wsparcia do GraphQL. Drobne usprawnienia trafi\u0142y do quarkus-cache i quarkus-bootstrap-maven-plugin.<\/p>\n","innerContent":["\n<p>Wi\u0119kszo\u015b\u0107 zmian kr\u0119ci si\u0119 w\u0142a\u015bnie w ko\u0142o asynchronicznego I\/O. Dostajemy bowiem usprawnienia SmallRye Reactive Messaging, wsparcie Kubernetesa w Reactive SQL Client oraz nieblokuj\u0105cy wariant wsparcia do GraphQL. Drobne usprawnienia trafi\u0142y do quarkus-cache i quarkus-bootstrap-maven-plugin.<\/p>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9951","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=9951"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9951\/revisions"}],"predecessor-version":[{"id":10477,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9951\/revisions\/10477"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/8779"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=9951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=9951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=9951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}