{"id":15897,"date":"2023-05-12T13:37:44","date_gmt":"2023-05-12T11:37:44","guid":{"rendered":"https:\/\/vived.io\/?p=15897"},"modified":"2023-05-12T13:37:47","modified_gmt":"2023-05-12T11:37:47","slug":"wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/","title":{"rendered":"Wiosenne porz\u0105dki: Przegl\u0105d nowych narz\u0119dzi w ekosystemie Springa &#8211; JVM Weekly vol. 135"},"content":{"rendered":"\n<h2 id=\"spring-cloud-aws-3-0\" data-num=1>Spring Cloud AWS 3.0 <\/h2>\n\n\n\n<p>Spring Cloud AWS to projekt w ramach wi\u0119kszego ekosystemu Spring Cloud, kt\u00f3ry upraszcza integracj\u0119 aplikacji Spring z us\u0142ugami AWS (jakby\u015bcie si\u0119 z nazwy nie domy\u015blili). Projekt zapewnia dodatkow\u0105 abstrakcje przy pracy us\u0142ugami AWS. Zamiast r\u0119cznie zarz\u0105dza\u0107 po\u0142\u0105czeniami i credentialami, Spring Cloud AWS umo\u017cliwia u\u017cywanie typowych dla Springa mechanizm\u00f3w, jak AutoConfiguration i wstrzykiwania zale\u017cno\u015bci. Dzi\u0119ki temu nie musimy (tak du\u017co) my\u015ble\u0107 o zarz\u0105dzaniu zasobami. Dostajemy te\u017c wygodn\u0105 implementacje standardowych mechanizm\u00f3w frameworki w oparciu o us\u0142ugi AWS, takich jak, przyk\u0142adowo, integracje SQS poprzez udost\u0119pnienie <code>SqsTemplate<\/code>. W skr\u00f3cie, ca\u0142o\u015b\u0107 spos\u00f3b zapewnia ujednolicone, natywne-dla-springa API dla programist\u00f3w, kt\u00f3rzy nie chc\u0105 musie\u0107 bawi\u0107 si\u0119 z AWS SDK for Java (czy ostatnio te\u017c &#8222;for Kotlin&#8221;).<\/p>\n\n\n\n<p>Nie oznacza to oczywi\u015bcie, \u017ce jego tw\u00f3rcy pisz\u0105 wszystko od zera. Spring Cloud AWS u\u017cywa pod spodem narz\u0119dzi wspomnianego AWS SDK, a najwi\u0119ksza nowo\u015b\u0107 przychodz\u0105ca z wersja jest 3.0 to w\u0142a\u015bnie migracja na AWS SDK v2 for Java. Mi\u0119dzy wersj\u0105 v1 i v2 Amazon zmieni\u0142 bowiem swoje podej\u015bcie do asynchroniczno\u015bci. AWS SDK for Javy v2 wprowadzi\u0142o obs\u0142ug\u0119 nieblokuj\u0105cych I\/O i opar\u0142 ca\u0142o\u015b\u0107 o Netty&#8217;ego. Dodatkowo, nowa wersja API zacz\u0119\u0142a u\u017cywa\u0107 tak zwanych Fluent Interfaces, przez co obie edycje s\u0105 w bardzo du\u017cym stopniu wstecznie niekompatybilne. Ze strony tw\u00f3rc\u00f3w Spring Cloud AWS oznacza\u0142o to wi\u0119c potrzeb\u0119 ca\u0142o\u015bciowego refactoringu, kt\u00f3r\u0105 wykorzystali jako mo\u017cliwo\u015b\u0107 poprawienia pewnych decyzji, z kt\u00f3rych nie byli zadowoleni. Ma to oczywi\u015bcie swoje konsekwencje &#8211; ca\u0142o\u015b\u0107 jest kompatybilna tylko z Spring Boot 3.0+. 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=\"498\" height=\"210\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/hot-fuzz-greater-good.gif\" alt=\"\" class=\"wp-image-15900\"\/><figcaption class=\"wp-element-caption\">Cho\u0107 podejrzewam, \u017ce pozostaj\u0105cy na JDK 1.8 u\u017cytkownicy Spring Boot 2.x mog\u0105 mie\u0107 pewien problem z t\u0105 decyzj\u0105<\/figcaption><\/figure><\/div>\n\n\n<p>Troch\u0119, \u017ceby uczci\u0107 (czy raczej mo\u017ce &#8211; wykorzysta\u0107) powy\u017csz\u0105 premier\u0119, postanowi\u0142em wzi\u0105\u0107 na tapet tematy, kt\u00f3re zalega\u0142y mi od pewnego czasu i czeka\u0142y na sw\u00f3j dzie\u0144 &#8211; narz\u0119dzia, kt\u00f3re wyrastaj\u0105 w ekosystemie. W \u015bwiecie Springa pojawia si\u0119 bowiem od czasu do czasu ciekawe projekty, kt\u00f3re nie zawsze zbieraj\u0105 jak\u0105\u015b szerok\u0105 publik\u0119. Dlatego dzi\u015b chcia\u0142em pokaza\u0107 Wam dwa, kt\u00f3re w ostatnich miesi\u0105cach wpad\u0142y mi w \u0142apy.<\/p>\n\n\n\n<h2 id=\"ostara\" data-num=2><a href=\"https:\/\/github.com\/krud-dev\/boost\">Ostara<\/a><\/h2>\n\n\n\n<p>Dobra, to przygl\u0105dnijmy si\u0119 pierwszemu z obiecanych narz\u0119dzi. Jak bardzo d\u0142ugo zalega\u0142o ono w moim backlogu, niech udowodni fakt, \u017ce kiedy ostatnio si\u0119 nim interesowa\u0142em, mia\u0142o jeszcze inn\u0105 nazw\u0119. Narz\u0119dzie, kt\u00f3re w mojej g\u0142owie zapisa\u0142o si\u0119 jako <code>boost<\/code> aktualnie (nieca\u0142y tydzie\u0144 temu) zmieni\u0142a nazw\u0119 na <code>ostara<\/code>. Wed\u0142ug <a href=\"https:\/\/github.com\/krud-dev\/ostara\/issues\/365\">dyskusji GitHubowej<\/a>, motywowane by\u0142o to ch\u0119ci\u0105 unikni\u0119cia konflikt\u00f3w z popularn\u0105 bibliotek\u0105 <code>boost<\/code> ze \u015bwiata C++. W zwi\u0105zku z tym, \u017ce dla projektu mo\u017ce by\u0107 to swoisty nowy pocz\u0105tek, przygl\u0105dnijmy si\u0119 jakie s\u0105 stoj\u0105ce za nim za\u0142o\u017cenia.<\/p>\n\n\n\n<p>Ostara to narz\u0119dzie do zarz\u0105dzania i monitoringu Sparingowych mikroserwis\u00f3w, dostarcza w czasie rzeczywistym kluczowe metryki, takie jak u\u017cycie CPU i pami\u0119ci, wymagaj\u0105c jedynie dzia\u0142aj\u0105cej instancji mikroserwisu z aktywnym Actuatorem. W efekcie dostajemy admink\u0119, wy\u015bwietlaj\u0105c\u0105 wszystkie parametry wystawiane przez to API (a jak sobie sprawdzicie, jest tego ca\u0142kiem sporo). Ca\u0142o\u015b\u0107 jest prosta w obs\u0142udze, elastyczna i posiada ca\u0142kiem przyjazn\u0105 dokumentacj\u0119.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/spaces2FQIUN58YadwFHHtojkuQ52Fuploads2Fd6mc5FxuJ1xop1mkJn9r2FScreenshot202023-04-1920at2019.58.25.png\" alt=\"\" width=\"851\" height=\"592\"\/><\/figure><\/div>\n\n\n<p>Ostara to nie pierwsze stworzone przez spo\u0142eczno\u015b\u0107 narz\u0119dzie, b\u0119d\u0105ce swoistym Admin Panelem dla Spring Boota. Od kilku lat tryumfy \u015bwi\u0119ci bowiem Spring Boot Admin, kt\u00f3ry przez lata sta\u0142 si\u0119 de facto standardem. Po co w takim razie tworzy\u0107 nowy projekt? Tw\u00f3rcy <a href=\"https:\/\/docs.ostara.dev\/getting-started\/why-ostara\">Ostara<\/a> motywuj\u0105 swoj\u0105 decyzj\u0119 tym, \u017ce Spring Boot Admin wymaga ingerencji w kod aplikacji poprzez dodanie <code>spring-boot-admin-starter-client<\/code>. Ostara zosta\u0142a zaprojektowana tak, \u017ceby w zupe\u0142no\u015bci opiera\u0107 si\u0119 na Spring Actuator API, dlatego dzia\u0142a w spos\u00f3b zupe\u0142nie niezale\u017cny do monitorowanych przez ni\u0105 aplikacji.<\/p>\n\n\n\n<h2 id=\"just\" data-num=3><a href=\"https:\/\/just.maciejwalkowiak.com\/\">just<\/a><\/h2>\n\n\n\n<p>To jak porozmawiali\u015bmy sobie czym jest Ostara, po drodze zahaczaj\u0105c o Spring Boot Admin, czas przygl\u0105dn\u0105\u0107 si\u0119 r\u00f3wnie\u017c just, kt\u00f3ry prezentuje si\u0119 nawet ciekawiej<\/p>\n\n\n\n<p>Tydzie\u0144 temu opisywa\u0142em, jak bardzo cenie sobie w Quarkusie ichniejszy nacisk na Developer Experience i Dev Mode, kt\u00f3rym mocno wyr\u00f3\u017cniaj\u0105 si\u0119 pod k\u0105tem konkurencji. <a href=\"https:\/\/just.maciejwalkowiak.com\/\">just<\/a> to pr\u00f3ba stworzenia Springowego odpowiednika Quarkusowego Dev Servera. Projekt zapewnia takie funkcjonalno\u015bci jak Live Reload, formatter kodu, czy te\u017c tworzenie wynikowych binarek projekt\u00f3w w r\u00f3\u017cnych formatach jak obraz Docker czy GraalVM. Ca\u0142o\u015b\u0107 ma sta\u0107 si\u0119 swoistym szwajcarskim scyzorykiem, rozwi\u0105zuj\u0105cym codzienne problemy programist\u00f3w.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"691\" height=\"290\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/image-4.png\" alt=\"\" class=\"wp-image-15904\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/image-4.png 691w, https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/image-4-300x126.png 300w\" sizes=\"auto, (max-width: 691px) 100vw, 691px\" \/><\/figure><\/div>\n\n\n<p>just to stosunkowo m\u0142ody projekt, kt\u00f3ry stworzony zosta\u0142 przez Macieja Walkowiaka, kt\u00f3ry zreszt\u0105 jest jednym z g\u0142\u00f3wnych kontrybutor\u00f3w Spring Cloud AWS. Projekty \u0142\u0105czy zreszt\u0105 nie tylko osoba tw\u00f3rcy, ale te\u017c pewna stoj\u0105ca za nimi koncepcja. Tak jak Spring Cloud AWS jest nak\u0142adk\u0105 nad AWS SDK for Java, tak just zbudowany jest na podwalinach <code>spring-boot-devtools<\/code>. Ka\u017cdy z projekt\u00f3w dok\u0142ada jednak od siebie na tyle du\u017co, \u017ceby posiada\u0107 zupe\u0142nie w\u0142asn\u0105 to\u017csamo\u015b\u0107.<\/p>\n\n\n\n<p>Wa\u017cn\u0105 rzecz\u0105 z perspektywy u\u017cytkownik\u00f3w jest to, \u017ce just nie jest projektem <a href=\"https:\/\/just.maciejwalkowiak.com\/docs\/faq\/\">Open-Source<\/a>. Na tym etapie jego tw\u00f3rca postanowi\u0142 pozostawi\u0107 sobie elastyczno\u015b\u0107 i nie udost\u0119pni\u0142 kodu \u017ar\u00f3d\u0142owego. Kiedy rozwi\u0105zanie, pozostaj\u0105cy obecnie w alpha, stanie si\u0119 w pe\u0142ni produkcyjne, wtedy podj\u0119ta zostanie decyzja o modelu licencyjnym lub stworzeniu p\u0142atnej wersji.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/718933691_1b96fe6dee_z.jpg\" alt=\"\"\/><figcaption class=\"wp-element-caption\">I bardzo dobrze, wszystko zgodnie z zasadami.<\/figcaption><\/figure><\/div>\n\n\n<h2 id=\"spring-modulith-0-6\" data-num=4>Spring Modulith 0.6<\/h2>\n\n\n\n<p>To na sam koniec, aby domkn\u0105\u0107 ca\u0142o\u015b\u0107 pewn\u0105 klamr\u0105, chcia\u0142em zwr\u00f3ci\u0107 uwag\u0119 na fakt, \u017ce pojawi\u0142a si\u0119 nowa wersja Spring Modulith. <a href=\"https:\/\/spring.io\/blog\/2023\/05\/02\/spring-modulith-0-6-released\">Wersja 0.6<\/a> nie przynosi olbrzymich usprawnie\u0144 (aczkolwiek wprowadza min. Wsparcie dla konceptu <a href=\"https:\/\/github.com\/xmolecules\/jmolecules\">jmolecules<\/a>), ale sam projekt jest na tyle interesuj\u0105cy, \u017ce warto o nim moim zdaniem przypomina\u0107. <\/p>\n\n\n\n<p>Celem Modulitha jest bowiem wprowadzi\u0107 Springa w er\u0119 <a href=\"https:\/\/m.signalvnoise.com\/the-majestic-monolith\/\">majestatycznego monolitu<\/a>, przyjmuj\u0105c do tego do\u015b\u0107 niecodzienn\u0105 strategie. Zamiast mocno ingerowa\u0107 on w proces budowania, wykorzystuje do weryfikacji za\u0142o\u017ce\u0144 architektonicznych testy integracyjne. Te odpalaj\u0105 ArchUnit \u2013 bibliotek\u0119, kt\u00f3rej celem jest w\u0142a\u015bnie weryfikacja zale\u017cno\u015bci mi\u0119dzy poszczeg\u00f3lnymi modu\u0142ami. Magia Modulitha polega jednak na tym, \u017ce dzi\u0119ki znanemu \u015brodowisku uruchomieniowemu (aplikacje Spring Boot 3.0) jest w stanie prekonfigurowa\u0107 ArchUnita za u\u017cytkownika. Dzi\u0119ki temu w \u0142atwy spos\u00f3b jeste\u015bmy w stanie przetestowa\u0107, czy jakie\u015b architektoniczne spaghetti nie przemkn\u0119\u0142o przez Code Review.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>To tyle na dzisiaj, ale do tematu najpopularniejszego javowego frameworku pewnie ju\u017c nied\u0142ugo b\u0119dziemy wraca\u0107 &#8211; w ko\u0144cu ju\u017c za tydzie\u0144 wypada Spring I\/O, na kt\u00f3rym z pewno\u015bci\u0105 nie zabraknie ciekawych zapowiedzi. Kto\u015b si\u0119 wybiera mo\u017ce do Barcelony?<\/p>\n\n\n\n<p>PS: Dzisiaj troch\u0119 kr\u00f3cej, bo zacz\u0105\u0142 si\u0119 sezon konferencyjny i zamiast \u015bledzi\u0107 Jav\u0119 to obserwuje, co ciekawego si\u0119 dzieje na Google I\/O &#8211; a jest tam tak naprawd\u0119 sporo interesuj\u0105cego materia\u0142u.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"embed-responsive embed-responsive-16by9\"><iframe loading=\"lazy\" title=\"Google I\/O 2023 keynote in 14 seconds\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/YivUOqd91Nk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><figcaption class=\"wp-element-caption\">I to mimo tego, \u017ce dwugodzinny keynote zaliczy\u0142 zawrotny wska\u017anik 1.153 wsponie\u0144 AI na minut\u0119.<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Dzisiejsz\u0105, nieco kr\u00f3tsz\u0105 edycj\u0119 rozpoczniemy od najciekawszej premiery ostatnich tygodni &#8211; zw\u0142aszcza dla tych, kt\u00f3rzy nie bawi\u0105 si\u0119 w kontrarian i u\u017cywaj\u0105 najpopularniejszych rozwi\u0105za\u0144. Ukaza\u0142 si\u0119 bowiem Spring Cloud AWS w wersji 3.0, co zainspirowa\u0142o mnie do po\u015bwi\u0119cenia wi\u0119cej miejsca ekosystemowi Springa.<\/p>\n","protected":false},"author":10,"featured_media":15911,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[23],"tags":[],"class_list":["post-15897","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm"],"acf":{"estimated_reading_time":"5","feature_image_blog":{"ID":15911,"id":15911,"title":"JVM Weekly 1200x628_V2","filename":"JVM-Weekly-1200x628_V2-2.png","filesize":596092,"url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png","link":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/jvm-weekly-1200x628_v2-22\/","alt":"","author":"10","description":"","caption":"","name":"jvm-weekly-1200x628_v2-22","status":"inherit","uploaded_to":15897,"date":"2023-05-12 11:36:58","modified":"2023-05-12 11:36:58","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/vived.io\/wp-includes\/images\/media\/default.png","width":1200,"height":628,"sizes":{"thumbnail":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2-150x150.png","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2-300x157.png","medium-width":300,"medium-height":157,"medium_large":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2-768x402.png","medium_large-width":768,"medium_large-height":402,"large":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2-1024x536.png","large-width":1024,"large-height":536,"1536x1536":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png","1536x1536-width":1200,"1536x1536-height":628,"2048x2048":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png","2048x2048-width":1200,"2048x2048-height":628,"gform-image-choice-sm":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":157,"gform-image-choice-md":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png","gform-image-choice-md-width":400,"gform-image-choice-md-height":209,"gform-image-choice-lg":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png","gform-image-choice-lg-width":600,"gform-image-choice-lg-height":314}},"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png","feature_image_visible":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Wiosenne porz\u0105dki: Przegl\u0105d nowych narz\u0119dzi w ekosystemie Springa - JVM Weekly vol. 135 - 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\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wiosenne porz\u0105dki: Przegl\u0105d nowych narz\u0119dzi w ekosystemie Springa - JVM Weekly vol. 135 - Vived\" \/>\n<meta property=\"og:description\" content=\"Dzisiejsz\u0105, nieco kr\u00f3tsz\u0105 edycj\u0119 rozpoczniemy od najciekawszej premiery ostatnich tygodni - zw\u0142aszcza dla tych, kt\u00f3rzy nie bawi\u0105 si\u0119 w kontrarian i u\u017cywaj\u0105 najpopularniejszych rozwi\u0105za\u0144. Ukaza\u0142 si\u0119 bowiem Spring Cloud AWS w wersji 3.0, co zainspirowa\u0142o mnie do po\u015bwi\u0119cenia wi\u0119cej miejsca ekosystemowi Springa.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-12T11:37:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-12T11:37:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"Wiosenne porz\u0105dki: Przegl\u0105d nowych narz\u0119dzi w ekosystemie Springa &#8211; JVM Weekly vol. 135\",\"datePublished\":\"2023-05-12T11:37:44+00:00\",\"dateModified\":\"2023-05-12T11:37:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/\"},\"wordCount\":1196,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/\",\"url\":\"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/\",\"name\":\"Wiosenne porz\u0105dki: Przegl\u0105d nowych narz\u0119dzi w ekosystemie Springa - JVM Weekly vol. 135 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png\",\"datePublished\":\"2023-05-12T11:37:44+00:00\",\"dateModified\":\"2023-05-12T11:37:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wiosenne porz\u0105dki: Przegl\u0105d nowych narz\u0119dzi w ekosystemie Springa &#8211; JVM Weekly vol. 135\"}]},{\"@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":"Wiosenne porz\u0105dki: Przegl\u0105d nowych narz\u0119dzi w ekosystemie Springa - JVM Weekly vol. 135 - 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\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/","og_locale":"pl_PL","og_type":"article","og_title":"Wiosenne porz\u0105dki: Przegl\u0105d nowych narz\u0119dzi w ekosystemie Springa - JVM Weekly vol. 135 - Vived","og_description":"Dzisiejsz\u0105, nieco kr\u00f3tsz\u0105 edycj\u0119 rozpoczniemy od najciekawszej premiery ostatnich tygodni - zw\u0142aszcza dla tych, kt\u00f3rzy nie bawi\u0105 si\u0119 w kontrarian i u\u017cywaj\u0105 najpopularniejszych rozwi\u0105za\u0144. Ukaza\u0142 si\u0119 bowiem Spring Cloud AWS w wersji 3.0, co zainspirowa\u0142o mnie do po\u015bwi\u0119cenia wi\u0119cej miejsca ekosystemowi Springa.","og_url":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/","og_site_name":"Vived","article_published_time":"2023-05-12T11:37:44+00:00","article_modified_time":"2023-05-12T11:37:47+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png","type":"image\/png"}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"Wiosenne porz\u0105dki: Przegl\u0105d nowych narz\u0119dzi w ekosystemie Springa &#8211; JVM Weekly vol. 135","datePublished":"2023-05-12T11:37:44+00:00","dateModified":"2023-05-12T11:37:47+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/"},"wordCount":1196,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/","url":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/","name":"Wiosenne porz\u0105dki: Przegl\u0105d nowych narz\u0119dzi w ekosystemie Springa - JVM Weekly vol. 135 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png","datePublished":"2023-05-12T11:37:44+00:00","dateModified":"2023-05-12T11:37:47+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/JVM-Weekly-1200x628_V2-2.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/wiosenne-porzadki-przeglad-nowych-narzedzi-w-ekosystemie-springa-jvm-weekly-vol-135\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"Wiosenne porz\u0105dki: Przegl\u0105d nowych narz\u0119dzi w ekosystemie Springa &#8211; JVM Weekly vol. 135"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","caption":"Artur Skowro\u0144ski"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2 class=\"wp-block-heading\">Spring Cloud AWS 3.0 <\/h2>\n","innerContent":["\n<h2 class=\"wp-block-heading\">Spring Cloud AWS 3.0 <\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Spring Cloud AWS to projekt w ramach wi\u0119kszego ekosystemu Spring Cloud, kt\u00f3ry upraszcza integracj\u0119 aplikacji Spring z us\u0142ugami AWS (jakby\u015bcie si\u0119 z nazwy nie domy\u015blili). Projekt zapewnia dodatkow\u0105 abstrakcje przy pracy us\u0142ugami AWS. Zamiast r\u0119cznie zarz\u0105dza\u0107 po\u0142\u0105czeniami i credentialami, Spring Cloud AWS umo\u017cliwia u\u017cywanie typowych dla Springa mechanizm\u00f3w, jak AutoConfiguration i wstrzykiwania zale\u017cno\u015bci. Dzi\u0119ki temu nie musimy (tak du\u017co) my\u015ble\u0107 o zarz\u0105dzaniu zasobami. Dostajemy te\u017c wygodn\u0105 implementacje standardowych mechanizm\u00f3w frameworki w oparciu o us\u0142ugi AWS, takich jak, przyk\u0142adowo, integracje SQS poprzez udost\u0119pnienie <code>SqsTemplate<\/code>. W skr\u00f3cie, ca\u0142o\u015b\u0107 spos\u00f3b zapewnia ujednolicone, natywne-dla-springa API dla programist\u00f3w, kt\u00f3rzy nie chc\u0105 musie\u0107 bawi\u0107 si\u0119 z AWS SDK for Java (czy ostatnio te\u017c \"for Kotlin\").<\/p>\n","innerContent":["\n<p>Spring Cloud AWS to projekt w ramach wi\u0119kszego ekosystemu Spring Cloud, kt\u00f3ry upraszcza integracj\u0119 aplikacji Spring z us\u0142ugami AWS (jakby\u015bcie si\u0119 z nazwy nie domy\u015blili). Projekt zapewnia dodatkow\u0105 abstrakcje przy pracy us\u0142ugami AWS. Zamiast r\u0119cznie zarz\u0105dza\u0107 po\u0142\u0105czeniami i credentialami, Spring Cloud AWS umo\u017cliwia u\u017cywanie typowych dla Springa mechanizm\u00f3w, jak AutoConfiguration i wstrzykiwania zale\u017cno\u015bci. Dzi\u0119ki temu nie musimy (tak du\u017co) my\u015ble\u0107 o zarz\u0105dzaniu zasobami. Dostajemy te\u017c wygodn\u0105 implementacje standardowych mechanizm\u00f3w frameworki w oparciu o us\u0142ugi AWS, takich jak, przyk\u0142adowo, integracje SQS poprzez udost\u0119pnienie <code>SqsTemplate<\/code>. W skr\u00f3cie, ca\u0142o\u015b\u0107 spos\u00f3b zapewnia ujednolicone, natywne-dla-springa API dla programist\u00f3w, kt\u00f3rzy nie chc\u0105 musie\u0107 bawi\u0107 si\u0119 z AWS SDK for Java (czy ostatnio te\u017c \"for Kotlin\").<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Nie oznacza to oczywi\u015bcie, \u017ce jego tw\u00f3rcy pisz\u0105 wszystko od zera. Spring Cloud AWS u\u017cywa pod spodem narz\u0119dzi wspomnianego AWS SDK, a najwi\u0119ksza nowo\u015b\u0107 przychodz\u0105ca z wersja jest 3.0 to w\u0142a\u015bnie migracja na AWS SDK v2 for Java. Mi\u0119dzy wersj\u0105 v1 i v2 Amazon zmieni\u0142 bowiem swoje podej\u015bcie do asynchroniczno\u015bci. AWS SDK for Javy v2 wprowadzi\u0142o obs\u0142ug\u0119 nieblokuj\u0105cych I\/O i opar\u0142 ca\u0142o\u015b\u0107 o Netty'ego. Dodatkowo, nowa wersja API zacz\u0119\u0142a u\u017cywa\u0107 tak zwanych Fluent Interfaces, przez co obie edycje s\u0105 w bardzo du\u017cym stopniu wstecznie niekompatybilne. Ze strony tw\u00f3rc\u00f3w Spring Cloud AWS oznacza\u0142o to wi\u0119c potrzeb\u0119 ca\u0142o\u015bciowego refactoringu, kt\u00f3r\u0105 wykorzystali jako mo\u017cliwo\u015b\u0107 poprawienia pewnych decyzji, z kt\u00f3rych nie byli zadowoleni. Ma to oczywi\u015bcie swoje konsekwencje - ca\u0142o\u015b\u0107 jest kompatybilna tylko z Spring Boot 3.0+. Dla wi\u0119kszego dobra.<\/p>\n","innerContent":["\n<p>Nie oznacza to oczywi\u015bcie, \u017ce jego tw\u00f3rcy pisz\u0105 wszystko od zera. Spring Cloud AWS u\u017cywa pod spodem narz\u0119dzi wspomnianego AWS SDK, a najwi\u0119ksza nowo\u015b\u0107 przychodz\u0105ca z wersja jest 3.0 to w\u0142a\u015bnie migracja na AWS SDK v2 for Java. Mi\u0119dzy wersj\u0105 v1 i v2 Amazon zmieni\u0142 bowiem swoje podej\u015bcie do asynchroniczno\u015bci. AWS SDK for Javy v2 wprowadzi\u0142o obs\u0142ug\u0119 nieblokuj\u0105cych I\/O i opar\u0142 ca\u0142o\u015b\u0107 o Netty'ego. Dodatkowo, nowa wersja API zacz\u0119\u0142a u\u017cywa\u0107 tak zwanych Fluent Interfaces, przez co obie edycje s\u0105 w bardzo du\u017cym stopniu wstecznie niekompatybilne. Ze strony tw\u00f3rc\u00f3w Spring Cloud AWS oznacza\u0142o to wi\u0119c potrzeb\u0119 ca\u0142o\u015bciowego refactoringu, kt\u00f3r\u0105 wykorzystali jako mo\u017cliwo\u015b\u0107 poprawienia pewnych decyzji, z kt\u00f3rych nie byli zadowoleni. Ma to oczywi\u015bcie swoje konsekwencje - ca\u0142o\u015b\u0107 jest kompatybilna tylko z Spring Boot 3.0+. Dla wi\u0119kszego dobra.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":15900,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/hot-fuzz-greater-good.gif\" alt=\"\" class=\"wp-image-15900\"\/><figcaption class=\"wp-element-caption\">Cho\u0107 podejrzewam, \u017ce pozostaj\u0105cy na JDK 1.8 u\u017cytkownicy Spring Boot 2.x mog\u0105 mie\u0107 pewien problem z t\u0105 decyzj\u0105<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/hot-fuzz-greater-good.gif\" alt=\"\" class=\"wp-image-15900\"\/><figcaption class=\"wp-element-caption\">Cho\u0107 podejrzewam, \u017ce pozostaj\u0105cy na JDK 1.8 u\u017cytkownicy Spring Boot 2.x mog\u0105 mie\u0107 pewien problem z t\u0105 decyzj\u0105<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Troch\u0119, \u017ceby uczci\u0107 (czy raczej mo\u017ce - wykorzysta\u0107) powy\u017csz\u0105 premier\u0119, postanowi\u0142em wzi\u0105\u0107 na tapet tematy, kt\u00f3re zalega\u0142y mi od pewnego czasu i czeka\u0142y na sw\u00f3j dzie\u0144 - narz\u0119dzia, kt\u00f3re wyrastaj\u0105 w ekosystemie. W \u015bwiecie Springa pojawia si\u0119 bowiem od czasu do czasu ciekawe projekty, kt\u00f3re nie zawsze zbieraj\u0105 jak\u0105\u015b szerok\u0105 publik\u0119. Dlatego dzi\u015b chcia\u0142em pokaza\u0107 Wam dwa, kt\u00f3re w ostatnich miesi\u0105cach wpad\u0142y mi w \u0142apy.<\/p>\n","innerContent":["\n<p>Troch\u0119, \u017ceby uczci\u0107 (czy raczej mo\u017ce - wykorzysta\u0107) powy\u017csz\u0105 premier\u0119, postanowi\u0142em wzi\u0105\u0107 na tapet tematy, kt\u00f3re zalega\u0142y mi od pewnego czasu i czeka\u0142y na sw\u00f3j dzie\u0144 - narz\u0119dzia, kt\u00f3re wyrastaj\u0105 w ekosystemie. W \u015bwiecie Springa pojawia si\u0119 bowiem od czasu do czasu ciekawe projekty, kt\u00f3re nie zawsze zbieraj\u0105 jak\u0105\u015b szerok\u0105 publik\u0119. Dlatego dzi\u015b chcia\u0142em pokaza\u0107 Wam dwa, kt\u00f3re w ostatnich miesi\u0105cach wpad\u0142y mi w \u0142apy.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/krud-dev\/boost\">Ostara<\/a><\/h2>\n","innerContent":["\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/github.com\/krud-dev\/boost\">Ostara<\/a><\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dobra, to przygl\u0105dnijmy si\u0119 pierwszemu z obiecanych narz\u0119dzi. Jak bardzo d\u0142ugo zalega\u0142o ono w moim backlogu, niech udowodni fakt, \u017ce kiedy ostatnio si\u0119 nim interesowa\u0142em, mia\u0142o jeszcze inn\u0105 nazw\u0119. Narz\u0119dzie, kt\u00f3re w mojej g\u0142owie zapisa\u0142o si\u0119 jako <code>boost<\/code> aktualnie (nieca\u0142y tydzie\u0144 temu) zmieni\u0142a nazw\u0119 na <code>ostara<\/code>. Wed\u0142ug <a href=\"https:\/\/github.com\/krud-dev\/ostara\/issues\/365\">dyskusji GitHubowej<\/a>, motywowane by\u0142o to ch\u0119ci\u0105 unikni\u0119cia konflikt\u00f3w z popularn\u0105 bibliotek\u0105 <code>boost<\/code> ze \u015bwiata C++. W zwi\u0105zku z tym, \u017ce dla projektu mo\u017ce by\u0107 to swoisty nowy pocz\u0105tek, przygl\u0105dnijmy si\u0119 jakie s\u0105 stoj\u0105ce za nim za\u0142o\u017cenia.<\/p>\n","innerContent":["\n<p>Dobra, to przygl\u0105dnijmy si\u0119 pierwszemu z obiecanych narz\u0119dzi. Jak bardzo d\u0142ugo zalega\u0142o ono w moim backlogu, niech udowodni fakt, \u017ce kiedy ostatnio si\u0119 nim interesowa\u0142em, mia\u0142o jeszcze inn\u0105 nazw\u0119. Narz\u0119dzie, kt\u00f3re w mojej g\u0142owie zapisa\u0142o si\u0119 jako <code>boost<\/code> aktualnie (nieca\u0142y tydzie\u0144 temu) zmieni\u0142a nazw\u0119 na <code>ostara<\/code>. Wed\u0142ug <a href=\"https:\/\/github.com\/krud-dev\/ostara\/issues\/365\">dyskusji GitHubowej<\/a>, motywowane by\u0142o to ch\u0119ci\u0105 unikni\u0119cia konflikt\u00f3w z popularn\u0105 bibliotek\u0105 <code>boost<\/code> ze \u015bwiata C++. W zwi\u0105zku z tym, \u017ce dla projektu mo\u017ce by\u0107 to swoisty nowy pocz\u0105tek, przygl\u0105dnijmy si\u0119 jakie s\u0105 stoj\u0105ce za nim za\u0142o\u017cenia.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ostara to narz\u0119dzie do zarz\u0105dzania i monitoringu Sparingowych mikroserwis\u00f3w, dostarcza w czasie rzeczywistym kluczowe metryki, takie jak u\u017cycie CPU i pami\u0119ci, wymagaj\u0105c jedynie dzia\u0142aj\u0105cej instancji mikroserwisu z aktywnym Actuatorem. W efekcie dostajemy admink\u0119, wy\u015bwietlaj\u0105c\u0105 wszystkie parametry wystawiane przez to API (a jak sobie sprawdzicie, jest tego ca\u0142kiem sporo). Ca\u0142o\u015b\u0107 jest prosta w obs\u0142udze, elastyczna i posiada ca\u0142kiem przyjazn\u0105 dokumentacj\u0119.<\/p>\n","innerContent":["\n<p>Ostara to narz\u0119dzie do zarz\u0105dzania i monitoringu Sparingowych mikroserwis\u00f3w, dostarcza w czasie rzeczywistym kluczowe metryki, takie jak u\u017cycie CPU i pami\u0119ci, wymagaj\u0105c jedynie dzia\u0142aj\u0105cej instancji mikroserwisu z aktywnym Actuatorem. W efekcie dostajemy admink\u0119, wy\u015bwietlaj\u0105c\u0105 wszystkie parametry wystawiane przez to API (a jak sobie sprawdzicie, jest tego ca\u0142kiem sporo). Ca\u0142o\u015b\u0107 jest prosta w obs\u0142udze, elastyczna i posiada ca\u0142kiem przyjazn\u0105 dokumentacj\u0119.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","width":851,"height":592},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/spaces2FQIUN58YadwFHHtojkuQ52Fuploads2Fd6mc5FxuJ1xop1mkJn9r2FScreenshot202023-04-1920at2019.58.25.png\" alt=\"\" width=\"851\" height=\"592\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/spaces2FQIUN58YadwFHHtojkuQ52Fuploads2Fd6mc5FxuJ1xop1mkJn9r2FScreenshot202023-04-1920at2019.58.25.png\" alt=\"\" width=\"851\" height=\"592\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ostara to nie pierwsze stworzone przez spo\u0142eczno\u015b\u0107 narz\u0119dzie, b\u0119d\u0105ce swoistym Admin Panelem dla Spring Boota. Od kilku lat tryumfy \u015bwi\u0119ci bowiem Spring Boot Admin, kt\u00f3ry przez lata sta\u0142 si\u0119 de facto standardem. Po co w takim razie tworzy\u0107 nowy projekt? Tw\u00f3rcy <a href=\"https:\/\/docs.ostara.dev\/getting-started\/why-ostara\">Ostara<\/a> motywuj\u0105 swoj\u0105 decyzj\u0119 tym, \u017ce Spring Boot Admin wymaga ingerencji w kod aplikacji poprzez dodanie <code>spring-boot-admin-starter-client<\/code>. Ostara zosta\u0142a zaprojektowana tak, \u017ceby w zupe\u0142no\u015bci opiera\u0107 si\u0119 na Spring Actuator API, dlatego dzia\u0142a w spos\u00f3b zupe\u0142nie niezale\u017cny do monitorowanych przez ni\u0105 aplikacji.<\/p>\n","innerContent":["\n<p>Ostara to nie pierwsze stworzone przez spo\u0142eczno\u015b\u0107 narz\u0119dzie, b\u0119d\u0105ce swoistym Admin Panelem dla Spring Boota. Od kilku lat tryumfy \u015bwi\u0119ci bowiem Spring Boot Admin, kt\u00f3ry przez lata sta\u0142 si\u0119 de facto standardem. Po co w takim razie tworzy\u0107 nowy projekt? Tw\u00f3rcy <a href=\"https:\/\/docs.ostara.dev\/getting-started\/why-ostara\">Ostara<\/a> motywuj\u0105 swoj\u0105 decyzj\u0119 tym, \u017ce Spring Boot Admin wymaga ingerencji w kod aplikacji poprzez dodanie <code>spring-boot-admin-starter-client<\/code>. Ostara zosta\u0142a zaprojektowana tak, \u017ceby w zupe\u0142no\u015bci opiera\u0107 si\u0119 na Spring Actuator API, dlatego dzia\u0142a w spos\u00f3b zupe\u0142nie niezale\u017cny do monitorowanych przez ni\u0105 aplikacji.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/just.maciejwalkowiak.com\/\">just<\/a><\/h2>\n","innerContent":["\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/just.maciejwalkowiak.com\/\">just<\/a><\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To jak porozmawiali\u015bmy sobie czym jest Ostara, po drodze zahaczaj\u0105c o Spring Boot Admin, czas przygl\u0105dn\u0105\u0107 si\u0119 r\u00f3wnie\u017c just, kt\u00f3ry prezentuje si\u0119 nawet ciekawiej<\/p>\n","innerContent":["\n<p>To jak porozmawiali\u015bmy sobie czym jest Ostara, po drodze zahaczaj\u0105c o Spring Boot Admin, czas przygl\u0105dn\u0105\u0107 si\u0119 r\u00f3wnie\u017c just, kt\u00f3ry prezentuje si\u0119 nawet ciekawiej<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Tydzie\u0144 temu opisywa\u0142em, jak bardzo cenie sobie w Quarkusie ichniejszy nacisk na Developer Experience i Dev Mode, kt\u00f3rym mocno wyr\u00f3\u017cniaj\u0105 si\u0119 pod k\u0105tem konkurencji. <a href=\"https:\/\/just.maciejwalkowiak.com\/\">just<\/a> to pr\u00f3ba stworzenia Springowego odpowiednika Quarkusowego Dev Servera. Projekt zapewnia takie funkcjonalno\u015bci jak Live Reload, formatter kodu, czy te\u017c tworzenie wynikowych binarek projekt\u00f3w w r\u00f3\u017cnych formatach jak obraz Docker czy GraalVM. Ca\u0142o\u015b\u0107 ma sta\u0107 si\u0119 swoistym szwajcarskim scyzorykiem, rozwi\u0105zuj\u0105cym codzienne problemy programist\u00f3w.<\/p>\n","innerContent":["\n<p>Tydzie\u0144 temu opisywa\u0142em, jak bardzo cenie sobie w Quarkusie ichniejszy nacisk na Developer Experience i Dev Mode, kt\u00f3rym mocno wyr\u00f3\u017cniaj\u0105 si\u0119 pod k\u0105tem konkurencji. <a href=\"https:\/\/just.maciejwalkowiak.com\/\">just<\/a> to pr\u00f3ba stworzenia Springowego odpowiednika Quarkusowego Dev Servera. Projekt zapewnia takie funkcjonalno\u015bci jak Live Reload, formatter kodu, czy te\u017c tworzenie wynikowych binarek projekt\u00f3w w r\u00f3\u017cnych formatach jak obraz Docker czy GraalVM. Ca\u0142o\u015b\u0107 ma sta\u0107 si\u0119 swoistym szwajcarskim scyzorykiem, rozwi\u0105zuj\u0105cym codzienne problemy programist\u00f3w.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":15904,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/image-4.png\" alt=\"\" class=\"wp-image-15904\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/image-4.png\" alt=\"\" class=\"wp-image-15904\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>just to stosunkowo m\u0142ody projekt, kt\u00f3ry stworzony zosta\u0142 przez Macieja Walkowiaka, kt\u00f3ry zreszt\u0105 jest jednym z g\u0142\u00f3wnych kontrybutor\u00f3w Spring Cloud AWS. Projekty \u0142\u0105czy zreszt\u0105 nie tylko osoba tw\u00f3rcy, ale te\u017c pewna stoj\u0105ca za nimi koncepcja. Tak jak Spring Cloud AWS jest nak\u0142adk\u0105 nad AWS SDK for Java, tak just zbudowany jest na podwalinach <code>spring-boot-devtools<\/code>. Ka\u017cdy z projekt\u00f3w dok\u0142ada jednak od siebie na tyle du\u017co, \u017ceby posiada\u0107 zupe\u0142nie w\u0142asn\u0105 to\u017csamo\u015b\u0107.<\/p>\n","innerContent":["\n<p>just to stosunkowo m\u0142ody projekt, kt\u00f3ry stworzony zosta\u0142 przez Macieja Walkowiaka, kt\u00f3ry zreszt\u0105 jest jednym z g\u0142\u00f3wnych kontrybutor\u00f3w Spring Cloud AWS. Projekty \u0142\u0105czy zreszt\u0105 nie tylko osoba tw\u00f3rcy, ale te\u017c pewna stoj\u0105ca za nimi koncepcja. Tak jak Spring Cloud AWS jest nak\u0142adk\u0105 nad AWS SDK for Java, tak just zbudowany jest na podwalinach <code>spring-boot-devtools<\/code>. Ka\u017cdy z projekt\u00f3w dok\u0142ada jednak od siebie na tyle du\u017co, \u017ceby posiada\u0107 zupe\u0142nie w\u0142asn\u0105 to\u017csamo\u015b\u0107.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Wa\u017cn\u0105 rzecz\u0105 z perspektywy u\u017cytkownik\u00f3w jest to, \u017ce just nie jest projektem <a href=\"https:\/\/just.maciejwalkowiak.com\/docs\/faq\/\">Open-Source<\/a>. Na tym etapie jego tw\u00f3rca postanowi\u0142 pozostawi\u0107 sobie elastyczno\u015b\u0107 i nie udost\u0119pni\u0142 kodu \u017ar\u00f3d\u0142owego. Kiedy rozwi\u0105zanie, pozostaj\u0105cy obecnie w alpha, stanie si\u0119 w pe\u0142ni produkcyjne, wtedy podj\u0119ta zostanie decyzja o modelu licencyjnym lub stworzeniu p\u0142atnej wersji.<\/p>\n","innerContent":["\n<p>Wa\u017cn\u0105 rzecz\u0105 z perspektywy u\u017cytkownik\u00f3w jest to, \u017ce just nie jest projektem <a href=\"https:\/\/just.maciejwalkowiak.com\/docs\/faq\/\">Open-Source<\/a>. Na tym etapie jego tw\u00f3rca postanowi\u0142 pozostawi\u0107 sobie elastyczno\u015b\u0107 i nie udost\u0119pni\u0142 kodu \u017ar\u00f3d\u0142owego. Kiedy rozwi\u0105zanie, pozostaj\u0105cy obecnie w alpha, stanie si\u0119 w pe\u0142ni produkcyjne, wtedy podj\u0119ta zostanie decyzja o modelu licencyjnym lub stworzeniu p\u0142atnej wersji.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/718933691_1b96fe6dee_z.jpg\" alt=\"\"\/><figcaption class=\"wp-element-caption\">I bardzo dobrze, wszystko zgodnie z zasadami.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2023\/05\/718933691_1b96fe6dee_z.jpg\" alt=\"\"\/><figcaption class=\"wp-element-caption\">I bardzo dobrze, wszystko zgodnie z zasadami.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2 class=\"wp-block-heading\">Spring Modulith 0.6<\/h2>\n","innerContent":["\n<h2 class=\"wp-block-heading\">Spring Modulith 0.6<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To na sam koniec, aby domkn\u0105\u0107 ca\u0142o\u015b\u0107 pewn\u0105 klamr\u0105, chcia\u0142em zwr\u00f3ci\u0107 uwag\u0119 na fakt, \u017ce pojawi\u0142a si\u0119 nowa wersja Spring Modulith. <a href=\"https:\/\/spring.io\/blog\/2023\/05\/02\/spring-modulith-0-6-released\">Wersja 0.6<\/a> nie przynosi olbrzymich usprawnie\u0144 (aczkolwiek wprowadza min. Wsparcie dla konceptu <a href=\"https:\/\/github.com\/xmolecules\/jmolecules\">jmolecules<\/a>), ale sam projekt jest na tyle interesuj\u0105cy, \u017ce warto o nim moim zdaniem przypomina\u0107. <\/p>\n","innerContent":["\n<p>To na sam koniec, aby domkn\u0105\u0107 ca\u0142o\u015b\u0107 pewn\u0105 klamr\u0105, chcia\u0142em zwr\u00f3ci\u0107 uwag\u0119 na fakt, \u017ce pojawi\u0142a si\u0119 nowa wersja Spring Modulith. <a href=\"https:\/\/spring.io\/blog\/2023\/05\/02\/spring-modulith-0-6-released\">Wersja 0.6<\/a> nie przynosi olbrzymich usprawnie\u0144 (aczkolwiek wprowadza min. Wsparcie dla konceptu <a href=\"https:\/\/github.com\/xmolecules\/jmolecules\">jmolecules<\/a>), ale sam projekt jest na tyle interesuj\u0105cy, \u017ce warto o nim moim zdaniem przypomina\u0107. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Celem Modulitha jest bowiem wprowadzi\u0107 Springa w er\u0119 <a href=\"https:\/\/m.signalvnoise.com\/the-majestic-monolith\/\">majestatycznego monolitu<\/a>, przyjmuj\u0105c do tego do\u015b\u0107 niecodzienn\u0105 strategie. Zamiast mocno ingerowa\u0107 on w proces budowania, wykorzystuje do weryfikacji za\u0142o\u017ce\u0144 architektonicznych testy integracyjne. Te odpalaj\u0105 ArchUnit \u2013 bibliotek\u0119, kt\u00f3rej celem jest w\u0142a\u015bnie weryfikacja zale\u017cno\u015bci mi\u0119dzy poszczeg\u00f3lnymi modu\u0142ami. Magia Modulitha polega jednak na tym, \u017ce dzi\u0119ki znanemu \u015brodowisku uruchomieniowemu (aplikacje Spring Boot 3.0) jest w stanie prekonfigurowa\u0107 ArchUnita za u\u017cytkownika. Dzi\u0119ki temu w \u0142atwy spos\u00f3b jeste\u015bmy w stanie przetestowa\u0107, czy jakie\u015b architektoniczne spaghetti nie przemkn\u0119\u0142o przez Code Review.<\/p>\n","innerContent":["\n<p>Celem Modulitha jest bowiem wprowadzi\u0107 Springa w er\u0119 <a href=\"https:\/\/m.signalvnoise.com\/the-majestic-monolith\/\">majestatycznego monolitu<\/a>, przyjmuj\u0105c do tego do\u015b\u0107 niecodzienn\u0105 strategie. Zamiast mocno ingerowa\u0107 on w proces budowania, wykorzystuje do weryfikacji za\u0142o\u017ce\u0144 architektonicznych testy integracyjne. Te odpalaj\u0105 ArchUnit \u2013 bibliotek\u0119, kt\u00f3rej celem jest w\u0142a\u015bnie weryfikacja zale\u017cno\u015bci mi\u0119dzy poszczeg\u00f3lnymi modu\u0142ami. Magia Modulitha polega jednak na tym, \u017ce dzi\u0119ki znanemu \u015brodowisku uruchomieniowemu (aplikacje Spring Boot 3.0) jest w stanie prekonfigurowa\u0107 ArchUnita za u\u017cytkownika. Dzi\u0119ki temu w \u0142atwy spos\u00f3b jeste\u015bmy w stanie przetestowa\u0107, czy jakie\u015b architektoniczne spaghetti nie przemkn\u0119\u0142o przez Code Review.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/separator","attrs":[],"innerBlocks":[],"innerHTML":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n","innerContent":["\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To tyle na dzisiaj, ale do tematu najpopularniejszego javowego frameworku pewnie ju\u017c nied\u0142ugo b\u0119dziemy wraca\u0107 - w ko\u0144cu ju\u017c za tydzie\u0144 wypada Spring I\/O, na kt\u00f3rym z pewno\u015bci\u0105 nie zabraknie ciekawych zapowiedzi. Kto\u015b si\u0119 wybiera mo\u017ce do Barcelony?<\/p>\n","innerContent":["\n<p>To tyle na dzisiaj, ale do tematu najpopularniejszego javowego frameworku pewnie ju\u017c nied\u0142ugo b\u0119dziemy wraca\u0107 - w ko\u0144cu ju\u017c za tydzie\u0144 wypada Spring I\/O, na kt\u00f3rym z pewno\u015bci\u0105 nie zabraknie ciekawych zapowiedzi. Kto\u015b si\u0119 wybiera mo\u017ce do Barcelony?<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>PS: Dzisiaj troch\u0119 kr\u00f3cej, bo zacz\u0105\u0142 si\u0119 sezon konferencyjny i zamiast \u015bledzi\u0107 Jav\u0119 to obserwuje, co ciekawego si\u0119 dzieje na Google I\/O - a jest tam tak naprawd\u0119 sporo interesuj\u0105cego materia\u0142u.<\/p>\n","innerContent":["\n<p>PS: Dzisiaj troch\u0119 kr\u00f3cej, bo zacz\u0105\u0142 si\u0119 sezon konferencyjny i zamiast \u015bledzi\u0107 Jav\u0119 to obserwuje, co ciekawego si\u0119 dzieje na Google I\/O - a jest tam tak naprawd\u0119 sporo interesuj\u0105cego materia\u0142u.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/embed","attrs":{"url":"https:\/\/www.youtube.com\/watch?v=YivUOqd91Nk","type":"video","providerNameSlug":"youtube","responsive":true,"className":"wp-embed-aspect-16-9 wp-has-aspect-ratio"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/www.youtube.com\/watch?v=YivUOqd91Nk\n<\/div><figcaption class=\"wp-element-caption\">I to mimo tego, \u017ce dwugodzinny keynote zaliczy\u0142 zawrotny wska\u017anik 1.153 wsponie\u0144 AI na minut\u0119.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/www.youtube.com\/watch?v=YivUOqd91Nk\n<\/div><figcaption class=\"wp-element-caption\">I to mimo tego, \u017ce dwugodzinny keynote zaliczy\u0142 zawrotny wska\u017anik 1.153 wsponie\u0144 AI na minut\u0119.<\/figcaption><\/figure>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/15897","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=15897"}],"version-history":[{"count":10,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/15897\/revisions"}],"predecessor-version":[{"id":15913,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/15897\/revisions\/15913"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/15911"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=15897"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=15897"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=15897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}