{"id":10125,"date":"2021-06-15T13:16:55","date_gmt":"2021-06-15T11:16:55","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-42\/"},"modified":"2022-09-19T13:10:52","modified_gmt":"2022-09-19T11:10:52","slug":"jvm-tuesday-vol-42","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/","title":{"rendered":"JVM Tuesday vol. 42"},"content":{"rendered":"<h2 id=\"1-czy-slyszeliscie-o-oracle-cloud-infrastructure-platforma-interesujaco-sie-rozwija\" data-num=1>1. Czy s\u0142yszeli\u015bcie o Oracle Cloud Infrastructure? Platforma interesuj\u0105co si\u0119 rozwija \u200d\u2640\ufe0f<\/h2>\n<p>\u017be wszyscy inwestuj\u0105 w chmurow\u0105 Jav\u0119 to nie jest jaka\u015b wielka nowo\u015b\u0107. \u015awiadczy\u0107 mog\u0105 o tym takie projekty jak AWS Cornetto czy buildy OpenJDK rozwijane przez Microsoft. Po prostu to si\u0119 op\u0142aca &#8211; platforma jest niezwykle popularna, wi\u0119c ka\u017cdy du\u017cy dostawca chmury chce mie\u0107 w swojej ofercie jak najlepsze wsparcie dla niej. Nie codziennie s\u0142yszy si\u0119 jednak o nowej us\u0142udze chmurowej dla Javy od\u2026 tw\u00f3rc\u00f3w Javy.<\/p>\n<p>Oracle <a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-cloud-services\">og\u0142osi\u0142o<\/a> w zesz\u0142ym tygodniu, \u017ce w ramach swojej Oracle Cloud Infrastructure, &nbsp;udost\u0119pni Java Management Service &#8211; us\u0142ug\u0119, kt\u00f3r\u0105 mo\u017cna uruchomi\u0107 zar\u00f3wno w ramach chmury obliczeniowej, jak i serwer\u00f3w on-premise. Ca\u0142o\u015b\u0107 jest supervisorem dbaj\u0105cym o aktualizacje, bezpiecze\u0144stwo oraz inny szeroko rozumiany &#8222;compliance&#8221; us\u0142ug.<\/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-28.png\" alt=\"\" width=\"490\" height=\"341\"><figcaption>&#8222;Zasada 1: Tylko LTSy&#8221;<\/figcaption><\/figure>\n<p>Wszystko fajnie, tylko czemu ca\u0142o\u015b\u0107 musi posiada\u0107 akronim JMS. Ja wiem, \u017ce je\u015bli stosujemy <a href=\"https:\/\/devcards.io\/smurf-naming-convention\">Smurf-Naming<\/a> i ka\u017cda nazwa musi zaczyna\u0107 si\u0119 od s\u0142\u00f3wka \u201cJava\u201d, to liczba potencjalnych kombinacji jest ograniczona\u2026 no ale Java Message Service jest ju\u017c tak mocno zakorzeniony w spo\u0142eczno\u015bci, \u017ce po prostu ca\u0142o\u015b\u0107 b\u0119dzie si\u0119 myli\u0142a.<\/p>\n<p>JMS zreszt\u0105 to nie jedyne wzbogacenie u\u017cyteczno\u015bci Oracle Cloud Infrastructure. Niedawno ukaza\u0142 si\u0119 Helidon 2.3.0 (o czym nie omieszkali\u015bmy Was poinformowa\u0107 dwa tygodnie temu). Ta wersja rozwijanego przez Oracle frameworku posiada bezpo\u015bredni\u0105 integracj\u0119 w\u0142a\u015bnie z Oracle Cloud Infrastructure. Wida\u0107, \u017ce firma mocno inwestuje w zapewnienie programistom ciekawych rozwi\u0105za\u0144 (szkoda tylko, \u017ce ciekawych g\u0142\u00f3wnie dla wielkich korporacji, ale to te pozostaj\u0105 klientami firmy Larry\u2019ego Ellisona). Ostatnimi czasy na ich blogu ukaza\u0142 si\u0119 zaskakuj\u0105co interesuj\u0105cy <a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-cloud-services\">wywiad<\/a> z dw\u00f3jk\u0105 lider\u00f3w Helidoma, prezentuj\u0105cy filozofi\u0119 Oracle je\u015bli chodzi o rozwi\u0105zania chmurowe.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n<li><a href=\"https:\/\/www.infoworld.com\/article\/3621690\/oracle-offers-java-management-service.html\">Oracle offers Java management service<\/a><\/li>\n<li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-cloud-services\">Java for the cloud, and the cloud for Java<\/a><\/li>\n<\/ul>\n<h2 id=\"2-spring-native-0-10-0-przynosi-ciekawe-zmiany-w-samym-graalvm\" data-num=2>2. Spring Native 0.10.0 przynosi ciekawe zmiany w samym GraalVM<\/h2>\n<p>Informacja o wydaniu bety Spring Native waln\u0119\u0142a jak grom z jasnego nieba na niczego niespodziewaj\u0105cych si\u0119 developer\u00f3w. Z naszej strony powiem, \u017ce og\u0142oszenie to jest jak do tej pory najlepiej \u201cczytaj\u0105cym si\u0119\u201d newsem dotycz\u0105cym JVMa jakiego opublikowali\u015bmy w Keep Upie, przebijaj\u0105c nawet wydanie Javy 16. Niech cho\u0107by to \u015bwiadczy o zainteresowaniu, jakim spo\u0142eczno\u015b\u0107 zareagowa\u0142a na now\u0105 edycje Springa.<\/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-29.png\" alt=\"\" width=\"537\" height=\"539\">&nbsp;<figcaption>Aczkolwiek mo\u017ce to po prostu ta informacja jest niezwykle clickbaitowa.<\/figcaption><\/figure>\n<p>Teraz, wraz z <a href=\"https:\/\/spring.io\/blog\/2021\/06\/14\/spring-native-0-10-0-available-now\">premier\u0105 wersji 0.10.0<\/a>, nie spodziewamy si\u0119 ani krztyny takiego zainteresowania (mam wra\u017cenie, \u017ce pierwsza wersja testowa traktowana by\u0142a jako co\u015b w rodzaju \u201ceventu\u201d), co nie oznacza, \u017ce nie stanowi ona ciekawego kolejnego kroku dla projektu. Nowa wersja przynosi sporo interesuj\u0105cych zmian &#8211; poza standardowymi aktualizacjami zale\u017cno\u015bci (tutaj akurat jest to Spring Boot 2.5 oraz GraalVM 21.1) przynosi te\u017c sporo innych nowo\u015bci. Jak to przy Springu bywa, ich nieoceniony Developer Advocate, Josh Long, przygotowa\u0142 wideo prezentuj\u0105ce wszystkie nowe funkcjonalno\u015bci.<\/p>\n<div class=\"embed-responsive embed-responsive-16by9\"><iframe loading=\"lazy\" title=\"Spring Tips: Spring Native 0.10.0\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/JsUAGJqdvaA?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>Dla tych, kt\u00f3rzy nie chc\u0105 ogl\u0105da\u0107 prawie p\u00f3\u0142toragodzinnego materia\u0142u, wspomn\u0119 \u017ce kluczow\u0105 rzecz\u0105 przynosz\u0105c\u0105 przez wydanie jest zupe\u0142nie zaktualizowany spos\u00f3b budowania paczek aplikacyjnych. Poprzednie edycje pozwala\u0142y tylko i wy\u0142\u0105cznie na budowanie za pomoc\u0105 Mavena, 0.11 przynosi oczekiwany plugin dla Gradle s\u0142u\u017c\u0105cy do budowania aplikacji. Jest to wynik wsp\u00f3\u0142pracy teamu springowego z in\u017cynierami pracuj\u0105cymi nad samym GraalVM.<\/p>\n<p>Drug\u0105 niezwykle istotn\u0105 nowo\u015bci\u0105 (r\u00f3wnie\u017c powsta\u0142\u0105 przy wsp\u00f3\u0142pracy z zespo\u0142em GraalVM) jest <a href=\"https:\/\/medium.com\/graalvm\/gradle-and-maven-plugins-for-native-image-with-initial-junit-testing-support-dde00a8caf0b\">w pe\u0142ni \u201cnatywne\u201d testowanie aplikacji<\/a> za pomoc\u0105 JUnita. Do tej pory wszystkie testy uruchamiane by\u0142y w ramach standardowej maszyny Javy. Aby to osi\u0105gn\u0105\u0107, niezb\u0119dna by\u0142a implementacja funkcjonalno\u015bci junit-platform-native, kt\u00f3ra wykrywa testy podczas uruchomienia w ramach \u201czwyk\u0142ego\u201d JVM i zapisuje je na boku na potrzeby r\u00f3wnie\u017c natywnej kompilacji. Tak znalezione testy s\u0105 pakowane do osobnego pliku wykonywalnego, kt\u00f3ry mo\u017ce by\u0107 uruchomiony ju\u017c w ramach \u015brodowiska GraalVM.<\/p>\n<p>A jak ju\u017c mowa o Gradle, to pojawi\u0142a si\u0119 jego <a href=\"https:\/\/docs.gradle.org\/7.1\/release-notes.html\">wersja 7.1<\/a>. To co przynosi, to g\u0142\u00f3wnie masa deprekacji funkcjonalno\u015bci, kt\u00f3re za jaki\u015b czas (sporo z nich ju\u017c w Gradle 8.0) znikn\u0105 z tego najdynamiczniej rozwijaj\u0105cego si\u0119 javowego build toola.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n<li><a href=\"https:\/\/spring.io\/blog\/2021\/06\/14\/spring-native-0-10-0-available-now\">Spring Native 0.10.0 available now<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/graalvm\/gradle-and-maven-plugins-for-native-image-with-initial-junit-testing-support-dde00a8caf0b\">Gradle and Maven plugins for Native Image with initial JUnit testing support<\/a><\/li>\n<li><a href=\"https:\/\/docs.gradle.org\/7.1\/release-notes.html\">Gradle 7.1 Release Notes<\/a><\/li>\n<\/ul>\n<h2 id=\"3-generyki-w-javie-nareszcie-maja-stac-sie-prawdziwie-uniwersalne\" data-num=3>3. Generyki w Javie nareszcie maj\u0105 sta\u0107 si\u0119 prawdziwie uniwersalne \u200d\u2640\ufe0f<\/h2>\n<p>A na koniec, jak to u nas zwykle bywa, kiedy akurat nie pojawiaj\u0105 si\u0119 bardziej \u201cbie\u017c\u0105ce\u201d tematy, JEPik. I jak zwykle z gatunku tych bardzo interesuj\u0105cych, poniewa\u017c jest to dalsza praca nad Valhall\u0105.<\/p>\n<p>Par\u0119 tygodni temu przybli\u017cyli\u015bmy Wam temat obiekt\u00f3w prymitywnych (Primitive Objects), do pewnego momentu znanych pod nazw\u0105 value types (co b\u0119dzie istotn\u0105 wskaz\u00f3wk\u0105, o czym m\u00f3wimy dla tych, kt\u00f3rzy nie s\u0105 na bie\u017c\u0105co z ka\u017cdym nowym proposalem &#8211; ten ekosystem naprawd\u0119 porusza si\u0119 mocno do przodu). <a href=\"https:\/\/openjdk.java.net\/jeps\/401\">JEP 401<\/a> i <a href=\"https:\/\/openjdk.java.net\/jeps\/402\">402<\/a>, bo o nich mowa, nie s\u0105 jeszcze gotowe, czy nawet zapowiedziane na konkretn\u0105 wersj\u0119 Javy. \u017beby jednak nie musie\u0107 czeka\u0107 z pracami koncepcyjnymi na realizacj\u0119, kt\u00f3ra ze wzgl\u0119du na ogrom planowanych zmian (czytelnicy naszych Weekly z pewno\u015bci\u0105 zdaj\u0105 sobie spraw\u0119, jak prace nad \u201cpassion projectem\u201d Briana Goetza lubi\u0105 eksplodowa\u0107 w nieoczekiwanych kierunkach) pewnie troch\u0119 zajmie, ju\u017c dzisiaj rozwa\u017cane s\u0105 kolejne kroki.<\/p>\n<p>Id\u0105c za ciosem, po zbli\u017ceniu do siebie typ\u00f3w prymitywnych i obiekt\u00f3w, najwy\u017cszy czas przyszed\u0142 na zaj\u0119cie si\u0119 generykami. Pewnie ka\u017cdy zdaje sobie spraw\u0119, \u017ce w Javie typami parametryzuj\u0105cymi (psss\u2026 to te rzeczy w &lt;&gt;) mog\u0105 by\u0107 tylko i wy\u0142\u0105cznie typy referencyjne &#8211; czyli (w uproszczeniu) klasy. \u017beby umo\u017cliwi\u0107 tworzenie np. ArrayList zawieraj\u0105cych prymitywy (czyli te wszystkie inty, chary i reszta rodzinki) jako parametry, niezb\u0119dne by\u0142o stworzenie klas im odpowiadaj\u0105cym (odpowiednio Integer.class, Char.class). JEP 402 ma to troch\u0119 posprz\u0105ta\u0107, migruj\u0105c wspomniane klasy towarzysz\u0105ce na odpowiednie typy prymitywne.<\/p>\n<p><a href=\"http:\/\/openjdk.java.net\/jeps\/8261529\">\u015awie\u017co opublikowany draft<\/a> jest kolejnym krokiem, niezb\u0119dnym \u017ceby w pe\u0142ni wykorzysta\u0107 wprowadzone zmiany &#8211; i jak tak na to patrz\u0119, bez jego implementacji nie ma za bardzo mo\u017cliwo\u015bci \u201cwmergowania\u201d wspominanych 401 i 402 do upstreamu, gdy\u017c posypa\u0142by si\u0119 nam ca\u0142y system generyk\u00f3w. To w\u0142a\u015bnie nowy proposal przynie\u015b\u0107 ma oczekiwane mo\u017cliwe u\u017cycie typ\u00f3w prymitywnych w generykach poprzez \u201cuelastycznieniu\u201d wspomnianego ograniczenia, wymuszaj\u0105cego, aby parametrami by\u0142y wy\u0142\u0105cznie typy referencyjne. Tw\u00f3rcy widz\u0105 r\u00f3wnie\u017c pewne mo\u017cliwo\u015bci na usprawnienia ze strony wydajno\u015bci, ale na razie zdecydowali si\u0119 od\u0142o\u017cy\u0107 je na p\u00f3\u017aniej, kreatywnie tn\u0105c zakres dzia\u0142a\u0144 &#8211; Valhalla i tak si\u0119 rozros\u0142a.<\/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\/4_image-27.png\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-27.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-27.png 640w\" alt=\"\" width=\"640\" height=\"199\">&nbsp;<figcaption>Prosto z siedziby Oracle, koloryzowane.<\/figcaption><\/figure>\n<p>Na razie ca\u0142o\u015b\u0107 opiera\u0107 si\u0119 ma na standardowych mechanizmach JVM &#8211; nie ominie ich \u201cusuwanie\u201d informacji o typach parametrycznych w runtime. Zobaczymy jednak, co poka\u017ce przysz\u0142o\u015b\u0107. Mo\u017ce ju\u017c w ramach kt\u00f3rego\u015b kolejnego JEPa? Ju\u017c w tej chwili tw\u00f3rcy zapowiadaj\u0105, \u017ce wprowadzenie opisywanego draftu poci\u0105gnie za sob\u0105 kolejne zmiany w ca\u0142ej bibliotece standardowej.<\/p>\n<p>Polecam lektur\u0119 ca\u0142o\u015bci ka\u017cdemu, kogo ciekawi\u0105 zawi\u0142o\u015bci javowego polimorfizmu &#8211; mo\u017cna w nim znale\u017a\u0107 sporo smaczk\u00f3w.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n<li><a href=\"http:\/\/openjdk.java.net\/jeps\/8261529\">JEP draft: Universal Generics (Preview)<\/a><\/li>\n<li><a href=\"https:\/\/openjdk.java.net\/jeps\/401\">JEP 401: Primitive Objects (Preview)<\/a><\/li>\n<li><a href=\"https:\/\/openjdk.java.net\/jeps\/402\">JEP 402: Unify the Basic Primitives with Objects (Preview)<\/a><\/li>\n<\/ul>\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>W dniu dzisisiejszym mamy dla Was do\u015b\u0107 zr\u00f3\u017cnicowany zestaw &#8211; informacje o nowych us\u0142ugach ze strony Oracle, wydanie nowego Springa oraz kolejnego z serii JEP\u00f3w projektu Valhalla (ostatnio Valhalla bardzo idzie do przodu, nie s\u0105dzicie?) Zapraszamy do lektury \ud83d\ude05<\/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-10125","post","type-post","status-publish","format-standard","hentry","category-jvm-pl"],"acf":{"weekly_summary":true,"estimated_reading_time":"6"},"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. 42 - 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-42\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 42 - Vived\" \/>\n<meta property=\"og:description\" content=\"W dniu dzisisiejszym mamy dla Was do\u015b\u0107 zr\u00f3\u017cnicowany zestaw - informacje o nowych us\u0142ugach ze strony Oracle, wydanie nowego Springa oraz kolejnego z serii JEP\u00f3w projektu Valhalla (ostatnio Valhalla bardzo idzie do przodu, nie s\u0105dzicie?) Zapraszamy do lektury \ud83d\ude05\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-15T11:16:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-28.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-42\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 42\",\"datePublished\":\"2021-06-15T11:16:55+00:00\",\"dateModified\":\"2022-09-19T11:10:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/\"},\"wordCount\":1256,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-28.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/\",\"name\":\"JVM Tuesday vol. 42 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-28.png\",\"datePublished\":\"2021-06-15T11:16:55+00:00\",\"dateModified\":\"2022-09-19T11:10:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-28.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-28.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 42\"}]},{\"@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. 42 - 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-42\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 42 - Vived","og_description":"W dniu dzisisiejszym mamy dla Was do\u015b\u0107 zr\u00f3\u017cnicowany zestaw - informacje o nowych us\u0142ugach ze strony Oracle, wydanie nowego Springa oraz kolejnego z serii JEP\u00f3w projektu Valhalla (ostatnio Valhalla bardzo idzie do przodu, nie s\u0105dzicie?) Zapraszamy do lektury \ud83d\ude05","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/","og_site_name":"Vived","article_published_time":"2021-06-15T11:16:55+00:00","article_modified_time":"2022-09-19T11:10:52+00:00","og_image":[{"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-28.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-42\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 42","datePublished":"2021-06-15T11:16:55+00:00","dateModified":"2022-09-19T11:10:52+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/"},"wordCount":1256,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-28.png","articleSection":["JVM"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/","name":"JVM Tuesday vol. 42 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-28.png","datePublished":"2021-06-15T11:16:55+00:00","dateModified":"2022-09-19T11:10:52+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-28.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-28.png"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-42\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 42"}]},{"@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-czy-s%C5%82yszeli%C5%9Bcie-o-oracle-cloud-infrastructure-platforma-interesuj%C4%85co-si%C4%99-rozwija-%F0%9F%A7%9E%E2%80%8D%E2%99%80%EF%B8%8F\">1. Czy s\u0142yszeli\u015bcie o Oracle Cloud Infrastructure? Platforma interesuj\u0105co si\u0119 rozwija \u200d\u2640\ufe0f<\/h2>\n\u017be wszyscy inwestuj\u0105 w chmurow\u0105 Jav\u0119 to nie jest jaka\u015b wielka nowo\u015b\u0107. \u015awiadczy\u0107 mog\u0105 o tym takie projekty jak AWS Cornetto czy buildy OpenJDK rozwijane przez Microsoft. Po prostu to si\u0119 op\u0142aca - platforma jest niezwykle popularna, wi\u0119c ka\u017cdy du\u017cy dostawca chmury chce mie\u0107 w swojej ofercie jak najlepsze wsparcie dla niej. Nie codziennie s\u0142yszy si\u0119 jednak o nowej us\u0142udze chmurowej dla Javy od\u2026 tw\u00f3rc\u00f3w Javy.\n\nOracle <a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-cloud-services\">og\u0142osi\u0142o<\/a> w zesz\u0142ym tygodniu, \u017ce w ramach swojej Oracle Cloud Infrastructure, &nbsp;udost\u0119pni Java Management Service - us\u0142ug\u0119, kt\u00f3r\u0105 mo\u017cna uruchomi\u0107 zar\u00f3wno w ramach chmury obliczeniowej, jak i serwer\u00f3w on-premise. Ca\u0142o\u015b\u0107 jest supervisorem dbaj\u0105cym o aktualizacje, bezpiecze\u0144stwo oraz inny szeroko rozumiany \"compliance\" us\u0142ug.\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-28.png\" alt=\"\" width=\"490\" height=\"341\"><figcaption>\"Zasada 1: Tylko LTSy\"<\/figcaption><\/figure>\nWszystko fajnie, tylko czemu ca\u0142o\u015b\u0107 musi posiada\u0107 akronim JMS. Ja wiem, \u017ce je\u015bli stosujemy <a href=\"https:\/\/devcards.io\/smurf-naming-convention\">Smurf-Naming<\/a> i ka\u017cda nazwa musi zaczyna\u0107 si\u0119 od s\u0142\u00f3wka \u201cJava\u201d, to liczba potencjalnych kombinacji jest ograniczona\u2026 no ale Java Message Service jest ju\u017c tak mocno zakorzeniony w spo\u0142eczno\u015bci, \u017ce po prostu ca\u0142o\u015b\u0107 b\u0119dzie si\u0119 myli\u0142a.\n\nJMS zreszt\u0105 to nie jedyne wzbogacenie u\u017cyteczno\u015bci Oracle Cloud Infrastructure. Niedawno ukaza\u0142 si\u0119 Helidon 2.3.0 (o czym nie omieszkali\u015bmy Was poinformowa\u0107 dwa tygodnie temu). Ta wersja rozwijanego przez Oracle frameworku posiada bezpo\u015bredni\u0105 integracj\u0119 w\u0142a\u015bnie z Oracle Cloud Infrastructure. Wida\u0107, \u017ce firma mocno inwestuje w zapewnienie programistom ciekawych rozwi\u0105za\u0144 (szkoda tylko, \u017ce ciekawych g\u0142\u00f3wnie dla wielkich korporacji, ale to te pozostaj\u0105 klientami firmy Larry\u2019ego Ellisona). Ostatnimi czasy na ich blogu ukaza\u0142 si\u0119 zaskakuj\u0105co interesuj\u0105cy <a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-cloud-services\">wywiad<\/a> z dw\u00f3jk\u0105 lider\u00f3w Helidoma, prezentuj\u0105cy filozofi\u0119 Oracle je\u015bli chodzi o rozwi\u0105zania chmurowe.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/www.infoworld.com\/article\/3621690\/oracle-offers-java-management-service.html\">Oracle offers Java management service<\/a><\/li>\n \t<li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-cloud-services\">Java for the cloud, and the cloud for Java<\/a><\/li>\n<\/ul>\n<h2 id=\"2-spring-native-0100-przynosi-ciekawe-zmiany-w-samym-graalvm-%F0%9F%8D%83\">2. Spring Native 0.10.0 przynosi ciekawe zmiany w samym GraalVM<\/h2>\nInformacja o wydaniu bety Spring Native waln\u0119\u0142a jak grom z jasnego nieba na niczego niespodziewaj\u0105cych si\u0119 developer\u00f3w. Z naszej strony powiem, \u017ce og\u0142oszenie to jest jak do tej pory najlepiej \u201cczytaj\u0105cym si\u0119\u201d newsem dotycz\u0105cym JVMa jakiego opublikowali\u015bmy w Keep Upie, przebijaj\u0105c nawet wydanie Javy 16. Niech cho\u0107by to \u015bwiadczy o zainteresowaniu, jakim spo\u0142eczno\u015b\u0107 zareagowa\u0142a na now\u0105 edycje Springa.\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-29.png\" alt=\"\" width=\"537\" height=\"539\">&nbsp;\n\n<figcaption>Aczkolwiek mo\u017ce to po prostu ta informacja jest niezwykle clickbaitowa.<\/figcaption><\/figure>\nTeraz, wraz z <a href=\"https:\/\/spring.io\/blog\/2021\/06\/14\/spring-native-0-10-0-available-now\">premier\u0105 wersji 0.10.0<\/a>, nie spodziewamy si\u0119 ani krztyny takiego zainteresowania (mam wra\u017cenie, \u017ce pierwsza wersja testowa traktowana by\u0142a jako co\u015b w rodzaju \u201ceventu\u201d), co nie oznacza, \u017ce nie stanowi ona ciekawego kolejnego kroku dla projektu. Nowa wersja przynosi sporo interesuj\u0105cych zmian - poza standardowymi aktualizacjami zale\u017cno\u015bci (tutaj akurat jest to Spring Boot 2.5 oraz GraalVM 21.1) przynosi te\u017c sporo innych nowo\u015bci. Jak to przy Springu bywa, ich nieoceniony Developer Advocate, Josh Long, przygotowa\u0142 wideo prezentuj\u0105ce wszystkie nowe funkcjonalno\u015bci.\n\nhttps:\/\/www.youtube.com\/watch?v=JsUAGJqdvaA\n\nDla tych, kt\u00f3rzy nie chc\u0105 ogl\u0105da\u0107 prawie p\u00f3\u0142toragodzinnego materia\u0142u, wspomn\u0119 \u017ce kluczow\u0105 rzecz\u0105 przynosz\u0105c\u0105 przez wydanie jest zupe\u0142nie zaktualizowany spos\u00f3b budowania paczek aplikacyjnych. Poprzednie edycje pozwala\u0142y tylko i wy\u0142\u0105cznie na budowanie za pomoc\u0105 Mavena, 0.11 przynosi oczekiwany plugin dla Gradle s\u0142u\u017c\u0105cy do budowania aplikacji. Jest to wynik wsp\u00f3\u0142pracy teamu springowego z in\u017cynierami pracuj\u0105cymi nad samym GraalVM.\n\nDrug\u0105 niezwykle istotn\u0105 nowo\u015bci\u0105 (r\u00f3wnie\u017c powsta\u0142\u0105 przy wsp\u00f3\u0142pracy z zespo\u0142em GraalVM) jest <a href=\"https:\/\/medium.com\/graalvm\/gradle-and-maven-plugins-for-native-image-with-initial-junit-testing-support-dde00a8caf0b\">w pe\u0142ni \u201cnatywne\u201d testowanie aplikacji<\/a> za pomoc\u0105 JUnita. Do tej pory wszystkie testy uruchamiane by\u0142y w ramach standardowej maszyny Javy. Aby to osi\u0105gn\u0105\u0107, niezb\u0119dna by\u0142a implementacja funkcjonalno\u015bci junit-platform-native, kt\u00f3ra wykrywa testy podczas uruchomienia w ramach \u201czwyk\u0142ego\u201d JVM i zapisuje je na boku na potrzeby r\u00f3wnie\u017c natywnej kompilacji. Tak znalezione testy s\u0105 pakowane do osobnego pliku wykonywalnego, kt\u00f3ry mo\u017ce by\u0107 uruchomiony ju\u017c w ramach \u015brodowiska GraalVM.\n\nA jak ju\u017c mowa o Gradle, to pojawi\u0142a si\u0119 jego <a href=\"https:\/\/docs.gradle.org\/7.1\/release-notes.html\">wersja 7.1<\/a>. To co przynosi, to g\u0142\u00f3wnie masa deprekacji funkcjonalno\u015bci, kt\u00f3re za jaki\u015b czas (sporo z nich ju\u017c w Gradle 8.0) znikn\u0105 z tego najdynamiczniej rozwijaj\u0105cego si\u0119 javowego build toola.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/spring.io\/blog\/2021\/06\/14\/spring-native-0-10-0-available-now\">Spring Native 0.10.0 available now<\/a><\/li>\n \t<li><a href=\"https:\/\/medium.com\/graalvm\/gradle-and-maven-plugins-for-native-image-with-initial-junit-testing-support-dde00a8caf0b\">Gradle and Maven plugins for Native Image with initial JUnit testing support<\/a><\/li>\n \t<li><a href=\"https:\/\/docs.gradle.org\/7.1\/release-notes.html\">Gradle 7.1 Release Notes<\/a><\/li>\n<\/ul>\n<h2 id=\"3-generyki-w-javie-nareszcie-maj%C4%85-sta%C4%87-si%C4%99-prawdziwie-uniwersalne-%F0%9F%A6%B8%F0%9F%8F%BD%E2%80%8D%E2%99%80%EF%B8%8F\">3. Generyki w Javie nareszcie maj\u0105 sta\u0107 si\u0119 prawdziwie uniwersalne \u200d\u2640\ufe0f<\/h2>\nA na koniec, jak to u nas zwykle bywa, kiedy akurat nie pojawiaj\u0105 si\u0119 bardziej \u201cbie\u017c\u0105ce\u201d tematy, JEPik. I jak zwykle z gatunku tych bardzo interesuj\u0105cych, poniewa\u017c jest to dalsza praca nad Valhall\u0105.\n\nPar\u0119 tygodni temu przybli\u017cyli\u015bmy Wam temat obiekt\u00f3w prymitywnych (Primitive Objects), do pewnego momentu znanych pod nazw\u0105 value types (co b\u0119dzie istotn\u0105 wskaz\u00f3wk\u0105, o czym m\u00f3wimy dla tych, kt\u00f3rzy nie s\u0105 na bie\u017c\u0105co z ka\u017cdym nowym proposalem - ten ekosystem naprawd\u0119 porusza si\u0119 mocno do przodu). <a href=\"https:\/\/openjdk.java.net\/jeps\/401\">JEP 401<\/a> i <a href=\"https:\/\/openjdk.java.net\/jeps\/402\">402<\/a>, bo o nich mowa, nie s\u0105 jeszcze gotowe, czy nawet zapowiedziane na konkretn\u0105 wersj\u0119 Javy. \u017beby jednak nie musie\u0107 czeka\u0107 z pracami koncepcyjnymi na realizacj\u0119, kt\u00f3ra ze wzgl\u0119du na ogrom planowanych zmian (czytelnicy naszych Weekly z pewno\u015bci\u0105 zdaj\u0105 sobie spraw\u0119, jak prace nad \u201cpassion projectem\u201d Briana Goetza lubi\u0105 eksplodowa\u0107 w nieoczekiwanych kierunkach) pewnie troch\u0119 zajmie, ju\u017c dzisiaj rozwa\u017cane s\u0105 kolejne kroki.\n\nId\u0105c za ciosem, po zbli\u017ceniu do siebie typ\u00f3w prymitywnych i obiekt\u00f3w, najwy\u017cszy czas przyszed\u0142 na zaj\u0119cie si\u0119 generykami. Pewnie ka\u017cdy zdaje sobie spraw\u0119, \u017ce w Javie typami parametryzuj\u0105cymi (psss\u2026 to te rzeczy w &lt;&gt;) mog\u0105 by\u0107 tylko i wy\u0142\u0105cznie typy referencyjne - czyli (w uproszczeniu) klasy. \u017beby umo\u017cliwi\u0107 tworzenie np. ArrayList zawieraj\u0105cych prymitywy (czyli te wszystkie inty, chary i reszta rodzinki) jako parametry, niezb\u0119dne by\u0142o stworzenie klas im odpowiadaj\u0105cym (odpowiednio Integer.class, Char.class). JEP 402 ma to troch\u0119 posprz\u0105ta\u0107, migruj\u0105c wspomniane klasy towarzysz\u0105ce na odpowiednie typy prymitywne.\n\n<a href=\"http:\/\/openjdk.java.net\/jeps\/8261529\">\u015awie\u017co opublikowany draft<\/a> jest kolejnym krokiem, niezb\u0119dnym \u017ceby w pe\u0142ni wykorzysta\u0107 wprowadzone zmiany - i jak tak na to patrz\u0119, bez jego implementacji nie ma za bardzo mo\u017cliwo\u015bci \u201cwmergowania\u201d wspominanych 401 i 402 do upstreamu, gdy\u017c posypa\u0142by si\u0119 nam ca\u0142y system generyk\u00f3w. To w\u0142a\u015bnie nowy proposal przynie\u015b\u0107 ma oczekiwane mo\u017cliwe u\u017cycie typ\u00f3w prymitywnych w generykach poprzez \u201cuelastycznieniu\u201d wspomnianego ograniczenia, wymuszaj\u0105cego, aby parametrami by\u0142y wy\u0142\u0105cznie typy referencyjne. Tw\u00f3rcy widz\u0105 r\u00f3wnie\u017c pewne mo\u017cliwo\u015bci na usprawnienia ze strony wydajno\u015bci, ale na razie zdecydowali si\u0119 od\u0142o\u017cy\u0107 je na p\u00f3\u017aniej, kreatywnie tn\u0105c zakres dzia\u0142a\u0144 - Valhalla i tak si\u0119 rozros\u0142a.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-27.png\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-27.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-27.png 640w\" alt=\"\" width=\"640\" height=\"199\">&nbsp;\n\n<figcaption>Prosto z siedziby Oracle, koloryzowane.<\/figcaption><\/figure>\nNa razie ca\u0142o\u015b\u0107 opiera\u0107 si\u0119 ma na standardowych mechanizmach JVM - nie ominie ich \u201cusuwanie\u201d informacji o typach parametrycznych w runtime. Zobaczymy jednak, co poka\u017ce przysz\u0142o\u015b\u0107. Mo\u017ce ju\u017c w ramach kt\u00f3rego\u015b kolejnego JEPa? Ju\u017c w tej chwili tw\u00f3rcy zapowiadaj\u0105, \u017ce wprowadzenie opisywanego draftu poci\u0105gnie za sob\u0105 kolejne zmiany w ca\u0142ej bibliotece standardowej.\n\nPolecam lektur\u0119 ca\u0142o\u015bci ka\u017cdemu, kogo ciekawi\u0105 zawi\u0142o\u015bci javowego polimorfizmu - mo\u017cna w nim znale\u017a\u0107 sporo smaczk\u00f3w.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"http:\/\/openjdk.java.net\/jeps\/8261529\">JEP draft: Universal Generics (Preview)<\/a><\/li>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/401\">JEP 401: Primitive Objects (Preview)<\/a><\/li>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/402\">JEP 402: Unify the Basic Primitives with Objects (Preview)<\/a><\/li>\n<\/ul>\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":["<h2 id=\"1-czy-s%C5%82yszeli%C5%9Bcie-o-oracle-cloud-infrastructure-platforma-interesuj%C4%85co-si%C4%99-rozwija-%F0%9F%A7%9E%E2%80%8D%E2%99%80%EF%B8%8F\">1. Czy s\u0142yszeli\u015bcie o Oracle Cloud Infrastructure? Platforma interesuj\u0105co si\u0119 rozwija \u200d\u2640\ufe0f<\/h2>\n\u017be wszyscy inwestuj\u0105 w chmurow\u0105 Jav\u0119 to nie jest jaka\u015b wielka nowo\u015b\u0107. \u015awiadczy\u0107 mog\u0105 o tym takie projekty jak AWS Cornetto czy buildy OpenJDK rozwijane przez Microsoft. Po prostu to si\u0119 op\u0142aca - platforma jest niezwykle popularna, wi\u0119c ka\u017cdy du\u017cy dostawca chmury chce mie\u0107 w swojej ofercie jak najlepsze wsparcie dla niej. Nie codziennie s\u0142yszy si\u0119 jednak o nowej us\u0142udze chmurowej dla Javy od\u2026 tw\u00f3rc\u00f3w Javy.\n\nOracle <a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-cloud-services\">og\u0142osi\u0142o<\/a> w zesz\u0142ym tygodniu, \u017ce w ramach swojej Oracle Cloud Infrastructure, &nbsp;udost\u0119pni Java Management Service - us\u0142ug\u0119, kt\u00f3r\u0105 mo\u017cna uruchomi\u0107 zar\u00f3wno w ramach chmury obliczeniowej, jak i serwer\u00f3w on-premise. Ca\u0142o\u015b\u0107 jest supervisorem dbaj\u0105cym o aktualizacje, bezpiecze\u0144stwo oraz inny szeroko rozumiany \"compliance\" us\u0142ug.\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-28.png\" alt=\"\" width=\"490\" height=\"341\"><figcaption>\"Zasada 1: Tylko LTSy\"<\/figcaption><\/figure>\nWszystko fajnie, tylko czemu ca\u0142o\u015b\u0107 musi posiada\u0107 akronim JMS. Ja wiem, \u017ce je\u015bli stosujemy <a href=\"https:\/\/devcards.io\/smurf-naming-convention\">Smurf-Naming<\/a> i ka\u017cda nazwa musi zaczyna\u0107 si\u0119 od s\u0142\u00f3wka \u201cJava\u201d, to liczba potencjalnych kombinacji jest ograniczona\u2026 no ale Java Message Service jest ju\u017c tak mocno zakorzeniony w spo\u0142eczno\u015bci, \u017ce po prostu ca\u0142o\u015b\u0107 b\u0119dzie si\u0119 myli\u0142a.\n\nJMS zreszt\u0105 to nie jedyne wzbogacenie u\u017cyteczno\u015bci Oracle Cloud Infrastructure. Niedawno ukaza\u0142 si\u0119 Helidon 2.3.0 (o czym nie omieszkali\u015bmy Was poinformowa\u0107 dwa tygodnie temu). Ta wersja rozwijanego przez Oracle frameworku posiada bezpo\u015bredni\u0105 integracj\u0119 w\u0142a\u015bnie z Oracle Cloud Infrastructure. Wida\u0107, \u017ce firma mocno inwestuje w zapewnienie programistom ciekawych rozwi\u0105za\u0144 (szkoda tylko, \u017ce ciekawych g\u0142\u00f3wnie dla wielkich korporacji, ale to te pozostaj\u0105 klientami firmy Larry\u2019ego Ellisona). Ostatnimi czasy na ich blogu ukaza\u0142 si\u0119 zaskakuj\u0105co interesuj\u0105cy <a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-cloud-services\">wywiad<\/a> z dw\u00f3jk\u0105 lider\u00f3w Helidoma, prezentuj\u0105cy filozofi\u0119 Oracle je\u015bli chodzi o rozwi\u0105zania chmurowe.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/www.infoworld.com\/article\/3621690\/oracle-offers-java-management-service.html\">Oracle offers Java management service<\/a><\/li>\n \t<li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-cloud-services\">Java for the cloud, and the cloud for Java<\/a><\/li>\n<\/ul>\n<h2 id=\"2-spring-native-0100-przynosi-ciekawe-zmiany-w-samym-graalvm-%F0%9F%8D%83\">2. Spring Native 0.10.0 przynosi ciekawe zmiany w samym GraalVM<\/h2>\nInformacja o wydaniu bety Spring Native waln\u0119\u0142a jak grom z jasnego nieba na niczego niespodziewaj\u0105cych si\u0119 developer\u00f3w. Z naszej strony powiem, \u017ce og\u0142oszenie to jest jak do tej pory najlepiej \u201cczytaj\u0105cym si\u0119\u201d newsem dotycz\u0105cym JVMa jakiego opublikowali\u015bmy w Keep Upie, przebijaj\u0105c nawet wydanie Javy 16. Niech cho\u0107by to \u015bwiadczy o zainteresowaniu, jakim spo\u0142eczno\u015b\u0107 zareagowa\u0142a na now\u0105 edycje Springa.\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-29.png\" alt=\"\" width=\"537\" height=\"539\">&nbsp;\n\n<figcaption>Aczkolwiek mo\u017ce to po prostu ta informacja jest niezwykle clickbaitowa.<\/figcaption><\/figure>\nTeraz, wraz z <a href=\"https:\/\/spring.io\/blog\/2021\/06\/14\/spring-native-0-10-0-available-now\">premier\u0105 wersji 0.10.0<\/a>, nie spodziewamy si\u0119 ani krztyny takiego zainteresowania (mam wra\u017cenie, \u017ce pierwsza wersja testowa traktowana by\u0142a jako co\u015b w rodzaju \u201ceventu\u201d), co nie oznacza, \u017ce nie stanowi ona ciekawego kolejnego kroku dla projektu. Nowa wersja przynosi sporo interesuj\u0105cych zmian - poza standardowymi aktualizacjami zale\u017cno\u015bci (tutaj akurat jest to Spring Boot 2.5 oraz GraalVM 21.1) przynosi te\u017c sporo innych nowo\u015bci. Jak to przy Springu bywa, ich nieoceniony Developer Advocate, Josh Long, przygotowa\u0142 wideo prezentuj\u0105ce wszystkie nowe funkcjonalno\u015bci.\n\nhttps:\/\/www.youtube.com\/watch?v=JsUAGJqdvaA\n\nDla tych, kt\u00f3rzy nie chc\u0105 ogl\u0105da\u0107 prawie p\u00f3\u0142toragodzinnego materia\u0142u, wspomn\u0119 \u017ce kluczow\u0105 rzecz\u0105 przynosz\u0105c\u0105 przez wydanie jest zupe\u0142nie zaktualizowany spos\u00f3b budowania paczek aplikacyjnych. Poprzednie edycje pozwala\u0142y tylko i wy\u0142\u0105cznie na budowanie za pomoc\u0105 Mavena, 0.11 przynosi oczekiwany plugin dla Gradle s\u0142u\u017c\u0105cy do budowania aplikacji. Jest to wynik wsp\u00f3\u0142pracy teamu springowego z in\u017cynierami pracuj\u0105cymi nad samym GraalVM.\n\nDrug\u0105 niezwykle istotn\u0105 nowo\u015bci\u0105 (r\u00f3wnie\u017c powsta\u0142\u0105 przy wsp\u00f3\u0142pracy z zespo\u0142em GraalVM) jest <a href=\"https:\/\/medium.com\/graalvm\/gradle-and-maven-plugins-for-native-image-with-initial-junit-testing-support-dde00a8caf0b\">w pe\u0142ni \u201cnatywne\u201d testowanie aplikacji<\/a> za pomoc\u0105 JUnita. Do tej pory wszystkie testy uruchamiane by\u0142y w ramach standardowej maszyny Javy. Aby to osi\u0105gn\u0105\u0107, niezb\u0119dna by\u0142a implementacja funkcjonalno\u015bci junit-platform-native, kt\u00f3ra wykrywa testy podczas uruchomienia w ramach \u201czwyk\u0142ego\u201d JVM i zapisuje je na boku na potrzeby r\u00f3wnie\u017c natywnej kompilacji. Tak znalezione testy s\u0105 pakowane do osobnego pliku wykonywalnego, kt\u00f3ry mo\u017ce by\u0107 uruchomiony ju\u017c w ramach \u015brodowiska GraalVM.\n\nA jak ju\u017c mowa o Gradle, to pojawi\u0142a si\u0119 jego <a href=\"https:\/\/docs.gradle.org\/7.1\/release-notes.html\">wersja 7.1<\/a>. To co przynosi, to g\u0142\u00f3wnie masa deprekacji funkcjonalno\u015bci, kt\u00f3re za jaki\u015b czas (sporo z nich ju\u017c w Gradle 8.0) znikn\u0105 z tego najdynamiczniej rozwijaj\u0105cego si\u0119 javowego build toola.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/spring.io\/blog\/2021\/06\/14\/spring-native-0-10-0-available-now\">Spring Native 0.10.0 available now<\/a><\/li>\n \t<li><a href=\"https:\/\/medium.com\/graalvm\/gradle-and-maven-plugins-for-native-image-with-initial-junit-testing-support-dde00a8caf0b\">Gradle and Maven plugins for Native Image with initial JUnit testing support<\/a><\/li>\n \t<li><a href=\"https:\/\/docs.gradle.org\/7.1\/release-notes.html\">Gradle 7.1 Release Notes<\/a><\/li>\n<\/ul>\n<h2 id=\"3-generyki-w-javie-nareszcie-maj%C4%85-sta%C4%87-si%C4%99-prawdziwie-uniwersalne-%F0%9F%A6%B8%F0%9F%8F%BD%E2%80%8D%E2%99%80%EF%B8%8F\">3. Generyki w Javie nareszcie maj\u0105 sta\u0107 si\u0119 prawdziwie uniwersalne \u200d\u2640\ufe0f<\/h2>\nA na koniec, jak to u nas zwykle bywa, kiedy akurat nie pojawiaj\u0105 si\u0119 bardziej \u201cbie\u017c\u0105ce\u201d tematy, JEPik. I jak zwykle z gatunku tych bardzo interesuj\u0105cych, poniewa\u017c jest to dalsza praca nad Valhall\u0105.\n\nPar\u0119 tygodni temu przybli\u017cyli\u015bmy Wam temat obiekt\u00f3w prymitywnych (Primitive Objects), do pewnego momentu znanych pod nazw\u0105 value types (co b\u0119dzie istotn\u0105 wskaz\u00f3wk\u0105, o czym m\u00f3wimy dla tych, kt\u00f3rzy nie s\u0105 na bie\u017c\u0105co z ka\u017cdym nowym proposalem - ten ekosystem naprawd\u0119 porusza si\u0119 mocno do przodu). <a href=\"https:\/\/openjdk.java.net\/jeps\/401\">JEP 401<\/a> i <a href=\"https:\/\/openjdk.java.net\/jeps\/402\">402<\/a>, bo o nich mowa, nie s\u0105 jeszcze gotowe, czy nawet zapowiedziane na konkretn\u0105 wersj\u0119 Javy. \u017beby jednak nie musie\u0107 czeka\u0107 z pracami koncepcyjnymi na realizacj\u0119, kt\u00f3ra ze wzgl\u0119du na ogrom planowanych zmian (czytelnicy naszych Weekly z pewno\u015bci\u0105 zdaj\u0105 sobie spraw\u0119, jak prace nad \u201cpassion projectem\u201d Briana Goetza lubi\u0105 eksplodowa\u0107 w nieoczekiwanych kierunkach) pewnie troch\u0119 zajmie, ju\u017c dzisiaj rozwa\u017cane s\u0105 kolejne kroki.\n\nId\u0105c za ciosem, po zbli\u017ceniu do siebie typ\u00f3w prymitywnych i obiekt\u00f3w, najwy\u017cszy czas przyszed\u0142 na zaj\u0119cie si\u0119 generykami. Pewnie ka\u017cdy zdaje sobie spraw\u0119, \u017ce w Javie typami parametryzuj\u0105cymi (psss\u2026 to te rzeczy w &lt;&gt;) mog\u0105 by\u0107 tylko i wy\u0142\u0105cznie typy referencyjne - czyli (w uproszczeniu) klasy. \u017beby umo\u017cliwi\u0107 tworzenie np. ArrayList zawieraj\u0105cych prymitywy (czyli te wszystkie inty, chary i reszta rodzinki) jako parametry, niezb\u0119dne by\u0142o stworzenie klas im odpowiadaj\u0105cym (odpowiednio Integer.class, Char.class). JEP 402 ma to troch\u0119 posprz\u0105ta\u0107, migruj\u0105c wspomniane klasy towarzysz\u0105ce na odpowiednie typy prymitywne.\n\n<a href=\"http:\/\/openjdk.java.net\/jeps\/8261529\">\u015awie\u017co opublikowany draft<\/a> jest kolejnym krokiem, niezb\u0119dnym \u017ceby w pe\u0142ni wykorzysta\u0107 wprowadzone zmiany - i jak tak na to patrz\u0119, bez jego implementacji nie ma za bardzo mo\u017cliwo\u015bci \u201cwmergowania\u201d wspominanych 401 i 402 do upstreamu, gdy\u017c posypa\u0142by si\u0119 nam ca\u0142y system generyk\u00f3w. To w\u0142a\u015bnie nowy proposal przynie\u015b\u0107 ma oczekiwane mo\u017cliwe u\u017cycie typ\u00f3w prymitywnych w generykach poprzez \u201cuelastycznieniu\u201d wspomnianego ograniczenia, wymuszaj\u0105cego, aby parametrami by\u0142y wy\u0142\u0105cznie typy referencyjne. Tw\u00f3rcy widz\u0105 r\u00f3wnie\u017c pewne mo\u017cliwo\u015bci na usprawnienia ze strony wydajno\u015bci, ale na razie zdecydowali si\u0119 od\u0142o\u017cy\u0107 je na p\u00f3\u017aniej, kreatywnie tn\u0105c zakres dzia\u0142a\u0144 - Valhalla i tak si\u0119 rozros\u0142a.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-27.png\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-27.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-27.png 640w\" alt=\"\" width=\"640\" height=\"199\">&nbsp;\n\n<figcaption>Prosto z siedziby Oracle, koloryzowane.<\/figcaption><\/figure>\nNa razie ca\u0142o\u015b\u0107 opiera\u0107 si\u0119 ma na standardowych mechanizmach JVM - nie ominie ich \u201cusuwanie\u201d informacji o typach parametrycznych w runtime. Zobaczymy jednak, co poka\u017ce przysz\u0142o\u015b\u0107. Mo\u017ce ju\u017c w ramach kt\u00f3rego\u015b kolejnego JEPa? Ju\u017c w tej chwili tw\u00f3rcy zapowiadaj\u0105, \u017ce wprowadzenie opisywanego draftu poci\u0105gnie za sob\u0105 kolejne zmiany w ca\u0142ej bibliotece standardowej.\n\nPolecam lektur\u0119 ca\u0142o\u015bci ka\u017cdemu, kogo ciekawi\u0105 zawi\u0142o\u015bci javowego polimorfizmu - mo\u017cna w nim znale\u017a\u0107 sporo smaczk\u00f3w.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"http:\/\/openjdk.java.net\/jeps\/8261529\">JEP draft: Universal Generics (Preview)<\/a><\/li>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/401\">JEP 401: Primitive Objects (Preview)<\/a><\/li>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/402\">JEP 402: Unify the Basic Primitives with Objects (Preview)<\/a><\/li>\n<\/ul>\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\/10125","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=10125"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10125\/revisions"}],"predecessor-version":[{"id":10569,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10125\/revisions\/10569"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}