{"id":10184,"date":"2021-02-09T08:53:00","date_gmt":"2021-02-09T07:53:00","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-24\/"},"modified":"2022-09-19T13:10:57","modified_gmt":"2022-09-19T11:10:57","slug":"jvm-tuesday-vol-24","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/","title":{"rendered":"JVM Tuesday vol. 24"},"content":{"rendered":"<h2 id=\"1-release-candidate-jdk-16-przeglad-nowych-featurow\" data-num=1>1. <a href=\"https:\/\/mail.openjdk.java.net\/pipermail\/jdk-dev\/2021-February\/005062.html\">Release Candidate JDK 16 \u2013 Przegl\u0105d nowych featur\u00f3w<\/a><\/h2>\n<p>Powinni\u015bmy zacz\u0105\u0107 od chyba najwa\u017cniejszego wydarzenia w ekosystemie JVM od pocz\u0105tku roku \u2013 ot\u00f3\u017c opublikowany zosta\u0142 pierwszy Release Candidate Javy 16, a wraz z nim otrzymali\u015bmy zar\u00f3wno finaln\u0105 list\u0119 JEP\u00f3w, kt\u00f3re trafi\u0142y do nowego wydania, kt\u00f3re uka\u017ce si\u0119 16 marca.<\/p>\n<p>Je\u017celi mia\u0142bym szuka\u0107 tematu przewodniego nowego wydania Javy, to my\u015bl\u0119, \u017ce wskaza\u0142bym tutaj interoperacyjno\u015b\u0107 z \u201cnatywnym\u201d systemem operacyjnym. G\u0142\u00f3wnie poprzez Projekt Panama, ale nie tylko. Do inkubacji trafi\u0142o Vector API [<a href=\"https:\/\/openjdk.java.net\/jeps\/338\">JEP-338<\/a>] oraz Foreign Linker API [<a href=\"https:\/\/openjdk.java.net\/jeps\/389\">JEP-389<\/a>] (dla tych, kt\u00f3rzy chc\u0105 pozna\u0107 je lepiej, polecam fantastyczne odcinki podcast\u00f3w stanowi\u0105cych czytelny wst\u0119p w temat \u2013 znajdziecie je w \u017ar\u00f3d\u0142ach). Wprowadzona zosta\u0142a r\u00f3wnie\u017c obs\u0142uga elastycznego Metaspace [<a href=\"https:\/\/openjdk.java.net\/jeps\/387\">JEP-387<\/a>], kt\u00f3re teraz podzielone jest na regiony, co umo\u017cliwia bardziej dynamiczne zwracanie pami\u0119ci zaj\u0119tej przez metadane klas do systemu operacyjnego. Dla tych, co lubi\u0105 r\u0119czne grzebanie w pami\u0119ci \u2013 Foreign-Memory Access API (<a href=\"https:\/\/openjdk.java.net\/jeps\/393\">JEP-393<\/a>) dosta\u0142o trzeci\u0105 iteracj\u0119 inkubacji.<\/p>\n<p>Bardzo ciekaw\u0105 opcj\u0105 na systemach Unix jest te\u017c mo\u017cliwo\u015b\u0107 komunikacji z procesami systemowymi bezpo\u015brednio po sockecie [<a href=\"https:\/\/openjdk.java.net\/jeps\/380\">JEP-380<\/a>]. Do sprawdzenia, jakie mo\u017cliwo\u015bci to daje, niech pos\u0142u\u017cy ten artyku\u0142, kt\u00f3rego autor pokazuje, <a href=\"https:\/\/www.morling.dev\/blog\/talking-to-postgres-through-java-16-unix-domain-socket-channels\/\">jak wykorzysta\u0107 t\u0105 opcj\u0119 do komunikacji z PostgreSQL<\/a>.<\/p>\n<p>Trivia: sam kod JDK jest teraz kompilowany za pomoc\u0105 C++ 14 [<a href=\"https:\/\/openjdk.java.net\/jeps\/347\">JEP-347<\/a>]. Do tej pory u\u017cywana by\u0142a do tego mocno archaiczna wersja z roku 98.<\/p>\n<figure class=\"kg-card kg-image-card kg-width-full kg-card-hascaption\"><img loading=\"lazy\" decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-4799955c604a.gif\" alt=\"\" width=\"500\" height=\"281\" \/><figcaption>Mo\u017cna si\u0119 rozpisywa\u0107 jaka to nowa Java nie jest wydajna, a hejterzy JVMa i tak wiedz\u0105 swoje \ud83d\ude42<\/figcaption><\/figure>\n<p>W naszych JVMowych edycjach temat procesor\u00f3w ARM przewija si\u0119 do\u015b\u0107 cz\u0119sto. Wraz z now\u0105 Jav\u0105, o pot\u0119dze nowoczesnych niskonapi\u0119ciowc\u00f3w przekona\u0107 mog\u0105 si\u0119 r\u00f3wnie\u017c u\u017cytkownicy Windows\u00f3w \u2013 wersja ARM okienek doczeka\u0142a si\u0119 w\u0142asnego portu Javy [<a href=\"https:\/\/openjdk.java.net\/jeps\/388\">JEP-388<\/a>]. Co ciekawe, nie jest to jedyny port Javy na nowy system, kt\u00f3ry przynosi to wydanie. Moim wielkim zaskoczeniem przy czytaniu release notesa by\u0142 fakt, \u017ce JDK nie wspiera\u0142 \u00a0popularnego Alpine, a to dlatego, \u017ce zamiast popularnego glibc jego g\u0142\u00f3wna implementacja C to musl. Do tej pory wszelkiej ma\u015bci obrazy dockerowe oparte o Alpnie musia\u0142y u\u017cywa\u0107 zewn\u0119trznych port\u00f3w gclib, od teraz dzi\u0119ki Projektowi Portola mo\u017cliwe b\u0119dzie uruchomienie JDK na czystym systemie [<a href=\"https:\/\/openjdk.java.net\/jeps\/386\">JEP-386<\/a>].<\/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\/1_giphy-1.gif\" alt=\"\" width=\"320\" height=\"220\" \/><figcaption>Jako \u017ce od lat mam Jave\/Alpine na produkcji, moja reakcja wygl\u0105da\u0142a mniej wi\u0119cej tak.<\/figcaption><\/figure>\n<p>Nowa wersja JDK to tak\u017ce finalizacja dobrze znanych z poprzednich wersji Rekord\u00f3w [<a href=\"https:\/\/openjdk.java.net\/jeps\/395\">JEP-395<\/a>], Packaging Toola [<a href=\"https:\/\/openjdk.java.net\/jeps\/392\">JEP-392<\/a>] oraz Pattern Matchingu (dla instanceof) [<a href=\"https:\/\/openjdk.java.net\/jeps\/394\">JEP-394<\/a>], kt\u00f3re ostatecznie wysz\u0142y z inkubacji i trafi\u0142y do finalnej wersji j\u0119zyka. Je\u017celi jeste\u015bcie zainteresowani tymi cz\u0119\u015bciami j\u0119zyka, napisano ju\u017c w internetach naprawd\u0119 du\u017co (najciekawsze moim zdaniem opracowania znajdziecie w \u017ar\u00f3d\u0142ach). Sealed Classy nie mia\u0142y tyle szcz\u0119\u015bcia \u2013 ukaza\u0142 si\u0119 ich drugi preview [<a href=\"https:\/\/openjdk.java.net\/jeps\/397\">JEP-397<\/a>]. To, co w ich przypadku najbardziej zaskakuje, to nowy syntax, a konkretnie non-sealed \u2013 po raz pierwszy mamy do czynienia z \u0142\u0105cznikiem w s\u0142owie kluczowym. Ciekawe, czy jest to pocz\u0105tek nowego trendu.<\/p>\n<pre><code>public non-sealed class Square extends Shape { ... }<\/code><\/pre>\n<p>A, i Java ostatecznie (wraz z uko\u0144czeniem prac nad Project Skara) przenosi si\u0119 z Mercuriala na Gita [<a href=\"https:\/\/openjdk.java.net\/jeps\/357\">JEP-357<\/a>], co pozwoli\u0142o uczyni\u0107 GitHuba \u201cupstreamem\u201d ca\u0142ego OpenJDK [<a href=\"https:\/\/openjdk.java.net\/jeps\/369\">JEP-369<\/a>].<\/p>\n<p>To by\u0142a d\u0142uga sekcja, ale mam nadziej\u0119, \u017ce uda\u0142o nam si\u0119 logicznie uporz\u0105dkowa\u0107 to co przyniesie marzec. Tak naprawd\u0119 na codzienne programowanie wp\u0142yn\u0105 raczej znane ju\u017c rzeczy, kt\u00f3re po prostu osi\u0105gn\u0119\u0142y stabilno\u015b\u0107 (Rekordy i Pattern Matching), ale nowa wersja powinna trafi\u0107 r\u00f3wnie\u017c w bardziej niszowe gusta.<\/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_610d0e263fa73.png\" alt=\"\" \/><figcaption>Typowy u\u017cytkownik oczekuj\u0105cy na Project Panama.<span class=\"-mobiledoc-kit__atom\">\u200c\u200c<\/span><\/figcaption><\/figure>\n<h3 id=\"-r-d-a-\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/openjdk.java.net\/projects\/jdk\/16\/#Schedule\">JDK 16: First Release Candidate<\/a> (tutaj te\u017c znajdziecie odno\u015bniki do wszystkich JEP\u00f3w)<\/li>\n<li><a href=\"https:\/\/www.morling.dev\/blog\/talking-to-postgres-through-java-16-unix-domain-socket-channels\/\">Talking to Postgres Through Java 16 Unix-Domain Socket Channels<\/a><\/li>\n<li><a href=\"https:\/\/inside.java\/2020\/11\/17\/podcast-007\/\">Inside Java Podcast Episode 7 \u201cThe Vector API\u201d<\/a><\/li>\n<li><a href=\"https:\/\/inside.java\/2020\/12\/11\/podcast-009\/\">Inside Java Podcast Episode 9 \u201cProject Panama &#8211; The Foreign Memory Access API\u201d<\/a><\/li>\n<li><a href=\"https:\/\/inside.java\/2020\/12\/21\/podcast-010\/\">Inside Java Podcast Episode 10 \u201cProject Panama &#8211; The Foreign Linker API\u201d<\/a><\/li>\n<\/ul>\n<h2 id=\"2-jfrog-zamyka-bintray-i-jcenter\" data-num=2>2. <a href=\"https:\/\/jfrog.com\/blog\/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter\/\">JFrog zamyka Bintray i JCenter<\/a><\/h2>\n<p>Teraz b\u0119dzie na smutno.<\/p>\n<p>Podejrzewam, \u017ce ka\u017cdy, na jakim\u015b etapie swojego \u017cycia (a ju\u017c zw\u0142aszcza, je\u015bli pisa\u0142 co\u015b w Androidzie), mia\u0142 okazj\u0119 wpisywa\u0107 do swoich .pom lub .gradle odno\u015bniki do repozytori\u00f3w Bintraya lub JCenter. Te alternatywy dla Maven Central stanowi\u0142y przysta\u0144 dla wersji testowych zale\u017cno\u015bci, niezale\u017cnych projekt\u00f3w. Sprawd\u017acie, czy wasze buildy nie maj\u0105 zale\u017cno\u015bci na JCenter przed 1 lutego 2022. Inaczej mo\u017ce Was spotka\u0107 przykra niespodzianka.<\/p>\n<p>Co ja si\u0119 \u0142udz\u0119, ta informacja i tak zaskoczy wielu developer\u00f3w jak zima drogowc\u00f3w (chyba, \u017ce b\u0119d\u0105 czyta\u0107 nasze JVMowe wtorki, bo na pewno o tym przypomnimy).<\/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\/ezgif-6-daf5ea9448f4.gif\" alt=\"\" width=\"300\" height=\"300\" \/><figcaption>A\u017c sobie chyba ustawie jakie\u015b przypomnienie, aby pierwszego lutego za rok obserwowa\u0107 spokojnie jak \u015bwiat p\u0142onie.<\/figcaption><\/figure>\n<p>U\u017cytkownicy Javowego Reddita opracowali <a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/leizur\/hearing_jcenter_is_close_to_an_end_do_you_know\/\">dobr\u0105 list\u0119 alternatyw<\/a>, ale i tak umiera na naszych oczach kawa\u0142ek historii.<\/p>\n<p>Prywata: \u0141ezka zakr\u0119ci\u0142a mi si\u0119 w oku, bo to w\u0142a\u015bnie Bintray jest domem mojego jedynego prawdziwego autorskiego projektu Open-Source. <a href=\"https:\/\/bintray.com\/arturskowronski\/maven\/com.hiddencity.newton\/view\">Newton<\/a><br \/>\nby\u0142 warstw\u0105 abstrakcji nad API Beacon\u00f3w BLE w czasach, kiedy Krak\u00f3w znany by\u0142 jako Beacon Valley . Nigdy nie zdoby\u0142 popularno\u015bci, w\u0142a\u015bciwie ci\u0119\u017cko mi powiedzie\u0107 czemu, cho\u0107 podejrzewam, \u017ce je\u015bli mia\u0142by cho\u0107 linijk\u0119 Readme, to by posz\u0142o mu przynajmniej odrobink\u0119 lepiej .<\/p>\n<h3 id=\"-r-d-a--1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/jfrog.com\/blog\/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter\/\">Into the Sunset on May 1st: Bintray, JCenter, GoCenter, and ChartCenter<\/a><\/li>\n<li><a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/leizur\/hearing_jcenter_is_close_to_an_end_do_you_know\/\">Hearing jcenter() is close to an end do you know any good alternative ?<\/a><\/li>\n<\/ul>\n<h2 id=\"3-kotlin-1-4-30-znacznie-wazniejszy-niz-sugeruje-numeracja\" data-num=3>3. <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/\">Kotlin 1.4.30 \u2013 znacznie wa\u017cniejszy ni\u017c sugeruje numeracja<\/a><\/h2>\n<p>I na koniec, jak to cz\u0119sto bywa, Kotlin i jego \u015bwie\u017cutkie jeszcze wydanie 1.4.30. O ile zwykle nie informujemy o minorowych wersjach j\u0119zyk\u00f3w, o tyle nowa wersja Kotlina przynosi za sob\u0105 tak\u0105 mnogo\u015b\u0107 interesuj\u0105cych nowo\u015bci, \u017ce a\u017c nie wypada jej pomin\u0105\u0107 w opracowaniu tygodnia. Mo\u017cna j\u0105 de facto traktowa\u0107 jako przedsmak tego, co przynie\u015b\u0107 ma nam Kotlin 1.5. Pami\u0119tacie, jak w <a href=\"https:\/\/blog.vived.io\/jvm-tuesday-23\/\">zesz\u0142ym tygodniu pokazywali\u015bmy Wam Kotlinow\u0105 Roadmap\u0119<\/a>? Ot\u00f3\u017c ju\u017c dzisiaj mamy okazj\u0119 pobawi\u0107 si\u0119 dwoma istotnymi nowo\u015bciami, kt\u00f3re by\u0142y w niej zawarte.<\/p>\n<p>Do nowej wersji j\u0119zyka trafia nowa <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#compiler\">\u201creprezentacja po\u015brednia\u201d (IR) kodu dla JVMa<\/a>, czyli zdecydowanie najwa\u017cniejszej i najcz\u0119\u015bciej u\u017cywanej wersji, pono\u0107 multiplatformowego Kotlina. Co ciekawe, Jetbrains chwali si\u0119, \u017ce s\u0105 na tyle pewni tego wydania, \u017ce mog\u0105 zarekomendowa\u0107 \u201czabawy\u201d z nowym IRem r\u00f3wnie\u017c na produkcji. A jest si\u0119, czym bawi\u0107. Kompilator Kotlina ma by\u0107 znacznie szybszy (co do tej pory by\u0142o pi\u0119t\u0105 achillesow\u0105 tego j\u0119zyka), a sama reprezentacja odblokowuje dynamiczniejsze nad\u0105\u017canie za zmianami w samej Javie.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img loading=\"lazy\" decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/giphy-1-1.gif\" alt=\"\" width=\"720\" height=\"540\" \/><figcaption>\u017beby nie by\u0142o, nie uwa\u017cam Kotlina za Zombie, objawia si\u0119 tutaj po prostu moja mi\u0142o\u015b\u0107 do klasycznej Hanna Barbery<\/figcaption><\/figure>\n<p>Za dow\u00f3d, \u017ce tw\u00f3rcy nie rzucaj\u0105 s\u0142\u00f3w na wiatr, niech pos\u0142u\u017cy druga du\u017ca nowo\u015b\u0107. Do \u201cinternali\u201d Kotlina trafiaj\u0105 Rekordy oraz Sealed Classy. Oczywi\u015bcie w wersji eksperymentalnej (\u017cadne z nich nie jest stabilne nawet w JDK, i je\u015bli czytali\u015bcie sekcje o JDK 16, to wiecie, \u017ce w najbli\u017cszym czasie spodziewa\u0107 si\u0119 nale\u017cy tylko Rekord\u00f3w), ale sam fakt, \u017ce ju\u017c teraz mo\u017cna je wypr\u00f3bowa\u0107, dobrze wr\u00f3\u017cy na przysz\u0142o\u015b\u0107. Tw\u00f3rcy obiecuj\u0105, \u017ce trafi\u0105 one do Kotlina w wersji 1.5, a \u00a0jeden z featur\u00f3w j\u0119zyka (Value Classy) doczeka\u0107 si\u0119 ma te\u017c wsparcia dla Projektu Valhalla, gdy ten tylko zago\u015bci w JDK. Ca\u0142o\u015b\u0107 ma doprowadzi\u0107 do interoperatywno\u015bci mi\u0119dzy Jav\u0105 i Kotlinem na niespotykanym wcze\u015bniej poziomie, i co mog\u0119 powiedzie\u0107\u2026<\/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_610d0e285b295.png\" alt=\"\" \/><\/figure>\n<p>PS: Wspomniane Value Classy doczeka\u0142y si\u0119 jednego z najlepszych publicznych <a href=\"https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/notes\/value-classes.md\">Design Doc\u00f3w<\/a> jaki mia\u0142em okazj\u0119 widzie\u0107 \u2013 Elizarov zaszala\u0142. Nie jest to szybka lektura (pierwsze przej\u015bcie przez ca\u0142o\u015b\u0107 zaj\u0119\u0142o mi prawie 2h, a \u017ceby wszystko zrozumie\u0107 pewnie musia\u0142bym zrobi\u0107 drugie podej\u015bcie). Ale w\u0142a\u015bnie za takie rzeczy uwielbiam otwarto\u015b\u0107 ekosystemu JDK i bardzo ciesz\u0119 si\u0119 z tego, \u017ce ju\u017c nied\u0142ugo Java te\u017c b\u0119dzie na Githubie (Brian Goetz zreszt\u0105 ju\u017c tam jest wraz z <a href=\"https:\/\/github.com\/openjdk\/amber-docs\">docsami do Project Amber<\/a>).<\/p>\n<h3 id=\"-r-d-a--2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/\">Kotlin 1.4.30 Is Released With a New JVM Backend and Language and Multiplatform Features<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/the-jvm-backend-is-in-beta-let-s-make-it-stable-together\/\">The New JVM IR Backend Is in Beta: Let\u2019s Make It Stable Together<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/new-language-features-preview-in-kotlin-1-4-30\/\">New Language Features Preview in Kotlin 1.4.30<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/notes\/value-classes.md\">Design Notes on Kotlin Value Classes<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/openjdk\/amber-docs\">github.com\/openjdk\/amber-docs<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Dzisiejsza edycja jest bardzo wa\u017cna &#8211; mamy okazj\u0119 po raz pierwszy pogada\u0107 o nadchodz\u0105cych featurach JDK 16 i zaskakuj\u0105co interesuj\u0105cym minorowym releasie Kotlina. Uronimy te\u017c \u0142ezk\u0119 nad nied\u0142ugo \u015bwi\u0119tej ju\u017c pami\u0119ci JCenter \ud83d\ude2d Zapraszam 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-10184","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. 24 - 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-24\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 24 - Vived\" \/>\n<meta property=\"og:description\" content=\"Dzisiejsza edycja jest bardzo wa\u017cna - mamy okazj\u0119 po raz pierwszy pogada\u0107 o nadchodz\u0105cych featurach JDK 16 i zaskakuj\u0105co interesuj\u0105cym minorowym releasie Kotlina. Uronimy te\u017c \u0142ezk\u0119 nad nied\u0142ugo \u015bwi\u0119tej ju\u017c pami\u0119ci JCenter \ud83d\ude2d Zapraszam do lektury!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-09T07:53:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-4799955c604a.gif\" \/>\n<meta name=\"author\" content=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 24\",\"datePublished\":\"2021-02-09T07:53:00+00:00\",\"dateModified\":\"2022-09-19T11:10:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/\"},\"wordCount\":1392,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-4799955c604a.gif\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/\",\"name\":\"JVM Tuesday vol. 24 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-4799955c604a.gif\",\"datePublished\":\"2021-02-09T07:53:00+00:00\",\"dateModified\":\"2022-09-19T11:10:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-4799955c604a.gif\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-4799955c604a.gif\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 24\"}]},{\"@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. 24 - 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-24\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 24 - Vived","og_description":"Dzisiejsza edycja jest bardzo wa\u017cna - mamy okazj\u0119 po raz pierwszy pogada\u0107 o nadchodz\u0105cych featurach JDK 16 i zaskakuj\u0105co interesuj\u0105cym minorowym releasie Kotlina. Uronimy te\u017c \u0142ezk\u0119 nad nied\u0142ugo \u015bwi\u0119tej ju\u017c pami\u0119ci JCenter \ud83d\ude2d Zapraszam do lektury!","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/","og_site_name":"Vived","article_published_time":"2021-02-09T07:53:00+00:00","article_modified_time":"2022-09-19T11:10:57+00:00","og_image":[{"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-4799955c604a.gif","type":"","width":"","height":""}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 24","datePublished":"2021-02-09T07:53:00+00:00","dateModified":"2022-09-19T11:10:57+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/"},"wordCount":1392,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-4799955c604a.gif","articleSection":["JVM"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/","name":"JVM Tuesday vol. 24 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-4799955c604a.gif","datePublished":"2021-02-09T07:53:00+00:00","dateModified":"2022-09-19T11:10:57+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-4799955c604a.gif","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-4799955c604a.gif"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-24\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 24"}]},{"@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-release-candidate-jdk-16-przegl-d-nowych-featur-w-\">1. <a href=\"https:\/\/mail.openjdk.java.net\/pipermail\/jdk-dev\/2021-February\/005062.html\">Release Candidate JDK 16 \u2013 Przegl\u0105d nowych featur\u00f3w<\/a><\/h2>\nPowinni\u015bmy zacz\u0105\u0107 od chyba najwa\u017cniejszego wydarzenia w ekosystemie JVM od pocz\u0105tku roku \u2013 ot\u00f3\u017c opublikowany zosta\u0142 pierwszy Release Candidate Javy 16, a wraz z nim otrzymali\u015bmy zar\u00f3wno finaln\u0105 list\u0119 JEP\u00f3w, kt\u00f3re trafi\u0142y do nowego wydania, kt\u00f3re uka\u017ce si\u0119 16 marca.\n\nJe\u017celi mia\u0142bym szuka\u0107 tematu przewodniego nowego wydania Javy, to my\u015bl\u0119, \u017ce wskaza\u0142bym tutaj interoperacyjno\u015b\u0107 z \u201cnatywnym\u201d systemem operacyjnym. G\u0142\u00f3wnie poprzez Projekt Panama, ale nie tylko. Do inkubacji trafi\u0142o Vector API [<a href=\"https:\/\/openjdk.java.net\/jeps\/338\">JEP-338<\/a>] oraz Foreign Linker API [<a href=\"https:\/\/openjdk.java.net\/jeps\/389\">JEP-389<\/a>] (dla tych, kt\u00f3rzy chc\u0105 pozna\u0107 je lepiej, polecam fantastyczne odcinki podcast\u00f3w stanowi\u0105cych czytelny wst\u0119p w temat \u2013 znajdziecie je w \u017ar\u00f3d\u0142ach). Wprowadzona zosta\u0142a r\u00f3wnie\u017c obs\u0142uga elastycznego Metaspace [<a href=\"https:\/\/openjdk.java.net\/jeps\/387\">JEP-387<\/a>], kt\u00f3re teraz podzielone jest na regiony, co umo\u017cliwia bardziej dynamiczne zwracanie pami\u0119ci zaj\u0119tej przez metadane klas do systemu operacyjnego. Dla tych, co lubi\u0105 r\u0119czne grzebanie w pami\u0119ci \u2013 Foreign-Memory Access API (<a href=\"https:\/\/openjdk.java.net\/jeps\/393\">JEP-393<\/a>) dosta\u0142o trzeci\u0105 iteracj\u0119 inkubacji.\n\nBardzo ciekaw\u0105 opcj\u0105 na systemach Unix jest te\u017c mo\u017cliwo\u015b\u0107 komunikacji z procesami systemowymi bezpo\u015brednio po sockecie [<a href=\"https:\/\/openjdk.java.net\/jeps\/380\">JEP-380<\/a>]. Do sprawdzenia, jakie mo\u017cliwo\u015bci to daje, niech pos\u0142u\u017cy ten artyku\u0142, kt\u00f3rego autor pokazuje, <a href=\"https:\/\/www.morling.dev\/blog\/talking-to-postgres-through-java-16-unix-domain-socket-channels\/\">jak wykorzysta\u0107 t\u0105 opcj\u0119 do komunikacji z PostgreSQL<\/a>.\n\nTrivia: sam kod JDK jest teraz kompilowany za pomoc\u0105 C++ 14 [<a href=\"https:\/\/openjdk.java.net\/jeps\/347\">JEP-347<\/a>]. Do tej pory u\u017cywana by\u0142a do tego mocno archaiczna wersja z roku 98.\n<figure class=\"kg-card kg-image-card kg-width-full kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-4799955c604a.gif\" alt=\"\" width=\"500\" height=\"281\" \/>\n<figcaption>Mo\u017cna si\u0119 rozpisywa\u0107 jaka to nowa Java nie jest wydajna, a hejterzy JVMa i tak wiedz\u0105 swoje :)<\/figcaption><\/figure>\nW naszych JVMowych edycjach temat procesor\u00f3w ARM przewija si\u0119 do\u015b\u0107 cz\u0119sto. Wraz z now\u0105 Jav\u0105, o pot\u0119dze nowoczesnych niskonapi\u0119ciowc\u00f3w przekona\u0107 mog\u0105 si\u0119 r\u00f3wnie\u017c u\u017cytkownicy Windows\u00f3w \u2013 wersja ARM okienek doczeka\u0142a si\u0119 w\u0142asnego portu Javy [<a href=\"https:\/\/openjdk.java.net\/jeps\/388\">JEP-388<\/a>]. Co ciekawe, nie jest to jedyny port Javy na nowy system, kt\u00f3ry przynosi to wydanie. Moim wielkim zaskoczeniem przy czytaniu release notesa by\u0142 fakt, \u017ce JDK nie wspiera\u0142 \u00a0popularnego Alpine, a to dlatego, \u017ce zamiast popularnego glibc jego g\u0142\u00f3wna implementacja C to musl. Do tej pory wszelkiej ma\u015bci obrazy dockerowe oparte o Alpnie musia\u0142y u\u017cywa\u0107 zewn\u0119trznych port\u00f3w gclib, od teraz dzi\u0119ki Projektowi Portola mo\u017cliwe b\u0119dzie uruchomienie JDK na czystym systemie [<a href=\"https:\/\/openjdk.java.net\/jeps\/386\">JEP-386<\/a>].\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/1_giphy-1.gif\" alt=\"\" width=\"320\" height=\"220\" \/>\n\n<figcaption>Jako \u017ce od lat mam Jave\/Alpine na produkcji, moja reakcja wygl\u0105da\u0142a mniej wi\u0119cej tak.<\/figcaption><\/figure>\nNowa wersja JDK to tak\u017ce finalizacja dobrze znanych z poprzednich wersji Rekord\u00f3w [<a href=\"https:\/\/openjdk.java.net\/jeps\/395\">JEP-395<\/a>], Packaging Toola [<a href=\"https:\/\/openjdk.java.net\/jeps\/392\">JEP-392<\/a>] oraz Pattern Matchingu (dla instanceof) [<a href=\"https:\/\/openjdk.java.net\/jeps\/394\">JEP-394<\/a>], kt\u00f3re ostatecznie wysz\u0142y z inkubacji i trafi\u0142y do finalnej wersji j\u0119zyka. Je\u017celi jeste\u015bcie zainteresowani tymi cz\u0119\u015bciami j\u0119zyka, napisano ju\u017c w internetach naprawd\u0119 du\u017co (najciekawsze moim zdaniem opracowania znajdziecie w \u017ar\u00f3d\u0142ach). Sealed Classy nie mia\u0142y tyle szcz\u0119\u015bcia \u2013 ukaza\u0142 si\u0119 ich drugi preview [<a href=\"https:\/\/openjdk.java.net\/jeps\/397\">JEP-397<\/a>]. To, co w ich przypadku najbardziej zaskakuje, to nowy syntax, a konkretnie non-sealed \u2013 po raz pierwszy mamy do czynienia z \u0142\u0105cznikiem w s\u0142owie kluczowym. Ciekawe, czy jest to pocz\u0105tek nowego trendu.\n<pre><code>public non-sealed class Square extends Shape { ... }<\/code><\/pre>\nA, i Java ostatecznie (wraz z uko\u0144czeniem prac nad Project Skara) przenosi si\u0119 z Mercuriala na Gita [<a href=\"https:\/\/openjdk.java.net\/jeps\/357\">JEP-357<\/a>], co pozwoli\u0142o uczyni\u0107 GitHuba \u201cupstreamem\u201d ca\u0142ego OpenJDK [<a href=\"https:\/\/openjdk.java.net\/jeps\/369\">JEP-369<\/a>].\n\nTo by\u0142a d\u0142uga sekcja, ale mam nadziej\u0119, \u017ce uda\u0142o nam si\u0119 logicznie uporz\u0105dkowa\u0107 to co przyniesie marzec. Tak naprawd\u0119 na codzienne programowanie wp\u0142yn\u0105 raczej znane ju\u017c rzeczy, kt\u00f3re po prostu osi\u0105gn\u0119\u0142y stabilno\u015b\u0107 (Rekordy i Pattern Matching), ale nowa wersja powinna trafi\u0107 r\u00f3wnie\u017c w bardziej niszowe gusta.\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_610d0e263fa73.png\" alt=\"\" \/>\n\n<figcaption>Typowy u\u017cytkownik oczekuj\u0105cy na Project Panama.<span class=\"-mobiledoc-kit__atom\">\u200c\u200c<\/span><\/figcaption><\/figure>\n<h3 id=\"-r-d-a-\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/openjdk.java.net\/projects\/jdk\/16\/#Schedule\">JDK 16: First Release Candidate<\/a> (tutaj te\u017c znajdziecie odno\u015bniki do wszystkich JEP\u00f3w)<\/li>\n \t<li><a href=\"https:\/\/www.morling.dev\/blog\/talking-to-postgres-through-java-16-unix-domain-socket-channels\/\">Talking to Postgres Through Java 16 Unix-Domain Socket Channels<\/a><\/li>\n \t<li><a href=\"https:\/\/inside.java\/2020\/11\/17\/podcast-007\/\">Inside Java Podcast Episode 7 \u201cThe Vector API\u201d<\/a><\/li>\n \t<li><a href=\"https:\/\/inside.java\/2020\/12\/11\/podcast-009\/\">Inside Java Podcast Episode 9 \u201cProject Panama - The Foreign Memory Access API\u201d<\/a><\/li>\n \t<li><a href=\"https:\/\/inside.java\/2020\/12\/21\/podcast-010\/\">Inside Java Podcast Episode 10 \u201cProject Panama - The Foreign Linker API\u201d<\/a><\/li>\n<\/ul>\n<h2 id=\"2-jfrog-zamyka-bintray-i-jcenter-\">2. <a href=\"https:\/\/jfrog.com\/blog\/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter\/\">JFrog zamyka Bintray i JCenter<\/a><\/h2>\nTeraz b\u0119dzie na smutno.\n\nPodejrzewam, \u017ce ka\u017cdy, na jakim\u015b etapie swojego \u017cycia (a ju\u017c zw\u0142aszcza, je\u015bli pisa\u0142 co\u015b w Androidzie), mia\u0142 okazj\u0119 wpisywa\u0107 do swoich .pom lub .gradle odno\u015bniki do repozytori\u00f3w Bintraya lub JCenter. Te alternatywy dla Maven Central stanowi\u0142y przysta\u0144 dla wersji testowych zale\u017cno\u015bci, niezale\u017cnych projekt\u00f3w. Sprawd\u017acie, czy wasze buildy nie maj\u0105 zale\u017cno\u015bci na JCenter przed 1 lutego 2022. Inaczej mo\u017ce Was spotka\u0107 przykra niespodzianka.\n\nCo ja si\u0119 \u0142udz\u0119, ta informacja i tak zaskoczy wielu developer\u00f3w jak zima drogowc\u00f3w (chyba, \u017ce b\u0119d\u0105 czyta\u0107 nasze JVMowe wtorki, bo na pewno o tym przypomnimy).\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-daf5ea9448f4.gif\" alt=\"\" width=\"300\" height=\"300\" \/>\n\n<figcaption>A\u017c sobie chyba ustawie jakie\u015b przypomnienie, aby pierwszego lutego za rok obserwowa\u0107 spokojnie jak \u015bwiat p\u0142onie.<\/figcaption><\/figure>\nU\u017cytkownicy Javowego Reddita opracowali <a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/leizur\/hearing_jcenter_is_close_to_an_end_do_you_know\/\">dobr\u0105 list\u0119 alternatyw<\/a>, ale i tak umiera na naszych oczach kawa\u0142ek historii.\n\nPrywata: \u0141ezka zakr\u0119ci\u0142a mi si\u0119 w oku, bo to w\u0142a\u015bnie Bintray jest domem mojego jedynego prawdziwego autorskiego projektu Open-Source. <a href=\"https:\/\/bintray.com\/arturskowronski\/maven\/com.hiddencity.newton\/view\">Newton<\/a>\nby\u0142 warstw\u0105 abstrakcji nad API Beacon\u00f3w BLE w czasach, kiedy Krak\u00f3w znany by\u0142 jako Beacon Valley . Nigdy nie zdoby\u0142 popularno\u015bci, w\u0142a\u015bciwie ci\u0119\u017cko mi powiedzie\u0107 czemu, cho\u0107 podejrzewam, \u017ce je\u015bli mia\u0142by cho\u0107 linijk\u0119 Readme, to by posz\u0142o mu przynajmniej odrobink\u0119 lepiej .\n<h3 id=\"-r-d-a--1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/jfrog.com\/blog\/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter\/\">Into the Sunset on May 1st: Bintray, JCenter, GoCenter, and ChartCenter<\/a><\/li>\n \t<li><a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/leizur\/hearing_jcenter_is_close_to_an_end_do_you_know\/\">Hearing jcenter() is close to an end do you know any good alternative ?<\/a><\/li>\n<\/ul>\n<h2 id=\"3-kotlin-1-4-30-znacznie-wa-niejszy-ni-sugeruje-numeracja-\">3. <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/\">Kotlin 1.4.30 \u2013 znacznie wa\u017cniejszy ni\u017c sugeruje numeracja<\/a><\/h2>\nI na koniec, jak to cz\u0119sto bywa, Kotlin i jego \u015bwie\u017cutkie jeszcze wydanie 1.4.30. O ile zwykle nie informujemy o minorowych wersjach j\u0119zyk\u00f3w, o tyle nowa wersja Kotlina przynosi za sob\u0105 tak\u0105 mnogo\u015b\u0107 interesuj\u0105cych nowo\u015bci, \u017ce a\u017c nie wypada jej pomin\u0105\u0107 w opracowaniu tygodnia. Mo\u017cna j\u0105 de facto traktowa\u0107 jako przedsmak tego, co przynie\u015b\u0107 ma nam Kotlin 1.5. Pami\u0119tacie, jak w <a href=\"https:\/\/blog.vived.io\/jvm-tuesday-23\/\">zesz\u0142ym tygodniu pokazywali\u015bmy Wam Kotlinow\u0105 Roadmap\u0119<\/a>? Ot\u00f3\u017c ju\u017c dzisiaj mamy okazj\u0119 pobawi\u0107 si\u0119 dwoma istotnymi nowo\u015bciami, kt\u00f3re by\u0142y w niej zawarte.\n\nDo nowej wersji j\u0119zyka trafia nowa <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#compiler\">\u201creprezentacja po\u015brednia\u201d (IR) kodu dla JVMa<\/a>, czyli zdecydowanie najwa\u017cniejszej i najcz\u0119\u015bciej u\u017cywanej wersji, pono\u0107 multiplatformowego Kotlina. Co ciekawe, Jetbrains chwali si\u0119, \u017ce s\u0105 na tyle pewni tego wydania, \u017ce mog\u0105 zarekomendowa\u0107 \u201czabawy\u201d z nowym IRem r\u00f3wnie\u017c na produkcji. A jest si\u0119, czym bawi\u0107. Kompilator Kotlina ma by\u0107 znacznie szybszy (co do tej pory by\u0142o pi\u0119t\u0105 achillesow\u0105 tego j\u0119zyka), a sama reprezentacja odblokowuje dynamiczniejsze nad\u0105\u017canie za zmianami w samej Javie.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/giphy-1-1.gif\" alt=\"\" width=\"720\" height=\"540\" \/>\n\n<figcaption>\u017beby nie by\u0142o, nie uwa\u017cam Kotlina za Zombie, objawia si\u0119 tutaj po prostu moja mi\u0142o\u015b\u0107 do klasycznej Hanna Barbery<\/figcaption><\/figure>\nZa dow\u00f3d, \u017ce tw\u00f3rcy nie rzucaj\u0105 s\u0142\u00f3w na wiatr, niech pos\u0142u\u017cy druga du\u017ca nowo\u015b\u0107. Do \u201cinternali\u201d Kotlina trafiaj\u0105 Rekordy oraz Sealed Classy. Oczywi\u015bcie w wersji eksperymentalnej (\u017cadne z nich nie jest stabilne nawet w JDK, i je\u015bli czytali\u015bcie sekcje o JDK 16, to wiecie, \u017ce w najbli\u017cszym czasie spodziewa\u0107 si\u0119 nale\u017cy tylko Rekord\u00f3w), ale sam fakt, \u017ce ju\u017c teraz mo\u017cna je wypr\u00f3bowa\u0107, dobrze wr\u00f3\u017cy na przysz\u0142o\u015b\u0107. Tw\u00f3rcy obiecuj\u0105, \u017ce trafi\u0105 one do Kotlina w wersji 1.5, a \u00a0jeden z featur\u00f3w j\u0119zyka (Value Classy) doczeka\u0107 si\u0119 ma te\u017c wsparcia dla Projektu Valhalla, gdy ten tylko zago\u015bci w JDK. Ca\u0142o\u015b\u0107 ma doprowadzi\u0107 do interoperatywno\u015bci mi\u0119dzy Jav\u0105 i Kotlinem na niespotykanym wcze\u015bniej poziomie, i co mog\u0119 powiedzie\u0107\u2026\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0e285b295.png\" alt=\"\" \/><\/figure>\nPS: Wspomniane Value Classy doczeka\u0142y si\u0119 jednego z najlepszych publicznych <a href=\"https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/notes\/value-classes.md\">Design Doc\u00f3w<\/a> jaki mia\u0142em okazj\u0119 widzie\u0107 \u2013 Elizarov zaszala\u0142. Nie jest to szybka lektura (pierwsze przej\u015bcie przez ca\u0142o\u015b\u0107 zaj\u0119\u0142o mi prawie 2h, a \u017ceby wszystko zrozumie\u0107 pewnie musia\u0142bym zrobi\u0107 drugie podej\u015bcie). Ale w\u0142a\u015bnie za takie rzeczy uwielbiam otwarto\u015b\u0107 ekosystemu JDK i bardzo ciesz\u0119 si\u0119 z tego, \u017ce ju\u017c nied\u0142ugo Java te\u017c b\u0119dzie na Githubie (Brian Goetz zreszt\u0105 ju\u017c tam jest wraz z <a href=\"https:\/\/github.com\/openjdk\/amber-docs\">docsami do Project Amber<\/a>).\n<h3 id=\"-r-d-a--2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/\">Kotlin 1.4.30 Is Released With a New JVM Backend and Language and Multiplatform Features<\/a><\/li>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/the-jvm-backend-is-in-beta-let-s-make-it-stable-together\/\">The New JVM IR Backend Is in Beta: Let\u2019s Make It Stable Together<\/a><\/li>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/new-language-features-preview-in-kotlin-1-4-30\/\">New Language Features Preview in Kotlin 1.4.30<\/a><\/li>\n \t<li><a href=\"https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/notes\/value-classes.md\">Design Notes on Kotlin Value Classes<\/a><\/li>\n \t<li><a href=\"https:\/\/github.com\/openjdk\/amber-docs\">github.com\/openjdk\/amber-docs<\/a><\/li>\n<\/ul>","innerContent":["<h2 id=\"1-release-candidate-jdk-16-przegl-d-nowych-featur-w-\">1. <a href=\"https:\/\/mail.openjdk.java.net\/pipermail\/jdk-dev\/2021-February\/005062.html\">Release Candidate JDK 16 \u2013 Przegl\u0105d nowych featur\u00f3w<\/a><\/h2>\nPowinni\u015bmy zacz\u0105\u0107 od chyba najwa\u017cniejszego wydarzenia w ekosystemie JVM od pocz\u0105tku roku \u2013 ot\u00f3\u017c opublikowany zosta\u0142 pierwszy Release Candidate Javy 16, a wraz z nim otrzymali\u015bmy zar\u00f3wno finaln\u0105 list\u0119 JEP\u00f3w, kt\u00f3re trafi\u0142y do nowego wydania, kt\u00f3re uka\u017ce si\u0119 16 marca.\n\nJe\u017celi mia\u0142bym szuka\u0107 tematu przewodniego nowego wydania Javy, to my\u015bl\u0119, \u017ce wskaza\u0142bym tutaj interoperacyjno\u015b\u0107 z \u201cnatywnym\u201d systemem operacyjnym. G\u0142\u00f3wnie poprzez Projekt Panama, ale nie tylko. Do inkubacji trafi\u0142o Vector API [<a href=\"https:\/\/openjdk.java.net\/jeps\/338\">JEP-338<\/a>] oraz Foreign Linker API [<a href=\"https:\/\/openjdk.java.net\/jeps\/389\">JEP-389<\/a>] (dla tych, kt\u00f3rzy chc\u0105 pozna\u0107 je lepiej, polecam fantastyczne odcinki podcast\u00f3w stanowi\u0105cych czytelny wst\u0119p w temat \u2013 znajdziecie je w \u017ar\u00f3d\u0142ach). Wprowadzona zosta\u0142a r\u00f3wnie\u017c obs\u0142uga elastycznego Metaspace [<a href=\"https:\/\/openjdk.java.net\/jeps\/387\">JEP-387<\/a>], kt\u00f3re teraz podzielone jest na regiony, co umo\u017cliwia bardziej dynamiczne zwracanie pami\u0119ci zaj\u0119tej przez metadane klas do systemu operacyjnego. Dla tych, co lubi\u0105 r\u0119czne grzebanie w pami\u0119ci \u2013 Foreign-Memory Access API (<a href=\"https:\/\/openjdk.java.net\/jeps\/393\">JEP-393<\/a>) dosta\u0142o trzeci\u0105 iteracj\u0119 inkubacji.\n\nBardzo ciekaw\u0105 opcj\u0105 na systemach Unix jest te\u017c mo\u017cliwo\u015b\u0107 komunikacji z procesami systemowymi bezpo\u015brednio po sockecie [<a href=\"https:\/\/openjdk.java.net\/jeps\/380\">JEP-380<\/a>]. Do sprawdzenia, jakie mo\u017cliwo\u015bci to daje, niech pos\u0142u\u017cy ten artyku\u0142, kt\u00f3rego autor pokazuje, <a href=\"https:\/\/www.morling.dev\/blog\/talking-to-postgres-through-java-16-unix-domain-socket-channels\/\">jak wykorzysta\u0107 t\u0105 opcj\u0119 do komunikacji z PostgreSQL<\/a>.\n\nTrivia: sam kod JDK jest teraz kompilowany za pomoc\u0105 C++ 14 [<a href=\"https:\/\/openjdk.java.net\/jeps\/347\">JEP-347<\/a>]. Do tej pory u\u017cywana by\u0142a do tego mocno archaiczna wersja z roku 98.\n<figure class=\"kg-card kg-image-card kg-width-full kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-4799955c604a.gif\" alt=\"\" width=\"500\" height=\"281\" \/>\n<figcaption>Mo\u017cna si\u0119 rozpisywa\u0107 jaka to nowa Java nie jest wydajna, a hejterzy JVMa i tak wiedz\u0105 swoje :)<\/figcaption><\/figure>\nW naszych JVMowych edycjach temat procesor\u00f3w ARM przewija si\u0119 do\u015b\u0107 cz\u0119sto. Wraz z now\u0105 Jav\u0105, o pot\u0119dze nowoczesnych niskonapi\u0119ciowc\u00f3w przekona\u0107 mog\u0105 si\u0119 r\u00f3wnie\u017c u\u017cytkownicy Windows\u00f3w \u2013 wersja ARM okienek doczeka\u0142a si\u0119 w\u0142asnego portu Javy [<a href=\"https:\/\/openjdk.java.net\/jeps\/388\">JEP-388<\/a>]. Co ciekawe, nie jest to jedyny port Javy na nowy system, kt\u00f3ry przynosi to wydanie. Moim wielkim zaskoczeniem przy czytaniu release notesa by\u0142 fakt, \u017ce JDK nie wspiera\u0142 \u00a0popularnego Alpine, a to dlatego, \u017ce zamiast popularnego glibc jego g\u0142\u00f3wna implementacja C to musl. Do tej pory wszelkiej ma\u015bci obrazy dockerowe oparte o Alpnie musia\u0142y u\u017cywa\u0107 zewn\u0119trznych port\u00f3w gclib, od teraz dzi\u0119ki Projektowi Portola mo\u017cliwe b\u0119dzie uruchomienie JDK na czystym systemie [<a href=\"https:\/\/openjdk.java.net\/jeps\/386\">JEP-386<\/a>].\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/1_giphy-1.gif\" alt=\"\" width=\"320\" height=\"220\" \/>\n\n<figcaption>Jako \u017ce od lat mam Jave\/Alpine na produkcji, moja reakcja wygl\u0105da\u0142a mniej wi\u0119cej tak.<\/figcaption><\/figure>\nNowa wersja JDK to tak\u017ce finalizacja dobrze znanych z poprzednich wersji Rekord\u00f3w [<a href=\"https:\/\/openjdk.java.net\/jeps\/395\">JEP-395<\/a>], Packaging Toola [<a href=\"https:\/\/openjdk.java.net\/jeps\/392\">JEP-392<\/a>] oraz Pattern Matchingu (dla instanceof) [<a href=\"https:\/\/openjdk.java.net\/jeps\/394\">JEP-394<\/a>], kt\u00f3re ostatecznie wysz\u0142y z inkubacji i trafi\u0142y do finalnej wersji j\u0119zyka. Je\u017celi jeste\u015bcie zainteresowani tymi cz\u0119\u015bciami j\u0119zyka, napisano ju\u017c w internetach naprawd\u0119 du\u017co (najciekawsze moim zdaniem opracowania znajdziecie w \u017ar\u00f3d\u0142ach). Sealed Classy nie mia\u0142y tyle szcz\u0119\u015bcia \u2013 ukaza\u0142 si\u0119 ich drugi preview [<a href=\"https:\/\/openjdk.java.net\/jeps\/397\">JEP-397<\/a>]. To, co w ich przypadku najbardziej zaskakuje, to nowy syntax, a konkretnie non-sealed \u2013 po raz pierwszy mamy do czynienia z \u0142\u0105cznikiem w s\u0142owie kluczowym. Ciekawe, czy jest to pocz\u0105tek nowego trendu.\n<pre><code>public non-sealed class Square extends Shape { ... }<\/code><\/pre>\nA, i Java ostatecznie (wraz z uko\u0144czeniem prac nad Project Skara) przenosi si\u0119 z Mercuriala na Gita [<a href=\"https:\/\/openjdk.java.net\/jeps\/357\">JEP-357<\/a>], co pozwoli\u0142o uczyni\u0107 GitHuba \u201cupstreamem\u201d ca\u0142ego OpenJDK [<a href=\"https:\/\/openjdk.java.net\/jeps\/369\">JEP-369<\/a>].\n\nTo by\u0142a d\u0142uga sekcja, ale mam nadziej\u0119, \u017ce uda\u0142o nam si\u0119 logicznie uporz\u0105dkowa\u0107 to co przyniesie marzec. Tak naprawd\u0119 na codzienne programowanie wp\u0142yn\u0105 raczej znane ju\u017c rzeczy, kt\u00f3re po prostu osi\u0105gn\u0119\u0142y stabilno\u015b\u0107 (Rekordy i Pattern Matching), ale nowa wersja powinna trafi\u0107 r\u00f3wnie\u017c w bardziej niszowe gusta.\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_610d0e263fa73.png\" alt=\"\" \/>\n\n<figcaption>Typowy u\u017cytkownik oczekuj\u0105cy na Project Panama.<span class=\"-mobiledoc-kit__atom\">\u200c\u200c<\/span><\/figcaption><\/figure>\n<h3 id=\"-r-d-a-\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/openjdk.java.net\/projects\/jdk\/16\/#Schedule\">JDK 16: First Release Candidate<\/a> (tutaj te\u017c znajdziecie odno\u015bniki do wszystkich JEP\u00f3w)<\/li>\n \t<li><a href=\"https:\/\/www.morling.dev\/blog\/talking-to-postgres-through-java-16-unix-domain-socket-channels\/\">Talking to Postgres Through Java 16 Unix-Domain Socket Channels<\/a><\/li>\n \t<li><a href=\"https:\/\/inside.java\/2020\/11\/17\/podcast-007\/\">Inside Java Podcast Episode 7 \u201cThe Vector API\u201d<\/a><\/li>\n \t<li><a href=\"https:\/\/inside.java\/2020\/12\/11\/podcast-009\/\">Inside Java Podcast Episode 9 \u201cProject Panama - The Foreign Memory Access API\u201d<\/a><\/li>\n \t<li><a href=\"https:\/\/inside.java\/2020\/12\/21\/podcast-010\/\">Inside Java Podcast Episode 10 \u201cProject Panama - The Foreign Linker API\u201d<\/a><\/li>\n<\/ul>\n<h2 id=\"2-jfrog-zamyka-bintray-i-jcenter-\">2. <a href=\"https:\/\/jfrog.com\/blog\/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter\/\">JFrog zamyka Bintray i JCenter<\/a><\/h2>\nTeraz b\u0119dzie na smutno.\n\nPodejrzewam, \u017ce ka\u017cdy, na jakim\u015b etapie swojego \u017cycia (a ju\u017c zw\u0142aszcza, je\u015bli pisa\u0142 co\u015b w Androidzie), mia\u0142 okazj\u0119 wpisywa\u0107 do swoich .pom lub .gradle odno\u015bniki do repozytori\u00f3w Bintraya lub JCenter. Te alternatywy dla Maven Central stanowi\u0142y przysta\u0144 dla wersji testowych zale\u017cno\u015bci, niezale\u017cnych projekt\u00f3w. Sprawd\u017acie, czy wasze buildy nie maj\u0105 zale\u017cno\u015bci na JCenter przed 1 lutego 2022. Inaczej mo\u017ce Was spotka\u0107 przykra niespodzianka.\n\nCo ja si\u0119 \u0142udz\u0119, ta informacja i tak zaskoczy wielu developer\u00f3w jak zima drogowc\u00f3w (chyba, \u017ce b\u0119d\u0105 czyta\u0107 nasze JVMowe wtorki, bo na pewno o tym przypomnimy).\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/ezgif-6-daf5ea9448f4.gif\" alt=\"\" width=\"300\" height=\"300\" \/>\n\n<figcaption>A\u017c sobie chyba ustawie jakie\u015b przypomnienie, aby pierwszego lutego za rok obserwowa\u0107 spokojnie jak \u015bwiat p\u0142onie.<\/figcaption><\/figure>\nU\u017cytkownicy Javowego Reddita opracowali <a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/leizur\/hearing_jcenter_is_close_to_an_end_do_you_know\/\">dobr\u0105 list\u0119 alternatyw<\/a>, ale i tak umiera na naszych oczach kawa\u0142ek historii.\n\nPrywata: \u0141ezka zakr\u0119ci\u0142a mi si\u0119 w oku, bo to w\u0142a\u015bnie Bintray jest domem mojego jedynego prawdziwego autorskiego projektu Open-Source. <a href=\"https:\/\/bintray.com\/arturskowronski\/maven\/com.hiddencity.newton\/view\">Newton<\/a>\nby\u0142 warstw\u0105 abstrakcji nad API Beacon\u00f3w BLE w czasach, kiedy Krak\u00f3w znany by\u0142 jako Beacon Valley . Nigdy nie zdoby\u0142 popularno\u015bci, w\u0142a\u015bciwie ci\u0119\u017cko mi powiedzie\u0107 czemu, cho\u0107 podejrzewam, \u017ce je\u015bli mia\u0142by cho\u0107 linijk\u0119 Readme, to by posz\u0142o mu przynajmniej odrobink\u0119 lepiej .\n<h3 id=\"-r-d-a--1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/jfrog.com\/blog\/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter\/\">Into the Sunset on May 1st: Bintray, JCenter, GoCenter, and ChartCenter<\/a><\/li>\n \t<li><a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/leizur\/hearing_jcenter_is_close_to_an_end_do_you_know\/\">Hearing jcenter() is close to an end do you know any good alternative ?<\/a><\/li>\n<\/ul>\n<h2 id=\"3-kotlin-1-4-30-znacznie-wa-niejszy-ni-sugeruje-numeracja-\">3. <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/\">Kotlin 1.4.30 \u2013 znacznie wa\u017cniejszy ni\u017c sugeruje numeracja<\/a><\/h2>\nI na koniec, jak to cz\u0119sto bywa, Kotlin i jego \u015bwie\u017cutkie jeszcze wydanie 1.4.30. O ile zwykle nie informujemy o minorowych wersjach j\u0119zyk\u00f3w, o tyle nowa wersja Kotlina przynosi za sob\u0105 tak\u0105 mnogo\u015b\u0107 interesuj\u0105cych nowo\u015bci, \u017ce a\u017c nie wypada jej pomin\u0105\u0107 w opracowaniu tygodnia. Mo\u017cna j\u0105 de facto traktowa\u0107 jako przedsmak tego, co przynie\u015b\u0107 ma nam Kotlin 1.5. Pami\u0119tacie, jak w <a href=\"https:\/\/blog.vived.io\/jvm-tuesday-23\/\">zesz\u0142ym tygodniu pokazywali\u015bmy Wam Kotlinow\u0105 Roadmap\u0119<\/a>? Ot\u00f3\u017c ju\u017c dzisiaj mamy okazj\u0119 pobawi\u0107 si\u0119 dwoma istotnymi nowo\u015bciami, kt\u00f3re by\u0142y w niej zawarte.\n\nDo nowej wersji j\u0119zyka trafia nowa <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/#compiler\">\u201creprezentacja po\u015brednia\u201d (IR) kodu dla JVMa<\/a>, czyli zdecydowanie najwa\u017cniejszej i najcz\u0119\u015bciej u\u017cywanej wersji, pono\u0107 multiplatformowego Kotlina. Co ciekawe, Jetbrains chwali si\u0119, \u017ce s\u0105 na tyle pewni tego wydania, \u017ce mog\u0105 zarekomendowa\u0107 \u201czabawy\u201d z nowym IRem r\u00f3wnie\u017c na produkcji. A jest si\u0119, czym bawi\u0107. Kompilator Kotlina ma by\u0107 znacznie szybszy (co do tej pory by\u0142o pi\u0119t\u0105 achillesow\u0105 tego j\u0119zyka), a sama reprezentacja odblokowuje dynamiczniejsze nad\u0105\u017canie za zmianami w samej Javie.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/giphy-1-1.gif\" alt=\"\" width=\"720\" height=\"540\" \/>\n\n<figcaption>\u017beby nie by\u0142o, nie uwa\u017cam Kotlina za Zombie, objawia si\u0119 tutaj po prostu moja mi\u0142o\u015b\u0107 do klasycznej Hanna Barbery<\/figcaption><\/figure>\nZa dow\u00f3d, \u017ce tw\u00f3rcy nie rzucaj\u0105 s\u0142\u00f3w na wiatr, niech pos\u0142u\u017cy druga du\u017ca nowo\u015b\u0107. Do \u201cinternali\u201d Kotlina trafiaj\u0105 Rekordy oraz Sealed Classy. Oczywi\u015bcie w wersji eksperymentalnej (\u017cadne z nich nie jest stabilne nawet w JDK, i je\u015bli czytali\u015bcie sekcje o JDK 16, to wiecie, \u017ce w najbli\u017cszym czasie spodziewa\u0107 si\u0119 nale\u017cy tylko Rekord\u00f3w), ale sam fakt, \u017ce ju\u017c teraz mo\u017cna je wypr\u00f3bowa\u0107, dobrze wr\u00f3\u017cy na przysz\u0142o\u015b\u0107. Tw\u00f3rcy obiecuj\u0105, \u017ce trafi\u0105 one do Kotlina w wersji 1.5, a \u00a0jeden z featur\u00f3w j\u0119zyka (Value Classy) doczeka\u0107 si\u0119 ma te\u017c wsparcia dla Projektu Valhalla, gdy ten tylko zago\u015bci w JDK. Ca\u0142o\u015b\u0107 ma doprowadzi\u0107 do interoperatywno\u015bci mi\u0119dzy Jav\u0105 i Kotlinem na niespotykanym wcze\u015bniej poziomie, i co mog\u0119 powiedzie\u0107\u2026\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0e285b295.png\" alt=\"\" \/><\/figure>\nPS: Wspomniane Value Classy doczeka\u0142y si\u0119 jednego z najlepszych publicznych <a href=\"https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/notes\/value-classes.md\">Design Doc\u00f3w<\/a> jaki mia\u0142em okazj\u0119 widzie\u0107 \u2013 Elizarov zaszala\u0142. Nie jest to szybka lektura (pierwsze przej\u015bcie przez ca\u0142o\u015b\u0107 zaj\u0119\u0142o mi prawie 2h, a \u017ceby wszystko zrozumie\u0107 pewnie musia\u0142bym zrobi\u0107 drugie podej\u015bcie). Ale w\u0142a\u015bnie za takie rzeczy uwielbiam otwarto\u015b\u0107 ekosystemu JDK i bardzo ciesz\u0119 si\u0119 z tego, \u017ce ju\u017c nied\u0142ugo Java te\u017c b\u0119dzie na Githubie (Brian Goetz zreszt\u0105 ju\u017c tam jest wraz z <a href=\"https:\/\/github.com\/openjdk\/amber-docs\">docsami do Project Amber<\/a>).\n<h3 id=\"-r-d-a--2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/kotlin-1-4-30-released\/\">Kotlin 1.4.30 Is Released With a New JVM Backend and Language and Multiplatform Features<\/a><\/li>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/the-jvm-backend-is-in-beta-let-s-make-it-stable-together\/\">The New JVM IR Backend Is in Beta: Let\u2019s Make It Stable Together<\/a><\/li>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/02\/new-language-features-preview-in-kotlin-1-4-30\/\">New Language Features Preview in Kotlin 1.4.30<\/a><\/li>\n \t<li><a href=\"https:\/\/github.com\/Kotlin\/KEEP\/blob\/master\/notes\/value-classes.md\">Design Notes on Kotlin Value Classes<\/a><\/li>\n \t<li><a href=\"https:\/\/github.com\/openjdk\/amber-docs\">github.com\/openjdk\/amber-docs<\/a><\/li>\n<\/ul>"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10184","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=10184"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10184\/revisions"}],"predecessor-version":[{"id":10587,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10184\/revisions\/10587"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}