{"id":10150,"date":"2021-04-20T10:06:49","date_gmt":"2021-04-20T08:06:49","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-34\/"},"modified":"2022-09-19T13:10:54","modified_gmt":"2022-09-19T11:10:54","slug":"jvm-tuesday-vol-34","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/","title":{"rendered":"JVM Tuesday vol. 34"},"content":{"rendered":"<h2 id=\"1-gradle-7-0-wydane\" data-num=1><a href=\"https:\/\/docs.gradle.org\/7.0\/release-notes.html\">1. Gradle 7.0 wydane <\/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_610d0adc4ab86.png\" alt=\"\" \/><\/figure>\n<p>Kawa\u0142eczek historii: kiedy wchodzi\u0142em w Javowy ekosystem nieca\u0142e dziesi\u0119\u0107 lat temu, w\u0142a\u015bciwie sytuacja by\u0142a dosy\u0107 prosta. Standardowym narz\u0119dziem do budowania projekt\u00f3w by\u0142 Maven, potem d\u0142ugo, d\u0142ugo nic, a potem Ant (zwykle w archaicznych projektach, zwykle te\u017c odpalany przez Mavena). Gradle w tym okresie zacz\u0105\u0142 powoli przebija\u0107 si\u0119 jako alternatywa dla tych, kt\u00f3rych kr\u0119puje mocno sztywny, deklaratywny spos\u00f3b definiowania projekt\u00f3w przez POMy (dla tych kt\u00f3rzy nie pami\u0119taj\u0105, jest to akronim od Project Object Model). \u017beby cokolwiek \u201ccustomowego\u201d zrobi\u0107 w Mavenie, w zasadzie ka\u017cdorazowo niezb\u0119dne by\u0142o pisanie mrocznych MOJO.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adcc62ec.png\" alt=\"\" \/><figcaption>MOJO to akronim Maven (plain) Old Java Object), ale w mojej g\u0142owie zawsze mam powy\u017csze.<\/figcaption><\/figure>\n<p>Dla os\u00f3b o tego typu potrzebach, elastyczny model orkiestracji oferowany przez Gradle, w po\u0142\u0105czeniu z mo\u017cliwo\u015bci\u0105 \u201cskryptowania\u201d przy u\u017cyciu niezwykle popularnego swego czasu Groovego jawi\u0142 si\u0119 jako interesuj\u0105ca alternatywa. Jednak to moment to dopiero decyzja Google o uczynieniu Gradle domy\u015blne rozwi\u0105zanie do budowania aplikacji androidowych zapewni\u0142o mu wiatr w skrzyd\u0142a, i z regularno\u015bci\u0105 karabinu maszynowego zacz\u0119\u0142y ukazywa\u0107 si\u0119 (cz\u0119sto paskudnie ze sob\u0105 niekompatybilne) nowe wydania. Przez lata Groovym straci\u0142 troch\u0119 animuszu, wi\u0119c ca\u0142y projekt powoli zacz\u0105\u0142 migrowa\u0107 w kierunku znacznie bardziej przysz\u0142o\u015bciowego Kotlina. Po drodz\u0119 przepisa\u0142 si\u0119 na niego min. Spring, co te\u017c by\u0142o pewnym kamieniem milowym.<\/p>\n<p>Tym sposobem dochodzimy do zesz\u0142ego tygodnia, gdzie ukaza\u0142a si\u0119 si\u00f3dma wersja tego popularnego build toola (aczkolwiek nale\u017cy pami\u0119ta\u0107, \u017ce Maven ci\u0105gle jest popularniejszy, cho\u0107 ta r\u00f3\u017cnica nie jest ju\u017c olbrzymia &#8211; jest u\u017cywany przez 71% programist\u00f3w, w por\u00f3wnaniu \u00a0do 48% przy Gradle wed\u0142ug State of Developer Ecosystem od JetBrains). Ze zmian kt\u00f3re szczeg\u00f3lnie wp\u0142yn\u0105 na Developer Experience, z pewno\u015bci\u0105 nale\u017cy wymieni\u0107 tutaj dalsze ulepszanie inkrementalnych build\u00f3w. Uda\u0142o si\u0119 je przyspieszy\u0107 dzi\u0119ki efektywniejszemu wykonywaniu zapyta\u0144 I\/O do systemu plik\u00f3w poprzez tak zwane file watchery.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0add545a0.png\" alt=\"\" \/><figcaption>Mo\u017ce ju\u017c nied\u0142ugo<\/figcaption><\/figure>\n<p>Ustabilizowane zosta\u0142o r\u00f3wnie wsparcie dla modu\u0142\u00f3w Jigsaw\/JPMS (rych\u0142o w czas), aczkolwiek to ju\u017c by\u0142a raczej kwestia formalno\u015bci &#8211; sam u\u017cywa\u0142em Gradle dok\u0142adnie w tym celu przy okazji wydania 6. Zaprezentowano r\u00f3wnie\u017c wersje preview tak zwanego centralnego katalogu wersji (nowego sposobu na przechowywanie globalnych w skali projektu wersji konkretnych zale\u017cno\u015bci). Dla tych kt\u00f3rzy czasem gubi\u0105 si\u0119 w bardzo skomplikowanym gradlowym cyklu \u017cycia projektu, umo\u017cliwiono testowanie ulepszonego systemu walidacji plik\u00f3w konfiguracyjnych.<\/p>\n<p>Z pewno\u015bci\u0105 warto wymieni\u0107 te\u017c fakt, \u017ce Gradle 7.0 mo\u017ce by\u0107 odpalany przy u\u017cyciu JDK 16, natywnego wsparcia doczeka\u0142y si\u0119 te\u017c procesory M1.<\/p>\n<p>Oczywi\u015bcie, to nie wszystkie zmiany (nieco ciekawych nowych mo\u017cliwo\u015bci pojawi\u0142o si\u0119 te\u017c w kontek\u015bcie wspomnianego gradlowego matecznika, czyli Androida). Je\u017celi jeste\u015bcie zainteresowani, odsy\u0142am <a href=\"https:\/\/docs.gradle.org\/7.0\/release-notes.html\">do pe\u0142nych Release Notes.<\/a><\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/www.infoq.com\/news\/2021\/04\/jdk-mission-control-8-released\/\">JDK Mission Control 8 Released<\/a><\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/java-components\/jdk-mission-control\/8\/user-guide\/whats-new-jdk-mission-control.html#GUID-88BD49F3-D00F-48B8-89C0-365D5656AB83\">What&#8217;s New in JDK Mission Control 8<\/a><\/li>\n<\/ul>\n<h2 id=\"2-wydano-nowa-wersja-jdk-mission-control\" data-num=2><a href=\"https:\/\/www.infoq.com\/news\/2021\/04\/jdk-mission-control-8-released\/\">2. Wydano now\u0105 wersja JDK Mission Control <\/a><\/h2>\n<p>JDK Mission Control przez lata by\u0142o znane tylko w\u0105skiej grupie programist\u00f3w JDK &#8211; nie wydarzy\u0142o si\u0119 to bez powodu. To zbudowane w oparciu o IDE Eclipse, pot\u0119\u017cne narz\u0119dzie do debugowania problem\u00f3w na poziomie maszyny wirtualnej, do niedawna by\u0142o cz\u0119\u015bci\u0105 komercyjnego wsparcia Javy oferowanego przez Oracle (a wcze\u015bniej przez Suna &#8211; Mission Control to naprawd\u0119 d\u0142ugo ju\u017c rozwijane narz\u0119dzie).<\/p>\n<p>Sytuacja jednak si\u0119 zmieni\u0142a, a firma Larry\u2019ego Ellisona postanowi\u0142a zacz\u0105\u0107 monetyzowa\u0107 Jav\u0119 w nieco odmienny spos\u00f3b, czyni\u0105c ca\u0142y Oracle JDK p\u0142atnym produktem. Mia\u0142o to jednak swoje pozytywne aspekty, a jednym z nich by\u0142o min. otwarcie \u017ar\u00f3de\u0142 Mission Control oraz Flight Recordera (kt\u00f3rego mo\u017cna traktowa\u0107 jako zaawansowane narz\u0119dzie do zrzut\u00f3w pami\u0119ci). Dzi\u0119ki temu, wreszcie trafi\u0142a ona do r\u0105k rzeszy programist\u00f3w, kt\u00f3rzy zamiast liza\u0107 cukierka przez papierek i s\u0142ucha\u0107 jaki to on nie jest s\u0142odki, mogli po\u0142o\u017cy\u0107 na narz\u0119dziu swoje r\u0119ce i wypr\u00f3bowa\u0107 je w akcji. Teraz za\u015b ukazuje si\u0119 nowa edycja narz\u0119dzia, oznaczona numerem wersji 8.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ade390a1.gif\" alt=\"\" \/><\/figure>\n<p>Tw\u00f3rcy chwal\u0105 si\u0119 co prawda ponad dwustoma poprawkami i ulepszeniami, ale spo\u015br\u00f3d tego nich z pewno\u015bci\u0105 wybija si\u0119 nowy \u201cflame graph\u201d. Java Mission Control pozwala Ci zapi\u0105\u0107 si\u0119 na dowolny z uruchomionych na danej maszynie wirtualnej Javowych proces\u00f3w i podgl\u0105dn\u0105\u0107 zu\u017cyte przez nie zasoby. Ulepszony Flame Graph ma dawa\u0107 mo\u017cliwo\u015b\u0107 wygodniejszego obserwowanie, kt\u00f3re obiekty powoduj\u0105 wzmo\u017cone u\u017cycie pami\u0119ci w aplikacji.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adf316b2.png\" alt=\"\" \/><\/figure>\n<p>Z mojej perspektywy jeszcze ciekawszym jest nowy widok grafu metod oraz tak zwany widok predecesor\u00f3w i sukcesor\u00f3w. Dzi\u0119ki niemu b\u0119dziemy mogli lepiej po\u0142apa\u0107 si\u0119, jak poszczeg\u00f3lne metody w aplikacji s\u0105 wywo\u0142ywane i w jakiej kolejno\u015bci. Dzi\u0119ki temu \u0142adniej b\u0119dzie nam analizowa\u0107 zrealizowane przez Flight Recorder zrzuty stanu aplikacji.<\/p>\n<p>Wprawdzie m\u00f3wi si\u0119, \u017ce w dobie system\u00f3w rozproszonych i chmury wszystko powinno wrzuca\u0107 si\u0119 do centralnego rejestru metryk, ale je\u017celi mamy problem z gatunku tych zwi\u0105zanych z pami\u0119ci\u0105 albo przep\u0142ywami w informacji, warto da\u0107 Java Mission Control szanse. Udost\u0119pnione w niej narz\u0119dzia mog\u0105 zaoszcz\u0119dzi\u0107 nam godzin \u0142amania sobie g\u0142owy nad nietrywialnymi problemami np. z pami\u0119ci\u0105.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/www.infoq.com\/news\/2021\/04\/jdk-mission-control-8-released\/\">JDK Mission Control 8 Released<\/a><\/li>\n<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/java-components\/jdk-mission-control\/8\/user-guide\/whats-new-jdk-mission-control.html#GUID-88BD49F3-D00F-48B8-89C0-365D5656AB83\">What&#8217;s New in JDK Mission Control 8<\/a><\/li>\n<\/ul>\n<h2 id=\"3-ibm-zostaje-cz%C5%82onkiem-eclipse-adoptium-working-group-%F0%9F%A4%9D\"><a href=\"https:\/\/developer.ibm\n.com\/blogs\/ibm-joins-eclipse-adoptium-and-offers-free-certified-jdks-with-eclipse-openj9\/\">3. IBM zostaje cz\u0142onkiem Eclipse Adoptium Working Group <\/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_610d0ae09444d.png\" alt=\"\" \/><\/figure>\n<p>A na koniec ma\u0142y news. Dwie edycje temu pisali\u015bmy o tym, \u017ce AdoptOpenJDK przesz\u0142o pod skrzyd\u0142a Eclipse i zosta\u0142o przechrzczone na Adoptium. Teraz do cz\u0142onk\u00f3w za\u0142o\u017cycieli fundacji do\u0142\u0105cza r\u00f3wnie\u017c IBM.<\/p>\n<p>Nie jest to z pewno\u015bci\u0105 wielkie zaskoczenie &#8211; IBM od dawna by\u0142 mocno zaanga\u017cowany w spo\u0142eczno\u015b\u0107 AdoptOpenJDK, udost\u0119pniaj\u0105c nie tylko komercyjne wsparcie dla ca\u0142ego projektu (oczywi\u015bcie za pieni\u0105\u017cki, ale w oczach wielu firm na pewno wynios\u0142o to AdoptOpenJDK do roli realnej alternatywy dla Oracle JDK), ale te\u017c infrastruktur\u0119 umo\u017cliwiaj\u0105c\u0105 testowanie i rozwijanie projektu AdoptOpenJDK. Nale\u017cy bowiem pami\u0119ta\u0107, \u017ce JDK to oprogramowanie jak ka\u017cde inne i wymaga te\u017c np. platformy Continuous Integration. Du\u017c\u0105 kontrybucj\u0105 IBMu jest r\u00f3wnie\u017c oddanie fundacji Eclipse kodu \u017ar\u00f3d\u0142owego OpenJ9 &#8211; alternatywnej, ale w pe\u0142ni kompatybilnej ze specyfikacj\u0105 implementacji JVMa, kt\u00f3ra posiada kilka interesuj\u0105cych cech, jak np. szybszy start aplikacji.<\/p>\n<p>Adoptium rozwija si\u0119 wi\u0119c dynamicznie, a w projekt zaanga\u017cowane jest coraz wi\u0119cej podmiot\u00f3w przygotowuj\u0105cych swoje w\u0142asne, skrojone pod \u201cwysublimowane\u201d gusta wersje JDK. Jak wida\u0107 wi\u0119c, przej\u015bcie pod skrzyd\u0142a Fundacji Eclipse ju\u017c zacz\u0119\u0142o procentowa\u0107.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/developer.ibm.com\/blogs\/ibm-joins-eclipse-adoptium-and-offers-free-certified-jdks-with-eclipse-openj9\/\">IBM joins Eclipse Adoptium and offers free certified JDKs with Eclipse OpenJ9<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Poprzedni tydzie\u0144 by\u0142 relatywnie wolny od du\u017cych news\u00f3w, ale i tak mamy dla was dwie nowe wersje istotnych dla ekosystemu narz\u0119dzi oraz kolejne og\u0142oszenie w sprawie Eclipse Adoptium. 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-10150","post","type-post","status-publish","format-standard","hentry","category-jvm-pl"],"acf":{"weekly_summary":true,"estimated_reading_time":"5"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JVM Tuesday vol. 34 - 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-34\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 34 - Vived\" \/>\n<meta property=\"og:description\" content=\"Poprzedni tydzie\u0144 by\u0142 relatywnie wolny od du\u017cych news\u00f3w, ale i tak mamy dla was dwie nowe wersje istotnych dla ekosystemu narz\u0119dzi oraz kolejne og\u0142oszenie w sprawie Eclipse Adoptium. Zapraszamy do lektury!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-20T08:06:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adc4ab86.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-34\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 34\",\"datePublished\":\"2021-04-20T08:06:49+00:00\",\"dateModified\":\"2022-09-19T11:10:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/\"},\"wordCount\":1146,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adc4ab86.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/\",\"name\":\"JVM Tuesday vol. 34 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adc4ab86.png\",\"datePublished\":\"2021-04-20T08:06:49+00:00\",\"dateModified\":\"2022-09-19T11:10:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adc4ab86.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adc4ab86.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 34\"}]},{\"@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. 34 - 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-34\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 34 - Vived","og_description":"Poprzedni tydzie\u0144 by\u0142 relatywnie wolny od du\u017cych news\u00f3w, ale i tak mamy dla was dwie nowe wersje istotnych dla ekosystemu narz\u0119dzi oraz kolejne og\u0142oszenie w sprawie Eclipse Adoptium. Zapraszamy do lektury!","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/","og_site_name":"Vived","article_published_time":"2021-04-20T08:06:49+00:00","article_modified_time":"2022-09-19T11:10:54+00:00","og_image":[{"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adc4ab86.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-34\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 34","datePublished":"2021-04-20T08:06:49+00:00","dateModified":"2022-09-19T11:10:54+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/"},"wordCount":1146,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adc4ab86.png","articleSection":["JVM"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/","name":"JVM Tuesday vol. 34 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adc4ab86.png","datePublished":"2021-04-20T08:06:49+00:00","dateModified":"2022-09-19T11:10:54+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adc4ab86.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adc4ab86.png"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-34\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 34"}]},{"@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-gradle-70-wydane-%F0%9F%90%98\"><a href=\"https:\/\/docs.gradle.org\/7.0\/release-notes.html\">1. Gradle 7.0 wydane <\/a><\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adc4ab86.png\" alt=\"\" \/><\/figure>\nKawa\u0142eczek historii: kiedy wchodzi\u0142em w Javowy ekosystem nieca\u0142e dziesi\u0119\u0107 lat temu, w\u0142a\u015bciwie sytuacja by\u0142a dosy\u0107 prosta. Standardowym narz\u0119dziem do budowania projekt\u00f3w by\u0142 Maven, potem d\u0142ugo, d\u0142ugo nic, a potem Ant (zwykle w archaicznych projektach, zwykle te\u017c odpalany przez Mavena). Gradle w tym okresie zacz\u0105\u0142 powoli przebija\u0107 si\u0119 jako alternatywa dla tych, kt\u00f3rych kr\u0119puje mocno sztywny, deklaratywny spos\u00f3b definiowania projekt\u00f3w przez POMy (dla tych kt\u00f3rzy nie pami\u0119taj\u0105, jest to akronim od Project Object Model). \u017beby cokolwiek \u201ccustomowego\u201d zrobi\u0107 w Mavenie, w zasadzie ka\u017cdorazowo niezb\u0119dne by\u0142o pisanie mrocznych MOJO.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adcc62ec.png\" alt=\"\" \/>\n<figcaption>MOJO to akronim Maven (plain) Old Java Object), ale w mojej g\u0142owie zawsze mam powy\u017csze.<\/figcaption><\/figure>\nDla os\u00f3b o tego typu potrzebach, elastyczny model orkiestracji oferowany przez Gradle, w po\u0142\u0105czeniu z mo\u017cliwo\u015bci\u0105 \u201cskryptowania\u201d przy u\u017cyciu niezwykle popularnego swego czasu Groovego jawi\u0142 si\u0119 jako interesuj\u0105ca alternatywa. Jednak to moment to dopiero decyzja Google o uczynieniu Gradle domy\u015blne rozwi\u0105zanie do budowania aplikacji androidowych zapewni\u0142o mu wiatr w skrzyd\u0142a, i z regularno\u015bci\u0105 karabinu maszynowego zacz\u0119\u0142y ukazywa\u0107 si\u0119 (cz\u0119sto paskudnie ze sob\u0105 niekompatybilne) nowe wydania. Przez lata Groovym straci\u0142 troch\u0119 animuszu, wi\u0119c ca\u0142y projekt powoli zacz\u0105\u0142 migrowa\u0107 w kierunku znacznie bardziej przysz\u0142o\u015bciowego Kotlina. Po drodz\u0119 przepisa\u0142 si\u0119 na niego min. Spring, co te\u017c by\u0142o pewnym kamieniem milowym.\n\nTym sposobem dochodzimy do zesz\u0142ego tygodnia, gdzie ukaza\u0142a si\u0119 si\u00f3dma wersja tego popularnego build toola (aczkolwiek nale\u017cy pami\u0119ta\u0107, \u017ce Maven ci\u0105gle jest popularniejszy, cho\u0107 ta r\u00f3\u017cnica nie jest ju\u017c olbrzymia - jest u\u017cywany przez 71% programist\u00f3w, w por\u00f3wnaniu \u00a0do 48% przy Gradle wed\u0142ug State of Developer Ecosystem od JetBrains). Ze zmian kt\u00f3re szczeg\u00f3lnie wp\u0142yn\u0105 na Developer Experience, z pewno\u015bci\u0105 nale\u017cy wymieni\u0107 tutaj dalsze ulepszanie inkrementalnych build\u00f3w. Uda\u0142o si\u0119 je przyspieszy\u0107 dzi\u0119ki efektywniejszemu wykonywaniu zapyta\u0144 I\/O do systemu plik\u00f3w poprzez tak zwane file watchery.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0add545a0.png\" alt=\"\" \/>\n\n<figcaption>Mo\u017ce ju\u017c nied\u0142ugo<\/figcaption><\/figure>\nUstabilizowane zosta\u0142o r\u00f3wnie wsparcie dla modu\u0142\u00f3w Jigsaw\/JPMS (rych\u0142o w czas), aczkolwiek to ju\u017c by\u0142a raczej kwestia formalno\u015bci - sam u\u017cywa\u0142em Gradle dok\u0142adnie w tym celu przy okazji wydania 6. Zaprezentowano r\u00f3wnie\u017c wersje preview tak zwanego centralnego katalogu wersji (nowego sposobu na przechowywanie globalnych w skali projektu wersji konkretnych zale\u017cno\u015bci). Dla tych kt\u00f3rzy czasem gubi\u0105 si\u0119 w bardzo skomplikowanym gradlowym cyklu \u017cycia projektu, umo\u017cliwiono testowanie ulepszonego systemu walidacji plik\u00f3w konfiguracyjnych.\n\nZ pewno\u015bci\u0105 warto wymieni\u0107 te\u017c fakt, \u017ce Gradle 7.0 mo\u017ce by\u0107 odpalany przy u\u017cyciu JDK 16, natywnego wsparcia doczeka\u0142y si\u0119 te\u017c procesory M1.\n\nOczywi\u015bcie, to nie wszystkie zmiany (nieco ciekawych nowych mo\u017cliwo\u015bci pojawi\u0142o si\u0119 te\u017c w kontek\u015bcie wspomnianego gradlowego matecznika, czyli Androida). Je\u017celi jeste\u015bcie zainteresowani, odsy\u0142am <a href=\"https:\/\/docs.gradle.org\/7.0\/release-notes.html\">do pe\u0142nych Release Notes.<\/a>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/www.infoq.com\/news\/2021\/04\/jdk-mission-control-8-released\/\">JDK Mission Control 8 Released<\/a><\/li>\n \t<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/java-components\/jdk-mission-control\/8\/user-guide\/whats-new-jdk-mission-control.html#GUID-88BD49F3-D00F-48B8-89C0-365D5656AB83\">What's New in JDK Mission Control 8<\/a><\/li>\n<\/ul>\n<h2 id=\"2-wydano-now%C4%85-wersja-jdk-mission-control-%F0%9F%9A%80\"><a href=\"https:\/\/www.infoq.com\/news\/2021\/04\/jdk-mission-control-8-released\/\">2. Wydano now\u0105 wersja JDK Mission Control <\/a><\/h2>\nJDK Mission Control przez lata by\u0142o znane tylko w\u0105skiej grupie programist\u00f3w JDK - nie wydarzy\u0142o si\u0119 to bez powodu. To zbudowane w oparciu o IDE Eclipse, pot\u0119\u017cne narz\u0119dzie do debugowania problem\u00f3w na poziomie maszyny wirtualnej, do niedawna by\u0142o cz\u0119\u015bci\u0105 komercyjnego wsparcia Javy oferowanego przez Oracle (a wcze\u015bniej przez Suna - Mission Control to naprawd\u0119 d\u0142ugo ju\u017c rozwijane narz\u0119dzie).\n\nSytuacja jednak si\u0119 zmieni\u0142a, a firma Larry\u2019ego Ellisona postanowi\u0142a zacz\u0105\u0107 monetyzowa\u0107 Jav\u0119 w nieco odmienny spos\u00f3b, czyni\u0105c ca\u0142y Oracle JDK p\u0142atnym produktem. Mia\u0142o to jednak swoje pozytywne aspekty, a jednym z nich by\u0142o min. otwarcie \u017ar\u00f3de\u0142 Mission Control oraz Flight Recordera (kt\u00f3rego mo\u017cna traktowa\u0107 jako zaawansowane narz\u0119dzie do zrzut\u00f3w pami\u0119ci). Dzi\u0119ki temu, wreszcie trafi\u0142a ona do r\u0105k rzeszy programist\u00f3w, kt\u00f3rzy zamiast liza\u0107 cukierka przez papierek i s\u0142ucha\u0107 jaki to on nie jest s\u0142odki, mogli po\u0142o\u017cy\u0107 na narz\u0119dziu swoje r\u0119ce i wypr\u00f3bowa\u0107 je w akcji. Teraz za\u015b ukazuje si\u0119 nowa edycja narz\u0119dzia, oznaczona numerem wersji 8.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ade390a1.gif\" alt=\"\" \/><\/figure>\nTw\u00f3rcy chwal\u0105 si\u0119 co prawda ponad dwustoma poprawkami i ulepszeniami, ale spo\u015br\u00f3d tego nich z pewno\u015bci\u0105 wybija si\u0119 nowy \u201cflame graph\u201d. Java Mission Control pozwala Ci zapi\u0105\u0107 si\u0119 na dowolny z uruchomionych na danej maszynie wirtualnej Javowych proces\u00f3w i podgl\u0105dn\u0105\u0107 zu\u017cyte przez nie zasoby. Ulepszony Flame Graph ma dawa\u0107 mo\u017cliwo\u015b\u0107 wygodniejszego obserwowanie, kt\u00f3re obiekty powoduj\u0105 wzmo\u017cone u\u017cycie pami\u0119ci w aplikacji.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adf316b2.png\" alt=\"\" \/><\/figure>\nZ mojej perspektywy jeszcze ciekawszym jest nowy widok grafu metod oraz tak zwany widok predecesor\u00f3w i sukcesor\u00f3w. Dzi\u0119ki niemu b\u0119dziemy mogli lepiej po\u0142apa\u0107 si\u0119, jak poszczeg\u00f3lne metody w aplikacji s\u0105 wywo\u0142ywane i w jakiej kolejno\u015bci. Dzi\u0119ki temu \u0142adniej b\u0119dzie nam analizowa\u0107 zrealizowane przez Flight Recorder zrzuty stanu aplikacji.\n\nWprawdzie m\u00f3wi si\u0119, \u017ce w dobie system\u00f3w rozproszonych i chmury wszystko powinno wrzuca\u0107 si\u0119 do centralnego rejestru metryk, ale je\u017celi mamy problem z gatunku tych zwi\u0105zanych z pami\u0119ci\u0105 albo przep\u0142ywami w informacji, warto da\u0107 Java Mission Control szanse. Udost\u0119pnione w niej narz\u0119dzia mog\u0105 zaoszcz\u0119dzi\u0107 nam godzin \u0142amania sobie g\u0142owy nad nietrywialnymi problemami np. z pami\u0119ci\u0105.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/www.infoq.com\/news\/2021\/04\/jdk-mission-control-8-released\/\">JDK Mission Control 8 Released<\/a><\/li>\n \t<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/java-components\/jdk-mission-control\/8\/user-guide\/whats-new-jdk-mission-control.html#GUID-88BD49F3-D00F-48B8-89C0-365D5656AB83\">What's New in JDK Mission Control 8<\/a><\/li>\n<\/ul>\n<h2 id=\"3-ibm-zostaje-cz%C5%82onkiem-eclipse-adoptium-working-group-%F0%9F%A4%9D\"><a href=\"https:\/\/developer.ibm\n.com\/blogs\/ibm-joins-eclipse-adoptium-and-offers-free-certified-jdks-with-eclipse-openj9\/\">3. IBM zostaje cz\u0142onkiem Eclipse Adoptium Working Group <\/a><\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ae09444d.png\" alt=\"\" \/><\/figure>\nA na koniec ma\u0142y news. Dwie edycje temu pisali\u015bmy o tym, \u017ce AdoptOpenJDK przesz\u0142o pod skrzyd\u0142a Eclipse i zosta\u0142o przechrzczone na Adoptium. Teraz do cz\u0142onk\u00f3w za\u0142o\u017cycieli fundacji do\u0142\u0105cza r\u00f3wnie\u017c IBM.\n\nNie jest to z pewno\u015bci\u0105 wielkie zaskoczenie - IBM od dawna by\u0142 mocno zaanga\u017cowany w spo\u0142eczno\u015b\u0107 AdoptOpenJDK, udost\u0119pniaj\u0105c nie tylko komercyjne wsparcie dla ca\u0142ego projektu (oczywi\u015bcie za pieni\u0105\u017cki, ale w oczach wielu firm na pewno wynios\u0142o to AdoptOpenJDK do roli realnej alternatywy dla Oracle JDK), ale te\u017c infrastruktur\u0119 umo\u017cliwiaj\u0105c\u0105 testowanie i rozwijanie projektu AdoptOpenJDK. Nale\u017cy bowiem pami\u0119ta\u0107, \u017ce JDK to oprogramowanie jak ka\u017cde inne i wymaga te\u017c np. platformy Continuous Integration. Du\u017c\u0105 kontrybucj\u0105 IBMu jest r\u00f3wnie\u017c oddanie fundacji Eclipse kodu \u017ar\u00f3d\u0142owego OpenJ9 - alternatywnej, ale w pe\u0142ni kompatybilnej ze specyfikacj\u0105 implementacji JVMa, kt\u00f3ra posiada kilka interesuj\u0105cych cech, jak np. szybszy start aplikacji.\n\nAdoptium rozwija si\u0119 wi\u0119c dynamicznie, a w projekt zaanga\u017cowane jest coraz wi\u0119cej podmiot\u00f3w przygotowuj\u0105cych swoje w\u0142asne, skrojone pod \u201cwysublimowane\u201d gusta wersje JDK. Jak wida\u0107 wi\u0119c, przej\u015bcie pod skrzyd\u0142a Fundacji Eclipse ju\u017c zacz\u0119\u0142o procentowa\u0107.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/developer.ibm.com\/blogs\/ibm-joins-eclipse-adoptium-and-offers-free-certified-jdks-with-eclipse-openj9\/\">IBM joins Eclipse Adoptium and offers free certified JDKs with Eclipse OpenJ9<\/a><\/li>\n<\/ul>","innerContent":["<h2 id=\"1-gradle-70-wydane-%F0%9F%90%98\"><a href=\"https:\/\/docs.gradle.org\/7.0\/release-notes.html\">1. Gradle 7.0 wydane <\/a><\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adc4ab86.png\" alt=\"\" \/><\/figure>\nKawa\u0142eczek historii: kiedy wchodzi\u0142em w Javowy ekosystem nieca\u0142e dziesi\u0119\u0107 lat temu, w\u0142a\u015bciwie sytuacja by\u0142a dosy\u0107 prosta. Standardowym narz\u0119dziem do budowania projekt\u00f3w by\u0142 Maven, potem d\u0142ugo, d\u0142ugo nic, a potem Ant (zwykle w archaicznych projektach, zwykle te\u017c odpalany przez Mavena). Gradle w tym okresie zacz\u0105\u0142 powoli przebija\u0107 si\u0119 jako alternatywa dla tych, kt\u00f3rych kr\u0119puje mocno sztywny, deklaratywny spos\u00f3b definiowania projekt\u00f3w przez POMy (dla tych kt\u00f3rzy nie pami\u0119taj\u0105, jest to akronim od Project Object Model). \u017beby cokolwiek \u201ccustomowego\u201d zrobi\u0107 w Mavenie, w zasadzie ka\u017cdorazowo niezb\u0119dne by\u0142o pisanie mrocznych MOJO.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adcc62ec.png\" alt=\"\" \/>\n<figcaption>MOJO to akronim Maven (plain) Old Java Object), ale w mojej g\u0142owie zawsze mam powy\u017csze.<\/figcaption><\/figure>\nDla os\u00f3b o tego typu potrzebach, elastyczny model orkiestracji oferowany przez Gradle, w po\u0142\u0105czeniu z mo\u017cliwo\u015bci\u0105 \u201cskryptowania\u201d przy u\u017cyciu niezwykle popularnego swego czasu Groovego jawi\u0142 si\u0119 jako interesuj\u0105ca alternatywa. Jednak to moment to dopiero decyzja Google o uczynieniu Gradle domy\u015blne rozwi\u0105zanie do budowania aplikacji androidowych zapewni\u0142o mu wiatr w skrzyd\u0142a, i z regularno\u015bci\u0105 karabinu maszynowego zacz\u0119\u0142y ukazywa\u0107 si\u0119 (cz\u0119sto paskudnie ze sob\u0105 niekompatybilne) nowe wydania. Przez lata Groovym straci\u0142 troch\u0119 animuszu, wi\u0119c ca\u0142y projekt powoli zacz\u0105\u0142 migrowa\u0107 w kierunku znacznie bardziej przysz\u0142o\u015bciowego Kotlina. Po drodz\u0119 przepisa\u0142 si\u0119 na niego min. Spring, co te\u017c by\u0142o pewnym kamieniem milowym.\n\nTym sposobem dochodzimy do zesz\u0142ego tygodnia, gdzie ukaza\u0142a si\u0119 si\u00f3dma wersja tego popularnego build toola (aczkolwiek nale\u017cy pami\u0119ta\u0107, \u017ce Maven ci\u0105gle jest popularniejszy, cho\u0107 ta r\u00f3\u017cnica nie jest ju\u017c olbrzymia - jest u\u017cywany przez 71% programist\u00f3w, w por\u00f3wnaniu \u00a0do 48% przy Gradle wed\u0142ug State of Developer Ecosystem od JetBrains). Ze zmian kt\u00f3re szczeg\u00f3lnie wp\u0142yn\u0105 na Developer Experience, z pewno\u015bci\u0105 nale\u017cy wymieni\u0107 tutaj dalsze ulepszanie inkrementalnych build\u00f3w. Uda\u0142o si\u0119 je przyspieszy\u0107 dzi\u0119ki efektywniejszemu wykonywaniu zapyta\u0144 I\/O do systemu plik\u00f3w poprzez tak zwane file watchery.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0add545a0.png\" alt=\"\" \/>\n\n<figcaption>Mo\u017ce ju\u017c nied\u0142ugo<\/figcaption><\/figure>\nUstabilizowane zosta\u0142o r\u00f3wnie wsparcie dla modu\u0142\u00f3w Jigsaw\/JPMS (rych\u0142o w czas), aczkolwiek to ju\u017c by\u0142a raczej kwestia formalno\u015bci - sam u\u017cywa\u0142em Gradle dok\u0142adnie w tym celu przy okazji wydania 6. Zaprezentowano r\u00f3wnie\u017c wersje preview tak zwanego centralnego katalogu wersji (nowego sposobu na przechowywanie globalnych w skali projektu wersji konkretnych zale\u017cno\u015bci). Dla tych kt\u00f3rzy czasem gubi\u0105 si\u0119 w bardzo skomplikowanym gradlowym cyklu \u017cycia projektu, umo\u017cliwiono testowanie ulepszonego systemu walidacji plik\u00f3w konfiguracyjnych.\n\nZ pewno\u015bci\u0105 warto wymieni\u0107 te\u017c fakt, \u017ce Gradle 7.0 mo\u017ce by\u0107 odpalany przy u\u017cyciu JDK 16, natywnego wsparcia doczeka\u0142y si\u0119 te\u017c procesory M1.\n\nOczywi\u015bcie, to nie wszystkie zmiany (nieco ciekawych nowych mo\u017cliwo\u015bci pojawi\u0142o si\u0119 te\u017c w kontek\u015bcie wspomnianego gradlowego matecznika, czyli Androida). Je\u017celi jeste\u015bcie zainteresowani, odsy\u0142am <a href=\"https:\/\/docs.gradle.org\/7.0\/release-notes.html\">do pe\u0142nych Release Notes.<\/a>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/www.infoq.com\/news\/2021\/04\/jdk-mission-control-8-released\/\">JDK Mission Control 8 Released<\/a><\/li>\n \t<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/java-components\/jdk-mission-control\/8\/user-guide\/whats-new-jdk-mission-control.html#GUID-88BD49F3-D00F-48B8-89C0-365D5656AB83\">What's New in JDK Mission Control 8<\/a><\/li>\n<\/ul>\n<h2 id=\"2-wydano-now%C4%85-wersja-jdk-mission-control-%F0%9F%9A%80\"><a href=\"https:\/\/www.infoq.com\/news\/2021\/04\/jdk-mission-control-8-released\/\">2. Wydano now\u0105 wersja JDK Mission Control <\/a><\/h2>\nJDK Mission Control przez lata by\u0142o znane tylko w\u0105skiej grupie programist\u00f3w JDK - nie wydarzy\u0142o si\u0119 to bez powodu. To zbudowane w oparciu o IDE Eclipse, pot\u0119\u017cne narz\u0119dzie do debugowania problem\u00f3w na poziomie maszyny wirtualnej, do niedawna by\u0142o cz\u0119\u015bci\u0105 komercyjnego wsparcia Javy oferowanego przez Oracle (a wcze\u015bniej przez Suna - Mission Control to naprawd\u0119 d\u0142ugo ju\u017c rozwijane narz\u0119dzie).\n\nSytuacja jednak si\u0119 zmieni\u0142a, a firma Larry\u2019ego Ellisona postanowi\u0142a zacz\u0105\u0107 monetyzowa\u0107 Jav\u0119 w nieco odmienny spos\u00f3b, czyni\u0105c ca\u0142y Oracle JDK p\u0142atnym produktem. Mia\u0142o to jednak swoje pozytywne aspekty, a jednym z nich by\u0142o min. otwarcie \u017ar\u00f3de\u0142 Mission Control oraz Flight Recordera (kt\u00f3rego mo\u017cna traktowa\u0107 jako zaawansowane narz\u0119dzie do zrzut\u00f3w pami\u0119ci). Dzi\u0119ki temu, wreszcie trafi\u0142a ona do r\u0105k rzeszy programist\u00f3w, kt\u00f3rzy zamiast liza\u0107 cukierka przez papierek i s\u0142ucha\u0107 jaki to on nie jest s\u0142odki, mogli po\u0142o\u017cy\u0107 na narz\u0119dziu swoje r\u0119ce i wypr\u00f3bowa\u0107 je w akcji. Teraz za\u015b ukazuje si\u0119 nowa edycja narz\u0119dzia, oznaczona numerem wersji 8.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ade390a1.gif\" alt=\"\" \/><\/figure>\nTw\u00f3rcy chwal\u0105 si\u0119 co prawda ponad dwustoma poprawkami i ulepszeniami, ale spo\u015br\u00f3d tego nich z pewno\u015bci\u0105 wybija si\u0119 nowy \u201cflame graph\u201d. Java Mission Control pozwala Ci zapi\u0105\u0107 si\u0119 na dowolny z uruchomionych na danej maszynie wirtualnej Javowych proces\u00f3w i podgl\u0105dn\u0105\u0107 zu\u017cyte przez nie zasoby. Ulepszony Flame Graph ma dawa\u0107 mo\u017cliwo\u015b\u0107 wygodniejszego obserwowanie, kt\u00f3re obiekty powoduj\u0105 wzmo\u017cone u\u017cycie pami\u0119ci w aplikacji.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0adf316b2.png\" alt=\"\" \/><\/figure>\nZ mojej perspektywy jeszcze ciekawszym jest nowy widok grafu metod oraz tak zwany widok predecesor\u00f3w i sukcesor\u00f3w. Dzi\u0119ki niemu b\u0119dziemy mogli lepiej po\u0142apa\u0107 si\u0119, jak poszczeg\u00f3lne metody w aplikacji s\u0105 wywo\u0142ywane i w jakiej kolejno\u015bci. Dzi\u0119ki temu \u0142adniej b\u0119dzie nam analizowa\u0107 zrealizowane przez Flight Recorder zrzuty stanu aplikacji.\n\nWprawdzie m\u00f3wi si\u0119, \u017ce w dobie system\u00f3w rozproszonych i chmury wszystko powinno wrzuca\u0107 si\u0119 do centralnego rejestru metryk, ale je\u017celi mamy problem z gatunku tych zwi\u0105zanych z pami\u0119ci\u0105 albo przep\u0142ywami w informacji, warto da\u0107 Java Mission Control szanse. Udost\u0119pnione w niej narz\u0119dzia mog\u0105 zaoszcz\u0119dzi\u0107 nam godzin \u0142amania sobie g\u0142owy nad nietrywialnymi problemami np. z pami\u0119ci\u0105.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/www.infoq.com\/news\/2021\/04\/jdk-mission-control-8-released\/\">JDK Mission Control 8 Released<\/a><\/li>\n \t<li><a href=\"https:\/\/docs.oracle.com\/en\/java\/java-components\/jdk-mission-control\/8\/user-guide\/whats-new-jdk-mission-control.html#GUID-88BD49F3-D00F-48B8-89C0-365D5656AB83\">What's New in JDK Mission Control 8<\/a><\/li>\n<\/ul>\n<h2 id=\"3-ibm-zostaje-cz%C5%82onkiem-eclipse-adoptium-working-group-%F0%9F%A4%9D\"><a href=\"https:\/\/developer.ibm\n.com\/blogs\/ibm-joins-eclipse-adoptium-and-offers-free-certified-jdks-with-eclipse-openj9\/\">3. IBM zostaje cz\u0142onkiem Eclipse Adoptium Working Group <\/a><\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ae09444d.png\" alt=\"\" \/><\/figure>\nA na koniec ma\u0142y news. Dwie edycje temu pisali\u015bmy o tym, \u017ce AdoptOpenJDK przesz\u0142o pod skrzyd\u0142a Eclipse i zosta\u0142o przechrzczone na Adoptium. Teraz do cz\u0142onk\u00f3w za\u0142o\u017cycieli fundacji do\u0142\u0105cza r\u00f3wnie\u017c IBM.\n\nNie jest to z pewno\u015bci\u0105 wielkie zaskoczenie - IBM od dawna by\u0142 mocno zaanga\u017cowany w spo\u0142eczno\u015b\u0107 AdoptOpenJDK, udost\u0119pniaj\u0105c nie tylko komercyjne wsparcie dla ca\u0142ego projektu (oczywi\u015bcie za pieni\u0105\u017cki, ale w oczach wielu firm na pewno wynios\u0142o to AdoptOpenJDK do roli realnej alternatywy dla Oracle JDK), ale te\u017c infrastruktur\u0119 umo\u017cliwiaj\u0105c\u0105 testowanie i rozwijanie projektu AdoptOpenJDK. Nale\u017cy bowiem pami\u0119ta\u0107, \u017ce JDK to oprogramowanie jak ka\u017cde inne i wymaga te\u017c np. platformy Continuous Integration. Du\u017c\u0105 kontrybucj\u0105 IBMu jest r\u00f3wnie\u017c oddanie fundacji Eclipse kodu \u017ar\u00f3d\u0142owego OpenJ9 - alternatywnej, ale w pe\u0142ni kompatybilnej ze specyfikacj\u0105 implementacji JVMa, kt\u00f3ra posiada kilka interesuj\u0105cych cech, jak np. szybszy start aplikacji.\n\nAdoptium rozwija si\u0119 wi\u0119c dynamicznie, a w projekt zaanga\u017cowane jest coraz wi\u0119cej podmiot\u00f3w przygotowuj\u0105cych swoje w\u0142asne, skrojone pod \u201cwysublimowane\u201d gusta wersje JDK. Jak wida\u0107 wi\u0119c, przej\u015bcie pod skrzyd\u0142a Fundacji Eclipse ju\u017c zacz\u0119\u0142o procentowa\u0107.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/developer.ibm.com\/blogs\/ibm-joins-eclipse-adoptium-and-offers-free-certified-jdks-with-eclipse-openj9\/\">IBM joins Eclipse Adoptium and offers free certified JDKs with Eclipse OpenJ9<\/a><\/li>\n<\/ul>"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10150","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=10150"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10150\/revisions"}],"predecessor-version":[{"id":10577,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10150\/revisions\/10577"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}