{"id":10133,"date":"2021-05-25T13:30:00","date_gmt":"2021-05-25T11:30:00","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-39\/"},"modified":"2022-09-19T13:10:53","modified_gmt":"2022-09-19T11:10:53","slug":"jvm-tuesday-vol-39","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/","title":{"rendered":"JVM Tuesday vol. 39"},"content":{"rendered":"<h2 id=\"1-wydano-spring-boot-2-5\" data-num=1>1. <a href=\"https:\/\/spring.io\/blog\/2021\/05\/20\/spring-boot-2-5-is-now-ga\">Wydano Spring Boot 2.5<\/a><\/h2>\n<p>Obrodzi\u0142o nam tymi nowymi og\u0142oszeniami ostatnio. Ka\u017cdy \u201cWtorek\u201d poszczyci\u0107 si\u0119 mo\u017ce kolejn\u0105 premier\u0105.<\/p>\n<p>Po wyczerpuj\u0105cym okresie test\u00f3w oraz kilku wersjach Release Candidate, nareszcie doczekali\u015bmy si\u0119 <a href=\"https:\/\/spring.io\/blog\/2021\/05\/20\/spring-boot-2-5-is-now-ga\">nowej ods\u0142ony Spring Boota<\/a>. Musz\u0119 przyzna\u0107, \u017ce w momencie, gdy zobaczy\u0142em og\u0142oszenie z list\u0105 zmian, nie wzbudzi\u0142o to we mnie jakiego\u015b nadmiernego entuzjazmu. Diabe\u0142 jednak tkwi w szczeg\u00f3\u0142ach i zag\u0142\u0119biaj\u0105c si\u0119 w release notes, znale\u017a\u0107 mo\u017cna kilka do\u015b\u0107 interesuj\u0105cych nowo\u015bci.<\/p>\n<p>Oczywi\u015bcie zacznijmy od \u201cciep\u0142ej wody w kranie\u201d. Nowy Spring to wsparcie dla Javy 16 oraz Gradle 7. \u00a0Oczekiwany upgrade zale\u017cno\u015bci, kt\u00f3ry przyda si\u0119 pewnie wszystkim osobom staraj\u0105cym si\u0119 by\u0107 na \u201costrzu\u201d JVMowego ekosystemu. Sam Spring pozostaje kompatybilny z Jav\u0105 8+, co powoduje do\u015b\u0107 ciekawe reperkusje. Aktualizacji uleg\u0142a bowiem jedna z zale\u017cno\u015bci Springa &#8211; Jetty. Jednak mamy tutaj ma\u0142y rozjazd, gdy\u017c Jetty 10 wymaga JDK w wersji minimalnie 11. St\u0105d te\u017c domy\u015bln\u0105 pozostaje starsza implementacja, Jetty 9, kt\u00f3ra jest w stanie obs\u0142u\u017cy\u0107 r\u00f3wnie\u017c wcze\u015bniejsze Javy. Ciekawe, czy w przysz\u0142o\u015bci mo\u017cemy spodziewa\u0107 si\u0119 cz\u0119\u015bciej tego typu sytuacji, bior\u0105c pod uwag\u0119 nies\u0142abn\u0105c\u0105 popularno\u015b\u0107 \u201c\u00f3semki\u201d.<\/p>\n<p>To w czym nowe wydanie Springa szczeg\u00f3lnie b\u0142yszczy, to wsparcie dla Dockera. Zar\u00f3wno Gradle, jak i Maven otrzymali wygodniejsze wsparcie tak zwanych buildpack\u00f3w, pozwalaj\u0105cych na bardzo wygodne tworzenie dockerowych obraz\u00f3w. Dodatkowo, wprowadzono obs\u0142ug\u0119 pakowania do kontener\u00f3w aplikacji w formacie *.war (ciekawe, jak du\u017co ludzi deployuje Spring Boota na Tomcat&#8217;cie ), od razu wprowadzaj\u0105c mechanizm pozwalaj\u0105cy na minimalizacj\u0119 zmian mi\u0119dzy kolejnymi iteracjami obrazu, wcze\u015bniej dost\u0119pny dla formatu <em>*.jar<\/em>.<\/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-37.png\" sizes=\"auto, (min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-37.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-37.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-37.png 1280w\" alt=\"\" width=\"1280\" height=\"960\" \/><figcaption>Docker z *.war w \u015brodku<\/figcaption><\/figure>\n<p>Oczywi\u015bcie to nie wszystko.owy Spring to r\u00f3wnie\u017c klasyczne usprawnienia w kontek\u015bcie observability, nowy spos\u00f3b inicjalizacji DataSource\u2019\u00f3w oraz podbicie wi\u0119kszo\u015bci springowych projekt\u00f3w (pokroju Spring Security &#8211; ostatnio wpad\u0142 nam w \u0142apy <a href=\"https:\/\/boudhayan-dev.medium.com\/demystifying-spring-security-setup-e0491acc7df7\">fajny artyku\u0142<\/a> t\u0142umacz\u0105cy podstawy jego dzia\u0142ania &#8211; czy Integration) do najnowszych wersji. Og\u00f3lnie zmian nie ma jako\u015b kosmicznie wiele, co pokazuje dojrza\u0142o\u015b\u0107 projektu, ale my\u015bl\u0119 \u017ce mimo to warto rozwa\u017cy\u0107, cho\u0107by ze wzgl\u0119du na <a href=\"https:\/\/docs.gradle.org\/7.0\/release-notes.html%5C\">interesuj\u0105ce zmiany przynoszone przez ostatni\u0105 aktualizacj\u0119 Gradle<\/a>.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n<li><a href=\"https:\/\/spring.io\/blog\/2021\/05\/20\/spring-boot-2-5-is-now-ga\">Spring Boot 2.5 is now GA<\/a><\/li>\n<li><a href=\"https:\/\/boudhayan-dev.medium.com\/demystifying-spring-security-setup-e0491acc7df7\">Demystifying Spring Security setup<\/a><\/li>\n<li><a href=\"https:\/\/docs.gradle.org\/7.0\/release-notes.html\">Gradle 7.0 Release Notes<\/a><\/li>\n<\/ul>\n<h2 id=\"2-kotlin-team-opublikowal-nowa-roadmape\" data-num=2><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html?date=19042021\">2. Kotlin Team opublikowa\u0142 now\u0105 Roadmap\u0119<\/a><\/h2>\n<p>Niedawno \u015bwi\u0119towali\u015bmy premier\u0119 nowej wersji Kotlina, teraz za\u015b mamy okazj\u0119 pokaza\u0107 <a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html?date=19042021\">od\u015bwie\u017con\u0105 wersj\u0119 jego Roadmapy<\/a>. Wersja 1.5 pewnie zago\u015bci\u0142a ju\u017c w projektach co poniekt\u00f3rych szcz\u0119\u015bliwc\u00f3w, teraz czas przygl\u0105dn\u0105\u0107 si\u0119, co nowego ma przynie\u015b\u0107.<\/p>\n<figure class=\"kg-card kg-image-card\"><img loading=\"lazy\" decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-35.png\" sizes=\"auto, (min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-35.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-35.png 1000w\" alt=\"\" width=\"1000\" height=\"311\" \/><\/figure>\n<p>Z pewno\u015bci\u0105 bardzo kluczowym z punktu widzenia jest fakt, \u017ce po stworzeniu w ramach wersji 1.5 nowej po\u015bredniej reprezentacji kodu Javowego, przyszed\u0142 czas na skonsumowanie wygenerowanej w ten spos\u00f3b warto\u015bci. Trwaj\u0105 prac\u0119 nad nowym kompilatorem, kt\u00f3rego celem jest teraz szeroko poj\u0119ta optymalizacja. Mimo, \u017ce tw\u00f3rcy sugeruj\u0105 r\u00f3\u017cnorodne usprawnienia (jednym z nich jest przyk\u0142adowo znaczenie bardziej agresywne zr\u00f3wnoleglenie wykonanych zada\u0144), to efektem wynikowym dla u\u017cytkownika ko\u0144cowego jest nowa jako\u015b\u0107, je\u015bli chodzi o szybko\u015b\u0107 ca\u0142ego procesu, kt\u00f3ra ma by\u0107 w ten spos\u00f3b uzyskana. Dodatkowe usprawnienia ma r\u00f3wnie\u017c dosta\u0107 budowanie kotlinowych aplikacji z pomoc\u0105 Gradle.<\/p>\n<p>Je\u015bli chodzi o wydajno\u015b\u0107, to r\u00f3wnie\u017c w ramach IDE maj\u0105 by\u0107 poczynione znaczne poprawki &#8211; cho\u0107 musz\u0119 przyzna\u0107, \u017ce pod tym wzgl\u0119dem nigdy nie odczuwa\u0142em znacz\u0105cych problem\u00f3w, to bior\u0105c pod uwag\u0119 \u017ce w zasadzie ca\u0142y czas Intellij jest w tyle, je\u015bli chodzi np. o kotlinowy autocomplete w por\u00f3wnaniu do Javy, to nie ma si\u0119 chyba co dziwi\u0107, \u017ce chc\u0105, aby ich klejnot koronny wypad\u0142 jak najlepiej. Sam kotlinowy plugin ma r\u00f3wnie\u017c trafi\u0107 do <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42308\">monorepo razem z Intellij<\/a>, co zgodnie z zapowiedzi\u0105 przyspieszy prac\u0119 nad rozszerzeniem.<\/p>\n<p>W planach jest te\u017c kilka ciekawych funkcjonalno\u015bci w samym j\u0119zyku. Ot\u00f3\u017c jest to wprowadzenie wsparcia dla tak zwanych \u201c<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-12380\">wyczerpuj\u0105cych when\u2019\u00f3w<\/a>\u201d. Ich rol\u0105 jest automatyczne wykrywanie sytuacji, gdy instrukcja typu switch nie wykorzysta wszystkich dost\u0119pnych wariant\u00f3w np. konkretnego enuma, co pozwala wy\u0142apa\u0107 sytuacje, gdy rozszerzaj\u0105c enumeracje czy np. sealed classy zapomnimy zaktualizowa\u0107 kod o obs\u0142ug\u0119 nowych wersji. Du\u017co serca te\u017c ma zosta\u0107 po\u015bwi\u0119cone lepszej interoperacyjno\u015bci javowych adnotacji.<\/p>\n<p>Podobno r\u00f3wnie\u017c jednym z g\u0142\u00f3wnych cel\u00f3w w najbli\u017cszych miesi\u0105cach ma by\u0107 zwi\u0119kszenie konkurencyjno\u015bci Kotlina podczas programowania backendowego. Je\u017celi chodzi o biblioteki, to zapowiedziano prac\u0119 nad <em>kotlinx.serialization<\/em> <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46782\">w wersji 1.3<\/a> (<a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlinx-serialization-1-2-released\/\">niedawno informowali\u015bmy o wersji 1.2<\/a>), oraz o <em>kotlinx.coroutines<\/em> <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46782\">w wersji 1.6<\/a> (w zesz\u0142ym tygodniu swoj\u0105 <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlin-coroutines-1-5-0-released\/\">premier\u0119 mia\u0142a 1.5<\/a>, stanowi\u0105cy m.in. milowy krok na drodze do wsparcia Reactive Streams, wprowadzaj\u0105cy poprawki do Channel API oraz u\u0142atwiaj\u0105ce pisanie test\u00f3w za pomoc\u0105 JUnita 5).<\/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\/image-36.png\" alt=\"\" width=\"466\" height=\"350\" \/><figcaption>Programi\u015bci Kotlina po wprowadzeniu wsparcia Reactive Streams do Korutyn\u00a0<\/figcaption><\/figure>\n<p>Ale oczywi\u015bcie Kotlin to nie tylko JVM, ale r\u00f3wnie\u017c warianty na r\u00f3\u017cne inne platformy, gdzie r\u00f3wnie\u017c odbywaj\u0105 si\u0119 prac\u0119. Ciekaw\u0105 zapowiedzian\u0105 nowo\u015bci\u0105 jest m.in. <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42289\">nowy format po\u015bredni dla kodu javascriptowego<\/a>. Kotlin Native ma otrzyma\u0107 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46772\">te\u017c wsparcie dla Apple Siliconu<\/a>. Trwaj\u0105 tak\u017ce prace nad eksperymentalnym <a href=\"https:\n\/\/youtrack.jetbrains.com\/issue\/KT-46773\">wsparciem WebAssembly<\/a>, a dzielenie kodu mi\u0119dzy wersjami na platformy IOS i Android ma zosta\u0107 znacznie polepszone.<\/p>\n<p>PS: Podczas ostatniego Google I\/O poinformowano, \u017ce <a href=\"https:\/\/www.xda-developers.com\/google-io-2021-new-features-jetpack-android-studio-kotlin\/\">Kotlin otrzyma\u0142 nowe API do procesowania adnotacji, a nasz ulubiony Kotlin Jetpack Compose w wydaniu androidowym jest na najlepszej drodze do uzyskania stabilno\u015bci<\/a>. Ciekawe, na ile prze\u0142o\u017cy si\u0119 to na rych\u0142\u0105 premier\u0119 wersji desktopowej i webowej.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html?date=19042021\">Kotlin roadmap &#8211; May 2021<\/a><\/li>\n<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42308\">Move the Kotlin plugin to the IntelliJ platform development infrastructure<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlinx-serialization-1-2-released\/\">kotlinx.serialization 1.2 Released<\/a><\/li>\n<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46782\">Improve `kotlinx-serialization` (release 1.3.0) : KT-46782<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlin-coroutines-1-5-0-released\/\">Kotlin Coroutines 1.5: GlobalScope Marked as Delicate, Refined Channels API, and More<\/a><\/li>\n<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46783\">Improve `kotlinx-coroutines` (release 1.6.0) : KT-46783<\/a><\/li>\n<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42289\">Make the new JS IR backend Stable : KT-42289<\/a><\/li>\n<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46772\">Support the Apple Silicon in the Kotlin Multiplatform tooling : KT-46772<\/a><\/li>\n<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46773\">Implement an experimental version of Kotlin\/Wasm compiler backend : KT-46773<\/a><\/li>\n<li><a href=\"https:\/\/www.xda-developers.com\/google-io-2021-new-features-jetpack-android-studio-kotlin\/\">Google unveils new features for Jetpack, Android Studio, and Kotlin<\/a><\/li>\n<\/ul>\n<h2 id=\"3-premiera-spock-framework-2-0\" data-num=3><a href=\"https:\/\/spockframework.org\/spock\/docs\/2.0\/release_notes.html\">3. Premiera Spock Framework 2.0<\/a><\/h2>\n<p>Ma\u0142a rzecz, a cieszy. Spock jest chyba ostatnim powodem, dla kt\u00f3rego ktokolwiek ma jeszcze w swoim projekcie Groovy\u2019ego, ale jest to pow\u00f3d bardzo dobry. Spock pozostaje jedn\u0105 z najwygodniejszych bibliotek s\u0142u\u017c\u0105cych do testowania javowych aplikacji, a jego edycja 2.0 przynosi mas\u0119, nieoczywistych na pierwszy rzut oka, zmian.<\/p>\n<p>Zacznijmy od faktu, \u017ce o ile do tej pory Spock charakteryzowa\u0142 si\u0119 pewn\u0105 doz\u0105 kompatybilno\u015bci z JUnitem (pod mask\u0105 u\u017cywa\u0142 jego JUnit 4 Runner), to teraz jest on w pe\u0142ni oparty o tak zwany <a href=\"https:\/\/junit.org\/junit5\/docs\/current\/user-guide\/#running-tests-build\">JUnit TestEngine<\/a>. Zmiana ta sprawia, \u017ce de facto Spock staje si\u0119 \u201cs\u0142odzikiem sk\u0142adniowym\u201d nad JUnitem &#8211; co wbrew pozorom ma sporo zalet. Co to oznacza w praktyce? Wsz\u0119dzie tam, gdzie wspierany jest JUnit (czyli na dobr\u0105 spraw\u0119 w ramach ka\u017cdego narz\u0119dzia odpalaj\u0105cego Jav\u0119) mo\u017cliwe b\u0119dzie r\u00f3wnie\u017c natywne wsparcie Spocka. Zmniejszy to narzut spo\u0142eczno\u015bci zwi\u0105zany z potrzeb\u0105 rozwijania wielokrotnie tych samych mechanizm\u00f3w.<\/p>\n<p>Spock 2.0 to r\u00f3wnie\u017c wsparcie dla Groovy\u2019ego w wersji 3.0 (kt\u00f3rego to premiera obok JavyFX 15 by\u0142a jednym z moich najwi\u0119kszych zaskocze\u0144 2020, je\u015bli chodzi o JVM). Z jednej strony jest to du\u017ce wsparcie tej umieraj\u0105cej platformy, z drugiej za\u015b kolejny krok w kierunku jej marginalizacji. Spock pozby\u0142 si\u0119 bowiem w nowym wydaniu wszelkich opartych o ni\u0105 zale\u017cno\u015bci, za wyj\u0105tkiem go\u0142ego, bazowego <em>groovy.jar<\/em>.<\/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-34.png\" sizes=\"auto, (min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-34.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-34.png 800w\" alt=\"\" width=\"800\" height=\"448\" \/><figcaption>&#8222;Programi\u015bci Groovy&#8217;ego&#8221;<\/figcaption><\/figure>\n<p>Oczywi\u015bcie, sporo zmian i usprawnie\u0144 znale\u017a\u0107 mo\u017cna w samej sk\u0142adni, ale w tym kontek\u015bcie odsy\u0142am Was do pe\u0142nych <a href=\"https:\/\/spockframework.org\/spock\/docs\/2.0\/migration_guide.html#_migration_guide_2_0\">Release Notes<\/a>.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n<li><a href=\"https:\/\/spockframework.org\/spock\/docs\/2.0\/migration_guide.html#_migration_guide_2_0\">Spock Framework 2.0 Migration Guide<\/a><\/li>\n<li><a href=\"https:\/\/junit.org\/junit5\/docs\/current\/user-guide\/#running-tests-build\">JUnit 5 User Guide<\/a><\/li>\n<\/ul>\n<h2 id=\"bonus-premiera-helidon-2-3\" data-num=4><a href=\"https:\/\/medium.com\/helidon\/helidon-2-3-0-ed6cbf930d7a\">Bonus: Premiera Helidon 2.3<\/a><\/h2>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0a13ba527.png\" alt=\"\" \/><\/figure>\n<p>Skoro tyle o premierach, nieco nieuczciwym by\u0142oby nie wspomnie\u0107 r\u00f3wnie\u017c o nowej minorowej wersji Helidona, kt\u00f3ra to wypuszczona zosta\u0142a w zesz\u0142ym tygodniu. Ten rozwijany przez Oracle framework oparty o Jakart\u0119 EE, wyra\u017anie mocno stawia na wygod\u0119 wsp\u00f3\u0142pracy z innymi narz\u0119dziami, gdy\u017c poprzednia edycja to g\u0142\u00f3wnie og\u0142oszenia tego typu. Dostajemy bowiem wygodniejsze wsparcie dla Oracle Cloud Infrastructure oraz natywn\u0105 integracj\u0119 z HashiCorp Vault oraz Neo4j. Z pewno\u015bci\u0105 wa\u017cnym og\u0142oszeniem jest te\u017c wsparcie dla Micrometera, kt\u00f3ry sta\u0142 si\u0119 de facto bran\u017cowym standardem w wypadku serwerowych javowych aplikacji, cieszy wi\u0119c fakt, \u017ce kolejny framework postanawia zapewni\u0107 wygodne wsparcie dla tego rozwi\u0105zania. Standaryzacja w kontek\u015bcie metryk raczej przyniesie nam wi\u0119cej po\u017cytku ni\u017c szkody.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dzisiaj mamy nawa\u0142 premier: Spring Boot, Spock Framework (a tak\u017ce Helidon), a tak\u017ce majowa edycja Kotlinowej Roadmapy \ud83d\uddfa Zapraszamy do lektury!<\/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-10133","post","type-post","status-publish","format-standard","hentry","category-jvm-pl"],"acf":{"weekly_summary":true,"estimated_reading_time":"7"},"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. 39 - 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-39\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 39 - Vived\" \/>\n<meta property=\"og:description\" content=\"Dzisiaj mamy nawa\u0142 premier: Spring Boot, Spock Framework (a tak\u017ce Helidon), a tak\u017ce majowa edycja Kotlinowej Roadmapy \ud83d\uddfa Zapraszamy do lektury!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-05-25T11:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-37.png\" \/>\n<meta name=\"author\" content=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 39\",\"datePublished\":\"2021-05-25T11:30:00+00:00\",\"dateModified\":\"2022-09-19T11:10:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/\"},\"wordCount\":1425,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-37.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/\",\"name\":\"JVM Tuesday vol. 39 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-37.png\",\"datePublished\":\"2021-05-25T11:30:00+00:00\",\"dateModified\":\"2022-09-19T11:10:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-37.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-37.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 39\"}]},{\"@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. 39 - 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-39\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 39 - Vived","og_description":"Dzisiaj mamy nawa\u0142 premier: Spring Boot, Spock Framework (a tak\u017ce Helidon), a tak\u017ce majowa edycja Kotlinowej Roadmapy \ud83d\uddfa Zapraszamy do lektury!","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/","og_site_name":"Vived","article_published_time":"2021-05-25T11:30:00+00:00","article_modified_time":"2022-09-19T11:10:53+00:00","og_image":[{"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-37.png","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-39\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 39","datePublished":"2021-05-25T11:30:00+00:00","dateModified":"2022-09-19T11:10:53+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/"},"wordCount":1425,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-37.png","articleSection":["JVM"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/","name":"JVM Tuesday vol. 39 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-37.png","datePublished":"2021-05-25T11:30:00+00:00","dateModified":"2022-09-19T11:10:53+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-37.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-37.png"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-39\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 39"}]},{"@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":"<h2 id=\"1-wydano-spring-boot-25-%F0%9F%8D%83\">1. <a href=\"https:\/\/spring.io\/blog\/2021\/05\/20\/spring-boot-2-5-is-now-ga\">Wydano Spring Boot 2.5<\/a><\/h2>\nObrodzi\u0142o nam tymi nowymi og\u0142oszeniami ostatnio. Ka\u017cdy \u201cWtorek\u201d poszczyci\u0107 si\u0119 mo\u017ce kolejn\u0105 premier\u0105.\n\nPo wyczerpuj\u0105cym okresie test\u00f3w oraz kilku wersjach Release Candidate, nareszcie doczekali\u015bmy si\u0119 <a href=\"https:\/\/spring.io\/blog\/2021\/05\/20\/spring-boot-2-5-is-now-ga\">nowej ods\u0142ony Spring Boota<\/a>. Musz\u0119 przyzna\u0107, \u017ce w momencie, gdy zobaczy\u0142em og\u0142oszenie z list\u0105 zmian, nie wzbudzi\u0142o to we mnie jakiego\u015b nadmiernego entuzjazmu. Diabe\u0142 jednak tkwi w szczeg\u00f3\u0142ach i zag\u0142\u0119biaj\u0105c si\u0119 w release notes, znale\u017a\u0107 mo\u017cna kilka do\u015b\u0107 interesuj\u0105cych nowo\u015bci.\n\nOczywi\u015bcie zacznijmy od \u201cciep\u0142ej wody w kranie\u201d. Nowy Spring to wsparcie dla Javy 16 oraz Gradle 7. \u00a0Oczekiwany upgrade zale\u017cno\u015bci, kt\u00f3ry przyda si\u0119 pewnie wszystkim osobom staraj\u0105cym si\u0119 by\u0107 na \u201costrzu\u201d JVMowego ekosystemu. Sam Spring pozostaje kompatybilny z Jav\u0105 8+, co powoduje do\u015b\u0107 ciekawe reperkusje. Aktualizacji uleg\u0142a bowiem jedna z zale\u017cno\u015bci Springa - Jetty. Jednak mamy tutaj ma\u0142y rozjazd, gdy\u017c Jetty 10 wymaga JDK w wersji minimalnie 11. St\u0105d te\u017c domy\u015bln\u0105 pozostaje starsza implementacja, Jetty 9, kt\u00f3ra jest w stanie obs\u0142u\u017cy\u0107 r\u00f3wnie\u017c wcze\u015bniejsze Javy. Ciekawe, czy w przysz\u0142o\u015bci mo\u017cemy spodziewa\u0107 si\u0119 cz\u0119\u015bciej tego typu sytuacji, bior\u0105c pod uwag\u0119 nies\u0142abn\u0105c\u0105 popularno\u015b\u0107 \u201c\u00f3semki\u201d.\n\nTo w czym nowe wydanie Springa szczeg\u00f3lnie b\u0142yszczy, to wsparcie dla Dockera. Zar\u00f3wno Gradle, jak i Maven otrzymali wygodniejsze wsparcie tak zwanych buildpack\u00f3w, pozwalaj\u0105cych na bardzo wygodne tworzenie dockerowych obraz\u00f3w. Dodatkowo, wprowadzono obs\u0142ug\u0119 pakowania do kontener\u00f3w aplikacji w formacie *.war (ciekawe, jak du\u017co ludzi deployuje Spring Boota na Tomcat'cie ), od razu wprowadzaj\u0105c mechanizm pozwalaj\u0105cy na minimalizacj\u0119 zmian mi\u0119dzy kolejnymi iteracjami obrazu, wcze\u015bniej dost\u0119pny dla formatu <em>*.jar<\/em>.\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-37.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-37.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-37.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-37.png 1280w\" alt=\"\" width=\"1280\" height=\"960\" \/>\n<figcaption>Docker z *.war w \u015brodku<\/figcaption><\/figure>\nOczywi\u015bcie to nie wszystko.owy Spring to r\u00f3wnie\u017c klasyczne usprawnienia w kontek\u015bcie observability, nowy spos\u00f3b inicjalizacji DataSource\u2019\u00f3w oraz podbicie wi\u0119kszo\u015bci springowych projekt\u00f3w (pokroju Spring Security - ostatnio wpad\u0142 nam w \u0142apy <a href=\"https:\/\/boudhayan-dev.medium.com\/demystifying-spring-security-setup-e0491acc7df7\">fajny artyku\u0142<\/a> t\u0142umacz\u0105cy podstawy jego dzia\u0142ania - czy Integration) do najnowszych wersji. Og\u00f3lnie zmian nie ma jako\u015b kosmicznie wiele, co pokazuje dojrza\u0142o\u015b\u0107 projektu, ale my\u015bl\u0119 \u017ce mimo to warto rozwa\u017cy\u0107, cho\u0107by ze wzgl\u0119du na <a href=\"https:\/\/docs.gradle.org\/7.0\/release-notes.html%5C\">interesuj\u0105ce zmiany przynoszone przez ostatni\u0105 aktualizacj\u0119 Gradle<\/a>.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/spring.io\/blog\/2021\/05\/20\/spring-boot-2-5-is-now-ga\">Spring Boot 2.5 is now GA<\/a><\/li>\n \t<li><a href=\"https:\/\/boudhayan-dev.medium.com\/demystifying-spring-security-setup-e0491acc7df7\">Demystifying Spring Security setup<\/a><\/li>\n \t<li><a href=\"https:\/\/docs.gradle.org\/7.0\/release-notes.html\">Gradle 7.0 Release Notes<\/a><\/li>\n<\/ul>\n<h2 id=\"2-kotlin-team-opublikowa%C5%82-now%C4%85-roadmap%C4%99-%F0%9F%97%BA\"><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html?date=19042021\">2. Kotlin Team opublikowa\u0142 now\u0105 Roadmap\u0119<\/a><\/h2>\nNiedawno \u015bwi\u0119towali\u015bmy premier\u0119 nowej wersji Kotlina, teraz za\u015b mamy okazj\u0119 pokaza\u0107 <a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html?date=19042021\">od\u015bwie\u017con\u0105 wersj\u0119 jego Roadmapy<\/a>. Wersja 1.5 pewnie zago\u015bci\u0142a ju\u017c w projektach co poniekt\u00f3rych szcz\u0119\u015bliwc\u00f3w, teraz czas przygl\u0105dn\u0105\u0107 si\u0119, co nowego ma przynie\u015b\u0107.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-35.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-35.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-35.png 1000w\" alt=\"\" width=\"1000\" height=\"311\" \/><\/figure>\nZ pewno\u015bci\u0105 bardzo kluczowym z punktu widzenia jest fakt, \u017ce po stworzeniu w ramach wersji 1.5 nowej po\u015bredniej reprezentacji kodu Javowego, przyszed\u0142 czas na skonsumowanie wygenerowanej w ten spos\u00f3b warto\u015bci. Trwaj\u0105 prac\u0119 nad nowym kompilatorem, kt\u00f3rego celem jest teraz szeroko poj\u0119ta optymalizacja. Mimo, \u017ce tw\u00f3rcy sugeruj\u0105 r\u00f3\u017cnorodne usprawnienia (jednym z nich jest przyk\u0142adowo znaczenie bardziej agresywne zr\u00f3wnoleglenie wykonanych zada\u0144), to efektem wynikowym dla u\u017cytkownika ko\u0144cowego jest nowa jako\u015b\u0107, je\u015bli chodzi o szybko\u015b\u0107 ca\u0142ego procesu, kt\u00f3ra ma by\u0107 w ten spos\u00f3b uzyskana. Dodatkowe usprawnienia ma r\u00f3wnie\u017c dosta\u0107 budowanie kotlinowych aplikacji z pomoc\u0105 Gradle.\n\nJe\u015bli chodzi o wydajno\u015b\u0107, to r\u00f3wnie\u017c w ramach IDE maj\u0105 by\u0107 poczynione znaczne poprawki - cho\u0107 musz\u0119 przyzna\u0107, \u017ce pod tym wzgl\u0119dem nigdy nie odczuwa\u0142em znacz\u0105cych problem\u00f3w, to bior\u0105c pod uwag\u0119 \u017ce w zasadzie ca\u0142y czas Intellij jest w tyle, je\u015bli chodzi np. o kotlinowy autocomplete w por\u00f3wnaniu do Javy, to nie ma si\u0119 chyba co dziwi\u0107, \u017ce chc\u0105, aby ich klejnot koronny wypad\u0142 jak najlepiej. Sam kotlinowy plugin ma r\u00f3wnie\u017c trafi\u0107 do <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42308\">monorepo razem z Intellij<\/a>, co zgodnie z zapowiedzi\u0105 przyspieszy prac\u0119 nad rozszerzeniem.\n\nW planach jest te\u017c kilka ciekawych funkcjonalno\u015bci w samym j\u0119zyku. Ot\u00f3\u017c jest to wprowadzenie wsparcia dla tak zwanych \u201c<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-12380\">wyczerpuj\u0105cych when\u2019\u00f3w<\/a>\u201d. Ich rol\u0105 jest automatyczne wykrywanie sytuacji, gdy instrukcja typu switch nie wykorzysta wszystkich dost\u0119pnych wariant\u00f3w np. konkretnego enuma, co pozwala wy\u0142apa\u0107 sytuacje, gdy rozszerzaj\u0105c enumeracje czy np. sealed classy zapomnimy zaktualizowa\u0107 kod o obs\u0142ug\u0119 nowych wersji. Du\u017co serca te\u017c ma zosta\u0107 po\u015bwi\u0119cone lepszej interoperacyjno\u015bci javowych adnotacji.\n\nPodobno r\u00f3wnie\u017c jednym z g\u0142\u00f3wnych cel\u00f3w w najbli\u017cszych miesi\u0105cach ma by\u0107 zwi\u0119kszenie konkurencyjno\u015bci Kotlina podczas programowania backendowego. Je\u017celi chodzi o biblioteki, to zapowiedziano prac\u0119 nad <em>kotlinx.serialization<\/em> <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46782\">w wersji 1.3<\/a> (<a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlinx-serialization-1-2-released\/\">niedawno informowali\u015bmy o wersji 1.2<\/a>), oraz o <em>kotlinx.coroutines<\/em> <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46782\">w wersji 1.6<\/a> (w zesz\u0142ym tygodniu swoj\u0105 <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlin-coroutines-1-5-0-released\/\">premier\u0119 mia\u0142a 1.5<\/a>, stanowi\u0105cy m.in. milowy krok na drodze do wsparcia Reactive Streams, wprowadzaj\u0105cy poprawki do Channel API oraz u\u0142atwiaj\u0105ce pisanie test\u00f3w za pomoc\u0105 JUnita 5).\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-36.png\" alt=\"\" width=\"466\" height=\"350\" \/>\n\n<figcaption>Programi\u015bci Kotlina po wprowadzeniu wsparcia Reactive Streams do Korutyn\u00a0<\/figcaption><\/figure>\nAle oczywi\u015bcie Kotlin to nie tylko JVM, ale r\u00f3wnie\u017c warianty na r\u00f3\u017cne inne platformy, gdzie r\u00f3wnie\u017c odbywaj\u0105 si\u0119 prac\u0119. Ciekaw\u0105 zapowiedzian\u0105 nowo\u015bci\u0105 jest m.in. <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42289\">nowy format po\u015bredni dla kodu javascriptowego<\/a>. Kotlin Native ma otrzyma\u0107 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46772\">te\u017c wsparcie dla Apple Siliconu<\/a>. Trwaj\u0105 tak\u017ce prace nad eksperymentalnym <a href=\"https:\n\/\/youtrack.jetbrains.com\/issue\/KT-46773\">wsparciem WebAssembly<\/a>, a dzielenie kodu mi\u0119dzy wersjami na platformy IOS i Android ma zosta\u0107 znacznie polepszone.\n\nPS: Podczas ostatniego Google I\/O poinformowano, \u017ce <a href=\"https:\/\/www.xda-developers.com\/google-io-2021-new-features-jetpack-android-studio-kotlin\/\">Kotlin otrzyma\u0142 nowe API do procesowania adnotacji, a nasz ulubiony Kotlin Jetpack Compose w wydaniu androidowym jest na najlepszej drodze do uzyskania stabilno\u015bci<\/a>. Ciekawe, na ile prze\u0142o\u017cy si\u0119 to na rych\u0142\u0105 premier\u0119 wersji desktopowej i webowej.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html?date=19042021\">Kotlin roadmap - May 2021<\/a><\/li>\n \t<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42308\">Move the Kotlin plugin to the IntelliJ platform development infrastructure<\/a><\/li>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlinx-serialization-1-2-released\/\">kotlinx.serialization 1.2 Released<\/a><\/li>\n \t<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46782\">Improve `kotlinx-serialization` (release 1.3.0) : KT-46782<\/a><\/li>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlin-coroutines-1-5-0-released\/\">Kotlin Coroutines 1.5: GlobalScope Marked as Delicate, Refined Channels API, and More<\/a><\/li>\n \t<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46783\">Improve `kotlinx-coroutines` (release 1.6.0) : KT-46783<\/a><\/li>\n \t<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42289\">Make the new JS IR backend Stable : KT-42289<\/a><\/li>\n \t<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46772\">Support the Apple Silicon in the Kotlin Multiplatform tooling : KT-46772<\/a><\/li>\n \t<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46773\">Implement an experimental version of Kotlin\/Wasm compiler backend : KT-46773<\/a><\/li>\n \t<li><a href=\"https:\/\/www.xda-developers.com\/google-io-2021-new-features-jetpack-android-studio-kotlin\/\">Google unveils new features for Jetpack, Android Studio, and Kotlin<\/a><\/li>\n<\/ul>\n<h2 id=\"3-premiera-spock-framework-20-%F0%9F%96%96\"><a href=\"https:\/\/spockframework.org\/spock\/docs\/2.0\/release_notes.html\">3. Premiera Spock Framework 2.0<\/a><\/h2>\nMa\u0142a rzecz, a cieszy. Spock jest chyba ostatnim powodem, dla kt\u00f3rego ktokolwiek ma jeszcze w swoim projekcie Groovy\u2019ego, ale jest to pow\u00f3d bardzo dobry. Spock pozostaje jedn\u0105 z najwygodniejszych bibliotek s\u0142u\u017c\u0105cych do testowania javowych aplikacji, a jego edycja 2.0 przynosi mas\u0119, nieoczywistych na pierwszy rzut oka, zmian.\n\nZacznijmy od faktu, \u017ce o ile do tej pory Spock charakteryzowa\u0142 si\u0119 pewn\u0105 doz\u0105 kompatybilno\u015bci z JUnitem (pod mask\u0105 u\u017cywa\u0142 jego JUnit 4 Runner), to teraz jest on w pe\u0142ni oparty o tak zwany <a href=\"https:\/\/junit.org\/junit5\/docs\/current\/user-guide\/#running-tests-build\">JUnit TestEngine<\/a>. Zmiana ta sprawia, \u017ce de facto Spock staje si\u0119 \u201cs\u0142odzikiem sk\u0142adniowym\u201d nad JUnitem - co wbrew pozorom ma sporo zalet. Co to oznacza w praktyce? Wsz\u0119dzie tam, gdzie wspierany jest JUnit (czyli na dobr\u0105 spraw\u0119 w ramach ka\u017cdego narz\u0119dzia odpalaj\u0105cego Jav\u0119) mo\u017cliwe b\u0119dzie r\u00f3wnie\u017c natywne wsparcie Spocka. Zmniejszy to narzut spo\u0142eczno\u015bci zwi\u0105zany z potrzeb\u0105 rozwijania wielokrotnie tych samych mechanizm\u00f3w.\n\nSpock 2.0 to r\u00f3wnie\u017c wsparcie dla Groovy\u2019ego w wersji 3.0 (kt\u00f3rego to premiera obok JavyFX 15 by\u0142a jednym z moich najwi\u0119kszych zaskocze\u0144 2020, je\u015bli chodzi o JVM). Z jednej strony jest to du\u017ce wsparcie tej umieraj\u0105cej platformy, z drugiej za\u015b kolejny krok w kierunku jej marginalizacji. Spock pozby\u0142 si\u0119 bowiem w nowym wydaniu wszelkich opartych o ni\u0105 zale\u017cno\u015bci, za wyj\u0105tkiem go\u0142ego, bazowego <em>groovy.jar<\/em>.\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-34.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-34.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-34.png 800w\" alt=\"\" width=\"800\" height=\"448\" \/>\n\n<figcaption>\"Programi\u015bci Groovy'ego\"<\/figcaption><\/figure>\nOczywi\u015bcie, sporo zmian i usprawnie\u0144 znale\u017a\u0107 mo\u017cna w samej sk\u0142adni, ale w tym kontek\u015bcie odsy\u0142am Was do pe\u0142nych <a href=\"https:\/\/spockframework.org\/spock\/docs\/2.0\/migration_guide.html#_migration_guide_2_0\">Release Notes<\/a>.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/spockframework.org\/spock\/docs\/2.0\/migration_guide.html#_migration_guide_2_0\">Spock Framework 2.0 Migration Guide<\/a><\/li>\n \t<li><a href=\"https:\/\/junit.org\/junit5\/docs\/current\/user-guide\/#running-tests-build\">JUnit 5 User Guide<\/a><\/li>\n<\/ul>\n<h2 id=\"bonus-premiera-helidon-23\"><a href=\"https:\/\/medium.com\/helidon\/helidon-2-3-0-ed6cbf930d7a\">Bonus: Premiera Helidon 2.3<\/a><\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0a13ba527.png\" alt=\"\" \/><\/figure>\nSkoro tyle o premierach, nieco nieuczciwym by\u0142oby nie wspomnie\u0107 r\u00f3wnie\u017c o nowej minorowej wersji Helidona, kt\u00f3ra to wypuszczona zosta\u0142a w zesz\u0142ym tygodniu. Ten rozwijany przez Oracle framework oparty o Jakart\u0119 EE, wyra\u017anie mocno stawia na wygod\u0119 wsp\u00f3\u0142pracy z innymi narz\u0119dziami, gdy\u017c poprzednia edycja to g\u0142\u00f3wnie og\u0142oszenia tego typu. Dostajemy bowiem wygodniejsze wsparcie dla Oracle Cloud Infrastructure oraz natywn\u0105 integracj\u0119 z HashiCorp Vault oraz Neo4j. Z pewno\u015bci\u0105 wa\u017cnym og\u0142oszeniem jest te\u017c wsparcie dla Micrometera, kt\u00f3ry sta\u0142 si\u0119 de facto bran\u017cowym standardem w wypadku serwerowych javowych aplikacji, cieszy wi\u0119c fakt, \u017ce kolejny framework postanawia zapewni\u0107 wygodne wsparcie dla tego rozwi\u0105zania. Standaryzacja w kontek\u015bcie metryk raczej przyniesie nam wi\u0119cej po\u017cytku ni\u017c szkody.","innerContent":["<h2 id=\"1-wydano-spring-boot-25-%F0%9F%8D%83\">1. <a href=\"https:\/\/spring.io\/blog\/2021\/05\/20\/spring-boot-2-5-is-now-ga\">Wydano Spring Boot 2.5<\/a><\/h2>\nObrodzi\u0142o nam tymi nowymi og\u0142oszeniami ostatnio. Ka\u017cdy \u201cWtorek\u201d poszczyci\u0107 si\u0119 mo\u017ce kolejn\u0105 premier\u0105.\n\nPo wyczerpuj\u0105cym okresie test\u00f3w oraz kilku wersjach Release Candidate, nareszcie doczekali\u015bmy si\u0119 <a href=\"https:\/\/spring.io\/blog\/2021\/05\/20\/spring-boot-2-5-is-now-ga\">nowej ods\u0142ony Spring Boota<\/a>. Musz\u0119 przyzna\u0107, \u017ce w momencie, gdy zobaczy\u0142em og\u0142oszenie z list\u0105 zmian, nie wzbudzi\u0142o to we mnie jakiego\u015b nadmiernego entuzjazmu. Diabe\u0142 jednak tkwi w szczeg\u00f3\u0142ach i zag\u0142\u0119biaj\u0105c si\u0119 w release notes, znale\u017a\u0107 mo\u017cna kilka do\u015b\u0107 interesuj\u0105cych nowo\u015bci.\n\nOczywi\u015bcie zacznijmy od \u201cciep\u0142ej wody w kranie\u201d. Nowy Spring to wsparcie dla Javy 16 oraz Gradle 7. \u00a0Oczekiwany upgrade zale\u017cno\u015bci, kt\u00f3ry przyda si\u0119 pewnie wszystkim osobom staraj\u0105cym si\u0119 by\u0107 na \u201costrzu\u201d JVMowego ekosystemu. Sam Spring pozostaje kompatybilny z Jav\u0105 8+, co powoduje do\u015b\u0107 ciekawe reperkusje. Aktualizacji uleg\u0142a bowiem jedna z zale\u017cno\u015bci Springa - Jetty. Jednak mamy tutaj ma\u0142y rozjazd, gdy\u017c Jetty 10 wymaga JDK w wersji minimalnie 11. St\u0105d te\u017c domy\u015bln\u0105 pozostaje starsza implementacja, Jetty 9, kt\u00f3ra jest w stanie obs\u0142u\u017cy\u0107 r\u00f3wnie\u017c wcze\u015bniejsze Javy. Ciekawe, czy w przysz\u0142o\u015bci mo\u017cemy spodziewa\u0107 si\u0119 cz\u0119\u015bciej tego typu sytuacji, bior\u0105c pod uwag\u0119 nies\u0142abn\u0105c\u0105 popularno\u015b\u0107 \u201c\u00f3semki\u201d.\n\nTo w czym nowe wydanie Springa szczeg\u00f3lnie b\u0142yszczy, to wsparcie dla Dockera. Zar\u00f3wno Gradle, jak i Maven otrzymali wygodniejsze wsparcie tak zwanych buildpack\u00f3w, pozwalaj\u0105cych na bardzo wygodne tworzenie dockerowych obraz\u00f3w. Dodatkowo, wprowadzono obs\u0142ug\u0119 pakowania do kontener\u00f3w aplikacji w formacie *.war (ciekawe, jak du\u017co ludzi deployuje Spring Boota na Tomcat'cie ), od razu wprowadzaj\u0105c mechanizm pozwalaj\u0105cy na minimalizacj\u0119 zmian mi\u0119dzy kolejnymi iteracjami obrazu, wcze\u015bniej dost\u0119pny dla formatu <em>*.jar<\/em>.\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-37.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-37.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-37.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-37.png 1280w\" alt=\"\" width=\"1280\" height=\"960\" \/>\n<figcaption>Docker z *.war w \u015brodku<\/figcaption><\/figure>\nOczywi\u015bcie to nie wszystko.owy Spring to r\u00f3wnie\u017c klasyczne usprawnienia w kontek\u015bcie observability, nowy spos\u00f3b inicjalizacji DataSource\u2019\u00f3w oraz podbicie wi\u0119kszo\u015bci springowych projekt\u00f3w (pokroju Spring Security - ostatnio wpad\u0142 nam w \u0142apy <a href=\"https:\/\/boudhayan-dev.medium.com\/demystifying-spring-security-setup-e0491acc7df7\">fajny artyku\u0142<\/a> t\u0142umacz\u0105cy podstawy jego dzia\u0142ania - czy Integration) do najnowszych wersji. Og\u00f3lnie zmian nie ma jako\u015b kosmicznie wiele, co pokazuje dojrza\u0142o\u015b\u0107 projektu, ale my\u015bl\u0119 \u017ce mimo to warto rozwa\u017cy\u0107, cho\u0107by ze wzgl\u0119du na <a href=\"https:\/\/docs.gradle.org\/7.0\/release-notes.html%5C\">interesuj\u0105ce zmiany przynoszone przez ostatni\u0105 aktualizacj\u0119 Gradle<\/a>.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/spring.io\/blog\/2021\/05\/20\/spring-boot-2-5-is-now-ga\">Spring Boot 2.5 is now GA<\/a><\/li>\n \t<li><a href=\"https:\/\/boudhayan-dev.medium.com\/demystifying-spring-security-setup-e0491acc7df7\">Demystifying Spring Security setup<\/a><\/li>\n \t<li><a href=\"https:\/\/docs.gradle.org\/7.0\/release-notes.html\">Gradle 7.0 Release Notes<\/a><\/li>\n<\/ul>\n<h2 id=\"2-kotlin-team-opublikowa%C5%82-now%C4%85-roadmap%C4%99-%F0%9F%97%BA\"><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html?date=19042021\">2. Kotlin Team opublikowa\u0142 now\u0105 Roadmap\u0119<\/a><\/h2>\nNiedawno \u015bwi\u0119towali\u015bmy premier\u0119 nowej wersji Kotlina, teraz za\u015b mamy okazj\u0119 pokaza\u0107 <a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html?date=19042021\">od\u015bwie\u017con\u0105 wersj\u0119 jego Roadmapy<\/a>. Wersja 1.5 pewnie zago\u015bci\u0142a ju\u017c w projektach co poniekt\u00f3rych szcz\u0119\u015bliwc\u00f3w, teraz czas przygl\u0105dn\u0105\u0107 si\u0119, co nowego ma przynie\u015b\u0107.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-35.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-35.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-35.png 1000w\" alt=\"\" width=\"1000\" height=\"311\" \/><\/figure>\nZ pewno\u015bci\u0105 bardzo kluczowym z punktu widzenia jest fakt, \u017ce po stworzeniu w ramach wersji 1.5 nowej po\u015bredniej reprezentacji kodu Javowego, przyszed\u0142 czas na skonsumowanie wygenerowanej w ten spos\u00f3b warto\u015bci. Trwaj\u0105 prac\u0119 nad nowym kompilatorem, kt\u00f3rego celem jest teraz szeroko poj\u0119ta optymalizacja. Mimo, \u017ce tw\u00f3rcy sugeruj\u0105 r\u00f3\u017cnorodne usprawnienia (jednym z nich jest przyk\u0142adowo znaczenie bardziej agresywne zr\u00f3wnoleglenie wykonanych zada\u0144), to efektem wynikowym dla u\u017cytkownika ko\u0144cowego jest nowa jako\u015b\u0107, je\u015bli chodzi o szybko\u015b\u0107 ca\u0142ego procesu, kt\u00f3ra ma by\u0107 w ten spos\u00f3b uzyskana. Dodatkowe usprawnienia ma r\u00f3wnie\u017c dosta\u0107 budowanie kotlinowych aplikacji z pomoc\u0105 Gradle.\n\nJe\u015bli chodzi o wydajno\u015b\u0107, to r\u00f3wnie\u017c w ramach IDE maj\u0105 by\u0107 poczynione znaczne poprawki - cho\u0107 musz\u0119 przyzna\u0107, \u017ce pod tym wzgl\u0119dem nigdy nie odczuwa\u0142em znacz\u0105cych problem\u00f3w, to bior\u0105c pod uwag\u0119 \u017ce w zasadzie ca\u0142y czas Intellij jest w tyle, je\u015bli chodzi np. o kotlinowy autocomplete w por\u00f3wnaniu do Javy, to nie ma si\u0119 chyba co dziwi\u0107, \u017ce chc\u0105, aby ich klejnot koronny wypad\u0142 jak najlepiej. Sam kotlinowy plugin ma r\u00f3wnie\u017c trafi\u0107 do <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42308\">monorepo razem z Intellij<\/a>, co zgodnie z zapowiedzi\u0105 przyspieszy prac\u0119 nad rozszerzeniem.\n\nW planach jest te\u017c kilka ciekawych funkcjonalno\u015bci w samym j\u0119zyku. Ot\u00f3\u017c jest to wprowadzenie wsparcia dla tak zwanych \u201c<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-12380\">wyczerpuj\u0105cych when\u2019\u00f3w<\/a>\u201d. Ich rol\u0105 jest automatyczne wykrywanie sytuacji, gdy instrukcja typu switch nie wykorzysta wszystkich dost\u0119pnych wariant\u00f3w np. konkretnego enuma, co pozwala wy\u0142apa\u0107 sytuacje, gdy rozszerzaj\u0105c enumeracje czy np. sealed classy zapomnimy zaktualizowa\u0107 kod o obs\u0142ug\u0119 nowych wersji. Du\u017co serca te\u017c ma zosta\u0107 po\u015bwi\u0119cone lepszej interoperacyjno\u015bci javowych adnotacji.\n\nPodobno r\u00f3wnie\u017c jednym z g\u0142\u00f3wnych cel\u00f3w w najbli\u017cszych miesi\u0105cach ma by\u0107 zwi\u0119kszenie konkurencyjno\u015bci Kotlina podczas programowania backendowego. Je\u017celi chodzi o biblioteki, to zapowiedziano prac\u0119 nad <em>kotlinx.serialization<\/em> <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46782\">w wersji 1.3<\/a> (<a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlinx-serialization-1-2-released\/\">niedawno informowali\u015bmy o wersji 1.2<\/a>), oraz o <em>kotlinx.coroutines<\/em> <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46782\">w wersji 1.6<\/a> (w zesz\u0142ym tygodniu swoj\u0105 <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlin-coroutines-1-5-0-released\/\">premier\u0119 mia\u0142a 1.5<\/a>, stanowi\u0105cy m.in. milowy krok na drodze do wsparcia Reactive Streams, wprowadzaj\u0105cy poprawki do Channel API oraz u\u0142atwiaj\u0105ce pisanie test\u00f3w za pomoc\u0105 JUnita 5).\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-36.png\" alt=\"\" width=\"466\" height=\"350\" \/>\n\n<figcaption>Programi\u015bci Kotlina po wprowadzeniu wsparcia Reactive Streams do Korutyn\u00a0<\/figcaption><\/figure>\nAle oczywi\u015bcie Kotlin to nie tylko JVM, ale r\u00f3wnie\u017c warianty na r\u00f3\u017cne inne platformy, gdzie r\u00f3wnie\u017c odbywaj\u0105 si\u0119 prac\u0119. Ciekaw\u0105 zapowiedzian\u0105 nowo\u015bci\u0105 jest m.in. <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42289\">nowy format po\u015bredni dla kodu javascriptowego<\/a>. Kotlin Native ma otrzyma\u0107 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46772\">te\u017c wsparcie dla Apple Siliconu<\/a>. Trwaj\u0105 tak\u017ce prace nad eksperymentalnym <a href=\"https:\n\/\/youtrack.jetbrains.com\/issue\/KT-46773\">wsparciem WebAssembly<\/a>, a dzielenie kodu mi\u0119dzy wersjami na platformy IOS i Android ma zosta\u0107 znacznie polepszone.\n\nPS: Podczas ostatniego Google I\/O poinformowano, \u017ce <a href=\"https:\/\/www.xda-developers.com\/google-io-2021-new-features-jetpack-android-studio-kotlin\/\">Kotlin otrzyma\u0142 nowe API do procesowania adnotacji, a nasz ulubiony Kotlin Jetpack Compose w wydaniu androidowym jest na najlepszej drodze do uzyskania stabilno\u015bci<\/a>. Ciekawe, na ile prze\u0142o\u017cy si\u0119 to na rych\u0142\u0105 premier\u0119 wersji desktopowej i webowej.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html?date=19042021\">Kotlin roadmap - May 2021<\/a><\/li>\n \t<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42308\">Move the Kotlin plugin to the IntelliJ platform development infrastructure<\/a><\/li>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlinx-serialization-1-2-released\/\">kotlinx.serialization 1.2 Released<\/a><\/li>\n \t<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46782\">Improve `kotlinx-serialization` (release 1.3.0) : KT-46782<\/a><\/li>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlin-coroutines-1-5-0-released\/\">Kotlin Coroutines 1.5: GlobalScope Marked as Delicate, Refined Channels API, and More<\/a><\/li>\n \t<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46783\">Improve `kotlinx-coroutines` (release 1.6.0) : KT-46783<\/a><\/li>\n \t<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-42289\">Make the new JS IR backend Stable : KT-42289<\/a><\/li>\n \t<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46772\">Support the Apple Silicon in the Kotlin Multiplatform tooling : KT-46772<\/a><\/li>\n \t<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-46773\">Implement an experimental version of Kotlin\/Wasm compiler backend : KT-46773<\/a><\/li>\n \t<li><a href=\"https:\/\/www.xda-developers.com\/google-io-2021-new-features-jetpack-android-studio-kotlin\/\">Google unveils new features for Jetpack, Android Studio, and Kotlin<\/a><\/li>\n<\/ul>\n<h2 id=\"3-premiera-spock-framework-20-%F0%9F%96%96\"><a href=\"https:\/\/spockframework.org\/spock\/docs\/2.0\/release_notes.html\">3. Premiera Spock Framework 2.0<\/a><\/h2>\nMa\u0142a rzecz, a cieszy. Spock jest chyba ostatnim powodem, dla kt\u00f3rego ktokolwiek ma jeszcze w swoim projekcie Groovy\u2019ego, ale jest to pow\u00f3d bardzo dobry. Spock pozostaje jedn\u0105 z najwygodniejszych bibliotek s\u0142u\u017c\u0105cych do testowania javowych aplikacji, a jego edycja 2.0 przynosi mas\u0119, nieoczywistych na pierwszy rzut oka, zmian.\n\nZacznijmy od faktu, \u017ce o ile do tej pory Spock charakteryzowa\u0142 si\u0119 pewn\u0105 doz\u0105 kompatybilno\u015bci z JUnitem (pod mask\u0105 u\u017cywa\u0142 jego JUnit 4 Runner), to teraz jest on w pe\u0142ni oparty o tak zwany <a href=\"https:\/\/junit.org\/junit5\/docs\/current\/user-guide\/#running-tests-build\">JUnit TestEngine<\/a>. Zmiana ta sprawia, \u017ce de facto Spock staje si\u0119 \u201cs\u0142odzikiem sk\u0142adniowym\u201d nad JUnitem - co wbrew pozorom ma sporo zalet. Co to oznacza w praktyce? Wsz\u0119dzie tam, gdzie wspierany jest JUnit (czyli na dobr\u0105 spraw\u0119 w ramach ka\u017cdego narz\u0119dzia odpalaj\u0105cego Jav\u0119) mo\u017cliwe b\u0119dzie r\u00f3wnie\u017c natywne wsparcie Spocka. Zmniejszy to narzut spo\u0142eczno\u015bci zwi\u0105zany z potrzeb\u0105 rozwijania wielokrotnie tych samych mechanizm\u00f3w.\n\nSpock 2.0 to r\u00f3wnie\u017c wsparcie dla Groovy\u2019ego w wersji 3.0 (kt\u00f3rego to premiera obok JavyFX 15 by\u0142a jednym z moich najwi\u0119kszych zaskocze\u0144 2020, je\u015bli chodzi o JVM). Z jednej strony jest to du\u017ce wsparcie tej umieraj\u0105cej platformy, z drugiej za\u015b kolejny krok w kierunku jej marginalizacji. Spock pozby\u0142 si\u0119 bowiem w nowym wydaniu wszelkich opartych o ni\u0105 zale\u017cno\u015bci, za wyj\u0105tkiem go\u0142ego, bazowego <em>groovy.jar<\/em>.\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-34.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-34.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-34.png 800w\" alt=\"\" width=\"800\" height=\"448\" \/>\n\n<figcaption>\"Programi\u015bci Groovy'ego\"<\/figcaption><\/figure>\nOczywi\u015bcie, sporo zmian i usprawnie\u0144 znale\u017a\u0107 mo\u017cna w samej sk\u0142adni, ale w tym kontek\u015bcie odsy\u0142am Was do pe\u0142nych <a href=\"https:\/\/spockframework.org\/spock\/docs\/2.0\/migration_guide.html#_migration_guide_2_0\">Release Notes<\/a>.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/spockframework.org\/spock\/docs\/2.0\/migration_guide.html#_migration_guide_2_0\">Spock Framework 2.0 Migration Guide<\/a><\/li>\n \t<li><a href=\"https:\/\/junit.org\/junit5\/docs\/current\/user-guide\/#running-tests-build\">JUnit 5 User Guide<\/a><\/li>\n<\/ul>\n<h2 id=\"bonus-premiera-helidon-23\"><a href=\"https:\/\/medium.com\/helidon\/helidon-2-3-0-ed6cbf930d7a\">Bonus: Premiera Helidon 2.3<\/a><\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0a13ba527.png\" alt=\"\" \/><\/figure>\nSkoro tyle o premierach, nieco nieuczciwym by\u0142oby nie wspomnie\u0107 r\u00f3wnie\u017c o nowej minorowej wersji Helidona, kt\u00f3ra to wypuszczona zosta\u0142a w zesz\u0142ym tygodniu. Ten rozwijany przez Oracle framework oparty o Jakart\u0119 EE, wyra\u017anie mocno stawia na wygod\u0119 wsp\u00f3\u0142pracy z innymi narz\u0119dziami, gdy\u017c poprzednia edycja to g\u0142\u00f3wnie og\u0142oszenia tego typu. Dostajemy bowiem wygodniejsze wsparcie dla Oracle Cloud Infrastructure oraz natywn\u0105 integracj\u0119 z HashiCorp Vault oraz Neo4j. Z pewno\u015bci\u0105 wa\u017cnym og\u0142oszeniem jest te\u017c wsparcie dla Micrometera, kt\u00f3ry sta\u0142 si\u0119 de facto bran\u017cowym standardem w wypadku serwerowych javowych aplikacji, cieszy wi\u0119c fakt, \u017ce kolejny framework postanawia zapewni\u0107 wygodne wsparcie dla tego rozwi\u0105zania. Standaryzacja w kontek\u015bcie metryk raczej przyniesie nam wi\u0119cej po\u017cytku ni\u017c szkody."]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10133","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=10133"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10133\/revisions"}],"predecessor-version":[{"id":10572,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10133\/revisions\/10572"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}