{"id":10093,"date":"2021-08-24T13:50:19","date_gmt":"2021-08-24T11:50:19","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/"},"modified":"2022-09-19T13:10:49","modified_gmt":"2022-09-19T11:10:49","slug":"jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/","title":{"rendered":"JVM Tuesday vol. 52 Podsumowanie roku \/ JVMowy Iceberg \u2744\ufe0f \ud83c\udfd4"},"content":{"rendered":"<h2 id=\"-jestesmy-z-wami-od-roku\" data-num=1>\ud83e\udd73 Jeste\u015bmy z Wami od roku! \ud83e\udd73<\/h2>\n<p>Od 52 tygodni (nie zgubili\u015bmy po drodze ani jednego \ud83e\udd18) informujemy Was o wszystkim, co dzieje si\u0119 w JVMowym ekosystemie. Postanowili\u015bmy z tej okazji troch\u0119 po\u015bwi\u0119towa\u0107 i podsumowa\u0107 ostatnie 12 miesi\u0119cy. Wiemy, \u017ce takie podsumowania zwykle ukazuj\u0105 si\u0119 w grudniu, ale tym bardziej mo\u017ce kto\u015b b\u0119dzie chcia\u0142 sobie zrobi\u0107 taki przegl\u0105d w\u0142a\u015bnie teraz.<\/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_6128bb084c4bd.png\" alt=\"\" \/><\/figure>\n<p>Lista jest bardzo \u201copinionated\u201d i stanowi przegl\u0105d najbardziej interesuj\u0105cych wydarze\u0144, kt\u00f3re dotkn\u0119\u0142y spo\u0142eczno\u015b\u0107 od sierpnia 2020. Potraktujcie wi\u0119c ca\u0142o\u015b\u0107 jako \u201cThe Best Of JVM Tuesday\u2026 so far\u201d &#8211; niekt\u00f3rzy stali czytelnicy mog\u0105 np. pami\u0119ta\u0107 niekt\u00f3re memiszcza. Ca\u0142o\u015b\u0107 postanowi\u0142em przedstawi\u0107 w formie g\u00f3ry lodowej (je\u015bli nie wiecie, o co chodzi, odsy\u0142am do <a href=\"https:\/\/knowyourmeme.com\/memes\/iceberg-tiers-parodies\">knowyourmemes<\/a>) &#8211; zawsze mi si\u0119 marzy\u0142 w\u0142asny \u201ciceberg\u201d. Zatem bez przed\u0142u\u017cania&#8230;<\/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_6128bb0b694e1.png\" alt=\"\" \/><\/figure>\n<h2 id=\"nowe-wydania-poszczegolnych-projektow\" data-num=2>Nowe wydania poszczeg\u00f3lnych projekt\u00f3w<\/h2>\n<p>W ci\u0105gu ostatniego roku wi\u0119kszo\u015b\u0107 najwa\u017cniejszych graczy w ekosystemie wyda\u0142a jedn\u0105 now\u0105 wersj\u0119 swojego oprogramowania. Oto (naszym zdaniem) najwa\u017cniejsze z nich:<\/p>\n<ul>\n<li>Java <a href=\"https:\/\/www.infoworld.com\/article\/3534133\/jdk-15-the-new-features-in-java-15.html\">15<\/a> i <a href=\"https:\/\/vived.io\/jvm-tuesday-vol-29\/\">16<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">Kotlin 1.5<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-38\/\">Scala 3<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-45-2\/\">Quarkus 2.0<\/a><\/li>\n<li>Spring Boot <a href=\"https:\/\/spring.io\/blog\/2020\/11\/12\/spring-boot-2-4-0-available-now\">2.4<\/a> i <a href=\"https:\/\/vived.io\/jvm-tuesday-vol-39\/\">2.5<\/a><\/li>\n<li><a href=\"https:\/\/vertx.io\/blog\/eclipse-vert-x-4-released\/\">Vert.x 4.0<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-34\/\">Gradle 7.0<\/a><\/li>\n<li><a href=\"https:\/\/maarten.mulders.it\/2020\/11\/whats-new-in-maven-4\/\">Maven 4.0<\/a><\/li>\n<\/ul>\n<p>Nie b\u0119dziemy tutaj opisywa\u0107 ka\u017cdego z nich, bo ka\u017cda premiera dosta\u0142a du\u017cy opis w ramach kt\u00f3rej\u015b z naszych wcze\u015bniejszych edycji, skrz\u0119tnie podlinkowanych powy\u017cej. Szczeg\u00f3lnie polecamy zapozna\u0107 si\u0119 z now\u0105 Scal\u0105 &#8211; jest to pierwsze du\u017ce wydanie od lat i efekt pracy wielu in\u017cynier\u00f3w (w tym z naszego zespo\u0142u w VirtusLab).<\/p>\n<p>W ci\u0105gu ostatnich 12 miesi\u0119cy zrobili\u015bmy te\u017c pe\u0142ne podsumowanie stanu, w kt\u00f3rym znajduj\u0105 si\u0119 <a href=\"https:\/\/vived.io\/jvm-tuesday-vol-28\/\">Reaktywne Frameworki<\/a>. Bardzo polecamy, nie zestarza\u0142o si\u0119 zbyt mocno<\/p>\n<hr \/>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0c055ce.png\" alt=\"\" \/><\/figure>\n<h2 id=\"google-wygralo-w-sadzie-z-oraclem-w-procesie-o-uzycie-api-javy-na-androidzie\" data-num=3>Google wygra\u0142o w s\u0105dzie z Oraclem w procesie o u\u017cycie API Javy na Androidzie \u200d\u2696\ufe0f<\/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_6128bb0c96914.png\" alt=\"\" \/><\/figure>\n<p>Po dziesi\u0119ciu latach, Google wygra\u0142o z Oraclem proces o u\u017cycie API Javy na popularnym Androidzie. Dla tych, kt\u00f3rzy nie wiedz\u0105 &#8211; \u201czielony robocik\u201d nie uruchamia aplikacji w ramach maszyny wirtualnej Javy, ale jego API dla programist\u00f3w jest kopi\u0105 tego javowego, za co Oracle \u017c\u0105da\u0142o od Google wysokiego odszkodowania z tytu\u0142u \u0142amania praw autorskich.<\/p>\n<p>Wyrok jest zreszt\u0105 wa\u017cny dla ca\u0142ej bran\u017cy, gdy\u017c osobom chc\u0105cym stworzy\u0107 alternatywne implementacje danych API, daje do r\u0105k do\u015b\u0107 dobr\u0105 amunicje. Nale\u017cy pami\u0119ta\u0107 jednak, \u017ce wyrok nie jest \u201ckonkluzywny\u201d, co do faktu, \u017ce API jako takiego nie mo\u017cna chroni\u0107 prawem autorskim &#8211; s\u0105d orzek\u0142, \u017ce kompatybilne API wchodzi w definicje tak zwanego \u201cdozwolonego u\u017cycia\u201d. Jednocze\u015bnie ze wzgl\u0119du na dzia\u0142aj\u0105ce w USA prawo kazusu, prawdopodobnie minie troch\u0119 zanim ktokolwiek spr\u00f3buje wytoczy\u0107 podobn\u0105 spraw\u0119.<\/p>\n<h3 id=\"przeczytaj-wi%C4%99cej\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-33\/\">JVM Tuesday vol. 33<\/a><\/li>\n<\/ul>\n<h2 id=\"kotlin-stal-sie-szalenie-otwarty-na-spolecznosc\" data-num=4>Kotlin sta\u0142 si\u0119 szalenie otwarty na spo\u0142eczno\u015b\u0107<\/h2>\n<p>Chocia\u017c do masowej \u015bwiadomo\u015bci Kotlin przebi\u0142 si\u0119 nieco p\u00f3\u017aniej, to jednak swoj\u0105 premier\u0119 j\u0119zyk JetBrains mia\u0142 dekad\u0119 temu. W celu odpowiedniego uczczenia tak znamienitej rocznicy, tw\u00f3rcy Intellij postanowili nakr\u0119ci\u0107\u2026 dokument.<\/p>\n<p>Rozw\u00f3j Kotlina og\u00f3lnie naprawd\u0119 interesuj\u0105co si\u0119 obserwuje. Roman Elizarov, lead projektu, w fantastyczny spos\u00f3b dzieli si\u0119 decyzjami projektowymi stoj\u0105cymi za poszczeg\u00f3lnymi featurami (szczeg\u00f3lnie jego talki na temat korutyn i structured concurrency nale\u017c\u0105 do moich ulubionych w temacie j\u0119zyk\u00f3w programowania). Jak bardzo otwarty jest to zesp\u00f3\u0142 niech \u015bwiadczy fakt, \u017ce wraz z premier\u0105 wersji 1.5 j\u0119zyka, pojawi\u0142o si\u0119 na Redditcie kotlinowe AMA, w kt\u00f3rym tw\u00f3rcy j\u0119zyka odpowiedzieli na mas\u0119 pyta\u0144 spo\u0142eczno\u015bci. To nie jedyne tego typu dzia\u0142anie &#8211; zesp\u00f3\u0142 da\u0142 te\u017c u\u017cytkownikom mo\u017cliwo\u015b\u0107 g\u0142osowania na nowe featury, nad kt\u00f3rymi b\u0119d\u0105 pracowa\u0107 w przysz\u0142o\u015bci\u2026 a tak\u017ce na te, kt\u00f3rych ludzie sugeruj\u0105 unika\u0107 w przysz\u0142ych wersjach Kotlina.<\/p>\n<div class=\"embed-responsive embed-responsive-16by9\"><iframe loading=\"lazy\" title=\"SouthPark &#039;&#039;Vote or Die&#039;&#039; HD Clip\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/9pSh0VAVYn4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<p>W ci\u0105gu roku dosz\u0142o te\u017c do wielokrotnych aktualizacji Roadmapy Kotlina, kt\u00f3ra to pozwala \u015bledzi\u0107 kierunek, w kt\u00f3rym ewoluuje j\u0119zyk. Wspominaj\u0105c o ewolucji, warto przypomnie\u0107 \u017ce Kotlin postanowi\u0142 nieco skopiowa\u0107 cykl wyda\u0144 Javy, stawiaj\u0105c na przewidywalno\u015b\u0107 kolejnych edycji. Teraz nowa \u201cmajor\u201d wersja (w koltinowej nomenklaturze 1.x) b\u0119dzie wydawana raz na p\u00f3\u0142 roku, nie ogl\u0105daj\u0105c si\u0119 na to, jakie funkcjonalno\u015bci s\u0105 gotowe.<\/p>\n<p>W tej beczce miodu jest te\u017c \u0142y\u017cka dziegciu. Kotlin sta\u0142 si\u0119 ostatnimi czasy wr\u0119cz definicj\u0105 Vendor Lock-Inu. JetBrains postanowi\u0142o zerwa\u0107 wszelkie pozory i wcze\u015bniej niezale\u017cnie rozwijany plugin do j\u0119zyka, sta\u0142 si\u0119 integraln\u0105 cz\u0119\u015bci\u0105 Intellija.<\/p>\n<h3 id=\"przeczytaj-wi%C4%99cej-1\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-23\/\">JVM Tuesday vol. 23<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-33\/\">JVM Tuesday vol. 33<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-39\/\">JVM Tuesday vol. 39<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-41\/\">JVM Tuesday vol. 41<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-43\/\">JVM Tuesday vol. 43<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-50\/\">JVM Tuesday vol. 43<\/a><\/li>\n<\/ul>\n<hr \/>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0d4e70f.png\" alt=\"\" \/><\/figure>\n<h2 id=\"oracle-tez-zaczelo-dobrze-grac-z-community\" data-num=5>Oracle te\u017c zacz\u0119\u0142o dobrze gra\u0107 z Community<\/h2>\n<p>Oracle bardzo zaczyna dba\u0107 o komunikacj\u0119 z programistami. Prowadz\u0105 stron\u0119 Inside Java, agreguj\u0105c\u0105 zmiany w \u015bwiecie JVMowym. Dodatkowo, wprost uwielbiam towarzysz\u0105cy blogowi podcast. M\u00f3wi si\u0119 \u017ce w dzisiejszych czasach nie da si\u0119 ju\u017c publikowa\u0107 podcastu na \u015brednim poziomie technicznym i liczy\u0107 na pos\u0142uch, ale ten od Oracle udowadnia, \u017ce w dalszym ci\u0105gu \u201ccontent is the King\u201d. Jako\u015b\u0107 nagra\u0144 jest hmmm\u2026 akceptowalna, jednak ca\u0142o\u015b\u0107 zawiera najbardziej \u201cmi\u0119sne\u201d rozmowy na temat j\u0119zyka, na jakie mo\u017cna natkn\u0105\u0107 si\u0119 w sieci. Wynika to w du\u017cej mierze z doboru go\u015bci. \u00a0O ile wi\u0119kszo\u015b\u0107 innych tego typu kana\u0142\u00f3w operuje zwykle na wiedzy z \u201cdrugiej r\u0119ki\u201d, Inside Java zaprasza do siebie tw\u00f3rc\u00f3w JVM, kt\u00f3rzy okazuj\u0105 si\u0119 by\u0107 naprawd\u0119 interesuj\u0105cymi rozm\u00f3wcami.<\/p>\n<p>Jakby tego by\u0142o ma\u0142o Oracle, ustami Nicolai Parlog, zacz\u0119\u0142o prowadzi\u0107 seri\u0119 wideo Inside Java Newscast, kt\u00f3re mo\u017cecie traktowa\u0107 jako alternatyw\u0119 dla naszych post\u00f3w publikowanych w ramach Weekly (aczkolwiek my si\u0119gamy nieco szerzej &#8211; seria Oracle to newsy stricte zwi\u0105zane z JVMem). Nowym rozwijanym projektem jest za\u015b JEP Cafe &#8211; opisuj\u0105cych nowopowsta\u0142e JEPy.<\/p>\n<h3 id=\"przeczytaj-wi%C4%99cej-2\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-45\/\">JVM Tuesday vol. 44<\/a><\/li>\n<\/ul>\n<h2 id=\"java-trafila-na-githuba\" data-num=6>Java trafi\u0142a na GitHuba<\/h2>\n<p>Mo\u017cna by powiedzie\u0107 &#8211; nareszcie. Wraz z implementacj\u0105 JEP 369 (Migrate to GitHub), kod \u017ar\u00f3d\u0142owy Javy sta\u0142 si\u0119 znacznie \u0142atwiej dost\u0119pny dla rzeszy zainteresowanych nim programist\u00f3w. Wprawdzie nie oby\u0142o si\u0119 bez kontrowersji (nie ka\u017cdemu podoba si\u0119 przej\u015bcie na platform\u0119, kt\u00f3rej w\u0142a\u015bcicielem jest Microsoft), to jednak teraz b\u0119dzie znacznie \u0142atwiej \u015bledzi\u0107 zmiany w kodzie OpenJDK. Przez lata swojej dominacji, Github sta\u0142 si\u0119 ekosystemem r\u00f3\u017cnych narz\u0119dzi, a sam Git te\u017c jest znacznie popularniejszy ni\u017c Mercurial, kt\u00f3ry by\u0142 do tej pory jedynym wspieranym przez Jav\u0119 narz\u0119dziem kontroli wersji.<\/p>\n<h2 id=\"java-rozpycha-sie-w-swiecie-uczenia-maszynowego\" data-num=7>Java rozpycha si\u0119 w \u015bwiecie Uczenia Maszynowego<\/h2>\n<p>Java jest bardzo uniwersalnym j\u0119zykiem, ale s\u0105 pewne kategorie problem\u00f3w, z kt\u00f3rych zosta\u0142a skutecznie wyparta przez \u201ckonkurencje\u201d. We\u017amy na przyk\u0142ad takie uczenie maszynowe. W ostatnich latach nie mia\u0142a nawet startu do Pythona. Sytuacja powoli wydaje si\u0119 zmienia\u0107. Wraz z premier\u0105 Javy 15, Oracle (nieco cichaczem) opublikowa\u0142 Tribuo, bibliotek\u0119 umo\u017cliwiaj\u0105c\u0105 tworzenie silnie typowanych modeli MLowych, LinkedIn za\u015b postanowi\u0142 wypu\u015bci\u0107 swoje w\u0142asne rozwi\u0105zanie &#8211; Dagli.<\/p>\n<p>Czym r\u00f3\u017cni si\u0119 Dagli od Tribuo? Rozwi\u0105zania w za\u0142o\u017ceniach (zastosowania produkcyjne, wspomniane ju\u017c typy) s\u0105 do siebie bardzo podobne. Co wyr\u00f3\u017cnia rozwi\u0105zanie LinkedIn to fakt, \u017ce jego tw\u00f3rcy wzi\u0119li \u201cna tapet\u201d nieco wi\u0119ksz\u0105 klas\u0119 problem\u00f3w &#8211; zamiast skupia\u0107 si\u0119 na samych modelach, udost\u0119pniaj\u0105 mo\u017cliwo\u015b\u0107 zintegrowania pe\u0142nego pipeline, opisuj\u0105cego kolejne transformacje danych. Dodatkowo dostarczaj\u0105 te\u017c ca\u0142y zestaw gotowych rozwi\u0105za\u0144, kt\u00f3re od razu mo\u017cna wykorzysta\u0107 w swojej aplikacji.<\/p>\n<p>W tym temacie nie pr\u00f3\u017cnowa\u0142 te\u017c z reszt\u0105 team JetBrains, tworz\u0105c w\u0142asn\u0105 bibliotek\u0119. KotlinDL, bo o niej mowa, jest odpowiednikiem pythonowego Kerasa &#8211; bibliotek\u0105 stanowi\u0105c\u0105 wrapper nad TensorFlow, udost\u0119pniaj\u0105c\u0105 API pozwalaj\u0105ce na u\u017cywanie modeli uczenia maszynowego r\u00f3wnie\u017c programistom, kt\u00f3rzy nie posiadaj\u0105 typowo Data Science\u2019oweg do\u015bwiadczenia.<\/p>\n<hr \/>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0de7704.png\" alt=\"\" \/><\/figure>\n<h2 id=\"java-zaczela-na-powaznie-wspierac-procesory-arm\" data-num=8>Java zacz\u0119\u0142a na powa\u017cnie wspiera\u0107 procesory ARM<\/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_6128bb0e90494.png\" alt=\"\" \/><\/figure>\n<p>\u200b\u200bPraktycznie na ka\u017cdej li\u015bcie najwa\u017cniejszych wydarze\u0144 technologicznych 2020 roku musia\u0142 znale\u017a\u0107 si\u0119 niesamowity wr\u0119cz sukces procesor\u00f3w ARM. G\u0142\u00f3wnie dzi\u0119ki Apple i ich niesamowitym procesorem M1 (dlaczego s\u0105 takie szybkie? <a href=\"https:\/\/debugger.medium.com\/why-is-apples-m1-chip-so-fast-3262b158cba2\">Tutaj znajdziecie bardzo fajny artyku\u0142 na ten temat<\/a>), ale na podobny ruch zdecydowa\u0142y si\u0119 te\u017c inne firmy. Procesory ARM staj\u0105 si\u0119 coraz bardziej realn\u0105 alternatyw\u0105 dla programist\u00f3w JVM &#8211; Amazon oferuje instancje chmurowe z tym typem procesor\u00f3w, Microsoft opracowa\u0142 wersj\u0119 OpenJDK na Windows uruchamianym na tej w\u0142a\u015bnie architekturze, a Oracle postanowi\u0142o udost\u0119pni\u0107 w ramach swojej chmury serwery ARM.<\/p>\n<h3 id=\"przeczytaj-wi%C4%99cej-3\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-22\/\">JVM Tuesday vol. 22<\/a><\/li>\n<\/ul>\n<h2 id=\"renesans-desktopowych-frameworkow-pisanych-pod-katem-jvm\" data-num=9>Renesans desktopowych framework\u00f3w pisanych pod k\u0105tem JVM<\/h2>\n<p>Zaczynam si\u0119 powoli zastanawia\u0107, czy 2020 nie jest rokiem, kt\u00f3ry zapisze si\u0119 w historii (ze wzgl\u0119du na brak innych wa\u017cnych dla ludzko\u015bci wydarze\u0144) jako ten, kt\u00f3ry rozpocz\u0105\u0142 koniec panowania Electrona. Rozwi\u0105zanie to charakteryzuje si\u0119 tym, \u017ce nie lubi go w zasadzie nikt\u2026 poza programistami, kt\u00f3rzy jednym kodem s\u0105 w stanie stworzy\u0107 \u201cnatywn\u0105\u201d wersj\u0119 aplikacji na wszystkie platformy. Jednak nawet my chyba powoli uczymy si\u0119, \u017ce tego typu aplikacje nie s\u0105 dobrym rozwi\u0105zaniem &#8211; bardzo daleko im do uczucia natywno\u015bci, dodatkowo znany jest fakt, \u017ce ile RAMu znajd\u0105, tyle zjedz\u0105. St\u0105d te\u017c rodz\u0105 si\u0119 powoli alternatywy, w\u015br\u00f3d kt\u00f3rych przoduje Apple z Catalystem. \u0141okciami zaczyna przepycha\u0107 si\u0119 te\u017c ekipa z JetBrains, wypuszczaj\u0105c na pocz\u0105tku wakacji nie tylko stabilne Jetpack Compose dla Androida, ale r\u00f3wnie\u017c wersje projektu dla Web oraz Desktopa &#8211; od niedawna zwanych jako Kotlin Multiplatform.<\/p>\n<p>Opr\u00f3cz tego stworzyli oni te\u017c Skij\u0119 &#8211; odpowiednik przegl\u0105darkowego Canvas API, stanowi\u0105cym alternatyw\u0119 dla wys\u0142u\u017conego Graphics2D. Stworzenie tego typu rozwi\u0105zania od zera by\u0142oby bardzo trudne, dlatego Skija &#8222;buduje na barkach giganta\u201d &#8211; biblioteki Skia, kt\u00f3ra s\u0142u\u017cy m.in. jako silnik interfejsu Chrome.<\/p>\n<p>Ca\u0142y obraz dope\u0142nia si\u0119 te\u017c w Projekcie Lanai. W ramach prac nad Lanai, Jetbrains wsp\u00f3\u0142pracowa\u0142 z samym Oracle, a celem projektu by\u0142o stworzenie nowoczesnej metody renderowania obiekt\u00f3w interfejsu na macOS. OpenGL, u\u017cywany przez Swinga, nie jest ju\u017c aktywnie wspierany przez komputery Apple &#8211; obecnie obowi\u0105zuj\u0105cym tam rozwi\u0105zaniem jest Metal, w\u0142asno\u015bciowe API, cechuj\u0105ce si\u0119 wysok\u0105 wydajno\u015bci\u0105 i rozwijan\u0105 wraz z kolejnymi wersjami systemu. Lanai wyj\u015b\u0107 ma ju\u017c za moment, wraz z Jav\u0105 17. Teraz stoj\u0105cy za nim ludzie planuj\u0105 za\u015b Projekt Wakefield &#8211; podobn\u0105 inicjatyw\u0119, tym razem dla Linuxa i serwera wy\u015bwietleniowego Wayland.<\/p>\n<h3 id=\"przeczytaj-wi%C4%99cej-4\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-25\/\">JVM Tuesday vol. 25 <\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-27\/\">JVM Tuesday vol. 27<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">JVM Tuesday vol. 37<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">JVM Tuesday vol. <\/a>51<\/li>\n<\/ul>\n<h2 id=\"adoptopenjdk-zmienilo-sie-w-adoptium-i-trafilo-pod-skrzydla-eclipse\" data-num=10>AdoptOpenJDK zmieni\u0142o si\u0119 w Adoptium i trafi\u0142o pod skrzyd\u0142a Eclipse<\/h2>\n<p>AdoptOpenJDK to projekt, kt\u00f3ry powsta\u0142 jako efekt wysi\u0142k\u00f3w spo\u0142eczno\u015bci walcz\u0105cej o \u201cwoln\u0105\u201d implementacje JDK. W ci\u0105gu ostatnich 12 miesi\u0119cy, ostatecznie trafi\u0142 on pod skrzyd\u0142a Eclipse Foundation. Efekt, po ponad rocznych, stara\u0144 skwitowany zosta\u0142 przechrzczeniem projektu na Eclipse Adoptium (JDK jest znakiem towarowym nale\u017c\u0105cym do Oracle) oraz powstanie Adoptium Working Group.<\/p>\n<p>Bior\u0105c pod uwag\u0119 fakt, \u017ce Oracle obecnie udziela wy\u0142\u0105cznie sze\u015bciu miesi\u0119cy wsparcia, dla ka\u017cdego nowego wydania, Adoptium jest krytycznym projektem dla ca\u0142ej spo\u0142eczno\u015bci, nie tylko Javy, ale r\u00f3wnie\u017c innych JVMowych j\u0119zyk\u00f3w. Ca\u0142y projekt fundowany jest przez mnogo\u015b\u0107 partner\u00f3w &#8211; Alibaba Cloud, Huawei, IBM, iJUG (stowarzyszenie niemieckich JUG\u00f3w), Karakun AG, Microsoft, New Relic oraz Red Hat b\u0119d\u0105 bra\u0107 udzia\u0142 w rozwoju otwartej wersji Javy. W ramach negocjacji uda\u0142o si\u0119 te\u017c otrzyma\u0107 dost\u0119p do javowego Technology Compatibility Kit, \u201cwywalczonego\u201d od Oracle.<\/p>\n<p>Ostatecznie, w wyniku prac grupy stworzone zosta\u0142o Eclipse Temurin &#8211; oficjalny build JDK, kt\u00f3ry mo\u017ce zosta\u0107 u\u017cyty jako \u201cbaza\u201d przez ca\u0142\u0105 spo\u0142eczno\u015b\u0107 i wszystkich tych, kt\u00f3rzy chc\u0105 stworzy\u0107 w\u0142asny wariant JDK.<\/p>\n<h3 id=\"przeczytaj-wi%C4%99cej-5\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-31\/\">JVM Tuesday vol. 31<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-34\/\">JVM Tuesday vol. 34<\/a><\/li>\n<\/ul>\n<hr \/>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0fe0f26.png\" alt=\"\" \/><\/figure>\n<h2 id=\"security-manager-usuwany-z-javy-nie-bez-kontrowersji\" data-num=11>Security Manager usuwany z Javy &#8211; nie bez kontrowersji<\/h2>\n<p>JEP 411: Deprecate the Security Manager for Removal przyni\u00f3s\u0142 to, co programi\u015bci lubi\u0105 najbardziej &#8211; usuwanie kodu. No, mo\u017ce niekoniecznie usuwanie, ale deprekracja to w ko\u0144cu pierwszy krok ku pozbyciu si\u0119 nadmiarowego balastu. A m\u00f3wimy tutaj o bala\u015bcie dosy\u0107 wiekowym &#8211; Security Manager swoje korzenie ma jeszcze w pierwszym wydaniu Javy.<\/p>\n<p>Jego g\u0142\u00f3wnym celem by\u0142o (i w zasadzie ci\u0105gle jest) mo\u017cliwo\u015b\u0107 granularnego sterowania uprawnieniami aplikacji uruchamianych w ramach JVM. Jest to opcja swoistej piaskownicy, pozwalaj\u0105cej np. ograniczy\u0107 dost\u0119p do systemu plik\u00f3w albo zablokowa\u0107 wykonanie komend pokroju System.exit() &#8211; do tego u\u017cywaj\u0105 go np. serwery aplikacyjne. Jego u\u017cycie szczeg\u00f3lnie istotne by\u0142o w epoce, gdy aplikacje javowe cz\u0119sto by\u0142y np. pobierane z sieci w formie aplet\u00f3w (kt\u00f3re r\u00f3wnie\u017c uleg\u0142y deprekacji w zesz\u0142ym roku)<\/p>\n<p>Na wie\u015b\u0107 o tych planach, lista mailingowa JDK zosta\u0142a wr\u0119cz zalana krytyk\u0105 JEP 411. Tw\u00f3rcom Javy zarzucane by\u0142o lenistwo, brak wypracowania sensownych alternatyw (innych ni\u017c &#8222;przykro nam, napisz sobie Agenta do maszyny wirtualnej&#8221;) &#8211; szczeg\u00f3lnie aktywnym dyskutantem jest Reinier Zwitserloot, jeden z tw\u00f3rc\u00f3w Lomboka. Z drugiej strony w rozmowie bierze udzia\u0142 m.in. przywo\u0142any w poprzedniej edycji Ron Pressler czy Alex Bateman, kt\u00f3rzy odbijaj\u0105 pi\u0142eczk\u0119. Zarzucali oni krytykom, \u017ce o ile tak naprawd\u0119 wiele ich argumentum-at-securitum jest do\u015b\u0107 trafnych, to w realnym \u015bwiecie nikt nie zwraca na przywo\u0142ywane aspekty uwagi &#8211; typu sandboxowanie u\u017cycia bibliotek zewn\u0119trznych.<\/p>\n<p>Ostatecznie w nieco tylko zmienionej formie JEP 411 trafi do Javy 17.<\/p>\n<h3 id=\"przeczytaj-wi%C4%99cej-6\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">JVM Tuesday vol. 37<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-38\/\">JVM Tuesday vol. 38<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-41\/\">JVM Tuesday vol. 41<\/a><\/li>\n<\/ul>\n<h2 id=\"microsoft-ostro-zaangazowal-sie-w-rozwoj-javy\" data-num=12>Microsoft ostro zaanga\u017cowa\u0142 si\u0119 w rozw\u00f3j Javy<\/h2>\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_6128bb107a4e4.png\" alt=\"\" \/><figcaption>Powy\u017csze ju\u017c nieaktualne\u00a0<\/figcaption><\/figure>\n<p>Dla os\u00f3b \u015bledz\u0105cych dzia\u0142ania Microsoftu z pewno\u015bci\u0105 nie b\u0119dzie tajemnic\u0105, \u017ce firma z Redmond do\u015b\u0107 mocno inwestuje ostatnio w Jav\u0119. Po dekadach stara\u0144 (to jest naprawd\u0119 d\u0142uuuga historia), wreszcie wypu\u015bci\u0142a ona w\u0142asny wariant OpenJDK. Na razie dost\u0119pna jest wersja JDK 11, ale do wczesnego wgl\u0105du trafi\u0142a te\u017c \u201cszesnastka\u201d. Ca\u0142o\u015b\u0107 oparta jest o Eclipse Adoptium, kt\u00f3rego Microsoft jest sponsorem. Stan\u0105 si\u0119 one oficjalnym rozwi\u0105zaniem u\u017cywanym w ramach platformy Azure (do tej pory u\u017cywane by\u0142y warianty JDK tworzone przez Zulu). Dla tw\u00f3rc\u00f3w oprogramowania o niszowych gustach z pewno\u015bci\u0105 istotnym faktem b\u0119dzie to, \u017ce microsoftowa Java wydana zostanie r\u00f3wnie\u017c na procesory ARM &#8211; zar\u00f3wno AARch64 jak i M1.<\/p>\n<p>Microsoft stworzy\u0142 tak\u017ce GCToolkit. Jest to zestaw bibliotek s\u0142u\u017c\u0105cych do analizy log\u00f3w Garbage Collectora. Umo\u017cliwia on \u201cpr\u00f3bkowanie\u201d GC i udost\u0119pnia interfejs API do odpowiednio wygenerowanych agregat. Pozwala to u\u017cytkownikowi na tworzenie z\u0142o\u017conych analiz stanu pami\u0119ci JVM.<\/p>\n<p>Nie wiem, czy pami\u0119tacie, ale Microsoft ma te\u017c w\u0142asne \u201cIDE\u201d dla Javy, je\u015bli tak mo\u017cna nazwa\u0107 zestaw plugin\u00f3w do Visual Studio Code. Jego kolejne aktualizacje pojawiaj\u0105 si\u0119 w regularnych, miesi\u0119cznych odst\u0119pach i stanowi\u0105 intryguj\u0105c\u0105 alternatyw\u0119 dla IntelliJ.<\/p>\n<h3 id=\"przeczytaj-wi%C4%99cej-7\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-40\/\">JVM Tuesday vol. 40<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-40\/https:\/\/blog.vived.io\/jvm-tuesday-vol-50\/\">JVM Tuesday vol. 50<\/a><\/li>\n<\/ul>\n<hr \/>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb10d361c.png\" alt=\"\" \/><\/figure>\n<h2 id=\"project-loom-dalej-sie-rozwija-wzbudzajac-pewne-kontrowersje\" data-num=13>Project Loom dalej si\u0119 rozwija, wzbudzaj\u0105c pewne kontrowersje<\/h2>\n<p>O Projekcie Loom, maj\u0105cym wprowadzi\u0107 Kontynuacje do maszyny wirtualnej Javy, powiedziano ju\u017c naprawd\u0119 du\u017co. W ci\u0105gu ostatnich dwunastu miesi\u0119cy najciekawsz\u0105 dyskusj\u0119 wzbudzi\u0142 jednak, moim zdaniem, Greg Wilkins (Project Lead znanego wszystkim Jetty\u2019ego)<\/p>\n<p>Postanowi\u0142 on przygotowa\u0107 testy Early Access buildu Projektu Loom, w celu zweryfikowania, na ile obietnice jego tw\u00f3rc\u00f3w maj\u0105 odzwierciedlenie w realiach. Na pierwszy ogie\u0144 posz\u0142a mo\u017cliwo\u015bci stworzenia miliona r\u00f3wnocze\u015bnie istniej\u0105cych r\u00f3wnoleg\u0142ych w\u0105tk\u00f3w. Efekt jest hmmm\u2026 po\u0142owiczny. Pisz\u0105c w skr\u00f3cie, nie ma problemu ze stworzeniem w\u0105tk\u00f3w jako takich, ale za wiele to si\u0119 w nich nie zrobi &#8211; nawet \u015bredniej wielko\u015bci Stacktrace (1000 operacji) per w\u0105tek szybko udowadnia, \u017ce RAM nie jest z gumy. Tak\u017ce o ile rzeczywi\u015bcie istnieje mo\u017cliwo\u015b\u0107 stworzenia miliona w\u0105tk\u00f3w, to styl programistyczny w nich u\u017cyty musi by\u0107 drastycznie inny (np. poprzez mocne ograniczenie bibliotek zewn\u0119trznych, kt\u00f3re potrafi\u0105 bardzo stacktrace wyd\u0142u\u017ca\u0107)<\/p>\n<p>Ze wzgl\u0119du na mocno krytyczny charakter posta, pojawi\u0142a si\u0119 do niego masa komentarzy, zar\u00f3wno na Reddicie (gdzie <a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/kmn6m3\/do_looms_claims_stack_up_part_1_millions_of\/\">Ron Pressler odpiera\u0142 zarzuty<\/a>) jak i na li\u015bcie mailngowej OpenJDK, gdzie znowu ca\u0142y temat <a href=\"https:\/\/mail.openjdk.java.net\/pipermail\/loom-dev\/2021-January\/001976.html\">komentowa\u0142 Alan Bateman<\/a>. Ca\u0142a dyskusja jest r\u00f3wnie frapuj\u0105ca jak wspomniane artyku\u0142y.<\/p>\n<h3 id=\"przeczytaj-wi%C4%99cej-8\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-monday-vol-20\/\">JVM Tuesday vol. 20<\/a><\/li>\n<\/ul>\n<h2 id=\"jfrog-zamyka-bintray-i-jcenter\" data-num=14>JFrog zamyka Bintray i JCenter \ud83d\udc38<\/h2>\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<h3 id=\"przeczytaj-wi%C4%99cej-9\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-24\/\">JVM Tuesday vol. 24<\/a><\/li>\n<\/ul>\n<h2 id=\"wydano-nowa-wersje-microprofile\" data-num=15>Wydano now\u0105 wersj\u0119 Microprofile<\/h2>\n<p>Wprawdzie mia\u0142o nie by\u0107 o poszczeg\u00f3lnych wydaniach, ale dla niszowych, a istotnych technologii robimy tu wyj\u0105tek (takich wyj\u0105tk\u00f3w b\u0119dzie jeszcze par\u0119).<\/p>\n<p>Pewnie wi\u0119kszo\u015bci z Was obi\u0142a si\u0119 o uszy nazwa Microprofile, jednak prawdziwie doceni\u0107 go \u00a0b\u0119d\u0105 mieli okazj\u0119 tylko Ci, kt\u00f3rzy w swojej karierze pracowalimieli okazj\u0119 pracowa\u0107 z Jav\u0105 EE, zw\u0142aszcza w okresie, gdy bran\u017ca zacz\u0119\u0142a robi\u0107 ma\u015blane oczy od konceptu dzi\u015b znanego jako Mikroserwisy. Java EE posiada\u0142a ju\u017c koncept profili, ale by\u0142y to profile \u201cci\u0119\u017ckie\u201d i \u201cjeszcze ci\u0119\u017csze\u201d, na pewno nic co da\u0142o okre\u015bli\u0107 si\u0119 s\u0142owem \u201cmikro\u201d. Postanowiono wi\u0119c stworzy\u0107 co\u015b, co b\u0119dzie Jav\u0105 EE odpowiadaj\u0105c\u0105 na potrzeby czas\u00f3w. Od tamtej pory projekt trafi\u0142 pod skrzyd\u0142a fundacji Eclipse, a teraz mamy okazj\u0119 obserwowa\u0107 jego czwart\u0105 edycj\u0119.<\/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_6128bb1173bfa.gif\" alt=\"\" \/>Wraz z kolegami bardzo chcemy si\u0119 tym projektem pobawi\u0107<figcaption><\/figcaption><\/figure>\n<p>Co wi\u0119c przyni\u00f3s\u0142 Microprofile w wersji czwartej? G\u0142\u00f3wnym celem releasu jest wsparcie niedawno wydanej Jakarty EE 8 i zwi\u0105zanych z ni\u0105 nowo\u015b\u0107, ale i w samym profilu pojawia si\u0119 masa interesuj\u0105cych rzeczy. Przynosi on now\u0105 obs\u0142ug\u0119 konfiguracji, a tak\u017ce ogromny krok do przodu je\u015bli chodzi o wsparcie dla Observability &#8211; \u00a0nowe wersje modu\u0142\u00f3w OpenTracing, Metrics i Health, a tak\u017ce Fault Tolerance, kt\u00f3ry jest jednym z najelegantszych rozwi\u0105za\u0144 tego typu, z jakimi mia\u0142em styczno\u015b\u0107 &#8211; pod warunkiem, \u017ce komu\u015b nie przeszkadza nadmiar anotacji .<\/p>\n<h3 id=\"przeczytaj-wi%C4%99cej-10\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">JVM Tuesday vol. 38<\/a><\/li>\n<\/ul>\n<hr \/>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb11c797e.png\" alt=\"\" \/><\/figure>\n<h2 id=\"java-na-graalvm-zaczyna-kompilowac-sama-siebie\" data-num=16>Java na GraalVM zaczyna kompilowa\u0107 sam\u0105 siebie<\/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_6128bb125cb66.png\" alt=\"\" \/><\/figure>\n<p>GraalVM to jedna z najciekawszych inicjatyw Oracle. Jest to zestaw narz\u0119dzi, dostarczaj\u0105cy uniwersaln\u0105 maszyn\u0119 wirtualn\u0105 dla r\u00f3\u017cnych j\u0119zyk\u00f3w programowania. Projekt ten rozwijany jest od lat, a jego adopcja przekroczy\u0142a chyba oczekiwania samych tw\u00f3rc\u00f3w (w\u0142a\u015bciwie ka\u017cdy licz\u0105cy si\u0119 jJavowy fFramework chwali si\u0119 obecnie wsparciem dla GraalVM).<\/p>\n<p>Najbardziej znanym wykorzystaniem kompilatora Graal jest z pewno\u015bci\u0105 mo\u017cliwo\u015b\u0107 generowania niezwykle wydajnych, binarnych wersji program\u00f3w przez niego skompilowanych. Do tej pory by\u0142 to jedyny (a przynajmniej jedyny niewymagaj\u0105cy pe\u0142nego JVMa) spos\u00f3b uruchamiania aplikacji jJavowych w \u015brodowisku GraalVM. Pod tym wzgl\u0119dem 2021 przyni\u00f3s\u0142 ma\u0142\u0105 rewolucj\u0119 &#8211; mo\u017cliwo\u015b\u0107 uruchomienia aplikacji jJavowych w \u015brodowisku Truffle.<\/p>\n<p>Truffle jest warstw\u0105 po\u015bredni\u0105, okre\u015blan\u0105 czasem jako kompilator kompilator\u00f3w. Jest to hmmm\u2026 narz\u0119dzie do generowania interpretator\u00f3w poszczeg\u00f3lnych j\u0119zyk\u00f3w, generuj\u0105cy ich Abstract Syntax Tree w formacie kompatybilnym do uruchomienia w ramach maszyny wirtualnej Graala. Do tej Truffle dzia\u0142a\u0142 tylko i wy\u0142\u0105cznie dla j\u0119zyk\u00f3w implementowanych. Mo\u017cliwo\u015b\u0107 jego u\u017cycia r\u00f3wnie\u017c w wypadku Javy ma dwie ogromne zalety. Po pierwsze Truffle jest szybki\u2026 diabelnie szybki &#8211; w po\u0142\u0105czeniu z GraalVM generuje on bardzo wydajny kod maszynowy. Po drugie za\u015b, Truffle jest napisany w Javie, co oznacza \u017ce mo\u017ce by\u0107 do\u0142\u0105czony jako\u2026 zale\u017cno\u015b\u0107 do projektu. Prowadzi to do sytuacji, kiedy aplikacja jJavowa mo\u017ce sama skompilowa\u0107 sw\u00f3j w\u0142asny kod. Jest to tak zwane Metacircularity &#8211; cecha, kt\u00f3r\u0105 tw\u00f3rcy okre\u015blaj\u0105 jako (nomen omen) \u015bwi\u0119ty Graal maszyn wirtualnych. W praktyce oznacza to mo\u017cliwo\u015b\u0107 u\u017cycia zar\u00f3wno kompilacji Ahead-of-Time, jak i Just-in-Time w tym samym projekcie.<\/p>\n<h3 id=\"przeczytaj-wi%C4%99cej-11\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-22\/\">JVM Tuesday vol. 22<\/a><\/li>\n<\/ul>\n<h2 id=\"pivotal-wypuscil-spring-native\" data-num=17>Pivotal wypu\u015bci\u0142 Spring Native \ud83c\udf3f<\/h2>\n<p>Kontynuuj\u0105c temat GraalVM &#8211; 2021 przyni\u00f3s\u0142 te\u017c r\u00f3wnie\u017c wersje Springa przeznaczon\u0105 na t\u0105 w\u0142a\u015bnie platform\u0119.<\/p>\n<p>Jak bardzo zelektryzowa\u0142o to spo\u0142eczno\u015b\u0107 niech udowodni fakt, \u017ce og\u0142oszenie to jest jak do tej pory najlepiej \u201cczytaj\u0105cym si\u0119\u201d newsem dotycz\u0105cym JVMa, jakiego opublikowali\u015bmy w Keep Upie, przebijaj\u0105c nawet wydanie Javy 16.<\/p>\n<p>Ok, ale co konkretnie to oznacza? Po pierwsze, Spring Native b\u0119dzie m\u00f3g\u0142 by\u0107 releasowany jako pojedynczy plik wykonywalny, bez potrzeby posiadania zaembedowanego JVMa. Po drugie, jego czas startu robi wra\u017cenie &#8211; wed\u0142ug tego, co podaj\u0105 tw\u00f3rcy, dla typowej aplikacji nie powinien on przekracza\u0107 magicznej granicy &lt; 100ms (aczkolwiek liczby jak to liczby, b\u0119dzie trzeba je zweryfikowa\u0107 w praktyce). Nieodmiennie w wypadku rozwi\u0105za\u0144 opartych na GraalVM, jako docelowy spos\u00f3b u\u017cycia wskazywane s\u0105 kontenery, a tak\u017ce rozwi\u0105zania chmurowe takie jak cho\u0107by Spring Cloud Functions.<\/p>\n<p>Jednocze\u015bnie nie ma r\u00f3\u017cy bez kolc\u00f3w i chc\u0105c korzysta\u0107 z nowej zabawki trzeba i\u015b\u0107 na pewne kompromisy. Korzystaj\u0105c ze Spring Native, b\u0119dziemy musieli pogodzi\u0107 si\u0119 z d\u0142u\u017cszymi czasami kompilacji oraz brakiem bardziej zaawansowanych optymalizacji, jakie daje JIT &#8211; musi nam wystarczy\u0107 kompilacja Ahead-of-Time.<\/p>\n<p>Tw\u00f3rcy Springa bardzo aktywnie wsparli r\u00f3wnie\u017c sam rozw\u00f3j GraalVM, pomagaj\u0105c umo\u017cliwi\u0107 w pe\u0142ni \u201cnatywne\u201d testowanie aplikacji za pomoc\u0105 JUnita (przed wprowadzonymi przez nich zmianami, testy uruchamiane by\u0142y w ramach standardowej maszyny Javy). Aby to osi\u0105gn\u0105\u0107, niezb\u0119dna by\u0142a implementacja funkcjonalno\u015bci junit-platform-native, kt\u00f3ra wykrywa testy podczas uruchomienia w ramach \u201czwyk\u0142ego\u201d JVM i zapisuje je na boku na potrzeby r\u00f3wnie\u017c natywnej kompilacji. Tak znalezione testy s\u0105 pakowane do osobnego pliku wykonywalnego, kt\u00f3ry mo\u017ce by\u0107 uruchomiony ju\u017c w ramach \u015brodowiska GraalVM.<\/p>\n<p>Na koniec metody wersjonowania &#8211; cykl \u017cycia Spring Native b\u0119dzie \u015bci\u015ble spi\u0119ty z releasami Spring Boota, a nowe wydania wersji natywnej b\u0119d\u0105 pojawia\u0107 si\u0119 wraz z ka\u017cdym update\u2019em do klasyka.<\/p>\n<h3 id=\"przeczytaj-wi%C4%99cej-12\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-29\/\">JVM Tuesday vol. 29<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-42\/\">JVM Tuesday vol. 42<\/a><\/li>\n<\/ul>\n<hr \/>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/lh6.googleusercontent.com\/Xz5ilPadp4d0uFfCVvH8zeKgCs8bwdJvF3HtjkOL-2SkJylrXfHr-gn\nQY4NT7lK8z15VZ9ugx-nIgxeevW28SocILEhzNtdFuHBnLR1qwFU5xNDaMjxiXfRl63mZKYUq1OqcGfqX=s0\" alt=\"\" \/><\/figure>\n<h2 id=\"project-valhalla-wymusza-grube-zmiany-w-modelu-danych-jvm\" data-num=18>Project Valhalla wymusza grube zmiany w modelu danych JVM<\/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_6128bb12c324b.png\" alt=\"\" \/><\/figure>\n<p>Valhalla jest jednym z najwa\u017cniejszych obecnie rozwijanych projekt\u00f3w odbywaj\u0105cych si\u0119 w ramach JVMa. Johna Rose\u2019a i Briana Goetza opublikowali w zesz\u0142ym roku seri\u0119 pokazuj\u0105c\u0105, jak w swoim bie\u017c\u0105cym kszta\u0142cie wp\u0142ynie on na bytecode samego JVMa.<\/p>\n<p>I cho\u0107 zdajemy sobie spraw\u0119, \u017ce ci\u0119\u017cko o bardziej hermetyczny temat (rozkminy, jak na poziomie bajtkodu b\u0119dzie zachowywa\u0107 si\u0119 funkcjonalno\u015b\u0107 j\u0119zyka, kt\u00f3rej jeszcze nie ma), to jednak publikacja zapewnia sporo ciekawych informacji o decyzjach projektowych i ich reperkusjach. Tekst nie nale\u017cy do najprostszych (mimo, \u017ce napisany jest w jak najbardziej przyst\u0119pny spos\u00f3b, po prostu ta tematyka jest z za\u0142o\u017cenia mocno z\u0142o\u017cona), ale dla nas, \u015bmiertelnych klepaczy kodu, wnosi tyle \u017ce, bogowie JVMa zdecydowali si\u0119 do\u015b\u0107 mocno maszyn\u0119 wirtualn\u0105, przeora\u0107 na potrzeby zmian wprowadzonych w Valhalli.<\/p>\n<p>Oczywi\u015bcie, to o czym pisz\u0119 dla Was, to wierzcho\u0142ek g\u00f3ry lodowej &#8211; ch\u0119tnych zapraszam do pe\u0142nej publikacji. Moja obawa po lekturze jest taka, \u017ce bior\u0105c pod uwag\u0119 zakres planowanych zmian, ja Valhalli chyba nigdy nie do\u017cyje.<\/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_6128bb1366832.png\" alt=\"\" \/><figcaption>Mam przynajmniej nadzieje, \u017ce moje wnuki z tego projektu skorzystaj\u0105.<\/figcaption><\/figure>\n<h3 id=\"przeczytaj-wi%C4%99cej-13\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n<li><a href=\"https:\/\/vived.io\/jvm-monday-21\/\">JVM Tuesday vol. 21<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-30\/\">JVM Tuesday vol. 30<\/a><\/li>\n<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-35\/\">JVM Tuesday vol. 35<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\ud83e\udd73 Jeste\u015bmy z Wami od roku! \ud83e\udd73 Od 52 tygodni (nie zgubili\u015bmy po drodze ani jednego \ud83e\udd70) informujemy Was o wszystkim, co dzieje si\u0119 w \u015bwiecie technologii. Postanowili\u015bmy z tej okazji troch\u0119 po\u015bwi\u0119towa\u0107.<\/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-10093","post","type-post","status-publish","format-standard","hentry","category-jvm-pl"],"acf":{"estimated_reading_time":"19","weekly_summary":true},"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. 52 Podsumowanie roku \/ JVMowy Iceberg \u2744\ufe0f \ud83c\udfd4 - 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-52-podsumowanie-roku-jvmowy-iceberg\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 52 Podsumowanie roku \/ JVMowy Iceberg \u2744\ufe0f \ud83c\udfd4 - Vived\" \/>\n<meta property=\"og:description\" content=\"\ud83e\udd73 Jeste\u015bmy z Wami od roku! \ud83e\udd73 Od 52 tygodni (nie zgubili\u015bmy po drodze ani jednego \ud83e\udd70) informujemy Was o wszystkim, co dzieje si\u0119 w \u015bwiecie technologii. Postanowili\u015bmy z tej okazji troch\u0119 po\u015bwi\u0119towa\u0107.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-24T11:50:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb084c4bd.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-52-podsumowanie-roku-jvmowy-iceberg\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 52 Podsumowanie roku \/ JVMowy Iceberg \u2744\ufe0f \ud83c\udfd4\",\"datePublished\":\"2021-08-24T11:50:19+00:00\",\"dateModified\":\"2022-09-19T11:10:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/\"},\"wordCount\":3957,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb084c4bd.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/\",\"name\":\"JVM Tuesday vol. 52 Podsumowanie roku \/ JVMowy Iceberg \u2744\ufe0f \ud83c\udfd4 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb084c4bd.png\",\"datePublished\":\"2021-08-24T11:50:19+00:00\",\"dateModified\":\"2022-09-19T11:10:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb084c4bd.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb084c4bd.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 52 Podsumowanie roku \/ JVMowy Iceberg \u2744\ufe0f \ud83c\udfd4\"}]},{\"@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. 52 Podsumowanie roku \/ JVMowy Iceberg \u2744\ufe0f \ud83c\udfd4 - 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-52-podsumowanie-roku-jvmowy-iceberg\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 52 Podsumowanie roku \/ JVMowy Iceberg \u2744\ufe0f \ud83c\udfd4 - Vived","og_description":"\ud83e\udd73 Jeste\u015bmy z Wami od roku! \ud83e\udd73 Od 52 tygodni (nie zgubili\u015bmy po drodze ani jednego \ud83e\udd70) informujemy Was o wszystkim, co dzieje si\u0119 w \u015bwiecie technologii. Postanowili\u015bmy z tej okazji troch\u0119 po\u015bwi\u0119towa\u0107.","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/","og_site_name":"Vived","article_published_time":"2021-08-24T11:50:19+00:00","article_modified_time":"2022-09-19T11:10:49+00:00","og_image":[{"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb084c4bd.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-52-podsumowanie-roku-jvmowy-iceberg\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 52 Podsumowanie roku \/ JVMowy Iceberg \u2744\ufe0f \ud83c\udfd4","datePublished":"2021-08-24T11:50:19+00:00","dateModified":"2022-09-19T11:10:49+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/"},"wordCount":3957,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb084c4bd.png","articleSection":["JVM"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/","name":"JVM Tuesday vol. 52 Podsumowanie roku \/ JVMowy Iceberg \u2744\ufe0f \ud83c\udfd4 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb084c4bd.png","datePublished":"2021-08-24T11:50:19+00:00","dateModified":"2022-09-19T11:10:49+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb084c4bd.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb084c4bd.png"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-52-podsumowanie-roku-jvmowy-iceberg\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 52 Podsumowanie roku \/ JVMowy Iceberg \u2744\ufe0f \ud83c\udfd4"}]},{"@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>\ud83e\udd73 Jeste\u015bmy z Wami od roku! \ud83e\udd73<\/h2>\nOd 52 tygodni (nie zgubili\u015bmy po drodze ani jednego \ud83e\udd18) informujemy Was o wszystkim, co dzieje si\u0119 w JVMowym ekosystemie. Postanowili\u015bmy z tej okazji troch\u0119 po\u015bwi\u0119towa\u0107 i podsumowa\u0107 ostatnie 12 miesi\u0119cy. Wiemy, \u017ce takie podsumowania zwykle ukazuj\u0105 si\u0119 w grudniu, ale tym bardziej mo\u017ce kto\u015b b\u0119dzie chcia\u0142 sobie zrobi\u0107 taki przegl\u0105d w\u0142a\u015bnie teraz.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb084c4bd.png\" alt=\"\" \/><\/figure>\nLista jest bardzo \u201copinionated\u201d i stanowi przegl\u0105d najbardziej interesuj\u0105cych wydarze\u0144, kt\u00f3re dotkn\u0119\u0142y spo\u0142eczno\u015b\u0107 od sierpnia 2020. Potraktujcie wi\u0119c ca\u0142o\u015b\u0107 jako \u201cThe Best Of JVM Tuesday\u2026 so far\u201d - niekt\u00f3rzy stali czytelnicy mog\u0105 np. pami\u0119ta\u0107 niekt\u00f3re memiszcza. Ca\u0142o\u015b\u0107 postanowi\u0142em przedstawi\u0107 w formie g\u00f3ry lodowej (je\u015bli nie wiecie, o co chodzi, odsy\u0142am do <a href=\"https:\/\/knowyourmeme.com\/memes\/iceberg-tiers-parodies\">knowyourmemes<\/a>) - zawsze mi si\u0119 marzy\u0142 w\u0142asny \u201ciceberg\u201d. Zatem bez przed\u0142u\u017cania...\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0b694e1.png\" alt=\"\" \/><\/figure>\n<h2 id=\"nowe-wydania-poszczeg%C3%B3lnych-projekt%C3%B3w\">Nowe wydania poszczeg\u00f3lnych projekt\u00f3w<\/h2>\nW ci\u0105gu ostatniego roku wi\u0119kszo\u015b\u0107 najwa\u017cniejszych graczy w ekosystemie wyda\u0142a jedn\u0105 now\u0105 wersj\u0119 swojego oprogramowania. Oto (naszym zdaniem) najwa\u017cniejsze z nich:\n<ul>\n \t<li>Java <a href=\"https:\/\/www.infoworld.com\/article\/3534133\/jdk-15-the-new-features-in-java-15.html\">15<\/a> i <a href=\"https:\/\/vived.io\/jvm-tuesday-vol-29\/\">16<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">Kotlin 1.5<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-38\/\">Scala 3<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-45-2\/\">Quarkus 2.0<\/a><\/li>\n \t<li>Spring Boot <a href=\"https:\/\/spring.io\/blog\/2020\/11\/12\/spring-boot-2-4-0-available-now\">2.4<\/a> i <a href=\"https:\/\/vived.io\/jvm-tuesday-vol-39\/\">2.5<\/a><\/li>\n \t<li><a href=\"https:\/\/vertx.io\/blog\/eclipse-vert-x-4-released\/\">Vert.x 4.0<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-34\/\">Gradle 7.0<\/a><\/li>\n \t<li><a href=\"https:\/\/maarten.mulders.it\/2020\/11\/whats-new-in-maven-4\/\">Maven 4.0<\/a><\/li>\n<\/ul>\nNie b\u0119dziemy tutaj opisywa\u0107 ka\u017cdego z nich, bo ka\u017cda premiera dosta\u0142a du\u017cy opis w ramach kt\u00f3rej\u015b z naszych wcze\u015bniejszych edycji, skrz\u0119tnie podlinkowanych powy\u017cej. Szczeg\u00f3lnie polecamy zapozna\u0107 si\u0119 z now\u0105 Scal\u0105 - jest to pierwsze du\u017ce wydanie od lat i efekt pracy wielu in\u017cynier\u00f3w (w tym z naszego zespo\u0142u w VirtusLab).\n\nW ci\u0105gu ostatnich 12 miesi\u0119cy zrobili\u015bmy te\u017c pe\u0142ne podsumowanie stanu, w kt\u00f3rym znajduj\u0105 si\u0119 <a href=\"https:\/\/vived.io\/jvm-tuesday-vol-28\/\">Reaktywne Frameworki<\/a>. Bardzo polecamy, nie zestarza\u0142o si\u0119 zbyt mocno\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0c055ce.png\" alt=\"\" \/><\/figure>\n<h2 id=\"google-wygra%C5%82o-w-s%C4%85dzie-z-oraclem-w-procesie-o-u%C5%BCycie-api-javy-na-androidzie-%F0%9F%91%A8%E2%80%8D%E2%9A%96%EF%B8%8F\">Google wygra\u0142o w s\u0105dzie z Oraclem w procesie o u\u017cycie API Javy na Androidzie \u200d\u2696\ufe0f<\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0c96914.png\" alt=\"\" \/><\/figure>\nPo dziesi\u0119ciu latach, Google wygra\u0142o z Oraclem proces o u\u017cycie API Javy na popularnym Androidzie. Dla tych, kt\u00f3rzy nie wiedz\u0105 - \u201czielony robocik\u201d nie uruchamia aplikacji w ramach maszyny wirtualnej Javy, ale jego API dla programist\u00f3w jest kopi\u0105 tego javowego, za co Oracle \u017c\u0105da\u0142o od Google wysokiego odszkodowania z tytu\u0142u \u0142amania praw autorskich.\n\nWyrok jest zreszt\u0105 wa\u017cny dla ca\u0142ej bran\u017cy, gdy\u017c osobom chc\u0105cym stworzy\u0107 alternatywne implementacje danych API, daje do r\u0105k do\u015b\u0107 dobr\u0105 amunicje. Nale\u017cy pami\u0119ta\u0107 jednak, \u017ce wyrok nie jest \u201ckonkluzywny\u201d, co do faktu, \u017ce API jako takiego nie mo\u017cna chroni\u0107 prawem autorskim - s\u0105d orzek\u0142, \u017ce kompatybilne API wchodzi w definicje tak zwanego \u201cdozwolonego u\u017cycia\u201d. Jednocze\u015bnie ze wzgl\u0119du na dzia\u0142aj\u0105ce w USA prawo kazusu, prawdopodobnie minie troch\u0119 zanim ktokolwiek spr\u00f3buje wytoczy\u0107 podobn\u0105 spraw\u0119.\n<h3 id=\"przeczytaj-wi%C4%99cej\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-33\/\">JVM Tuesday vol. 33<\/a><\/li>\n<\/ul>\n<h2 id=\"kotlin-sta%C5%82-si%C4%99-szalenie-otwarty-na-spo%C5%82eczno%C5%9B%C4%87\">Kotlin sta\u0142 si\u0119 szalenie otwarty na spo\u0142eczno\u015b\u0107<\/h2>\nChocia\u017c do masowej \u015bwiadomo\u015bci Kotlin przebi\u0142 si\u0119 nieco p\u00f3\u017aniej, to jednak swoj\u0105 premier\u0119 j\u0119zyk JetBrains mia\u0142 dekad\u0119 temu. W celu odpowiedniego uczczenia tak znamienitej rocznicy, tw\u00f3rcy Intellij postanowili nakr\u0119ci\u0107\u2026 dokument.\n\nRozw\u00f3j Kotlina og\u00f3lnie naprawd\u0119 interesuj\u0105co si\u0119 obserwuje. Roman Elizarov, lead projektu, w fantastyczny spos\u00f3b dzieli si\u0119 decyzjami projektowymi stoj\u0105cymi za poszczeg\u00f3lnymi featurami (szczeg\u00f3lnie jego talki na temat korutyn i structured concurrency nale\u017c\u0105 do moich ulubionych w temacie j\u0119zyk\u00f3w programowania). Jak bardzo otwarty jest to zesp\u00f3\u0142 niech \u015bwiadczy fakt, \u017ce wraz z premier\u0105 wersji 1.5 j\u0119zyka, pojawi\u0142o si\u0119 na Redditcie kotlinowe AMA, w kt\u00f3rym tw\u00f3rcy j\u0119zyka odpowiedzieli na mas\u0119 pyta\u0144 spo\u0142eczno\u015bci. To nie jedyne tego typu dzia\u0142anie - zesp\u00f3\u0142 da\u0142 te\u017c u\u017cytkownikom mo\u017cliwo\u015b\u0107 g\u0142osowania na nowe featury, nad kt\u00f3rymi b\u0119d\u0105 pracowa\u0107 w przysz\u0142o\u015bci\u2026 a tak\u017ce na te, kt\u00f3rych ludzie sugeruj\u0105 unika\u0107 w przysz\u0142ych wersjach Kotlina.\n\nhttps:\/\/www.youtube.com\/watch?v=9pSh0VAVYn4\n\nW ci\u0105gu roku dosz\u0142o te\u017c do wielokrotnych aktualizacji Roadmapy Kotlina, kt\u00f3ra to pozwala \u015bledzi\u0107 kierunek, w kt\u00f3rym ewoluuje j\u0119zyk. Wspominaj\u0105c o ewolucji, warto przypomnie\u0107 \u017ce Kotlin postanowi\u0142 nieco skopiowa\u0107 cykl wyda\u0144 Javy, stawiaj\u0105c na przewidywalno\u015b\u0107 kolejnych edycji. Teraz nowa \u201cmajor\u201d wersja (w koltinowej nomenklaturze 1.x) b\u0119dzie wydawana raz na p\u00f3\u0142 roku, nie ogl\u0105daj\u0105c si\u0119 na to, jakie funkcjonalno\u015bci s\u0105 gotowe.\n\nW tej beczce miodu jest te\u017c \u0142y\u017cka dziegciu. Kotlin sta\u0142 si\u0119 ostatnimi czasy wr\u0119cz definicj\u0105 Vendor Lock-Inu. JetBrains postanowi\u0142o zerwa\u0107 wszelkie pozory i wcze\u015bniej niezale\u017cnie rozwijany plugin do j\u0119zyka, sta\u0142 si\u0119 integraln\u0105 cz\u0119\u015bci\u0105 Intellija.\n<h3 id=\"przeczytaj-wi%C4%99cej-1\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-23\/\">JVM Tuesday vol. 23<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-33\/\">JVM Tuesday vol. 33<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-39\/\">JVM Tuesday vol. 39<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-41\/\">JVM Tuesday vol. 41<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-43\/\">JVM Tuesday vol. 43<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-50\/\">JVM Tuesday vol. 43<\/a><\/li>\n<\/ul>\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0d4e70f.png\" alt=\"\" \/><\/figure>\n<h2 id=\"oracle-te%C5%BC-zacz%C4%99%C5%82o-dobrze-gra%C4%87-z-community\">Oracle te\u017c zacz\u0119\u0142o dobrze gra\u0107 z Community<\/h2>\nOracle bardzo zaczyna dba\u0107 o komunikacj\u0119 z programistami. Prowadz\u0105 stron\u0119 Inside Java, agreguj\u0105c\u0105 zmiany w \u015bwiecie JVMowym. Dodatkowo, wprost uwielbiam towarzysz\u0105cy blogowi podcast. M\u00f3wi si\u0119 \u017ce w dzisiejszych czasach nie da si\u0119 ju\u017c publikowa\u0107 podcastu na \u015brednim poziomie technicznym i liczy\u0107 na pos\u0142uch, ale ten od Oracle udowadnia, \u017ce w dalszym ci\u0105gu \u201ccontent is the King\u201d. Jako\u015b\u0107 nagra\u0144 jest hmmm\u2026 akceptowalna, jednak ca\u0142o\u015b\u0107 zawiera najbardziej \u201cmi\u0119sne\u201d rozmowy na temat j\u0119zyka, na jakie mo\u017cna natkn\u0105\u0107 si\u0119 w sieci. Wynika to w du\u017cej mierze z doboru go\u015bci. \u00a0O ile wi\u0119kszo\u015b\u0107 innych tego typu kana\u0142\u00f3w operuje zwykle na wiedzy z \u201cdrugiej r\u0119ki\u201d, Inside Java zaprasza do siebie tw\u00f3rc\u00f3w JVM, kt\u00f3rzy okazuj\u0105 si\u0119 by\u0107 naprawd\u0119 interesuj\u0105cymi rozm\u00f3wcami.\n\nJakby tego by\u0142o ma\u0142o Oracle, ustami Nicolai Parlog, zacz\u0119\u0142o prowadzi\u0107 seri\u0119 wideo Inside Java Newscast, kt\u00f3re mo\u017cecie traktowa\u0107 jako alternatyw\u0119 dla naszych post\u00f3w publikowanych w ramach Weekly (aczkolwiek my si\u0119gamy nieco szerzej - seria Oracle to newsy stricte zwi\u0105zane z JVMem). Nowym rozwijanym projektem jest za\u015b JEP Cafe - opisuj\u0105cych nowopowsta\u0142e JEPy.\n<h3 id=\"przeczytaj-wi%C4%99cej-2\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-45\/\">JVM Tuesday vol. 44<\/a><\/li>\n<\/ul>\n<h2 id=\"java-trafi%C5%82a-na-githuba\">Java trafi\u0142a na GitHuba<\/h2>\nMo\u017cna by powiedzie\u0107 - nareszcie. Wraz z implementacj\u0105 JEP 369 (Migrate to GitHub), kod \u017ar\u00f3d\u0142owy Javy sta\u0142 si\u0119 znacznie \u0142atwiej dost\u0119pny dla rzeszy zainteresowanych nim programist\u00f3w. Wprawdzie nie oby\u0142o si\u0119 bez kontrowersji (nie ka\u017cdemu podoba si\u0119 przej\u015bcie na platform\u0119, kt\u00f3rej w\u0142a\u015bcicielem jest Microsoft), to jednak teraz b\u0119dzie znacznie \u0142atwiej \u015bledzi\u0107 zmiany w kodzie OpenJDK. Przez lata swojej dominacji, Github sta\u0142 si\u0119 ekosystemem r\u00f3\u017cnych narz\u0119dzi, a sam Git te\u017c jest znacznie popularniejszy ni\u017c Mercurial, kt\u00f3ry by\u0142 do tej pory jedynym wspieranym przez Jav\u0119 narz\u0119dziem kontroli wersji.\n<h2 id=\"java-rozpycha-si%C4%99-w-%C5%9Bwiecie-uczenia-maszynowego\">Java rozpycha si\u0119 w \u015bwiecie Uczenia Maszynowego<\/h2>\nJava jest bardzo uniwersalnym j\u0119zykiem, ale s\u0105 pewne kategorie problem\u00f3w, z kt\u00f3rych zosta\u0142a skutecznie wyparta przez \u201ckonkurencje\u201d. We\u017amy na przyk\u0142ad takie uczenie maszynowe. W ostatnich latach nie mia\u0142a nawet startu do Pythona. Sytuacja powoli wydaje si\u0119 zmienia\u0107. Wraz z premier\u0105 Javy 15, Oracle (nieco cichaczem) opublikowa\u0142 Tribuo, bibliotek\u0119 umo\u017cliwiaj\u0105c\u0105 tworzenie silnie typowanych modeli MLowych, LinkedIn za\u015b postanowi\u0142 wypu\u015bci\u0107 swoje w\u0142asne rozwi\u0105zanie - Dagli.\n\nCzym r\u00f3\u017cni si\u0119 Dagli od Tribuo? Rozwi\u0105zania w za\u0142o\u017ceniach (zastosowania produkcyjne, wspomniane ju\u017c typy) s\u0105 do siebie bardzo podobne. Co wyr\u00f3\u017cnia rozwi\u0105zanie LinkedIn to fakt, \u017ce jego tw\u00f3rcy wzi\u0119li \u201cna tapet\u201d nieco wi\u0119ksz\u0105 klas\u0119 problem\u00f3w - zamiast skupia\u0107 si\u0119 na samych modelach, udost\u0119pniaj\u0105 mo\u017cliwo\u015b\u0107 zintegrowania pe\u0142nego pipeline, opisuj\u0105cego kolejne transformacje danych. Dodatkowo dostarczaj\u0105 te\u017c ca\u0142y zestaw gotowych rozwi\u0105za\u0144, kt\u00f3re od razu mo\u017cna wykorzysta\u0107 w swojej aplikacji.\n\nW tym temacie nie pr\u00f3\u017cnowa\u0142 te\u017c z reszt\u0105 team JetBrains, tworz\u0105c w\u0142asn\u0105 bibliotek\u0119. KotlinDL, bo o niej mowa, jest odpowiednikiem pythonowego Kerasa - bibliotek\u0105 stanowi\u0105c\u0105 wrapper nad TensorFlow, udost\u0119pniaj\u0105c\u0105 API pozwalaj\u0105ce na u\u017cywanie modeli uczenia maszynowego r\u00f3wnie\u017c programistom, kt\u00f3rzy nie posiadaj\u0105 typowo Data Science\u2019oweg do\u015bwiadczenia.\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0de7704.png\" alt=\"\" \/><\/figure>\n<h2 id=\"java-zacz%C4%99%C5%82a-na-powa%C5%BCnie-wspiera%C4%87-procesory-arm\">Java zacz\u0119\u0142a na powa\u017cnie wspiera\u0107 procesory ARM<\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0e90494.png\" alt=\"\" \/><\/figure>\n\u200b\u200bPraktycznie na ka\u017cdej li\u015bcie najwa\u017cniejszych wydarze\u0144 technologicznych 2020 roku musia\u0142 znale\u017a\u0107 si\u0119 niesamowity wr\u0119cz sukces procesor\u00f3w ARM. G\u0142\u00f3wnie dzi\u0119ki Apple i ich niesamowitym procesorem M1 (dlaczego s\u0105 takie szybkie? <a href=\"https:\/\/debugger.medium.com\/why-is-apples-m1-chip-so-fast-3262b158cba2\">Tutaj znajdziecie bardzo fajny artyku\u0142 na ten temat<\/a>), ale na podobny ruch zdecydowa\u0142y si\u0119 te\u017c inne firmy. Procesory ARM staj\u0105 si\u0119 coraz bardziej realn\u0105 alternatyw\u0105 dla programist\u00f3w JVM - Amazon oferuje instancje chmurowe z tym typem procesor\u00f3w, Microsoft opracowa\u0142 wersj\u0119 OpenJDK na Windows uruchamianym na tej w\u0142a\u015bnie architekturze, a Oracle postanowi\u0142o udost\u0119pni\u0107 w ramach swojej chmury serwery ARM.\n<h3 id=\"przeczytaj-wi%C4%99cej-3\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-22\/\">JVM Tuesday vol. 22<\/a><\/li>\n<\/ul>\n<h2 id=\"renesans-desktopowych-framework%C3%B3w-pisanych-pod-k%C4%85tem-jvm\">Renesans desktopowych framework\u00f3w pisanych pod k\u0105tem JVM<\/h2>\nZaczynam si\u0119 powoli zastanawia\u0107, czy 2020 nie jest rokiem, kt\u00f3ry zapisze si\u0119 w historii (ze wzgl\u0119du na brak innych wa\u017cnych dla ludzko\u015bci wydarze\u0144) jako ten, kt\u00f3ry rozpocz\u0105\u0142 koniec panowania Electrona. Rozwi\u0105zanie to charakteryzuje si\u0119 tym, \u017ce nie lubi go w zasadzie nikt\u2026 poza programistami, kt\u00f3rzy jednym kodem s\u0105 w stanie stworzy\u0107 \u201cnatywn\u0105\u201d wersj\u0119 aplikacji na wszystkie platformy. Jednak nawet my chyba powoli uczymy si\u0119, \u017ce tego typu aplikacje nie s\u0105 dobrym rozwi\u0105zaniem - bardzo daleko im do uczucia natywno\u015bci, dodatkowo znany jest fakt, \u017ce ile RAMu znajd\u0105, tyle zjedz\u0105. St\u0105d te\u017c rodz\u0105 si\u0119 powoli alternatywy, w\u015br\u00f3d kt\u00f3rych przoduje Apple z Catalystem. \u0141okciami zaczyna przepycha\u0107 si\u0119 te\u017c ekipa z JetBrains, wypuszczaj\u0105c na pocz\u0105tku wakacji nie tylko stabilne Jetpack Compose dla Androida, ale r\u00f3wnie\u017c wersje projektu dla Web oraz Desktopa - od niedawna zwanych jako Kotlin Multiplatform.\n\nOpr\u00f3cz tego stworzyli oni te\u017c Skij\u0119 - odpowiednik przegl\u0105darkowego Canvas API, stanowi\u0105cym alternatyw\u0119 dla wys\u0142u\u017conego Graphics2D. Stworzenie tego typu rozwi\u0105zania od zera by\u0142oby bardzo trudne, dlatego Skija \"buduje na barkach giganta\u201d - biblioteki Skia, kt\u00f3ra s\u0142u\u017cy m.in. jako silnik interfejsu Chrome.\n\nCa\u0142y obraz dope\u0142nia si\u0119 te\u017c w Projekcie Lanai. W ramach prac nad Lanai, Jetbrains wsp\u00f3\u0142pracowa\u0142 z samym Oracle, a celem projektu by\u0142o stworzenie nowoczesnej metody renderowania obiekt\u00f3w interfejsu na macOS. OpenGL, u\u017cywany przez Swinga, nie jest ju\u017c aktywnie wspierany przez komputery Apple - obecnie obowi\u0105zuj\u0105cym tam rozwi\u0105zaniem jest Metal, w\u0142asno\u015bciowe API, cechuj\u0105ce si\u0119 wysok\u0105 wydajno\u015bci\u0105 i rozwijan\u0105 wraz z kolejnymi wersjami systemu. Lanai wyj\u015b\u0107 ma ju\u017c za moment, wraz z Jav\u0105 17. Teraz stoj\u0105cy za nim ludzie planuj\u0105 za\u015b Projekt Wakefield - podobn\u0105 inicjatyw\u0119, tym razem dla Linuxa i serwera wy\u015bwietleniowego Wayland.\n<h3 id=\"przeczytaj-wi%C4%99cej-4\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-25\/\">JVM Tuesday vol. 25 <\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-27\/\">JVM Tuesday vol. 27<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">JVM Tuesday vol. 37<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">JVM Tuesday vol. <\/a>51<\/li>\n<\/ul>\n<h2 id=\"adoptopenjdk-zmieni%C5%82o-si%C4%99-w-adoptium-i-trafi%C5%82o-pod-skrzyd%C5%82a-eclipse\">AdoptOpenJDK zmieni\u0142o si\u0119 w Adoptium i trafi\u0142o pod skrzyd\u0142a Eclipse<\/h2>\nAdoptOpenJDK to projekt, kt\u00f3ry powsta\u0142 jako efekt wysi\u0142k\u00f3w spo\u0142eczno\u015bci walcz\u0105cej o \u201cwoln\u0105\u201d implementacje JDK. W ci\u0105gu ostatnich 12 miesi\u0119cy, ostatecznie trafi\u0142 on pod skrzyd\u0142a Eclipse Foundation. Efekt, po ponad rocznych, stara\u0144 skwitowany zosta\u0142 przechrzczeniem projektu na Eclipse Adoptium (JDK jest znakiem towarowym nale\u017c\u0105cym do Oracle) oraz powstanie Adoptium Working Group.\n\nBior\u0105c pod uwag\u0119 fakt, \u017ce Oracle obecnie udziela wy\u0142\u0105cznie sze\u015bciu miesi\u0119cy wsparcia, dla ka\u017cdego nowego wydania, Adoptium jest krytycznym projektem dla ca\u0142ej spo\u0142eczno\u015bci, nie tylko Javy, ale r\u00f3wnie\u017c innych JVMowych j\u0119zyk\u00f3w. Ca\u0142y projekt fundowany jest przez mnogo\u015b\u0107 partner\u00f3w - Alibaba Cloud, Huawei, IBM, iJUG (stowarzyszenie niemieckich JUG\u00f3w), Karakun AG, Microsoft, New Relic oraz Red Hat b\u0119d\u0105 bra\u0107 udzia\u0142 w rozwoju otwartej wersji Javy. W ramach negocjacji uda\u0142o si\u0119 te\u017c otrzyma\u0107 dost\u0119p do javowego Technology Compatibility Kit, \u201cwywalczonego\u201d od Oracle.\n\nOstatecznie, w wyniku prac grupy stworzone zosta\u0142o Eclipse Temurin - oficjalny build JDK, kt\u00f3ry mo\u017ce zosta\u0107 u\u017cyty jako \u201cbaza\u201d przez ca\u0142\u0105 spo\u0142eczno\u015b\u0107 i wszystkich tych, kt\u00f3rzy chc\u0105 stworzy\u0107 w\u0142asny wariant JDK.\n<h3 id=\"przeczytaj-wi%C4%99cej-5\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-31\/\">JVM Tuesday vol. 31<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-34\/\">JVM Tuesday vol. 34<\/a><\/li>\n<\/ul>\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0fe0f26.png\" alt=\"\" \/><\/figure>\n<h2 id=\"security-manager-usuwany-z-javynie-bez-kontrowersji-%F0%9F%91%AE%E2%80%8D%E2%99%80%EF%B8%8F\">Security Manager usuwany z Javy - nie bez kontrowersji<\/h2>\nJEP 411: Deprecate the Security Manager for Removal przyni\u00f3s\u0142 to, co programi\u015bci lubi\u0105 najbardziej - usuwanie kodu. No, mo\u017ce niekoniecznie usuwanie, ale deprekracja to w ko\u0144cu pierwszy krok ku pozbyciu si\u0119 nadmiarowego balastu. A m\u00f3wimy tutaj o bala\u015bcie dosy\u0107 wiekowym - Security Manager swoje korzenie ma jeszcze w pierwszym wydaniu Javy.\n\nJego g\u0142\u00f3wnym celem by\u0142o (i w zasadzie ci\u0105gle jest) mo\u017cliwo\u015b\u0107 granularnego sterowania uprawnieniami aplikacji uruchamianych w ramach JVM. Jest to opcja swoistej piaskownicy, pozwalaj\u0105cej np. ograniczy\u0107 dost\u0119p do systemu plik\u00f3w albo zablokowa\u0107 wykonanie komend pokroju System.exit() - do tego u\u017cywaj\u0105 go np. serwery aplikacyjne. Jego u\u017cycie szczeg\u00f3lnie istotne by\u0142o w epoce, gdy aplikacje javowe cz\u0119sto by\u0142y np. pobierane z sieci w formie aplet\u00f3w (kt\u00f3re r\u00f3wnie\u017c uleg\u0142y deprekacji w zesz\u0142ym roku)\n\nNa wie\u015b\u0107 o tych planach, lista mailingowa JDK zosta\u0142a wr\u0119cz zalana krytyk\u0105 JEP 411. Tw\u00f3rcom Javy zarzucane by\u0142o lenistwo, brak wypracowania sensownych alternatyw (innych ni\u017c \"przykro nam, napisz sobie Agenta do maszyny wirtualnej\") - szczeg\u00f3lnie aktywnym dyskutantem jest Reinier Zwitserloot, jeden z tw\u00f3rc\u00f3w Lomboka. Z drugiej strony w rozmowie bierze udzia\u0142 m.in. przywo\u0142any w poprzedniej edycji Ron Pressler czy Alex Bateman, kt\u00f3rzy odbijaj\u0105 pi\u0142eczk\u0119. Zarzucali oni krytykom, \u017ce o ile tak naprawd\u0119 wiele ich argumentum-at-securitum jest do\u015b\u0107 trafnych, to w realnym \u015bwiecie nikt nie zwraca na przywo\u0142ywane aspekty uwagi - typu sandboxowanie u\u017cycia bibliotek zewn\u0119trznych.\n\nOstatecznie w nieco tylko zmienionej formie JEP 411 trafi do Javy 17.\n<h3 id=\"przeczytaj-wi%C4%99cej-6\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">JVM Tuesday vol. 37<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-38\/\">JVM Tuesday vol. 38<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-41\/\">JVM Tuesday vol. 41<\/a><\/li>\n<\/ul>\n<h2 id=\"microsoft-ostro-zaanga%C5%BCowa%C5%82-si%C4%99-w-rozw%C3%B3j-javy-%F0%9F%AA%9F\">Microsoft ostro zaanga\u017cowa\u0142 si\u0119 w rozw\u00f3j Javy<\/h2>\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_6128bb107a4e4.png\" alt=\"\" \/>\n<figcaption>Powy\u017csze ju\u017c nieaktualne\u00a0<\/figcaption><\/figure>\nDla os\u00f3b \u015bledz\u0105cych dzia\u0142ania Microsoftu z pewno\u015bci\u0105 nie b\u0119dzie tajemnic\u0105, \u017ce firma z Redmond do\u015b\u0107 mocno inwestuje ostatnio w Jav\u0119. Po dekadach stara\u0144 (to jest naprawd\u0119 d\u0142uuuga historia), wreszcie wypu\u015bci\u0142a ona w\u0142asny wariant OpenJDK. Na razie dost\u0119pna jest wersja JDK 11, ale do wczesnego wgl\u0105du trafi\u0142a te\u017c \u201cszesnastka\u201d. Ca\u0142o\u015b\u0107 oparta jest o Eclipse Adoptium, kt\u00f3rego Microsoft jest sponsorem. Stan\u0105 si\u0119 one oficjalnym rozwi\u0105zaniem u\u017cywanym w ramach platformy Azure (do tej pory u\u017cywane by\u0142y warianty JDK tworzone przez Zulu). Dla tw\u00f3rc\u00f3w oprogramowania o niszowych gustach z pewno\u015bci\u0105 istotnym faktem b\u0119dzie to, \u017ce microsoftowa Java wydana zostanie r\u00f3wnie\u017c na procesory ARM - zar\u00f3wno AARch64 jak i M1.\n\nMicrosoft stworzy\u0142 tak\u017ce GCToolkit. Jest to zestaw bibliotek s\u0142u\u017c\u0105cych do analizy log\u00f3w Garbage Collectora. Umo\u017cliwia on \u201cpr\u00f3bkowanie\u201d GC i udost\u0119pnia interfejs API do odpowiednio wygenerowanych agregat. Pozwala to u\u017cytkownikowi na tworzenie z\u0142o\u017conych analiz stanu pami\u0119ci JVM.\n\nNie wiem, czy pami\u0119tacie, ale Microsoft ma te\u017c w\u0142asne \u201cIDE\u201d dla Javy, je\u015bli tak mo\u017cna nazwa\u0107 zestaw plugin\u00f3w do Visual Studio Code. Jego kolejne aktualizacje pojawiaj\u0105 si\u0119 w regularnych, miesi\u0119cznych odst\u0119pach i stanowi\u0105 intryguj\u0105c\u0105 alternatyw\u0119 dla IntelliJ.\n<h3 id=\"przeczytaj-wi%C4%99cej-7\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-40\/\">JVM Tuesday vol. 40<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-40\/https:\/\/blog.vived.io\/jvm-tuesday-vol-50\/\">JVM Tuesday vol. 50<\/a><\/li>\n<\/ul>\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb10d361c.png\" alt=\"\" \/><\/figure>\n<h2 id=\"project-loom-dalej-si%C4%99-rozwija-wzbudzaj%C4%85c-pewne-kontrowersje\">Project Loom dalej si\u0119 rozwija, wzbudzaj\u0105c pewne kontrowersje<\/h2>\nO Projekcie Loom, maj\u0105cym wprowadzi\u0107 Kontynuacje do maszyny wirtualnej Javy, powiedziano ju\u017c naprawd\u0119 du\u017co. W ci\u0105gu ostatnich dwunastu miesi\u0119cy najciekawsz\u0105 dyskusj\u0119 wzbudzi\u0142 jednak, moim zdaniem, Greg Wilkins (Project Lead znanego wszystkim Jetty\u2019ego)\n\nPostanowi\u0142 on przygotowa\u0107 testy Early Access buildu Projektu Loom, w celu zweryfikowania, na ile obietnice jego tw\u00f3rc\u00f3w maj\u0105 odzwierciedlenie w realiach. Na pierwszy ogie\u0144 posz\u0142a mo\u017cliwo\u015bci stworzenia miliona r\u00f3wnocze\u015bnie istniej\u0105cych r\u00f3wnoleg\u0142ych w\u0105tk\u00f3w. Efekt jest hmmm\u2026 po\u0142owiczny. Pisz\u0105c w skr\u00f3cie, nie ma problemu ze stworzeniem w\u0105tk\u00f3w jako takich, ale za wiele to si\u0119 w nich nie zrobi - nawet \u015bredniej wielko\u015bci Stacktrace (1000 operacji) per w\u0105tek szybko udowadnia, \u017ce RAM nie jest z gumy. Tak\u017ce o ile rzeczywi\u015bcie istnieje mo\u017cliwo\u015b\u0107 stworzenia miliona w\u0105tk\u00f3w, to styl programistyczny w nich u\u017cyty musi by\u0107 drastycznie inny (np. poprzez mocne ograniczenie bibliotek zewn\u0119trznych, kt\u00f3re potrafi\u0105 bardzo stacktrace wyd\u0142u\u017ca\u0107)\n\nZe wzgl\u0119du na mocno krytyczny charakter posta, pojawi\u0142a si\u0119 do niego masa komentarzy, zar\u00f3wno na Reddicie (gdzie <a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/kmn6m3\/do_looms_claims_stack_up_part_1_millions_of\/\">Ron Pressler odpiera\u0142 zarzuty<\/a>) jak i na li\u015bcie mailngowej OpenJDK, gdzie znowu ca\u0142y temat <a href=\"https:\/\/mail.openjdk.java.net\/pipermail\/loom-dev\/2021-January\/001976.html\">komentowa\u0142 Alan Bateman<\/a>. Ca\u0142a dyskusja jest r\u00f3wnie frapuj\u0105ca jak wspomniane artyku\u0142y.\n<h3 id=\"przeczytaj-wi%C4%99cej-8\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-monday-vol-20\/\">JVM Tuesday vol. 20<\/a><\/li>\n<\/ul>\n<h2 id=\"jfrog-zamyka-bintray-i-jcenter-%F0%9F%90%B8\">JFrog zamyka Bintray i JCenter \ud83d\udc38<\/h2>\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<h3 id=\"przeczytaj-wi%C4%99cej-9\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-24\/\">JVM Tuesday vol. 24<\/a><\/li>\n<\/ul>\n<h2 id=\"wydano-now%C4%85-wersj%C4%99-microprofile\">Wydano now\u0105 wersj\u0119 Microprofile<\/h2>\nWprawdzie mia\u0142o nie by\u0107 o poszczeg\u00f3lnych wydaniach, ale dla niszowych, a istotnych technologii robimy tu wyj\u0105tek (takich wyj\u0105tk\u00f3w b\u0119dzie jeszcze par\u0119).\n\nPewnie wi\u0119kszo\u015bci z Was obi\u0142a si\u0119 o uszy nazwa Microprofile, jednak prawdziwie doceni\u0107 go \u00a0b\u0119d\u0105 mieli okazj\u0119 tylko Ci, kt\u00f3rzy w swojej karierze pracowalimieli okazj\u0119 pracowa\u0107 z Jav\u0105 EE, zw\u0142aszcza w okresie, gdy bran\u017ca zacz\u0119\u0142a robi\u0107 ma\u015blane oczy od konceptu dzi\u015b znanego jako Mikroserwisy. Java EE posiada\u0142a ju\u017c koncept profili, ale by\u0142y to profile \u201cci\u0119\u017ckie\u201d i \u201cjeszcze ci\u0119\u017csze\u201d, na pewno nic co da\u0142o okre\u015bli\u0107 si\u0119 s\u0142owem \u201cmikro\u201d. Postanowiono wi\u0119c stworzy\u0107 co\u015b, co b\u0119dzie Jav\u0105 EE odpowiadaj\u0105c\u0105 na potrzeby czas\u00f3w. Od tamtej pory projekt trafi\u0142 pod skrzyd\u0142a fundacji Eclipse, a teraz mamy okazj\u0119 obserwowa\u0107 jego czwart\u0105 edycj\u0119.\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_6128bb1173bfa.gif\" alt=\"\" \/>Wraz z kolegami bardzo chcemy si\u0119 tym projektem pobawi\u0107\n\n<figcaption><\/figcaption><\/figure>\nCo wi\u0119c przyni\u00f3s\u0142 Microprofile w wersji czwartej? G\u0142\u00f3wnym celem releasu jest wsparcie niedawno wydanej Jakarty EE 8 i zwi\u0105zanych z ni\u0105 nowo\u015b\u0107, ale i w samym profilu pojawia si\u0119 masa interesuj\u0105cych rzeczy. Przynosi on now\u0105 obs\u0142ug\u0119 konfiguracji, a tak\u017ce ogromny krok do przodu je\u015bli chodzi o wsparcie dla Observability - \u00a0nowe wersje modu\u0142\u00f3w OpenTracing, Metrics i Health, a tak\u017ce Fault Tolerance, kt\u00f3ry jest jednym z najelegantszych rozwi\u0105za\u0144 tego typu, z jakimi mia\u0142em styczno\u015b\u0107 - pod warunkiem, \u017ce komu\u015b nie przeszkadza nadmiar anotacji .\n<h3 id=\"przeczytaj-wi%C4%99cej-10\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">JVM Tuesday vol. 38<\/a><\/li>\n<\/ul>\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb11c797e.png\" alt=\"\" \/><\/figure>\n<h2 id=\"java-na-graalvm-zaczyna-kompilowa%C4%87-sam%C4%85-siebie\">Java na GraalVM zaczyna kompilowa\u0107 sam\u0105 siebie<\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb125cb66.png\" alt=\"\" \/><\/figure>\nGraalVM to jedna z najciekawszych inicjatyw Oracle. Jest to zestaw narz\u0119dzi, dostarczaj\u0105cy uniwersaln\u0105 maszyn\u0119 wirtualn\u0105 dla r\u00f3\u017cnych j\u0119zyk\u00f3w programowania. Projekt ten rozwijany jest od lat, a jego adopcja przekroczy\u0142a chyba oczekiwania samych tw\u00f3rc\u00f3w (w\u0142a\u015bciwie ka\u017cdy licz\u0105cy si\u0119 jJavowy fFramework chwali si\u0119 obecnie wsparciem dla GraalVM).\n\nNajbardziej znanym wykorzystaniem kompilatora Graal jest z pewno\u015bci\u0105 mo\u017cliwo\u015b\u0107 generowania niezwykle wydajnych, binarnych wersji program\u00f3w przez niego skompilowanych. Do tej pory by\u0142 to jedyny (a przynajmniej jedyny niewymagaj\u0105cy pe\u0142nego JVMa) spos\u00f3b uruchamiania aplikacji jJavowych w \u015brodowisku GraalVM. Pod tym wzgl\u0119dem 2021 przyni\u00f3s\u0142 ma\u0142\u0105 rewolucj\u0119 - mo\u017cliwo\u015b\u0107 uruchomienia aplikacji jJavowych w \u015brodowisku Truffle.\n\nTruffle jest warstw\u0105 po\u015bredni\u0105, okre\u015blan\u0105 czasem jako kompilator kompilator\u00f3w. Jest to hmmm\u2026 narz\u0119dzie do generowania interpretator\u00f3w poszczeg\u00f3lnych j\u0119zyk\u00f3w, generuj\u0105cy ich Abstract Syntax Tree w formacie kompatybilnym do uruchomienia w ramach maszyny wirtualnej Graala. Do tej Truffle dzia\u0142a\u0142 tylko i wy\u0142\u0105cznie dla j\u0119zyk\u00f3w implementowanych. Mo\u017cliwo\u015b\u0107 jego u\u017cycia r\u00f3wnie\u017c w wypadku Javy ma dwie ogromne zalety. Po pierwsze Truffle jest szybki\u2026 diabelnie szybki - w po\u0142\u0105czeniu z GraalVM generuje on bardzo wydajny kod maszynowy. Po drugie za\u015b, Truffle jest napisany w Javie, co oznacza \u017ce mo\u017ce by\u0107 do\u0142\u0105czony jako\u2026 zale\u017cno\u015b\u0107 do projektu. Prowadzi to do sytuacji, kiedy aplikacja jJavowa mo\u017ce sama skompilowa\u0107 sw\u00f3j w\u0142asny kod. Jest to tak zwane Metacircularity - cecha, kt\u00f3r\u0105 tw\u00f3rcy okre\u015blaj\u0105 jako (nomen omen) \u015bwi\u0119ty Graal maszyn wirtualnych. W praktyce oznacza to mo\u017cliwo\u015b\u0107 u\u017cycia zar\u00f3wno kompilacji Ahead-of-Time, jak i Just-in-Time w tym samym projekcie.\n<h3 id=\"przeczytaj-wi%C4%99cej-11\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-22\/\">JVM Tuesday vol. 22<\/a><\/li>\n<\/ul>\n<h2 id=\"pivotal-wypu%C5%9Bci%C5%82-spring-native-%F0%9F%92%90\">Pivotal wypu\u015bci\u0142 Spring Native \ud83c\udf3f<\/h2>\nKontynuuj\u0105c temat GraalVM - 2021 przyni\u00f3s\u0142 te\u017c r\u00f3wnie\u017c wersje Springa przeznaczon\u0105 na t\u0105 w\u0142a\u015bnie platform\u0119.\n\nJak bardzo zelektryzowa\u0142o to spo\u0142eczno\u015b\u0107 niech udowodni fakt, \u017ce og\u0142oszenie to jest jak do tej pory najlepiej \u201cczytaj\u0105cym si\u0119\u201d newsem dotycz\u0105cym JVMa, jakiego opublikowali\u015bmy w Keep Upie, przebijaj\u0105c nawet wydanie Javy 16.\n\nOk, ale co konkretnie to oznacza? Po pierwsze, Spring Native b\u0119dzie m\u00f3g\u0142 by\u0107 releasowany jako pojedynczy plik wykonywalny, bez potrzeby posiadania zaembedowanego JVMa. Po drugie, jego czas startu robi wra\u017cenie - wed\u0142ug tego, co podaj\u0105 tw\u00f3rcy, dla typowej aplikacji nie powinien on przekracza\u0107 magicznej granicy &lt; 100ms (aczkolwiek liczby jak to liczby, b\u0119dzie trzeba je zweryfikowa\u0107 w praktyce). Nieodmiennie w wypadku rozwi\u0105za\u0144 opartych na GraalVM, jako docelowy spos\u00f3b u\u017cycia wskazywane s\u0105 kontenery, a tak\u017ce rozwi\u0105zania chmurowe takie jak cho\u0107by Spring Cloud Functions.\n\nJednocze\u015bnie nie ma r\u00f3\u017cy bez kolc\u00f3w i chc\u0105c korzysta\u0107 z nowej zabawki trzeba i\u015b\u0107 na pewne kompromisy. Korzystaj\u0105c ze Spring Native, b\u0119dziemy musieli pogodzi\u0107 si\u0119 z d\u0142u\u017cszymi czasami kompilacji oraz brakiem bardziej zaawansowanych optymalizacji, jakie daje JIT - musi nam wystarczy\u0107 kompilacja Ahead-of-Time.\n\nTw\u00f3rcy Springa bardzo aktywnie wsparli r\u00f3wnie\u017c sam rozw\u00f3j GraalVM, pomagaj\u0105c umo\u017cliwi\u0107 w pe\u0142ni \u201cnatywne\u201d testowanie aplikacji za pomoc\u0105 JUnita (przed wprowadzonymi przez nich zmianami, testy uruchamiane by\u0142y w ramach standardowej maszyny Javy). Aby to osi\u0105gn\u0105\u0107, niezb\u0119dna by\u0142a implementacja funkcjonalno\u015bci junit-platform-native, kt\u00f3ra wykrywa testy podczas uruchomienia w ramach \u201czwyk\u0142ego\u201d JVM i zapisuje je na boku na potrzeby r\u00f3wnie\u017c natywnej kompilacji. Tak znalezione testy s\u0105 pakowane do osobnego pliku wykonywalnego, kt\u00f3ry mo\u017ce by\u0107 uruchomiony ju\u017c w ramach \u015brodowiska GraalVM.\n\nNa koniec metody wersjonowania - cykl \u017cycia Spring Native b\u0119dzie \u015bci\u015ble spi\u0119ty z releasami Spring Boota, a nowe wydania wersji natywnej b\u0119d\u0105 pojawia\u0107 si\u0119 wraz z ka\u017cdym update\u2019em do klasyka.\n<h3 id=\"przeczytaj-wi%C4%99cej-12\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-29\/\">JVM Tuesday vol. 29<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-42\/\">JVM Tuesday vol. 42<\/a><\/li>\n<\/ul>\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/lh6.googleusercontent.com\/Xz5ilPadp4d0uFfCVvH8zeKgCs8bwdJvF3HtjkOL-2SkJylrXfHr-gn\nQY4NT7lK8z15VZ9ugx-nIgxeevW28SocILEhzNtdFuHBnLR1qwFU5xNDaMjxiXfRl63mZKYUq1OqcGfqX=s0\" alt=\"\" \/><\/figure>\n<h2 id=\"project-valhalla-wymusza-grube-zmiany-w-modelu-danych-jvm\">Project Valhalla wymusza grube zmiany w modelu danych JVM<\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb12c324b.png\" alt=\"\" \/><\/figure>\nValhalla jest jednym z najwa\u017cniejszych obecnie rozwijanych projekt\u00f3w odbywaj\u0105cych si\u0119 w ramach JVMa. Johna Rose\u2019a i Briana Goetza opublikowali w zesz\u0142ym roku seri\u0119 pokazuj\u0105c\u0105, jak w swoim bie\u017c\u0105cym kszta\u0142cie wp\u0142ynie on na bytecode samego JVMa.\n\nI cho\u0107 zdajemy sobie spraw\u0119, \u017ce ci\u0119\u017cko o bardziej hermetyczny temat (rozkminy, jak na poziomie bajtkodu b\u0119dzie zachowywa\u0107 si\u0119 funkcjonalno\u015b\u0107 j\u0119zyka, kt\u00f3rej jeszcze nie ma), to jednak publikacja zapewnia sporo ciekawych informacji o decyzjach projektowych i ich reperkusjach. Tekst nie nale\u017cy do najprostszych (mimo, \u017ce napisany jest w jak najbardziej przyst\u0119pny spos\u00f3b, po prostu ta tematyka jest z za\u0142o\u017cenia mocno z\u0142o\u017cona), ale dla nas, \u015bmiertelnych klepaczy kodu, wnosi tyle \u017ce, bogowie JVMa zdecydowali si\u0119 do\u015b\u0107 mocno maszyn\u0119 wirtualn\u0105, przeora\u0107 na potrzeby zmian wprowadzonych w Valhalli.\n\nOczywi\u015bcie, to o czym pisz\u0119 dla Was, to wierzcho\u0142ek g\u00f3ry lodowej - ch\u0119tnych zapraszam do pe\u0142nej publikacji. Moja obawa po lekturze jest taka, \u017ce bior\u0105c pod uwag\u0119 zakres planowanych zmian, ja Valhalli chyba nigdy nie do\u017cyje.\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_6128bb1366832.png\" alt=\"\" \/>\n\n<figcaption>Mam przynajmniej nadzieje, \u017ce moje wnuki z tego projektu skorzystaj\u0105.<\/figcaption><\/figure>\n<h3 id=\"przeczytaj-wi%C4%99cej-13\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-monday-21\/\">JVM Tuesday vol. 21<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-30\/\">JVM Tuesday vol. 30<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-35\/\">JVM Tuesday vol. 35<\/a><\/li>\n<\/ul>","innerContent":["<h2>\ud83e\udd73 Jeste\u015bmy z Wami od roku! \ud83e\udd73<\/h2>\nOd 52 tygodni (nie zgubili\u015bmy po drodze ani jednego \ud83e\udd18) informujemy Was o wszystkim, co dzieje si\u0119 w JVMowym ekosystemie. Postanowili\u015bmy z tej okazji troch\u0119 po\u015bwi\u0119towa\u0107 i podsumowa\u0107 ostatnie 12 miesi\u0119cy. Wiemy, \u017ce takie podsumowania zwykle ukazuj\u0105 si\u0119 w grudniu, ale tym bardziej mo\u017ce kto\u015b b\u0119dzie chcia\u0142 sobie zrobi\u0107 taki przegl\u0105d w\u0142a\u015bnie teraz.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb084c4bd.png\" alt=\"\" \/><\/figure>\nLista jest bardzo \u201copinionated\u201d i stanowi przegl\u0105d najbardziej interesuj\u0105cych wydarze\u0144, kt\u00f3re dotkn\u0119\u0142y spo\u0142eczno\u015b\u0107 od sierpnia 2020. Potraktujcie wi\u0119c ca\u0142o\u015b\u0107 jako \u201cThe Best Of JVM Tuesday\u2026 so far\u201d - niekt\u00f3rzy stali czytelnicy mog\u0105 np. pami\u0119ta\u0107 niekt\u00f3re memiszcza. Ca\u0142o\u015b\u0107 postanowi\u0142em przedstawi\u0107 w formie g\u00f3ry lodowej (je\u015bli nie wiecie, o co chodzi, odsy\u0142am do <a href=\"https:\/\/knowyourmeme.com\/memes\/iceberg-tiers-parodies\">knowyourmemes<\/a>) - zawsze mi si\u0119 marzy\u0142 w\u0142asny \u201ciceberg\u201d. Zatem bez przed\u0142u\u017cania...\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0b694e1.png\" alt=\"\" \/><\/figure>\n<h2 id=\"nowe-wydania-poszczeg%C3%B3lnych-projekt%C3%B3w\">Nowe wydania poszczeg\u00f3lnych projekt\u00f3w<\/h2>\nW ci\u0105gu ostatniego roku wi\u0119kszo\u015b\u0107 najwa\u017cniejszych graczy w ekosystemie wyda\u0142a jedn\u0105 now\u0105 wersj\u0119 swojego oprogramowania. Oto (naszym zdaniem) najwa\u017cniejsze z nich:\n<ul>\n \t<li>Java <a href=\"https:\/\/www.infoworld.com\/article\/3534133\/jdk-15-the-new-features-in-java-15.html\">15<\/a> i <a href=\"https:\/\/vived.io\/jvm-tuesday-vol-29\/\">16<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">Kotlin 1.5<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-38\/\">Scala 3<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-45-2\/\">Quarkus 2.0<\/a><\/li>\n \t<li>Spring Boot <a href=\"https:\/\/spring.io\/blog\/2020\/11\/12\/spring-boot-2-4-0-available-now\">2.4<\/a> i <a href=\"https:\/\/vived.io\/jvm-tuesday-vol-39\/\">2.5<\/a><\/li>\n \t<li><a href=\"https:\/\/vertx.io\/blog\/eclipse-vert-x-4-released\/\">Vert.x 4.0<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-34\/\">Gradle 7.0<\/a><\/li>\n \t<li><a href=\"https:\/\/maarten.mulders.it\/2020\/11\/whats-new-in-maven-4\/\">Maven 4.0<\/a><\/li>\n<\/ul>\nNie b\u0119dziemy tutaj opisywa\u0107 ka\u017cdego z nich, bo ka\u017cda premiera dosta\u0142a du\u017cy opis w ramach kt\u00f3rej\u015b z naszych wcze\u015bniejszych edycji, skrz\u0119tnie podlinkowanych powy\u017cej. Szczeg\u00f3lnie polecamy zapozna\u0107 si\u0119 z now\u0105 Scal\u0105 - jest to pierwsze du\u017ce wydanie od lat i efekt pracy wielu in\u017cynier\u00f3w (w tym z naszego zespo\u0142u w VirtusLab).\n\nW ci\u0105gu ostatnich 12 miesi\u0119cy zrobili\u015bmy te\u017c pe\u0142ne podsumowanie stanu, w kt\u00f3rym znajduj\u0105 si\u0119 <a href=\"https:\/\/vived.io\/jvm-tuesday-vol-28\/\">Reaktywne Frameworki<\/a>. Bardzo polecamy, nie zestarza\u0142o si\u0119 zbyt mocno\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0c055ce.png\" alt=\"\" \/><\/figure>\n<h2 id=\"google-wygra%C5%82o-w-s%C4%85dzie-z-oraclem-w-procesie-o-u%C5%BCycie-api-javy-na-androidzie-%F0%9F%91%A8%E2%80%8D%E2%9A%96%EF%B8%8F\">Google wygra\u0142o w s\u0105dzie z Oraclem w procesie o u\u017cycie API Javy na Androidzie \u200d\u2696\ufe0f<\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0c96914.png\" alt=\"\" \/><\/figure>\nPo dziesi\u0119ciu latach, Google wygra\u0142o z Oraclem proces o u\u017cycie API Javy na popularnym Androidzie. Dla tych, kt\u00f3rzy nie wiedz\u0105 - \u201czielony robocik\u201d nie uruchamia aplikacji w ramach maszyny wirtualnej Javy, ale jego API dla programist\u00f3w jest kopi\u0105 tego javowego, za co Oracle \u017c\u0105da\u0142o od Google wysokiego odszkodowania z tytu\u0142u \u0142amania praw autorskich.\n\nWyrok jest zreszt\u0105 wa\u017cny dla ca\u0142ej bran\u017cy, gdy\u017c osobom chc\u0105cym stworzy\u0107 alternatywne implementacje danych API, daje do r\u0105k do\u015b\u0107 dobr\u0105 amunicje. Nale\u017cy pami\u0119ta\u0107 jednak, \u017ce wyrok nie jest \u201ckonkluzywny\u201d, co do faktu, \u017ce API jako takiego nie mo\u017cna chroni\u0107 prawem autorskim - s\u0105d orzek\u0142, \u017ce kompatybilne API wchodzi w definicje tak zwanego \u201cdozwolonego u\u017cycia\u201d. Jednocze\u015bnie ze wzgl\u0119du na dzia\u0142aj\u0105ce w USA prawo kazusu, prawdopodobnie minie troch\u0119 zanim ktokolwiek spr\u00f3buje wytoczy\u0107 podobn\u0105 spraw\u0119.\n<h3 id=\"przeczytaj-wi%C4%99cej\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-33\/\">JVM Tuesday vol. 33<\/a><\/li>\n<\/ul>\n<h2 id=\"kotlin-sta%C5%82-si%C4%99-szalenie-otwarty-na-spo%C5%82eczno%C5%9B%C4%87\">Kotlin sta\u0142 si\u0119 szalenie otwarty na spo\u0142eczno\u015b\u0107<\/h2>\nChocia\u017c do masowej \u015bwiadomo\u015bci Kotlin przebi\u0142 si\u0119 nieco p\u00f3\u017aniej, to jednak swoj\u0105 premier\u0119 j\u0119zyk JetBrains mia\u0142 dekad\u0119 temu. W celu odpowiedniego uczczenia tak znamienitej rocznicy, tw\u00f3rcy Intellij postanowili nakr\u0119ci\u0107\u2026 dokument.\n\nRozw\u00f3j Kotlina og\u00f3lnie naprawd\u0119 interesuj\u0105co si\u0119 obserwuje. Roman Elizarov, lead projektu, w fantastyczny spos\u00f3b dzieli si\u0119 decyzjami projektowymi stoj\u0105cymi za poszczeg\u00f3lnymi featurami (szczeg\u00f3lnie jego talki na temat korutyn i structured concurrency nale\u017c\u0105 do moich ulubionych w temacie j\u0119zyk\u00f3w programowania). Jak bardzo otwarty jest to zesp\u00f3\u0142 niech \u015bwiadczy fakt, \u017ce wraz z premier\u0105 wersji 1.5 j\u0119zyka, pojawi\u0142o si\u0119 na Redditcie kotlinowe AMA, w kt\u00f3rym tw\u00f3rcy j\u0119zyka odpowiedzieli na mas\u0119 pyta\u0144 spo\u0142eczno\u015bci. To nie jedyne tego typu dzia\u0142anie - zesp\u00f3\u0142 da\u0142 te\u017c u\u017cytkownikom mo\u017cliwo\u015b\u0107 g\u0142osowania na nowe featury, nad kt\u00f3rymi b\u0119d\u0105 pracowa\u0107 w przysz\u0142o\u015bci\u2026 a tak\u017ce na te, kt\u00f3rych ludzie sugeruj\u0105 unika\u0107 w przysz\u0142ych wersjach Kotlina.\n\nhttps:\/\/www.youtube.com\/watch?v=9pSh0VAVYn4\n\nW ci\u0105gu roku dosz\u0142o te\u017c do wielokrotnych aktualizacji Roadmapy Kotlina, kt\u00f3ra to pozwala \u015bledzi\u0107 kierunek, w kt\u00f3rym ewoluuje j\u0119zyk. Wspominaj\u0105c o ewolucji, warto przypomnie\u0107 \u017ce Kotlin postanowi\u0142 nieco skopiowa\u0107 cykl wyda\u0144 Javy, stawiaj\u0105c na przewidywalno\u015b\u0107 kolejnych edycji. Teraz nowa \u201cmajor\u201d wersja (w koltinowej nomenklaturze 1.x) b\u0119dzie wydawana raz na p\u00f3\u0142 roku, nie ogl\u0105daj\u0105c si\u0119 na to, jakie funkcjonalno\u015bci s\u0105 gotowe.\n\nW tej beczce miodu jest te\u017c \u0142y\u017cka dziegciu. Kotlin sta\u0142 si\u0119 ostatnimi czasy wr\u0119cz definicj\u0105 Vendor Lock-Inu. JetBrains postanowi\u0142o zerwa\u0107 wszelkie pozory i wcze\u015bniej niezale\u017cnie rozwijany plugin do j\u0119zyka, sta\u0142 si\u0119 integraln\u0105 cz\u0119\u015bci\u0105 Intellija.\n<h3 id=\"przeczytaj-wi%C4%99cej-1\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-23\/\">JVM Tuesday vol. 23<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-33\/\">JVM Tuesday vol. 33<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-39\/\">JVM Tuesday vol. 39<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-41\/\">JVM Tuesday vol. 41<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-43\/\">JVM Tuesday vol. 43<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-50\/\">JVM Tuesday vol. 43<\/a><\/li>\n<\/ul>\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0d4e70f.png\" alt=\"\" \/><\/figure>\n<h2 id=\"oracle-te%C5%BC-zacz%C4%99%C5%82o-dobrze-gra%C4%87-z-community\">Oracle te\u017c zacz\u0119\u0142o dobrze gra\u0107 z Community<\/h2>\nOracle bardzo zaczyna dba\u0107 o komunikacj\u0119 z programistami. Prowadz\u0105 stron\u0119 Inside Java, agreguj\u0105c\u0105 zmiany w \u015bwiecie JVMowym. Dodatkowo, wprost uwielbiam towarzysz\u0105cy blogowi podcast. M\u00f3wi si\u0119 \u017ce w dzisiejszych czasach nie da si\u0119 ju\u017c publikowa\u0107 podcastu na \u015brednim poziomie technicznym i liczy\u0107 na pos\u0142uch, ale ten od Oracle udowadnia, \u017ce w dalszym ci\u0105gu \u201ccontent is the King\u201d. Jako\u015b\u0107 nagra\u0144 jest hmmm\u2026 akceptowalna, jednak ca\u0142o\u015b\u0107 zawiera najbardziej \u201cmi\u0119sne\u201d rozmowy na temat j\u0119zyka, na jakie mo\u017cna natkn\u0105\u0107 si\u0119 w sieci. Wynika to w du\u017cej mierze z doboru go\u015bci. \u00a0O ile wi\u0119kszo\u015b\u0107 innych tego typu kana\u0142\u00f3w operuje zwykle na wiedzy z \u201cdrugiej r\u0119ki\u201d, Inside Java zaprasza do siebie tw\u00f3rc\u00f3w JVM, kt\u00f3rzy okazuj\u0105 si\u0119 by\u0107 naprawd\u0119 interesuj\u0105cymi rozm\u00f3wcami.\n\nJakby tego by\u0142o ma\u0142o Oracle, ustami Nicolai Parlog, zacz\u0119\u0142o prowadzi\u0107 seri\u0119 wideo Inside Java Newscast, kt\u00f3re mo\u017cecie traktowa\u0107 jako alternatyw\u0119 dla naszych post\u00f3w publikowanych w ramach Weekly (aczkolwiek my si\u0119gamy nieco szerzej - seria Oracle to newsy stricte zwi\u0105zane z JVMem). Nowym rozwijanym projektem jest za\u015b JEP Cafe - opisuj\u0105cych nowopowsta\u0142e JEPy.\n<h3 id=\"przeczytaj-wi%C4%99cej-2\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-45\/\">JVM Tuesday vol. 44<\/a><\/li>\n<\/ul>\n<h2 id=\"java-trafi%C5%82a-na-githuba\">Java trafi\u0142a na GitHuba<\/h2>\nMo\u017cna by powiedzie\u0107 - nareszcie. Wraz z implementacj\u0105 JEP 369 (Migrate to GitHub), kod \u017ar\u00f3d\u0142owy Javy sta\u0142 si\u0119 znacznie \u0142atwiej dost\u0119pny dla rzeszy zainteresowanych nim programist\u00f3w. Wprawdzie nie oby\u0142o si\u0119 bez kontrowersji (nie ka\u017cdemu podoba si\u0119 przej\u015bcie na platform\u0119, kt\u00f3rej w\u0142a\u015bcicielem jest Microsoft), to jednak teraz b\u0119dzie znacznie \u0142atwiej \u015bledzi\u0107 zmiany w kodzie OpenJDK. Przez lata swojej dominacji, Github sta\u0142 si\u0119 ekosystemem r\u00f3\u017cnych narz\u0119dzi, a sam Git te\u017c jest znacznie popularniejszy ni\u017c Mercurial, kt\u00f3ry by\u0142 do tej pory jedynym wspieranym przez Jav\u0119 narz\u0119dziem kontroli wersji.\n<h2 id=\"java-rozpycha-si%C4%99-w-%C5%9Bwiecie-uczenia-maszynowego\">Java rozpycha si\u0119 w \u015bwiecie Uczenia Maszynowego<\/h2>\nJava jest bardzo uniwersalnym j\u0119zykiem, ale s\u0105 pewne kategorie problem\u00f3w, z kt\u00f3rych zosta\u0142a skutecznie wyparta przez \u201ckonkurencje\u201d. We\u017amy na przyk\u0142ad takie uczenie maszynowe. W ostatnich latach nie mia\u0142a nawet startu do Pythona. Sytuacja powoli wydaje si\u0119 zmienia\u0107. Wraz z premier\u0105 Javy 15, Oracle (nieco cichaczem) opublikowa\u0142 Tribuo, bibliotek\u0119 umo\u017cliwiaj\u0105c\u0105 tworzenie silnie typowanych modeli MLowych, LinkedIn za\u015b postanowi\u0142 wypu\u015bci\u0107 swoje w\u0142asne rozwi\u0105zanie - Dagli.\n\nCzym r\u00f3\u017cni si\u0119 Dagli od Tribuo? Rozwi\u0105zania w za\u0142o\u017ceniach (zastosowania produkcyjne, wspomniane ju\u017c typy) s\u0105 do siebie bardzo podobne. Co wyr\u00f3\u017cnia rozwi\u0105zanie LinkedIn to fakt, \u017ce jego tw\u00f3rcy wzi\u0119li \u201cna tapet\u201d nieco wi\u0119ksz\u0105 klas\u0119 problem\u00f3w - zamiast skupia\u0107 si\u0119 na samych modelach, udost\u0119pniaj\u0105 mo\u017cliwo\u015b\u0107 zintegrowania pe\u0142nego pipeline, opisuj\u0105cego kolejne transformacje danych. Dodatkowo dostarczaj\u0105 te\u017c ca\u0142y zestaw gotowych rozwi\u0105za\u0144, kt\u00f3re od razu mo\u017cna wykorzysta\u0107 w swojej aplikacji.\n\nW tym temacie nie pr\u00f3\u017cnowa\u0142 te\u017c z reszt\u0105 team JetBrains, tworz\u0105c w\u0142asn\u0105 bibliotek\u0119. KotlinDL, bo o niej mowa, jest odpowiednikiem pythonowego Kerasa - bibliotek\u0105 stanowi\u0105c\u0105 wrapper nad TensorFlow, udost\u0119pniaj\u0105c\u0105 API pozwalaj\u0105ce na u\u017cywanie modeli uczenia maszynowego r\u00f3wnie\u017c programistom, kt\u00f3rzy nie posiadaj\u0105 typowo Data Science\u2019oweg do\u015bwiadczenia.\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0de7704.png\" alt=\"\" \/><\/figure>\n<h2 id=\"java-zacz%C4%99%C5%82a-na-powa%C5%BCnie-wspiera%C4%87-procesory-arm\">Java zacz\u0119\u0142a na powa\u017cnie wspiera\u0107 procesory ARM<\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0e90494.png\" alt=\"\" \/><\/figure>\n\u200b\u200bPraktycznie na ka\u017cdej li\u015bcie najwa\u017cniejszych wydarze\u0144 technologicznych 2020 roku musia\u0142 znale\u017a\u0107 si\u0119 niesamowity wr\u0119cz sukces procesor\u00f3w ARM. G\u0142\u00f3wnie dzi\u0119ki Apple i ich niesamowitym procesorem M1 (dlaczego s\u0105 takie szybkie? <a href=\"https:\/\/debugger.medium.com\/why-is-apples-m1-chip-so-fast-3262b158cba2\">Tutaj znajdziecie bardzo fajny artyku\u0142 na ten temat<\/a>), ale na podobny ruch zdecydowa\u0142y si\u0119 te\u017c inne firmy. Procesory ARM staj\u0105 si\u0119 coraz bardziej realn\u0105 alternatyw\u0105 dla programist\u00f3w JVM - Amazon oferuje instancje chmurowe z tym typem procesor\u00f3w, Microsoft opracowa\u0142 wersj\u0119 OpenJDK na Windows uruchamianym na tej w\u0142a\u015bnie architekturze, a Oracle postanowi\u0142o udost\u0119pni\u0107 w ramach swojej chmury serwery ARM.\n<h3 id=\"przeczytaj-wi%C4%99cej-3\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-22\/\">JVM Tuesday vol. 22<\/a><\/li>\n<\/ul>\n<h2 id=\"renesans-desktopowych-framework%C3%B3w-pisanych-pod-k%C4%85tem-jvm\">Renesans desktopowych framework\u00f3w pisanych pod k\u0105tem JVM<\/h2>\nZaczynam si\u0119 powoli zastanawia\u0107, czy 2020 nie jest rokiem, kt\u00f3ry zapisze si\u0119 w historii (ze wzgl\u0119du na brak innych wa\u017cnych dla ludzko\u015bci wydarze\u0144) jako ten, kt\u00f3ry rozpocz\u0105\u0142 koniec panowania Electrona. Rozwi\u0105zanie to charakteryzuje si\u0119 tym, \u017ce nie lubi go w zasadzie nikt\u2026 poza programistami, kt\u00f3rzy jednym kodem s\u0105 w stanie stworzy\u0107 \u201cnatywn\u0105\u201d wersj\u0119 aplikacji na wszystkie platformy. Jednak nawet my chyba powoli uczymy si\u0119, \u017ce tego typu aplikacje nie s\u0105 dobrym rozwi\u0105zaniem - bardzo daleko im do uczucia natywno\u015bci, dodatkowo znany jest fakt, \u017ce ile RAMu znajd\u0105, tyle zjedz\u0105. St\u0105d te\u017c rodz\u0105 si\u0119 powoli alternatywy, w\u015br\u00f3d kt\u00f3rych przoduje Apple z Catalystem. \u0141okciami zaczyna przepycha\u0107 si\u0119 te\u017c ekipa z JetBrains, wypuszczaj\u0105c na pocz\u0105tku wakacji nie tylko stabilne Jetpack Compose dla Androida, ale r\u00f3wnie\u017c wersje projektu dla Web oraz Desktopa - od niedawna zwanych jako Kotlin Multiplatform.\n\nOpr\u00f3cz tego stworzyli oni te\u017c Skij\u0119 - odpowiednik przegl\u0105darkowego Canvas API, stanowi\u0105cym alternatyw\u0119 dla wys\u0142u\u017conego Graphics2D. Stworzenie tego typu rozwi\u0105zania od zera by\u0142oby bardzo trudne, dlatego Skija \"buduje na barkach giganta\u201d - biblioteki Skia, kt\u00f3ra s\u0142u\u017cy m.in. jako silnik interfejsu Chrome.\n\nCa\u0142y obraz dope\u0142nia si\u0119 te\u017c w Projekcie Lanai. W ramach prac nad Lanai, Jetbrains wsp\u00f3\u0142pracowa\u0142 z samym Oracle, a celem projektu by\u0142o stworzenie nowoczesnej metody renderowania obiekt\u00f3w interfejsu na macOS. OpenGL, u\u017cywany przez Swinga, nie jest ju\u017c aktywnie wspierany przez komputery Apple - obecnie obowi\u0105zuj\u0105cym tam rozwi\u0105zaniem jest Metal, w\u0142asno\u015bciowe API, cechuj\u0105ce si\u0119 wysok\u0105 wydajno\u015bci\u0105 i rozwijan\u0105 wraz z kolejnymi wersjami systemu. Lanai wyj\u015b\u0107 ma ju\u017c za moment, wraz z Jav\u0105 17. Teraz stoj\u0105cy za nim ludzie planuj\u0105 za\u015b Projekt Wakefield - podobn\u0105 inicjatyw\u0119, tym razem dla Linuxa i serwera wy\u015bwietleniowego Wayland.\n<h3 id=\"przeczytaj-wi%C4%99cej-4\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-25\/\">JVM Tuesday vol. 25 <\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-27\/\">JVM Tuesday vol. 27<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">JVM Tuesday vol. 37<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">JVM Tuesday vol. <\/a>51<\/li>\n<\/ul>\n<h2 id=\"adoptopenjdk-zmieni%C5%82o-si%C4%99-w-adoptium-i-trafi%C5%82o-pod-skrzyd%C5%82a-eclipse\">AdoptOpenJDK zmieni\u0142o si\u0119 w Adoptium i trafi\u0142o pod skrzyd\u0142a Eclipse<\/h2>\nAdoptOpenJDK to projekt, kt\u00f3ry powsta\u0142 jako efekt wysi\u0142k\u00f3w spo\u0142eczno\u015bci walcz\u0105cej o \u201cwoln\u0105\u201d implementacje JDK. W ci\u0105gu ostatnich 12 miesi\u0119cy, ostatecznie trafi\u0142 on pod skrzyd\u0142a Eclipse Foundation. Efekt, po ponad rocznych, stara\u0144 skwitowany zosta\u0142 przechrzczeniem projektu na Eclipse Adoptium (JDK jest znakiem towarowym nale\u017c\u0105cym do Oracle) oraz powstanie Adoptium Working Group.\n\nBior\u0105c pod uwag\u0119 fakt, \u017ce Oracle obecnie udziela wy\u0142\u0105cznie sze\u015bciu miesi\u0119cy wsparcia, dla ka\u017cdego nowego wydania, Adoptium jest krytycznym projektem dla ca\u0142ej spo\u0142eczno\u015bci, nie tylko Javy, ale r\u00f3wnie\u017c innych JVMowych j\u0119zyk\u00f3w. Ca\u0142y projekt fundowany jest przez mnogo\u015b\u0107 partner\u00f3w - Alibaba Cloud, Huawei, IBM, iJUG (stowarzyszenie niemieckich JUG\u00f3w), Karakun AG, Microsoft, New Relic oraz Red Hat b\u0119d\u0105 bra\u0107 udzia\u0142 w rozwoju otwartej wersji Javy. W ramach negocjacji uda\u0142o si\u0119 te\u017c otrzyma\u0107 dost\u0119p do javowego Technology Compatibility Kit, \u201cwywalczonego\u201d od Oracle.\n\nOstatecznie, w wyniku prac grupy stworzone zosta\u0142o Eclipse Temurin - oficjalny build JDK, kt\u00f3ry mo\u017ce zosta\u0107 u\u017cyty jako \u201cbaza\u201d przez ca\u0142\u0105 spo\u0142eczno\u015b\u0107 i wszystkich tych, kt\u00f3rzy chc\u0105 stworzy\u0107 w\u0142asny wariant JDK.\n<h3 id=\"przeczytaj-wi%C4%99cej-5\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-31\/\">JVM Tuesday vol. 31<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-34\/\">JVM Tuesday vol. 34<\/a><\/li>\n<\/ul>\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb0fe0f26.png\" alt=\"\" \/><\/figure>\n<h2 id=\"security-manager-usuwany-z-javynie-bez-kontrowersji-%F0%9F%91%AE%E2%80%8D%E2%99%80%EF%B8%8F\">Security Manager usuwany z Javy - nie bez kontrowersji<\/h2>\nJEP 411: Deprecate the Security Manager for Removal przyni\u00f3s\u0142 to, co programi\u015bci lubi\u0105 najbardziej - usuwanie kodu. No, mo\u017ce niekoniecznie usuwanie, ale deprekracja to w ko\u0144cu pierwszy krok ku pozbyciu si\u0119 nadmiarowego balastu. A m\u00f3wimy tutaj o bala\u015bcie dosy\u0107 wiekowym - Security Manager swoje korzenie ma jeszcze w pierwszym wydaniu Javy.\n\nJego g\u0142\u00f3wnym celem by\u0142o (i w zasadzie ci\u0105gle jest) mo\u017cliwo\u015b\u0107 granularnego sterowania uprawnieniami aplikacji uruchamianych w ramach JVM. Jest to opcja swoistej piaskownicy, pozwalaj\u0105cej np. ograniczy\u0107 dost\u0119p do systemu plik\u00f3w albo zablokowa\u0107 wykonanie komend pokroju System.exit() - do tego u\u017cywaj\u0105 go np. serwery aplikacyjne. Jego u\u017cycie szczeg\u00f3lnie istotne by\u0142o w epoce, gdy aplikacje javowe cz\u0119sto by\u0142y np. pobierane z sieci w formie aplet\u00f3w (kt\u00f3re r\u00f3wnie\u017c uleg\u0142y deprekacji w zesz\u0142ym roku)\n\nNa wie\u015b\u0107 o tych planach, lista mailingowa JDK zosta\u0142a wr\u0119cz zalana krytyk\u0105 JEP 411. Tw\u00f3rcom Javy zarzucane by\u0142o lenistwo, brak wypracowania sensownych alternatyw (innych ni\u017c \"przykro nam, napisz sobie Agenta do maszyny wirtualnej\") - szczeg\u00f3lnie aktywnym dyskutantem jest Reinier Zwitserloot, jeden z tw\u00f3rc\u00f3w Lomboka. Z drugiej strony w rozmowie bierze udzia\u0142 m.in. przywo\u0142any w poprzedniej edycji Ron Pressler czy Alex Bateman, kt\u00f3rzy odbijaj\u0105 pi\u0142eczk\u0119. Zarzucali oni krytykom, \u017ce o ile tak naprawd\u0119 wiele ich argumentum-at-securitum jest do\u015b\u0107 trafnych, to w realnym \u015bwiecie nikt nie zwraca na przywo\u0142ywane aspekty uwagi - typu sandboxowanie u\u017cycia bibliotek zewn\u0119trznych.\n\nOstatecznie w nieco tylko zmienionej formie JEP 411 trafi do Javy 17.\n<h3 id=\"przeczytaj-wi%C4%99cej-6\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">JVM Tuesday vol. 37<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-38\/\">JVM Tuesday vol. 38<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-41\/\">JVM Tuesday vol. 41<\/a><\/li>\n<\/ul>\n<h2 id=\"microsoft-ostro-zaanga%C5%BCowa%C5%82-si%C4%99-w-rozw%C3%B3j-javy-%F0%9F%AA%9F\">Microsoft ostro zaanga\u017cowa\u0142 si\u0119 w rozw\u00f3j Javy<\/h2>\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_6128bb107a4e4.png\" alt=\"\" \/>\n<figcaption>Powy\u017csze ju\u017c nieaktualne\u00a0<\/figcaption><\/figure>\nDla os\u00f3b \u015bledz\u0105cych dzia\u0142ania Microsoftu z pewno\u015bci\u0105 nie b\u0119dzie tajemnic\u0105, \u017ce firma z Redmond do\u015b\u0107 mocno inwestuje ostatnio w Jav\u0119. Po dekadach stara\u0144 (to jest naprawd\u0119 d\u0142uuuga historia), wreszcie wypu\u015bci\u0142a ona w\u0142asny wariant OpenJDK. Na razie dost\u0119pna jest wersja JDK 11, ale do wczesnego wgl\u0105du trafi\u0142a te\u017c \u201cszesnastka\u201d. Ca\u0142o\u015b\u0107 oparta jest o Eclipse Adoptium, kt\u00f3rego Microsoft jest sponsorem. Stan\u0105 si\u0119 one oficjalnym rozwi\u0105zaniem u\u017cywanym w ramach platformy Azure (do tej pory u\u017cywane by\u0142y warianty JDK tworzone przez Zulu). Dla tw\u00f3rc\u00f3w oprogramowania o niszowych gustach z pewno\u015bci\u0105 istotnym faktem b\u0119dzie to, \u017ce microsoftowa Java wydana zostanie r\u00f3wnie\u017c na procesory ARM - zar\u00f3wno AARch64 jak i M1.\n\nMicrosoft stworzy\u0142 tak\u017ce GCToolkit. Jest to zestaw bibliotek s\u0142u\u017c\u0105cych do analizy log\u00f3w Garbage Collectora. Umo\u017cliwia on \u201cpr\u00f3bkowanie\u201d GC i udost\u0119pnia interfejs API do odpowiednio wygenerowanych agregat. Pozwala to u\u017cytkownikowi na tworzenie z\u0142o\u017conych analiz stanu pami\u0119ci JVM.\n\nNie wiem, czy pami\u0119tacie, ale Microsoft ma te\u017c w\u0142asne \u201cIDE\u201d dla Javy, je\u015bli tak mo\u017cna nazwa\u0107 zestaw plugin\u00f3w do Visual Studio Code. Jego kolejne aktualizacje pojawiaj\u0105 si\u0119 w regularnych, miesi\u0119cznych odst\u0119pach i stanowi\u0105 intryguj\u0105c\u0105 alternatyw\u0119 dla IntelliJ.\n<h3 id=\"przeczytaj-wi%C4%99cej-7\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-40\/\">JVM Tuesday vol. 40<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-40\/https:\/\/blog.vived.io\/jvm-tuesday-vol-50\/\">JVM Tuesday vol. 50<\/a><\/li>\n<\/ul>\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb10d361c.png\" alt=\"\" \/><\/figure>\n<h2 id=\"project-loom-dalej-si%C4%99-rozwija-wzbudzaj%C4%85c-pewne-kontrowersje\">Project Loom dalej si\u0119 rozwija, wzbudzaj\u0105c pewne kontrowersje<\/h2>\nO Projekcie Loom, maj\u0105cym wprowadzi\u0107 Kontynuacje do maszyny wirtualnej Javy, powiedziano ju\u017c naprawd\u0119 du\u017co. W ci\u0105gu ostatnich dwunastu miesi\u0119cy najciekawsz\u0105 dyskusj\u0119 wzbudzi\u0142 jednak, moim zdaniem, Greg Wilkins (Project Lead znanego wszystkim Jetty\u2019ego)\n\nPostanowi\u0142 on przygotowa\u0107 testy Early Access buildu Projektu Loom, w celu zweryfikowania, na ile obietnice jego tw\u00f3rc\u00f3w maj\u0105 odzwierciedlenie w realiach. Na pierwszy ogie\u0144 posz\u0142a mo\u017cliwo\u015bci stworzenia miliona r\u00f3wnocze\u015bnie istniej\u0105cych r\u00f3wnoleg\u0142ych w\u0105tk\u00f3w. Efekt jest hmmm\u2026 po\u0142owiczny. Pisz\u0105c w skr\u00f3cie, nie ma problemu ze stworzeniem w\u0105tk\u00f3w jako takich, ale za wiele to si\u0119 w nich nie zrobi - nawet \u015bredniej wielko\u015bci Stacktrace (1000 operacji) per w\u0105tek szybko udowadnia, \u017ce RAM nie jest z gumy. Tak\u017ce o ile rzeczywi\u015bcie istnieje mo\u017cliwo\u015b\u0107 stworzenia miliona w\u0105tk\u00f3w, to styl programistyczny w nich u\u017cyty musi by\u0107 drastycznie inny (np. poprzez mocne ograniczenie bibliotek zewn\u0119trznych, kt\u00f3re potrafi\u0105 bardzo stacktrace wyd\u0142u\u017ca\u0107)\n\nZe wzgl\u0119du na mocno krytyczny charakter posta, pojawi\u0142a si\u0119 do niego masa komentarzy, zar\u00f3wno na Reddicie (gdzie <a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/kmn6m3\/do_looms_claims_stack_up_part_1_millions_of\/\">Ron Pressler odpiera\u0142 zarzuty<\/a>) jak i na li\u015bcie mailngowej OpenJDK, gdzie znowu ca\u0142y temat <a href=\"https:\/\/mail.openjdk.java.net\/pipermail\/loom-dev\/2021-January\/001976.html\">komentowa\u0142 Alan Bateman<\/a>. Ca\u0142a dyskusja jest r\u00f3wnie frapuj\u0105ca jak wspomniane artyku\u0142y.\n<h3 id=\"przeczytaj-wi%C4%99cej-8\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-monday-vol-20\/\">JVM Tuesday vol. 20<\/a><\/li>\n<\/ul>\n<h2 id=\"jfrog-zamyka-bintray-i-jcenter-%F0%9F%90%B8\">JFrog zamyka Bintray i JCenter \ud83d\udc38<\/h2>\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<h3 id=\"przeczytaj-wi%C4%99cej-9\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-24\/\">JVM Tuesday vol. 24<\/a><\/li>\n<\/ul>\n<h2 id=\"wydano-now%C4%85-wersj%C4%99-microprofile\">Wydano now\u0105 wersj\u0119 Microprofile<\/h2>\nWprawdzie mia\u0142o nie by\u0107 o poszczeg\u00f3lnych wydaniach, ale dla niszowych, a istotnych technologii robimy tu wyj\u0105tek (takich wyj\u0105tk\u00f3w b\u0119dzie jeszcze par\u0119).\n\nPewnie wi\u0119kszo\u015bci z Was obi\u0142a si\u0119 o uszy nazwa Microprofile, jednak prawdziwie doceni\u0107 go \u00a0b\u0119d\u0105 mieli okazj\u0119 tylko Ci, kt\u00f3rzy w swojej karierze pracowalimieli okazj\u0119 pracowa\u0107 z Jav\u0105 EE, zw\u0142aszcza w okresie, gdy bran\u017ca zacz\u0119\u0142a robi\u0107 ma\u015blane oczy od konceptu dzi\u015b znanego jako Mikroserwisy. Java EE posiada\u0142a ju\u017c koncept profili, ale by\u0142y to profile \u201cci\u0119\u017ckie\u201d i \u201cjeszcze ci\u0119\u017csze\u201d, na pewno nic co da\u0142o okre\u015bli\u0107 si\u0119 s\u0142owem \u201cmikro\u201d. Postanowiono wi\u0119c stworzy\u0107 co\u015b, co b\u0119dzie Jav\u0105 EE odpowiadaj\u0105c\u0105 na potrzeby czas\u00f3w. Od tamtej pory projekt trafi\u0142 pod skrzyd\u0142a fundacji Eclipse, a teraz mamy okazj\u0119 obserwowa\u0107 jego czwart\u0105 edycj\u0119.\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_6128bb1173bfa.gif\" alt=\"\" \/>Wraz z kolegami bardzo chcemy si\u0119 tym projektem pobawi\u0107\n\n<figcaption><\/figcaption><\/figure>\nCo wi\u0119c przyni\u00f3s\u0142 Microprofile w wersji czwartej? G\u0142\u00f3wnym celem releasu jest wsparcie niedawno wydanej Jakarty EE 8 i zwi\u0105zanych z ni\u0105 nowo\u015b\u0107, ale i w samym profilu pojawia si\u0119 masa interesuj\u0105cych rzeczy. Przynosi on now\u0105 obs\u0142ug\u0119 konfiguracji, a tak\u017ce ogromny krok do przodu je\u015bli chodzi o wsparcie dla Observability - \u00a0nowe wersje modu\u0142\u00f3w OpenTracing, Metrics i Health, a tak\u017ce Fault Tolerance, kt\u00f3ry jest jednym z najelegantszych rozwi\u0105za\u0144 tego typu, z jakimi mia\u0142em styczno\u015b\u0107 - pod warunkiem, \u017ce komu\u015b nie przeszkadza nadmiar anotacji .\n<h3 id=\"przeczytaj-wi%C4%99cej-10\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-37\/\">JVM Tuesday vol. 38<\/a><\/li>\n<\/ul>\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb11c797e.png\" alt=\"\" \/><\/figure>\n<h2 id=\"java-na-graalvm-zaczyna-kompilowa%C4%87-sam%C4%85-siebie\">Java na GraalVM zaczyna kompilowa\u0107 sam\u0105 siebie<\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb125cb66.png\" alt=\"\" \/><\/figure>\nGraalVM to jedna z najciekawszych inicjatyw Oracle. Jest to zestaw narz\u0119dzi, dostarczaj\u0105cy uniwersaln\u0105 maszyn\u0119 wirtualn\u0105 dla r\u00f3\u017cnych j\u0119zyk\u00f3w programowania. Projekt ten rozwijany jest od lat, a jego adopcja przekroczy\u0142a chyba oczekiwania samych tw\u00f3rc\u00f3w (w\u0142a\u015bciwie ka\u017cdy licz\u0105cy si\u0119 jJavowy fFramework chwali si\u0119 obecnie wsparciem dla GraalVM).\n\nNajbardziej znanym wykorzystaniem kompilatora Graal jest z pewno\u015bci\u0105 mo\u017cliwo\u015b\u0107 generowania niezwykle wydajnych, binarnych wersji program\u00f3w przez niego skompilowanych. Do tej pory by\u0142 to jedyny (a przynajmniej jedyny niewymagaj\u0105cy pe\u0142nego JVMa) spos\u00f3b uruchamiania aplikacji jJavowych w \u015brodowisku GraalVM. Pod tym wzgl\u0119dem 2021 przyni\u00f3s\u0142 ma\u0142\u0105 rewolucj\u0119 - mo\u017cliwo\u015b\u0107 uruchomienia aplikacji jJavowych w \u015brodowisku Truffle.\n\nTruffle jest warstw\u0105 po\u015bredni\u0105, okre\u015blan\u0105 czasem jako kompilator kompilator\u00f3w. Jest to hmmm\u2026 narz\u0119dzie do generowania interpretator\u00f3w poszczeg\u00f3lnych j\u0119zyk\u00f3w, generuj\u0105cy ich Abstract Syntax Tree w formacie kompatybilnym do uruchomienia w ramach maszyny wirtualnej Graala. Do tej Truffle dzia\u0142a\u0142 tylko i wy\u0142\u0105cznie dla j\u0119zyk\u00f3w implementowanych. Mo\u017cliwo\u015b\u0107 jego u\u017cycia r\u00f3wnie\u017c w wypadku Javy ma dwie ogromne zalety. Po pierwsze Truffle jest szybki\u2026 diabelnie szybki - w po\u0142\u0105czeniu z GraalVM generuje on bardzo wydajny kod maszynowy. Po drugie za\u015b, Truffle jest napisany w Javie, co oznacza \u017ce mo\u017ce by\u0107 do\u0142\u0105czony jako\u2026 zale\u017cno\u015b\u0107 do projektu. Prowadzi to do sytuacji, kiedy aplikacja jJavowa mo\u017ce sama skompilowa\u0107 sw\u00f3j w\u0142asny kod. Jest to tak zwane Metacircularity - cecha, kt\u00f3r\u0105 tw\u00f3rcy okre\u015blaj\u0105 jako (nomen omen) \u015bwi\u0119ty Graal maszyn wirtualnych. W praktyce oznacza to mo\u017cliwo\u015b\u0107 u\u017cycia zar\u00f3wno kompilacji Ahead-of-Time, jak i Just-in-Time w tym samym projekcie.\n<h3 id=\"przeczytaj-wi%C4%99cej-11\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-22\/\">JVM Tuesday vol. 22<\/a><\/li>\n<\/ul>\n<h2 id=\"pivotal-wypu%C5%9Bci%C5%82-spring-native-%F0%9F%92%90\">Pivotal wypu\u015bci\u0142 Spring Native \ud83c\udf3f<\/h2>\nKontynuuj\u0105c temat GraalVM - 2021 przyni\u00f3s\u0142 te\u017c r\u00f3wnie\u017c wersje Springa przeznaczon\u0105 na t\u0105 w\u0142a\u015bnie platform\u0119.\n\nJak bardzo zelektryzowa\u0142o to spo\u0142eczno\u015b\u0107 niech udowodni fakt, \u017ce og\u0142oszenie to jest jak do tej pory najlepiej \u201cczytaj\u0105cym si\u0119\u201d newsem dotycz\u0105cym JVMa, jakiego opublikowali\u015bmy w Keep Upie, przebijaj\u0105c nawet wydanie Javy 16.\n\nOk, ale co konkretnie to oznacza? Po pierwsze, Spring Native b\u0119dzie m\u00f3g\u0142 by\u0107 releasowany jako pojedynczy plik wykonywalny, bez potrzeby posiadania zaembedowanego JVMa. Po drugie, jego czas startu robi wra\u017cenie - wed\u0142ug tego, co podaj\u0105 tw\u00f3rcy, dla typowej aplikacji nie powinien on przekracza\u0107 magicznej granicy &lt; 100ms (aczkolwiek liczby jak to liczby, b\u0119dzie trzeba je zweryfikowa\u0107 w praktyce). Nieodmiennie w wypadku rozwi\u0105za\u0144 opartych na GraalVM, jako docelowy spos\u00f3b u\u017cycia wskazywane s\u0105 kontenery, a tak\u017ce rozwi\u0105zania chmurowe takie jak cho\u0107by Spring Cloud Functions.\n\nJednocze\u015bnie nie ma r\u00f3\u017cy bez kolc\u00f3w i chc\u0105c korzysta\u0107 z nowej zabawki trzeba i\u015b\u0107 na pewne kompromisy. Korzystaj\u0105c ze Spring Native, b\u0119dziemy musieli pogodzi\u0107 si\u0119 z d\u0142u\u017cszymi czasami kompilacji oraz brakiem bardziej zaawansowanych optymalizacji, jakie daje JIT - musi nam wystarczy\u0107 kompilacja Ahead-of-Time.\n\nTw\u00f3rcy Springa bardzo aktywnie wsparli r\u00f3wnie\u017c sam rozw\u00f3j GraalVM, pomagaj\u0105c umo\u017cliwi\u0107 w pe\u0142ni \u201cnatywne\u201d testowanie aplikacji za pomoc\u0105 JUnita (przed wprowadzonymi przez nich zmianami, testy uruchamiane by\u0142y w ramach standardowej maszyny Javy). Aby to osi\u0105gn\u0105\u0107, niezb\u0119dna by\u0142a implementacja funkcjonalno\u015bci junit-platform-native, kt\u00f3ra wykrywa testy podczas uruchomienia w ramach \u201czwyk\u0142ego\u201d JVM i zapisuje je na boku na potrzeby r\u00f3wnie\u017c natywnej kompilacji. Tak znalezione testy s\u0105 pakowane do osobnego pliku wykonywalnego, kt\u00f3ry mo\u017ce by\u0107 uruchomiony ju\u017c w ramach \u015brodowiska GraalVM.\n\nNa koniec metody wersjonowania - cykl \u017cycia Spring Native b\u0119dzie \u015bci\u015ble spi\u0119ty z releasami Spring Boota, a nowe wydania wersji natywnej b\u0119d\u0105 pojawia\u0107 si\u0119 wraz z ka\u017cdym update\u2019em do klasyka.\n<h3 id=\"przeczytaj-wi%C4%99cej-12\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-29\/\">JVM Tuesday vol. 29<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-42\/\">JVM Tuesday vol. 42<\/a><\/li>\n<\/ul>\n\n<hr \/>\n\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/lh6.googleusercontent.com\/Xz5ilPadp4d0uFfCVvH8zeKgCs8bwdJvF3HtjkOL-2SkJylrXfHr-gn\nQY4NT7lK8z15VZ9ugx-nIgxeevW28SocILEhzNtdFuHBnLR1qwFU5xNDaMjxiXfRl63mZKYUq1OqcGfqX=s0\" alt=\"\" \/><\/figure>\n<h2 id=\"project-valhalla-wymusza-grube-zmiany-w-modelu-danych-jvm\">Project Valhalla wymusza grube zmiany w modelu danych JVM<\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_6128bb12c324b.png\" alt=\"\" \/><\/figure>\nValhalla jest jednym z najwa\u017cniejszych obecnie rozwijanych projekt\u00f3w odbywaj\u0105cych si\u0119 w ramach JVMa. Johna Rose\u2019a i Briana Goetza opublikowali w zesz\u0142ym roku seri\u0119 pokazuj\u0105c\u0105, jak w swoim bie\u017c\u0105cym kszta\u0142cie wp\u0142ynie on na bytecode samego JVMa.\n\nI cho\u0107 zdajemy sobie spraw\u0119, \u017ce ci\u0119\u017cko o bardziej hermetyczny temat (rozkminy, jak na poziomie bajtkodu b\u0119dzie zachowywa\u0107 si\u0119 funkcjonalno\u015b\u0107 j\u0119zyka, kt\u00f3rej jeszcze nie ma), to jednak publikacja zapewnia sporo ciekawych informacji o decyzjach projektowych i ich reperkusjach. Tekst nie nale\u017cy do najprostszych (mimo, \u017ce napisany jest w jak najbardziej przyst\u0119pny spos\u00f3b, po prostu ta tematyka jest z za\u0142o\u017cenia mocno z\u0142o\u017cona), ale dla nas, \u015bmiertelnych klepaczy kodu, wnosi tyle \u017ce, bogowie JVMa zdecydowali si\u0119 do\u015b\u0107 mocno maszyn\u0119 wirtualn\u0105, przeora\u0107 na potrzeby zmian wprowadzonych w Valhalli.\n\nOczywi\u015bcie, to o czym pisz\u0119 dla Was, to wierzcho\u0142ek g\u00f3ry lodowej - ch\u0119tnych zapraszam do pe\u0142nej publikacji. Moja obawa po lekturze jest taka, \u017ce bior\u0105c pod uwag\u0119 zakres planowanych zmian, ja Valhalli chyba nigdy nie do\u017cyje.\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_6128bb1366832.png\" alt=\"\" \/>\n\n<figcaption>Mam przynajmniej nadzieje, \u017ce moje wnuki z tego projektu skorzystaj\u0105.<\/figcaption><\/figure>\n<h3 id=\"przeczytaj-wi%C4%99cej-13\">Przeczytaj wi\u0119cej<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/vived.io\/jvm-monday-21\/\">JVM Tuesday vol. 21<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-30\/\">JVM Tuesday vol. 30<\/a><\/li>\n \t<li><a href=\"https:\/\/vived.io\/jvm-tuesday-vol-35\/\">JVM Tuesday vol. 35<\/a><\/li>\n<\/ul>"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10093","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=10093"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10093\/revisions"}],"predecessor-version":[{"id":10559,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10093\/revisions\/10559"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10093"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10093"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}