{"id":10115,"date":"2021-07-06T14:00:00","date_gmt":"2021-07-06T12:00:00","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-45-2\/"},"modified":"2022-09-19T13:10:51","modified_gmt":"2022-09-19T11:10:51","slug":"jvm-tuesday-vol-45-2","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/","title":{"rendered":"JVM Tuesday vol. 45"},"content":{"rendered":"<figure class=\"kg-card kg-image-card\"><img loading=\"lazy\" decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/freepressjournal_2021-07_12c90213-3cce-47e7-a72a-1dce71fefb7a_5fhjx6.gif\" alt=\"\" width=\"260\" height=\"260\"><\/figure>\n<p>Wida\u0107, \u017ce \u015bwiat IT jest bardzo mocno amerykanocentryczny. Dzie\u0144 Niepodleg\u0142o\u015bci &#8211; czyli jedno z najwa\u017cniejszych \u015bwi\u0105t w USA &#8211; sprawia, \u017ce tak naprawd\u0119 ilo\u015b\u0107 news\u00f3w jest znikoma. Dlatego te\u017c dzisiejsza edycja b\u0119dzie do\u015b\u0107\u2026 skromna. W dalszym ci\u0105gu jednak zapraszamy do lektury &#8211; mamy dla Was dwie ciekawe wiadomo\u015bci.<\/p>\n<h2 id=\"1-quarkus-2-0-wydany-co-przynosi-nowa-wersja\" data-num=1>1. <a href=\"https:\/\/quarkus.io\/blog\/quarkus-2-0-0-final-released\/\">Quarkus 2.0 wydany. Co przynosi nowa wersja<\/a> ?<\/h2>\n<p>Quarkus, framework od Red Hata, coraz mocniej przebija si\u0119 do programist\u00f3w Java jako czo\u0142owy reprezentant frameworkowej \u201cnowej fali\u201d. Dlatego te\u017c jego kolejna du\u017ca edycja, wersja 2.0, z pewno\u015bci\u0105 przyci\u0105gnie uwag\u0119 niejednego znudzonego Springiem deva. Przygl\u0105dnijmy si\u0119 zatem, co kryje si\u0119 za nowym \u201cmajorem\u201d i czy rzeczywi\u015bcie jest to tak du\u017cy przeskok dla u\u017cytkownik\u00f3w.<\/p>\n<p>Na pewno odwa\u017cnym krokiem ze strony tw\u00f3rc\u00f3w jest porzucenie JDK 8. Quarkus 2.0 wymaga minimum JDK 11, a wi\u0119c najnowszego LTSa. Jest to chyba pierwszy du\u017cy framework, w kt\u00f3rym zdecydowano si\u0119 na ten krok, co samo w sobie stawia go w awangardzie JVMowego programowania. Ciekawe, czy konkurencja zdecyduje si\u0119 w niedalekiej przysz\u0142o\u015bci na taki krok.<\/p>\n<p>Zaktualizowane zosta\u0142y r\u00f3wnie\u017c g\u0142\u00f3wne komponenty u\u017cywane przez Quarkusa. Wersja 2.0 przynosi ze sob\u0105 GraalVM w jego najnowszej wersji 21.1, aktualizacje Vert.x do 4.0 (b\u0119d\u0105cej w dalszym ci\u0105gu w mojej topce <a href=\"https:\/\/vertx.io\/blog\/whats-new-in-vert-x-4\/\">najgorszych release notes<\/a>) oraz wsparcie dla MicroProfile 4.0, co odby\u0142o si\u0119 poprzez aktualizacj\u0119 wszystkich komponent\u00f3w SmallRye.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img loading=\"lazy\" decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/giphy-17.gif\" alt=\"\" width=\"204\" height=\"360\"><figcaption>W momencie, gdy tak przechodz\u0119 przez te og\u0142oszenia, zauwa\u017cam jak wielk\u0105 sklejk\u0105 innych projekt\u00f3w jest rozwi\u0105zanie Red Hata &#8211; ze wszystkimi zaletami (minimalizacja niepotrzebnej pracy) i wadami (poziom skomplikowania ca\u0142ej uk\u0142adanki) takiego podej\u015bcia.<\/figcaption><\/figure>\n<p>Poza nowo\u015bciami wynikaj\u0105cymi ze wspomnianego podbicia zale\u017cno\u015bci, Quarkus wprowadza jedn\u0105 dodatkow\u0105, du\u017c\u0105 funkcjonalno\u015b\u0107. Ot\u00f3\u017c umo\u017cliwi on tak zwane \u201cci\u0105g\u0142e testowanie\u201d, czyli uruchomienie rozwijanej aplikacji w trybie pozwalaj\u0105cym na odpalanie suite testowych w tle podczas pisania kodu. Tw\u00f3rcy chwal\u0105 si\u0119, \u017ce dzi\u0119ki temu znacz\u0105co wzro\u015bnie tak zwany \u201cdevelopment experience\u201d podczas u\u017cywania ich narz\u0119dzia. Ci\u0105g\u0142e testowanie jest mi znane zar\u00f3wno z build tooli JSowych, jak i rozszerze\u0144 do Intellij pozwalaj\u0105cych na taki tryb pracy. Tw\u00f3rcy Quarkusa chwal\u0105 si\u0119 jednak, \u017ce ich rozwi\u0105zanie jest l\u017cejsze, szybsze i znacznie bardziej bezobs\u0142ugowe w por\u00f3wnaniu do dost\u0119pnych na JVMie alternatyw. Ch\u0119tnie zweryfikuje ich twierdzenia.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img loading=\"lazy\" decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image.png\" sizes=\"auto, (min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image.png 900w\" alt=\"\" width=\"900\" height=\"280\">&nbsp;<figcaption>To co, przekonani do porzucenia Springa i spr\u00f3bowania alternatywy?<\/figcaption><\/figure>\n<h2 id=\"2-zespol-kotlina-pyta-spolecznosc-nad-czym-powinien-pracowac\" data-num=2><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/\">2. Zesp\u00f3\u0142 Kotlina pyta spo\u0142eczno\u015b\u0107, nad czym powinien pracowa\u0107<\/a><\/h2>\n<p>Dwa tygodnie temu <a href=\"https:\/\/blog.vived.io\/jvm-tuesday-vol-43\/\">pisali\u015bmy Wam o AMA z Kotlin Teamem<\/a>, rozp\u0142ywaj\u0105c si\u0119 nad tym, jak bardzo otwarci s\u0105 na g\u0142os spo\u0142eczno\u015bci. W zesz\u0142ym tygodniu udowodnili to po raz kolejny, og\u0142aszaj\u0105c mo\u017cliwo\u015b\u0107 g\u0142osowania na nowe featury j\u0119zyka, nad kt\u00f3rymi b\u0119d\u0105 pracowa\u0107 w przysz\u0142o\u015bci\u2026 a tak\u017ce na te, kt\u00f3rych ludzie sugeruj\u0105 unika\u0107 w przysz\u0142ych wersjach Kotlina.<\/p>\n<div class=\"embed-responsive embed-responsive-16by9\"><iframe loading=\"lazy\" title=\"SouthPark &#039;&#039;Vote or Die&#039;&#039; HD Clip\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/9pSh0VAVYn4?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<p>Ka\u017cdego chc\u0105cego mie\u0107 wp\u0142yw na przysz\u0142o\u015b\u0107 j\u0119zyka serdecznie zapraszamy do <a href=\"https:\/\/surveys.jetbrains.com\/s3\/kotlin-features-survey\">wype\u0142nienia dokumentu<\/a>. Propozycji jest a\u017c pi\u0119tna\u015bcie, dlatego z naszej za\u015b strony, w tej kr\u00f3tkiej sekcji wska\u017cemy te funkcjonalno\u015bci, kt\u00f3re wydaj\u0105 si\u0119 by\u0107 nam najbardziej interesuj\u0105ce.<\/p>\n<p>Ze wzgl\u0119du na kompatybilno\u015b\u0107 z Jav\u0105 i jej systemem modu\u0142\u00f3w, z pewno\u015bci\u0105 na czele funkcjonalno\u015bci, kt\u00f3re moim zdaniem powinny zosta\u0107 wzi\u0119te pod uwag\u0119 jest scope \u201c<a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/#package-private-visibility\">packaged-private<\/a>\u201d. Interoperacyjno\u015b\u0107 Kotlina jest jedn\u0105 z jego najwi\u0119kszych zalet, kluczow\u0105 dla os\u00f3b krok po kroku migruj\u0105cych na niego swoje javowe projekty. Brak dost\u0119pu package-private, domy\u015blnego javowego poziomu, prowadzi\u0142 za\u015b wielokrotnie do trudno\u015bci w przestawieniu si\u0119 na rozwi\u0105zanie JetBrains\u00f3w przez posiadaj\u0105cych ju\u017c swoje nawyki, bardziej do\u015bwiadczonych programist\u00f3w. Dodanie tego poziomu dost\u0119pu mog\u0142oby by\u0107 pragmatycznym uk\u0142onem w ich stron\u0119.<\/p>\n<p>Powy\u017csza sugestia kierowana by\u0142a bardziej rozumem ni\u017c sercem. Je\u017celi chodzi o moje prywatne marzenie &#8211; bardzo chcia\u0142bym zobaczy\u0107 <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/#package-private-visibility#multicatch\">kiedy\u015b w Kotlinie Unie<\/a> (cho\u0107 przytuli\u0142bym te\u017c powi\u0105zanego z nimi Multicache wyj\u0105tk\u00f3w). Im bardziej funkcyjnie staram si\u0119 pisa\u0107, tym wi\u0119cej zaciemniaj\u0105cych logik\u0119 biznesow\u0105 wrapper\u00f3w musz\u0119 dok\u0142ada\u0107 do swojego kodu. Unie wydaj\u0105 si\u0119 by\u0107 eleganckim rozwi\u0105zaniem tego problemu &#8211; aczkolwiek sugerowana alternatywa, czyli wygodniejsza sk\u0142adania dla sealed class mo\u017ce by\u0107 dobrym kompromisowym rozwi\u0105zaniem. Mo\u017ce ono pozwoli\u0107 zminimalizowa\u0107 konieczno\u015b\u0107 dok\u0142adania kolejnego bytu do i tak coraz bardziej skomplikowanego j\u0119zyka, pozwalaj\u0105c mu unikn\u0105\u0107 losu Scali.<\/p>\n<pre><code>fun String.parseData(): Data | Failure<\/code><\/pre>\n<p>Cho\u0107 podtrzymuje, \u017ce Unie w powy\u017cszej postaci bym przytuli\u0142.<\/p>\n<p>Z drugiej strony &#8211; czy jest zatem co\u015b na tej li\u015bcie, co wydaje mi si\u0119 zb\u0119dne? B\u0119d\u0119 tutaj pewnie do\u015b\u0107 kontrowersyjny, ale jednym z takich dodatk\u00f3w b\u0119d\u0105 raczej popularne \u201c<a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/#multicatch#collection-literals\">collection literals<\/a>\u201d:<\/p>\n<pre><code>val list = [1, 2, 3]\nval map = [&quot;one&quot;: 1, &quot;two&quot;: 2, &quot;three&quot;: 3]<\/code><\/pre>\n<p>Kotlin posiada ju\u017c wystarczaj\u0105co wygodne funkcje do tworzenia podstawowych typ\u00f3w kolekcji, wi\u0119c taka dodatkowa sk\u0142adnia wydaje mi si\u0119 by\u0107 czym\u015b nadmiarowym (tak, powiedzia\u0142em to ja, przed chwil\u0105 upominaj\u0105cy si\u0119 dok\u0142adania do j\u0119zyka du\u017co bardziej rewolucyjnych Unii).<\/p>\n<p>Jestem te\u017c lekko nieprzekonany w zwi\u0105zku z <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/#multicatch#lateinit\">dalszym grzebaniem z <em>lateinit<\/em><\/a> i rozszerzaniem jego przypadk\u00f3w u\u017cycia. Jest to ju\u017c w tym momencie jeden z bardziej problematycznych koncept\u00f3w Kotlina &#8211; z jednej strony b\u0119d\u0105cy pot\u0119\u017cnym narz\u0119dziem, kluczowym dla jego odpornego na nulle j\u0119zyka typ\u00f3w, ale r\u00f3wnie\u017c trudny do zrozumienia, zw\u0142aszcza na pocz\u0105tku. Mo\u017cliwe, i\u017c proponowana sugestia, czyli umo\u017cliwienie u\u017cycia go r\u00f3wnie\u017c w przypadku prymityw\u00f3w i typ\u00f3w \u201cnullable\u201d jest krokiem w prawid\u0142owym kierunku. Jednocze\u015bnie, wczytuj\u0105c si\u0119 w oryginalny <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-15284\">KIP i jego komentarze<\/a>, zmiana ta mo\u017ce mie\u0107 do\u015b\u0107 szerokie reperkusje (og\u00f3lnie polecam wspomnianego KIPa, mnie du\u017co nauczy\u0142, jak naprawd\u0119 lazyinit dzia\u0142a w \u201cbebechach\u201d).<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img loading=\"lazy\" decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-1.png\" sizes=\"auto, (min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-1.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-1.png 878w\" alt=\"\" width=\"878\" height=\"944\">&nbsp;<figcaption>M\u00f3j g\u0142os z\u0142o\u017cony &#8211; a jakie s\u0105 Wasze typy? Dajcie zna\u0107 w komentarzu do tego posta na <strong><a href=\"https:\/\/www.facebook.com\/vivedapp\/posts\/557471075659427\">naszym fanpage<\/a><\/strong>.<\/figcaption><\/figure>\n<hr>\n<p>I pami\u0119tajcie, \u017ceby spr\u00f3bowa\u0107 <a href=\"https:\/\/blog.vived.io\/software-craftsmanship-saturday\/vived.io\">Vived<\/a>, je\u015bli chcesz otrzymywa\u0107 tego typu tre\u015bci spersonalizowane pod Ciebie!<\/p>\n<ul>\n<li><a href=\"https:\/\/apple.co\/3fB8Kcf\" rel=\"nofollow noopener\">App Store<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/3m421dx\" rel=\"nofollow noopener\">Play Store<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/367yWYD\">Wersja PWA<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Dzisiaj mamy dla Was tylko dwa tematy &#8211; ale przebicie si\u0119 przez jeden z nich zajmie d\u0142u\u017csz\u0105 chwil\u0119, wi\u0119c wydaje si\u0119, \u017ce mo\u017ce to i lepiej. Pami\u0119tajcie &#8211; Wasz g\u0142os si\u0119 liczy.<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[259],"tags":[],"class_list":["post-10115","post","type-post","status-publish","format-standard","hentry","category-jvm-pl"],"acf":{"weekly_summary":true,"estimated_reading_time":"5"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JVM Tuesday vol. 45 - 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-tuesday-vol-45-2\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 45 - Vived\" \/>\n<meta property=\"og:description\" content=\"Dzisiaj mamy dla Was tylko dwa tematy - ale przebicie si\u0119 przez jeden z nich zajmie d\u0142u\u017csz\u0105 chwil\u0119, wi\u0119c wydaje si\u0119, \u017ce mo\u017ce to i lepiej. Pami\u0119tajcie - Wasz g\u0142os si\u0119 liczy.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-06T12:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/freepressjournal_2021-07_12c90213-3cce-47e7-a72a-1dce71fefb7a_5fhjx6.gif\" \/>\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-tuesday-vol-45-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 45\",\"datePublished\":\"2021-07-06T12:00:00+00:00\",\"dateModified\":\"2022-09-19T11:10:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/\"},\"wordCount\":1028,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/freepressjournal_2021-07_12c90213-3cce-47e7-a72a-1dce71fefb7a_5fhjx6.gif\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/\",\"name\":\"JVM Tuesday vol. 45 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/freepressjournal_2021-07_12c90213-3cce-47e7-a72a-1dce71fefb7a_5fhjx6.gif\",\"datePublished\":\"2021-07-06T12:00:00+00:00\",\"dateModified\":\"2022-09-19T11:10:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/freepressjournal_2021-07_12c90213-3cce-47e7-a72a-1dce71fefb7a_5fhjx6.gif\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/freepressjournal_2021-07_12c90213-3cce-47e7-a72a-1dce71fefb7a_5fhjx6.gif\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 45\"}]},{\"@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 Tuesday vol. 45 - 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-tuesday-vol-45-2\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 45 - Vived","og_description":"Dzisiaj mamy dla Was tylko dwa tematy - ale przebicie si\u0119 przez jeden z nich zajmie d\u0142u\u017csz\u0105 chwil\u0119, wi\u0119c wydaje si\u0119, \u017ce mo\u017ce to i lepiej. Pami\u0119tajcie - Wasz g\u0142os si\u0119 liczy.","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/","og_site_name":"Vived","article_published_time":"2021-07-06T12:00:00+00:00","article_modified_time":"2022-09-19T11:10:51+00:00","og_image":[{"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/freepressjournal_2021-07_12c90213-3cce-47e7-a72a-1dce71fefb7a_5fhjx6.gif","type":"","width":"","height":""}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 45","datePublished":"2021-07-06T12:00:00+00:00","dateModified":"2022-09-19T11:10:51+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/"},"wordCount":1028,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/freepressjournal_2021-07_12c90213-3cce-47e7-a72a-1dce71fefb7a_5fhjx6.gif","articleSection":["JVM"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/","name":"JVM Tuesday vol. 45 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/freepressjournal_2021-07_12c90213-3cce-47e7-a72a-1dce71fefb7a_5fhjx6.gif","datePublished":"2021-07-06T12:00:00+00:00","dateModified":"2022-09-19T11:10:51+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/freepressjournal_2021-07_12c90213-3cce-47e7-a72a-1dce71fefb7a_5fhjx6.gif","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/freepressjournal_2021-07_12c90213-3cce-47e7-a72a-1dce71fefb7a_5fhjx6.gif"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-45-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 45"}]},{"@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":null,"attrs":[],"innerBlocks":[],"innerHTML":"<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/freepressjournal_2021-07_12c90213-3cce-47e7-a72a-1dce71fefb7a_5fhjx6.gif\" alt=\"\" width=\"260\" height=\"260\"><\/figure>\nWida\u0107, \u017ce \u015bwiat IT jest bardzo mocno amerykanocentryczny. Dzie\u0144 Niepodleg\u0142o\u015bci - czyli jedno z najwa\u017cniejszych \u015bwi\u0105t w USA - sprawia, \u017ce tak naprawd\u0119 ilo\u015b\u0107 news\u00f3w jest znikoma. Dlatego te\u017c dzisiejsza edycja b\u0119dzie do\u015b\u0107\u2026 skromna. W dalszym ci\u0105gu jednak zapraszamy do lektury - mamy dla Was dwie ciekawe wiadomo\u015bci.\n<h2 id=\"1-quarkus-20-wydany-co-przynosi-nowa-wersja-%F0%9F%94%A5\">1. <a href=\"https:\/\/quarkus.io\/blog\/quarkus-2-0-0-final-released\/\">Quarkus 2.0 wydany. Co przynosi nowa wersja<\/a> ?<\/h2>\nQuarkus, framework od Red Hata, coraz mocniej przebija si\u0119 do programist\u00f3w Java jako czo\u0142owy reprezentant frameworkowej \u201cnowej fali\u201d. Dlatego te\u017c jego kolejna du\u017ca edycja, wersja 2.0, z pewno\u015bci\u0105 przyci\u0105gnie uwag\u0119 niejednego znudzonego Springiem deva. Przygl\u0105dnijmy si\u0119 zatem, co kryje si\u0119 za nowym \u201cmajorem\u201d i czy rzeczywi\u015bcie jest to tak du\u017cy przeskok dla u\u017cytkownik\u00f3w.\n\nNa pewno odwa\u017cnym krokiem ze strony tw\u00f3rc\u00f3w jest porzucenie JDK 8. Quarkus 2.0 wymaga minimum JDK 11, a wi\u0119c najnowszego LTSa. Jest to chyba pierwszy du\u017cy framework, w kt\u00f3rym zdecydowano si\u0119 na ten krok, co samo w sobie stawia go w awangardzie JVMowego programowania. Ciekawe, czy konkurencja zdecyduje si\u0119 w niedalekiej przysz\u0142o\u015bci na taki krok.\n\nZaktualizowane zosta\u0142y r\u00f3wnie\u017c g\u0142\u00f3wne komponenty u\u017cywane przez Quarkusa. Wersja 2.0 przynosi ze sob\u0105 GraalVM w jego najnowszej wersji 21.1, aktualizacje Vert.x do 4.0 (b\u0119d\u0105cej w dalszym ci\u0105gu w mojej topce <a href=\"https:\/\/vertx.io\/blog\/whats-new-in-vert-x-4\/\">najgorszych release notes<\/a>) oraz wsparcie dla MicroProfile 4.0, co odby\u0142o si\u0119 poprzez aktualizacj\u0119 wszystkich komponent\u00f3w SmallRye.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/giphy-17.gif\" alt=\"\" width=\"204\" height=\"360\"><figcaption>W momencie, gdy tak przechodz\u0119 przez te og\u0142oszenia, zauwa\u017cam jak wielk\u0105 sklejk\u0105 innych projekt\u00f3w jest rozwi\u0105zanie Red Hata - ze wszystkimi zaletami (minimalizacja niepotrzebnej pracy) i wadami (poziom skomplikowania ca\u0142ej uk\u0142adanki) takiego podej\u015bcia.<\/figcaption><\/figure>\nPoza nowo\u015bciami wynikaj\u0105cymi ze wspomnianego podbicia zale\u017cno\u015bci, Quarkus wprowadza jedn\u0105 dodatkow\u0105, du\u017c\u0105 funkcjonalno\u015b\u0107. Ot\u00f3\u017c umo\u017cliwi on tak zwane \u201cci\u0105g\u0142e testowanie\u201d, czyli uruchomienie rozwijanej aplikacji w trybie pozwalaj\u0105cym na odpalanie suite testowych w tle podczas pisania kodu. Tw\u00f3rcy chwal\u0105 si\u0119, \u017ce dzi\u0119ki temu znacz\u0105co wzro\u015bnie tak zwany \u201cdevelopment experience\u201d podczas u\u017cywania ich narz\u0119dzia. Ci\u0105g\u0142e testowanie jest mi znane zar\u00f3wno z build tooli JSowych, jak i rozszerze\u0144 do Intellij pozwalaj\u0105cych na taki tryb pracy. Tw\u00f3rcy Quarkusa chwal\u0105 si\u0119 jednak, \u017ce ich rozwi\u0105zanie jest l\u017cejsze, szybsze i znacznie bardziej bezobs\u0142ugowe w por\u00f3wnaniu do dost\u0119pnych na JVMie alternatyw. Ch\u0119tnie zweryfikuje ich twierdzenia.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image.png 900w\" alt=\"\" width=\"900\" height=\"280\">&nbsp;\n\n<figcaption>To co, przekonani do porzucenia Springa i spr\u00f3bowania alternatywy?<\/figcaption><\/figure>\n<h2 id=\"2-zesp%C3%B3%C5%82-kotlina-pyta-spo%C5%82eczno%C5%9B%C4%87-nad-czym-powinien-pracowa%C4%87-%F0%9F%A5%AB\"><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/\">2. Zesp\u00f3\u0142 Kotlina pyta spo\u0142eczno\u015b\u0107, nad czym powinien pracowa\u0107<\/a><\/h2>\nDwa tygodnie temu <a href=\"https:\/\/blog.vived.io\/jvm-tuesday-vol-43\/\">pisali\u015bmy Wam o AMA z Kotlin Teamem<\/a>, rozp\u0142ywaj\u0105c si\u0119 nad tym, jak bardzo otwarci s\u0105 na g\u0142os spo\u0142eczno\u015bci. W zesz\u0142ym tygodniu udowodnili to po raz kolejny, og\u0142aszaj\u0105c mo\u017cliwo\u015b\u0107 g\u0142osowania na nowe featury j\u0119zyka, nad kt\u00f3rymi b\u0119d\u0105 pracowa\u0107 w przysz\u0142o\u015bci\u2026 a tak\u017ce na te, kt\u00f3rych ludzie sugeruj\u0105 unika\u0107 w przysz\u0142ych wersjach Kotlina.\n\nhttps:\/\/www.youtube.com\/watch?v=9pSh0VAVYn4\n\nKa\u017cdego chc\u0105cego mie\u0107 wp\u0142yw na przysz\u0142o\u015b\u0107 j\u0119zyka serdecznie zapraszamy do <a href=\"https:\/\/surveys.jetbrains.com\/s3\/kotlin-features-survey\">wype\u0142nienia dokumentu<\/a>. Propozycji jest a\u017c pi\u0119tna\u015bcie, dlatego z naszej za\u015b strony, w tej kr\u00f3tkiej sekcji wska\u017cemy te funkcjonalno\u015bci, kt\u00f3re wydaj\u0105 si\u0119 by\u0107 nam najbardziej interesuj\u0105ce.\n\nZe wzgl\u0119du na kompatybilno\u015b\u0107 z Jav\u0105 i jej systemem modu\u0142\u00f3w, z pewno\u015bci\u0105 na czele funkcjonalno\u015bci, kt\u00f3re moim zdaniem powinny zosta\u0107 wzi\u0119te pod uwag\u0119 jest scope \u201c<a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/#package-private-visibility\">packaged-private<\/a>\u201d. Interoperacyjno\u015b\u0107 Kotlina jest jedn\u0105 z jego najwi\u0119kszych zalet, kluczow\u0105 dla os\u00f3b krok po kroku migruj\u0105cych na niego swoje javowe projekty. Brak dost\u0119pu package-private, domy\u015blnego javowego poziomu, prowadzi\u0142 za\u015b wielokrotnie do trudno\u015bci w przestawieniu si\u0119 na rozwi\u0105zanie JetBrains\u00f3w przez posiadaj\u0105cych ju\u017c swoje nawyki, bardziej do\u015bwiadczonych programist\u00f3w. Dodanie tego poziomu dost\u0119pu mog\u0142oby by\u0107 pragmatycznym uk\u0142onem w ich stron\u0119.\n\nPowy\u017csza sugestia kierowana by\u0142a bardziej rozumem ni\u017c sercem. Je\u017celi chodzi o moje prywatne marzenie - bardzo chcia\u0142bym zobaczy\u0107 <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/#package-private-visibility#multicatch\">kiedy\u015b w Kotlinie Unie<\/a> (cho\u0107 przytuli\u0142bym te\u017c powi\u0105zanego z nimi Multicache wyj\u0105tk\u00f3w). Im bardziej funkcyjnie staram si\u0119 pisa\u0107, tym wi\u0119cej zaciemniaj\u0105cych logik\u0119 biznesow\u0105 wrapper\u00f3w musz\u0119 dok\u0142ada\u0107 do swojego kodu. Unie wydaj\u0105 si\u0119 by\u0107 eleganckim rozwi\u0105zaniem tego problemu - aczkolwiek sugerowana alternatywa, czyli wygodniejsza sk\u0142adania dla sealed class mo\u017ce by\u0107 dobrym kompromisowym rozwi\u0105zaniem. Mo\u017ce ono pozwoli\u0107 zminimalizowa\u0107 konieczno\u015b\u0107 dok\u0142adania kolejnego bytu do i tak coraz bardziej skomplikowanego j\u0119zyka, pozwalaj\u0105c mu unikn\u0105\u0107 losu Scali.\n<pre><code>fun String.parseData(): Data | Failure<\/code><\/pre>\nCho\u0107 podtrzymuje, \u017ce Unie w powy\u017cszej postaci bym przytuli\u0142.\n\nZ drugiej strony - czy jest zatem co\u015b na tej li\u015bcie, co wydaje mi si\u0119 zb\u0119dne? B\u0119d\u0119 tutaj pewnie do\u015b\u0107 kontrowersyjny, ale jednym z takich dodatk\u00f3w b\u0119d\u0105 raczej popularne \u201c<a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/#multicatch#collection-literals\">collection literals<\/a>\u201d:\n<pre><code>val list = [1, 2, 3]\nval map = [\"one\": 1, \"two\": 2, \"three\": 3]<\/code><\/pre>\nKotlin posiada ju\u017c wystarczaj\u0105co wygodne funkcje do tworzenia podstawowych typ\u00f3w kolekcji, wi\u0119c taka dodatkowa sk\u0142adnia wydaje mi si\u0119 by\u0107 czym\u015b nadmiarowym (tak, powiedzia\u0142em to ja, przed chwil\u0105 upominaj\u0105cy si\u0119 dok\u0142adania do j\u0119zyka du\u017co bardziej rewolucyjnych Unii).\n\nJestem te\u017c lekko nieprzekonany w zwi\u0105zku z <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/#multicatch#lateinit\">dalszym grzebaniem z <em>lateinit<\/em><\/a> i rozszerzaniem jego przypadk\u00f3w u\u017cycia. Jest to ju\u017c w tym momencie jeden z bardziej problematycznych koncept\u00f3w Kotlina - z jednej strony b\u0119d\u0105cy pot\u0119\u017cnym narz\u0119dziem, kluczowym dla jego odpornego na nulle j\u0119zyka typ\u00f3w, ale r\u00f3wnie\u017c trudny do zrozumienia, zw\u0142aszcza na pocz\u0105tku. Mo\u017cliwe, i\u017c proponowana sugestia, czyli umo\u017cliwienie u\u017cycia go r\u00f3wnie\u017c w przypadku prymityw\u00f3w i typ\u00f3w \u201cnullable\u201d jest krokiem w prawid\u0142owym kierunku. Jednocze\u015bnie, wczytuj\u0105c si\u0119 w oryginalny <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-15284\">KIP i jego komentarze<\/a>, zmiana ta mo\u017ce mie\u0107 do\u015b\u0107 szerokie reperkusje (og\u00f3lnie polecam wspomnianego KIPa, mnie du\u017co nauczy\u0142, jak naprawd\u0119 lazyinit dzia\u0142a w \u201cbebechach\u201d).\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-1.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-1.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-1.png 878w\" alt=\"\" width=\"878\" height=\"944\">&nbsp;\n\n<figcaption>M\u00f3j g\u0142os z\u0142o\u017cony - a jakie s\u0105 Wasze typy? Dajcie zna\u0107 w komentarzu do tego posta na <strong><a href=\"https:\/\/www.facebook.com\/vivedapp\/posts\/557471075659427\">naszym fanpage<\/a><\/strong>.<\/figcaption><\/figure>\n\n<hr>\n\nI pami\u0119tajcie, \u017ceby spr\u00f3bowa\u0107 <a href=\"https:\/\/blog.vived.io\/software-craftsmanship-saturday\/vived.io\">Vived<\/a>, je\u015bli chcesz otrzymywa\u0107 tego typu tre\u015bci spersonalizowane pod Ciebie!\n<ul>\n \t<li><a href=\"https:\/\/apple.co\/3fB8Kcf\" rel=\"nofollow noopener\">App Store<\/a><\/li>\n \t<li><a href=\"https:\/\/bit.ly\/3m421dx\" rel=\"nofollow noopener\">Play Store<\/a><\/li>\n \t<li><a href=\"http:\/\/bit.ly\/367yWYD\">Wersja PWA<\/a><\/li>\n<\/ul>","innerContent":["<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/freepressjournal_2021-07_12c90213-3cce-47e7-a72a-1dce71fefb7a_5fhjx6.gif\" alt=\"\" width=\"260\" height=\"260\"><\/figure>\nWida\u0107, \u017ce \u015bwiat IT jest bardzo mocno amerykanocentryczny. Dzie\u0144 Niepodleg\u0142o\u015bci - czyli jedno z najwa\u017cniejszych \u015bwi\u0105t w USA - sprawia, \u017ce tak naprawd\u0119 ilo\u015b\u0107 news\u00f3w jest znikoma. Dlatego te\u017c dzisiejsza edycja b\u0119dzie do\u015b\u0107\u2026 skromna. W dalszym ci\u0105gu jednak zapraszamy do lektury - mamy dla Was dwie ciekawe wiadomo\u015bci.\n<h2 id=\"1-quarkus-20-wydany-co-przynosi-nowa-wersja-%F0%9F%94%A5\">1. <a href=\"https:\/\/quarkus.io\/blog\/quarkus-2-0-0-final-released\/\">Quarkus 2.0 wydany. Co przynosi nowa wersja<\/a> ?<\/h2>\nQuarkus, framework od Red Hata, coraz mocniej przebija si\u0119 do programist\u00f3w Java jako czo\u0142owy reprezentant frameworkowej \u201cnowej fali\u201d. Dlatego te\u017c jego kolejna du\u017ca edycja, wersja 2.0, z pewno\u015bci\u0105 przyci\u0105gnie uwag\u0119 niejednego znudzonego Springiem deva. Przygl\u0105dnijmy si\u0119 zatem, co kryje si\u0119 za nowym \u201cmajorem\u201d i czy rzeczywi\u015bcie jest to tak du\u017cy przeskok dla u\u017cytkownik\u00f3w.\n\nNa pewno odwa\u017cnym krokiem ze strony tw\u00f3rc\u00f3w jest porzucenie JDK 8. Quarkus 2.0 wymaga minimum JDK 11, a wi\u0119c najnowszego LTSa. Jest to chyba pierwszy du\u017cy framework, w kt\u00f3rym zdecydowano si\u0119 na ten krok, co samo w sobie stawia go w awangardzie JVMowego programowania. Ciekawe, czy konkurencja zdecyduje si\u0119 w niedalekiej przysz\u0142o\u015bci na taki krok.\n\nZaktualizowane zosta\u0142y r\u00f3wnie\u017c g\u0142\u00f3wne komponenty u\u017cywane przez Quarkusa. Wersja 2.0 przynosi ze sob\u0105 GraalVM w jego najnowszej wersji 21.1, aktualizacje Vert.x do 4.0 (b\u0119d\u0105cej w dalszym ci\u0105gu w mojej topce <a href=\"https:\/\/vertx.io\/blog\/whats-new-in-vert-x-4\/\">najgorszych release notes<\/a>) oraz wsparcie dla MicroProfile 4.0, co odby\u0142o si\u0119 poprzez aktualizacj\u0119 wszystkich komponent\u00f3w SmallRye.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/giphy-17.gif\" alt=\"\" width=\"204\" height=\"360\"><figcaption>W momencie, gdy tak przechodz\u0119 przez te og\u0142oszenia, zauwa\u017cam jak wielk\u0105 sklejk\u0105 innych projekt\u00f3w jest rozwi\u0105zanie Red Hata - ze wszystkimi zaletami (minimalizacja niepotrzebnej pracy) i wadami (poziom skomplikowania ca\u0142ej uk\u0142adanki) takiego podej\u015bcia.<\/figcaption><\/figure>\nPoza nowo\u015bciami wynikaj\u0105cymi ze wspomnianego podbicia zale\u017cno\u015bci, Quarkus wprowadza jedn\u0105 dodatkow\u0105, du\u017c\u0105 funkcjonalno\u015b\u0107. Ot\u00f3\u017c umo\u017cliwi on tak zwane \u201cci\u0105g\u0142e testowanie\u201d, czyli uruchomienie rozwijanej aplikacji w trybie pozwalaj\u0105cym na odpalanie suite testowych w tle podczas pisania kodu. Tw\u00f3rcy chwal\u0105 si\u0119, \u017ce dzi\u0119ki temu znacz\u0105co wzro\u015bnie tak zwany \u201cdevelopment experience\u201d podczas u\u017cywania ich narz\u0119dzia. Ci\u0105g\u0142e testowanie jest mi znane zar\u00f3wno z build tooli JSowych, jak i rozszerze\u0144 do Intellij pozwalaj\u0105cych na taki tryb pracy. Tw\u00f3rcy Quarkusa chwal\u0105 si\u0119 jednak, \u017ce ich rozwi\u0105zanie jest l\u017cejsze, szybsze i znacznie bardziej bezobs\u0142ugowe w por\u00f3wnaniu do dost\u0119pnych na JVMie alternatyw. Ch\u0119tnie zweryfikuje ich twierdzenia.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image.png 900w\" alt=\"\" width=\"900\" height=\"280\">&nbsp;\n\n<figcaption>To co, przekonani do porzucenia Springa i spr\u00f3bowania alternatywy?<\/figcaption><\/figure>\n<h2 id=\"2-zesp%C3%B3%C5%82-kotlina-pyta-spo%C5%82eczno%C5%9B%C4%87-nad-czym-powinien-pracowa%C4%87-%F0%9F%A5%AB\"><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/\">2. Zesp\u00f3\u0142 Kotlina pyta spo\u0142eczno\u015b\u0107, nad czym powinien pracowa\u0107<\/a><\/h2>\nDwa tygodnie temu <a href=\"https:\/\/blog.vived.io\/jvm-tuesday-vol-43\/\">pisali\u015bmy Wam o AMA z Kotlin Teamem<\/a>, rozp\u0142ywaj\u0105c si\u0119 nad tym, jak bardzo otwarci s\u0105 na g\u0142os spo\u0142eczno\u015bci. W zesz\u0142ym tygodniu udowodnili to po raz kolejny, og\u0142aszaj\u0105c mo\u017cliwo\u015b\u0107 g\u0142osowania na nowe featury j\u0119zyka, nad kt\u00f3rymi b\u0119d\u0105 pracowa\u0107 w przysz\u0142o\u015bci\u2026 a tak\u017ce na te, kt\u00f3rych ludzie sugeruj\u0105 unika\u0107 w przysz\u0142ych wersjach Kotlina.\n\nhttps:\/\/www.youtube.com\/watch?v=9pSh0VAVYn4\n\nKa\u017cdego chc\u0105cego mie\u0107 wp\u0142yw na przysz\u0142o\u015b\u0107 j\u0119zyka serdecznie zapraszamy do <a href=\"https:\/\/surveys.jetbrains.com\/s3\/kotlin-features-survey\">wype\u0142nienia dokumentu<\/a>. Propozycji jest a\u017c pi\u0119tna\u015bcie, dlatego z naszej za\u015b strony, w tej kr\u00f3tkiej sekcji wska\u017cemy te funkcjonalno\u015bci, kt\u00f3re wydaj\u0105 si\u0119 by\u0107 nam najbardziej interesuj\u0105ce.\n\nZe wzgl\u0119du na kompatybilno\u015b\u0107 z Jav\u0105 i jej systemem modu\u0142\u00f3w, z pewno\u015bci\u0105 na czele funkcjonalno\u015bci, kt\u00f3re moim zdaniem powinny zosta\u0107 wzi\u0119te pod uwag\u0119 jest scope \u201c<a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/#package-private-visibility\">packaged-private<\/a>\u201d. Interoperacyjno\u015b\u0107 Kotlina jest jedn\u0105 z jego najwi\u0119kszych zalet, kluczow\u0105 dla os\u00f3b krok po kroku migruj\u0105cych na niego swoje javowe projekty. Brak dost\u0119pu package-private, domy\u015blnego javowego poziomu, prowadzi\u0142 za\u015b wielokrotnie do trudno\u015bci w przestawieniu si\u0119 na rozwi\u0105zanie JetBrains\u00f3w przez posiadaj\u0105cych ju\u017c swoje nawyki, bardziej do\u015bwiadczonych programist\u00f3w. Dodanie tego poziomu dost\u0119pu mog\u0142oby by\u0107 pragmatycznym uk\u0142onem w ich stron\u0119.\n\nPowy\u017csza sugestia kierowana by\u0142a bardziej rozumem ni\u017c sercem. Je\u017celi chodzi o moje prywatne marzenie - bardzo chcia\u0142bym zobaczy\u0107 <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/#package-private-visibility#multicatch\">kiedy\u015b w Kotlinie Unie<\/a> (cho\u0107 przytuli\u0142bym te\u017c powi\u0105zanego z nimi Multicache wyj\u0105tk\u00f3w). Im bardziej funkcyjnie staram si\u0119 pisa\u0107, tym wi\u0119cej zaciemniaj\u0105cych logik\u0119 biznesow\u0105 wrapper\u00f3w musz\u0119 dok\u0142ada\u0107 do swojego kodu. Unie wydaj\u0105 si\u0119 by\u0107 eleganckim rozwi\u0105zaniem tego problemu - aczkolwiek sugerowana alternatywa, czyli wygodniejsza sk\u0142adania dla sealed class mo\u017ce by\u0107 dobrym kompromisowym rozwi\u0105zaniem. Mo\u017ce ono pozwoli\u0107 zminimalizowa\u0107 konieczno\u015b\u0107 dok\u0142adania kolejnego bytu do i tak coraz bardziej skomplikowanego j\u0119zyka, pozwalaj\u0105c mu unikn\u0105\u0107 losu Scali.\n<pre><code>fun String.parseData(): Data | Failure<\/code><\/pre>\nCho\u0107 podtrzymuje, \u017ce Unie w powy\u017cszej postaci bym przytuli\u0142.\n\nZ drugiej strony - czy jest zatem co\u015b na tej li\u015bcie, co wydaje mi si\u0119 zb\u0119dne? B\u0119d\u0119 tutaj pewnie do\u015b\u0107 kontrowersyjny, ale jednym z takich dodatk\u00f3w b\u0119d\u0105 raczej popularne \u201c<a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/#multicatch#collection-literals\">collection literals<\/a>\u201d:\n<pre><code>val list = [1, 2, 3]\nval map = [\"one\": 1, \"two\": 2, \"three\": 3]<\/code><\/pre>\nKotlin posiada ju\u017c wystarczaj\u0105co wygodne funkcje do tworzenia podstawowych typ\u00f3w kolekcji, wi\u0119c taka dodatkowa sk\u0142adnia wydaje mi si\u0119 by\u0107 czym\u015b nadmiarowym (tak, powiedzia\u0142em to ja, przed chwil\u0105 upominaj\u0105cy si\u0119 dok\u0142adania do j\u0119zyka du\u017co bardziej rewolucyjnych Unii).\n\nJestem te\u017c lekko nieprzekonany w zwi\u0105zku z <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/06\/kotlin-features-survey-edition-2\/#multicatch#lateinit\">dalszym grzebaniem z <em>lateinit<\/em><\/a> i rozszerzaniem jego przypadk\u00f3w u\u017cycia. Jest to ju\u017c w tym momencie jeden z bardziej problematycznych koncept\u00f3w Kotlina - z jednej strony b\u0119d\u0105cy pot\u0119\u017cnym narz\u0119dziem, kluczowym dla jego odpornego na nulle j\u0119zyka typ\u00f3w, ale r\u00f3wnie\u017c trudny do zrozumienia, zw\u0142aszcza na pocz\u0105tku. Mo\u017cliwe, i\u017c proponowana sugestia, czyli umo\u017cliwienie u\u017cycia go r\u00f3wnie\u017c w przypadku prymityw\u00f3w i typ\u00f3w \u201cnullable\u201d jest krokiem w prawid\u0142owym kierunku. Jednocze\u015bnie, wczytuj\u0105c si\u0119 w oryginalny <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-15284\">KIP i jego komentarze<\/a>, zmiana ta mo\u017ce mie\u0107 do\u015b\u0107 szerokie reperkusje (og\u00f3lnie polecam wspomnianego KIPa, mnie du\u017co nauczy\u0142, jak naprawd\u0119 lazyinit dzia\u0142a w \u201cbebechach\u201d).\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-1.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-1.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-1.png 878w\" alt=\"\" width=\"878\" height=\"944\">&nbsp;\n\n<figcaption>M\u00f3j g\u0142os z\u0142o\u017cony - a jakie s\u0105 Wasze typy? Dajcie zna\u0107 w komentarzu do tego posta na <strong><a href=\"https:\/\/www.facebook.com\/vivedapp\/posts\/557471075659427\">naszym fanpage<\/a><\/strong>.<\/figcaption><\/figure>\n\n<hr>\n\nI pami\u0119tajcie, \u017ceby spr\u00f3bowa\u0107 <a href=\"https:\/\/blog.vived.io\/software-craftsmanship-saturday\/vived.io\">Vived<\/a>, je\u015bli chcesz otrzymywa\u0107 tego typu tre\u015bci spersonalizowane pod Ciebie!\n<ul>\n \t<li><a href=\"https:\/\/apple.co\/3fB8Kcf\" rel=\"nofollow noopener\">App Store<\/a><\/li>\n \t<li><a href=\"https:\/\/bit.ly\/3m421dx\" rel=\"nofollow noopener\">Play Store<\/a><\/li>\n \t<li><a href=\"http:\/\/bit.ly\/367yWYD\">Wersja PWA<\/a><\/li>\n<\/ul>"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10115","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=10115"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10115\/revisions"}],"predecessor-version":[{"id":10566,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10115\/revisions\/10566"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}