{"id":10139,"date":"2021-05-11T12:10:16","date_gmt":"2021-05-11T10:10:16","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-37\/"},"modified":"2022-09-19T13:10:53","modified_gmt":"2022-09-19T11:10:53","slug":"jvm-tuesday-vol-37","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/","title":{"rendered":"JVM Tuesday vol. 37"},"content":{"rendered":"<h2 id=\"1-kotlin-1-5-wyreleasowany\" data-num=1><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlin-1-5-0-released\/\">1. Kotlin 1.5 wyreleasowany<\/a><\/h2>\n<p>Czekali\u015bmy d\u0142ugo, jak chwal\u0105 si\u0119 tw\u00f3rcy w oficjalnym blogpo\u015bcie og\u0142aszaj\u0105cym premier\u0119. \u00a0To pierwsze du\u017ce wydanie Kotlina w tym roku. Wiele z funkcji, kt\u00f3re przynosi mieli\u015bmy ju\u017c okazj\u0119 opisywa\u0107 przy okazji wydania 1.4.30, stanowi\u0105cego de facto preview 1.5, ale gwoli przyzwoito\u015bci przejd\u017amy przez zmiany, jakie wprowadza nowa wersja.<\/p>\n<figure class=\"kg-card kg-image-card\"><img loading=\"lazy\" decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-15.png\" alt=\"\" width=\"330\" height=\"440\" \/><\/figure>\n<p>Do nowej edycji j\u0119zyka trafia kolejna iteracji \u201creprezentacji po\u015bredniej\u201d (IR) kodu dla JVMa, czyli zdecydowanie najwa\u017cniejszej i najcz\u0119\u015bciej u\u017cywanej wersji, pono\u0107 multiplatformowego Kotlina. Kompilator j\u0119zyka ma by\u0107 znacznie szybszy (co do tej pory by\u0142o jego pi\u0119t\u0105 achillesow\u0105), a sama nowa reprezentacja odblokowuje dynamiczniejsze nad\u0105\u017canie za zmianami w samej Javie.<\/p>\n<p>Za dow\u00f3d, \u017ce tw\u00f3rcy nie rzucaj\u0105 s\u0142\u00f3w na wiatr, niech pos\u0142u\u017cy druga du\u017ca nowo\u015b\u0107. Do \u201cinternali\u201d Kotlina trafiaj\u0105 Rekordy, Sealed Classes, Inline Classes, a tak\u017ce mo\u017cliwo\u015b\u0107 kompilacji do <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew15.html#sam-adapters-via-invokedynamic\">Single Abstract Methods<\/a> i <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew15.html#lambdas-via-invokedynamic\">Lambd<\/a> ze wsparciem invokedynamic. Ca\u0142o\u015b\u0107 ma doprowadzi\u0107 do interoperatywno\u015bci mi\u0119dzy Jav\u0105 i Kotlinem na niespotykanym wcze\u015bniej poziomie. Wi\u0119kszo\u015b\u0107 wspomnianych featur\u00f3w zosta\u0142a eksperymentalne udost\u0119pniona w ramach wydania 1.4.30 &#8211; teraz mo\u017cemy ju\u017c z czystym sumieniem u\u017cywa\u0107 ich na produkcji. Chyba, \u017ce wymagacie zgodno\u015bci z Jav\u0105 1.6 &#8211; Kotlin porzuca ostatecznie wsparcie dla tego runtime &#8211; wymagane minimum teraz to JVM 1.8.<\/p>\n<p>Prawda jest taka, \u017ce poza ma\u0142ymi usprawnieniami w API (zar\u00f3wno j\u0119zyka, jak i test\u00f3w), jakich\u015b drobiazgach dla Kotlina Native oraz zapowiedzi\u0105 nowej IR dla Kotlin\/JS &#8211; niewiele jest w nowej wersji innych du\u017cych rzeczy. Wida\u0107, jak czasoch\u0142onnym i m\u0119cz\u0105cym procesem by\u0142o dopasowanie si\u0119 do nowych zmian w JVM. Teraz z du\u017cym zaciekawieniem czekam na kolejn\u0105 iteracj\u0119 kotlinowej roadmapy &#8211; mam nadzieje, \u017ce poka\u017ce nam ona stoj\u0105ce na w\u0142asnych nogach zmiany, kt\u00f3re przedstawi\u0105 dalszy kierunek ewolucji j\u0119zyka.<\/p>\n<figure class=\"kg-card kg-image-card\"><img loading=\"lazy\" decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/1_image-20.png\" sizes=\"auto, (min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-20.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-20.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/1_image-20.png 1136w\" alt=\"\" width=\"1136\" height=\"1094\" \/><\/figure>\n<p>W okolicach Kotlina 1.5 dosz\u0142o te\u017c do innej, interesuj\u0105cej premiery. <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlinx-serialization-1-2-released\/\">kotlinx-serialization otrzyma\u0142a kolejn\u0105 edycj\u0119 1.2<\/a>, a wraz z ni\u0105 dopasowanie do nowych mo\u017cliwo\u015bci Kotlina 1.5 (jak np. Value classes) oraz szybsz\u0105 serializacj\u0105 JSON\u00f3w. kotlinx-serialization \u0142atwo przegapi\u0107, a stanowi on istotny budulec wielu bibliotek, dzia\u0142aj\u0105c jako swego rodzaju biblioteka standardowa do serializacji\/deserializacji, kt\u00f3rej (pomimo usilnych pr\u00f3b ludzi od Jakarty EE) tak brakuje w Javie.<\/p>\n<figure class=\"kg-card kg-image-card\"><img loading=\"lazy\" decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-17.png\" alt=\"\" width=\"350\" height=\"274\" \/><\/figure>\n<p>Ale to nie ostatnia z kotlinowych zapowiedzi z zesz\u0142ego tygodnia&#8230;<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlin-1-5-0-released\/\">Kotlin 1.5.0 \u2013 the First Big Release of 2021<\/a><\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew15.html#lambdas-via-invokedynamic\">Lambdas via invokedynamic<\/a><\/li>\n<\/ul>\n<h2 id=\"2-jetpack-composer-rozpycha-sie-lokciami\" data-num=2>2. Jetpack Composer rozpycha si\u0119 \u0142okciami<\/h2>\n<p>Przyznam, \u017ce cho\u0107 wiele wsp\u00f3lnego nie mam ju\u017c w tej chwili ani z aplikacjami desktopowymi, ani mobilnymi, to jednak Jetpack Compose nale\u017cy do projekt\u00f3w, kt\u00f3rym naprawd\u0119 bacznie si\u0119 przygl\u0105dam. Do macierzystego Androida i ci\u0105gle rozwijanej edycji desktopowej w zesz\u0142ym tygodniu do\u0142\u0105czy\u0142a wersja przeznaczona na&#8230; przegl\u0105darki.<\/p>\n<figure class=\"kg-card kg-image-card\"><img loading=\"lazy\" decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-19.png\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/1_image-19.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-19.png 642w\" alt=\"\" width=\"642\" height=\"388\" \/><\/figure>\n<p>W przestrzeni webowej konkurencji nie brakuje &#8211; poza frameworkami natywnymi dla JavaScripta, pokroju Vue, Angulara czy Reacta, s\u0105 przecie\u017c rozwi\u0105zania nieco mniej ortodoksyjne &#8211; \u017ceby wymieni\u0107 tutaj cho\u0107by Fluttera. W odr\u00f3\u017cnieniu od tego ostatniego, kt\u00f3ry opiera si\u0119 na rysowaniu interfejsu na obiekcie Canvas, <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/technology-preview-jetpack-compose-for-web\/\">Jetpack Compose for Web<\/a> ma opiera\u0107 si\u0119 na tworzeniu drzewa DOM z poziomu kodu aplikacji. Sprawia to, \u017ce jako rozwi\u0105zanie przypomina nieco JSX, aczkolwiek zamiast wzbogaconego DOMa mamy tutaj do czynienia z \u0142adnie komponowaln\u0105, ale jednak mocno kotlinow\u0105 sk\u0142adni\u0105. Opr\u00f3cz API opartego o DOM, nowa biblioteka zawiera r\u00f3wnie\u017c opcje na dzielenie komponent\u00f3w z wersjami mobilnymi czy desktopowymi &#8211; te maj\u0105 by\u0107 odbudowane za pomoc\u0105 semantycznego DOMa. I to w\u0142a\u015bnie w wypadku u\u017cy\u0107 wraz z innymi dobrodziejstwami Kotlin Multiplatform widz\u0119 najwi\u0119ksz\u0105 przysz\u0142o\u015b\u0107 tej technologii. Na tym etapie, bior\u0105c pod uwag\u0119 mnogo\u015b\u0107 alternatywnych, konkurencyjnych rozwi\u0105za\u0144, traktowa\u0107 nale\u017cy, co najwy\u017cej jako ciekawostk\u0119.<\/p>\n<p>A co powiecie na mo\u017cliwo\u015b\u0107 u\u017cycia Jetpack Compose do tworzenia\u2026 aplikacji Shellowych? Ot\u00f3\u017c \u015bwietnie znany w community Jake Wharton (kiedy jeszcze pisa\u0142em aplikacje na Androida, ten cz\u0142owiek odpowiedzialny by\u0142 za po\u0142ow\u0119 moich zewn\u0119trznych zale\u017cno\u015bci) zaprezentowa\u0142 <a href=\"https:\/\/github.com\/JakeWharton\/mosaic\">Mosaic<\/a>. Przy okazji tego projektu dowiedzie\u0107 si\u0119 mo\u017cna o samym Compose &#8211; jego mo\u017cliwo\u015bci wychodz\u0105 poza tworzenie warstwy prezentacji, czego mo\u017cna si\u0119 nauczy\u0107 z kodu \u017ar\u00f3d\u0142owego projektu.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img loading=\"lazy\" decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-14.png\" sizes=\"auto, (min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-14.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-14.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/7_image-14.png 1600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/8_image-14.png 2400w\" alt=\"\" width=\"2000\" height=\"1572\" \/><figcaption>BTW: Kiedy\u015b przygotowywa\u0142em cykl \u201cGitHub All-Stars\u201d, gdzie wchodzi\u0142em mocno w internale ciekawych projekt\u00f3w Open Source &#8211; mo\u017ce byliby\u015bcie zainteresowani takim dodatkiem do naszych standardowych Weekly ;)?<\/figcaption><\/figure>\n<p>A, je\u017celi chcecie pobawi\u0107 si\u0119 wersj\u0105 desktopow\u0105 Jetpacka, <a href=\"https:\/\/dev.to\/kotlin\/how-i-built-an-asteroids-game-using-jetpack-compose-for-desktop-309l\">Sebastian Aigner &#8211; Developer Advocate z Jetbrains<\/a> &#8211; stworzy\u0142 tutorial pokazuj\u0105cy, jak krok po kroku odtworzy\u0107 klasyczn\u0105 gr\u0119 \u201cAsteroids\u201d. Mi\u0142ej zabawy.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/technology-preview-jetpack-compose-for-web\/\">Technology Preview: Jetpack Compose for Web<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/JakeWharton\" rel=\"author\">JakeWharton<\/a>\/<strong><a href=\"https:\/\/github.com\/JakeWharton\/mosaic\">mosaic<\/a><\/strong><\/li>\n<li><a href=\"https:\/\/dev.to\/kotlin\/how-i-built-an-asteroids-game-using-jetpack-compose-for-desktop-309l\">How I<br \/>\nbuilt an &#8222;Asteroids&#8221; game using Jetpack Compose for Desktop<\/a><\/li>\n<\/ul>\n<h2 id=\"3-security-manager-usuwany-z-javy-nie-bez-kontrowersji\" data-num=3>3. Security Manager usuwany z Javy &#8211; nie bez kontrowersji \u200d\u2640\ufe0f<\/h2>\n<p>Po dw\u00f3ch tematach kotlinowych pora przej\u015b\u0107 do czego\u015b javowego &#8211; wiemy, \u017ce cho\u0107 j\u0119zyk stworzony przez Jetbrains\u00f3w jest niezwykle popularny, to jednak na JVMie niepodzielnie rz\u0105dzi jednak Java. Dlatego te\u017c dzisiejsz\u0105 edycje ko\u0144czymy JEPem. Jednak zamiast po prostu, jak to mamy w zwyczaju, podzieli\u0107 si\u0119, nad czym ciekawym architekci j\u0119zyka dumaj\u0105 &#8211; dzisiejszy proposal okraszony jest odrobin\u0105 kontrowersji z do\u015b\u0107 nieoczekiwanego kierunku.<\/p>\n<p>Zacznijmy jednak od podstaw &#8211;<a href=\"https:\/\/openjdk.java.net\/jeps\/411\"> JEP 411: Deprecate the Security Manager for Removal<\/a> przynosi 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. 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. Jednak jak to bywa ze starymi API, Security Manager by\u0142 skomplikowany i niewydajny. Dzisiaj, wraz z powolnym odchodzeniem do niebytu Javy jako platformy do uruchamiania plik\u00f3w *.jar, tw\u00f3rcy JDK zdecydowali si\u0119 na usuni\u0119cie go z platformy.<\/p>\n<p>I tutaj ca\u0142y na bia\u0142o wchodzi\u2026 NetBeans. Pami\u0119tacie jeszcze to IDE, chyba pierwsze tego typu narz\u0119dzie dla Javy, rozwijane jeszcze przez Sun? Ot\u00f3\u017c z faktem, \u017ce oprogramowanie jest niemal tak stare jak ca\u0142a platforma, w jego bebechach drzemie wiele prehistorycznego kodu &#8211; w tym takiego mocno opieraj\u0105cego si\u0119 w\u0142a\u015bnie na Security Managerze. U\u017cywaj\u0105 oni Security Managera do do\u015b\u0107 nietypowych zastosowa\u0144 jak np. ochrona dost\u0119pu do konkretnych \u015bcie\u017cek systemu plik\u00f3w, czy \u015bledzenie okien pop-up u\u017cytkownika. W <a href=\"https:\/\/blogs.apache.org\/netbeans\/entry\/jep-411-deprecate-the-security\">swoim po\u015bcie<\/a> prosz\u0105 oni o komentarz i propozycje alternatyw, kt\u00f3re mog\u0105 u\u017cy\u0107.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img loading=\"lazy\" decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-18.png\" sizes=\"auto, (min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-18.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-18.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-18.png 1600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-18.png 2400w\" alt=\"\" width=\"2000\" height=\"857\" \/><figcaption>Najbardziej zaskoczy\u0142 mnie fakt, \u017ce NetBeans jest ci\u0105gle do\u015b\u0107 aktywnie rozwijany &#8211; by\u0142em pewien, \u017ce projekt umar\u0142, a nawet doczeka\u0142 si\u0119 nowoczesnego Dark Mode.<\/figcaption><\/figure>\n<p>W ca\u0142ej sprawie wypowiedzia\u0142 si\u0119 sam Ron Pressler w <a href=\"https:\/\/inside.java\/2021\/04\/23\/security-and-sandboxing-post-securitymanager\/\">do\u015b\u0107 d\u0142ugiej publikacji na inside.java<\/a>, gdzie zaprezentowa\u0142, jak mo\u017cna emulowa\u0107 niekt\u00f3re z zachowa\u0144 Security Managera np. za pomoc\u0105 systemu modu\u0142\u00f3w. Nie twierdzi on, \u017ce nie pojawi\u0105 si\u0119 pewne luki, ale ch\u0119\u0107 usuni\u0119cia motywowana jest drogim kosztem utrzymania oraz&#8230; faktem, \u017ce jego spos\u00f3b zachowania nie jest kompatybilny z wirtualnymi w\u0105tkami. Jak ju\u017c kiedy\u015b pisali\u015bmy, interesuj\u0105co patrzy si\u0119 na inkrementalny proces dostarczania Projektu Loom &#8211; mamy tutaj do czynienia z kolejnym JEPem czyszcz\u0105cym przedpole zapowiadanej rewolucji.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n<li><a href=\"https:\/\/openjdk.java.net\/jeps\/411\">JEP 411: Deprecate the Security Manager for Removal<\/a><\/li>\n<li><a href=\"https:\/\/blogs.apache.org\/netbeans\/entry\/jep-411-deprecate-the-security\">JEP 411: Deprecate the Security Manager for Removal &#8211; Apache NetBeans<\/a><\/li>\n<li><a href=\"https:\/\/inside.java\/2021\/04\/23\/security-and-sandboxing-post-securitymanager\/\">Security and Sandboxing Post SecurityManager<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Dzisiejsza edycja odbywa si\u0119 zdecydowanie pod znakiem Kotlina &#8211; jednak r\u00f3wnie\u017c i dla zainteresowanych Jav\u0105 pojawi\u0142 si\u0119 ciekawy temat, pokazuj\u0105cy jak bardzo trudnym procesem jest pozbywanie si\u0119 funkcjonalno\u015bci z j\u0119zyka. Zapraszamy do lektury!<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[259],"tags":[],"class_list":["post-10139","post","type-post","status-publish","format-standard","hentry","category-jvm-pl"],"acf":{"weekly_summary":true,"estimated_reading_time":"6"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JVM Tuesday vol. 37 - 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-37\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 37 - Vived\" \/>\n<meta property=\"og:description\" content=\"Dzisiejsza edycja odbywa si\u0119 zdecydowanie pod znakiem Kotlina - jednak r\u00f3wnie\u017c i dla zainteresowanych Jav\u0105 pojawi\u0142 si\u0119 ciekawy temat, pokazuj\u0105cy jak bardzo trudnym procesem jest pozbywanie si\u0119 funkcjonalno\u015bci z j\u0119zyka. Zapraszamy do lektury!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-05-11T10:10:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-15.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-37\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 37\",\"datePublished\":\"2021-05-11T10:10:16+00:00\",\"dateModified\":\"2022-09-19T11:10:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/\"},\"wordCount\":1297,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-15.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/\",\"name\":\"JVM Tuesday vol. 37 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-15.png\",\"datePublished\":\"2021-05-11T10:10:16+00:00\",\"dateModified\":\"2022-09-19T11:10:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-15.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-15.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 37\"}]},{\"@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. 37 - 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-37\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 37 - Vived","og_description":"Dzisiejsza edycja odbywa si\u0119 zdecydowanie pod znakiem Kotlina - jednak r\u00f3wnie\u017c i dla zainteresowanych Jav\u0105 pojawi\u0142 si\u0119 ciekawy temat, pokazuj\u0105cy jak bardzo trudnym procesem jest pozbywanie si\u0119 funkcjonalno\u015bci z j\u0119zyka. Zapraszamy do lektury!","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/","og_site_name":"Vived","article_published_time":"2021-05-11T10:10:16+00:00","article_modified_time":"2022-09-19T11:10:53+00:00","og_image":[{"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-15.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-37\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 37","datePublished":"2021-05-11T10:10:16+00:00","dateModified":"2022-09-19T11:10:53+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/"},"wordCount":1297,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-15.png","articleSection":["JVM"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/","name":"JVM Tuesday vol. 37 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-15.png","datePublished":"2021-05-11T10:10:16+00:00","dateModified":"2022-09-19T11:10:53+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-15.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-15.png"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-37\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 37"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","caption":"Artur Skowro\u0144ski"}}]}},"blocks_vived":[{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"<h2 id=\"1-kotlin-15-wyreleasowany-%F0%9F%8D%85\"><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlin-1-5-0-released\/\">1. Kotlin 1.5 wyreleasowany<\/a><\/h2>\nCzekali\u015bmy d\u0142ugo, jak chwal\u0105 si\u0119 tw\u00f3rcy w oficjalnym blogpo\u015bcie og\u0142aszaj\u0105cym premier\u0119. \u00a0To pierwsze du\u017ce wydanie Kotlina w tym roku. Wiele z funkcji, kt\u00f3re przynosi mieli\u015bmy ju\u017c okazj\u0119 opisywa\u0107 przy okazji wydania 1.4.30, stanowi\u0105cego de facto preview 1.5, ale gwoli przyzwoito\u015bci przejd\u017amy przez zmiany, jakie wprowadza nowa wersja.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-15.png\" alt=\"\" width=\"330\" height=\"440\" \/><\/figure>\nDo nowej edycji j\u0119zyka trafia kolejna iteracji \u201creprezentacji po\u015bredniej\u201d (IR) kodu dla JVMa, czyli zdecydowanie najwa\u017cniejszej i najcz\u0119\u015bciej u\u017cywanej wersji, pono\u0107 multiplatformowego Kotlina. Kompilator j\u0119zyka ma by\u0107 znacznie szybszy (co do tej pory by\u0142o jego pi\u0119t\u0105 achillesow\u0105), a sama nowa reprezentacja odblokowuje dynamiczniejsze nad\u0105\u017canie za zmianami w samej Javie.\n\nZa dow\u00f3d, \u017ce tw\u00f3rcy nie rzucaj\u0105 s\u0142\u00f3w na wiatr, niech pos\u0142u\u017cy druga du\u017ca nowo\u015b\u0107. Do \u201cinternali\u201d Kotlina trafiaj\u0105 Rekordy, Sealed Classes, Inline Classes, a tak\u017ce mo\u017cliwo\u015b\u0107 kompilacji do <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew15.html#sam-adapters-via-invokedynamic\">Single Abstract Methods<\/a> i <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew15.html#lambdas-via-invokedynamic\">Lambd<\/a> ze wsparciem invokedynamic. Ca\u0142o\u015b\u0107 ma doprowadzi\u0107 do interoperatywno\u015bci mi\u0119dzy Jav\u0105 i Kotlinem na niespotykanym wcze\u015bniej poziomie. Wi\u0119kszo\u015b\u0107 wspomnianych featur\u00f3w zosta\u0142a eksperymentalne udost\u0119pniona w ramach wydania 1.4.30 - teraz mo\u017cemy ju\u017c z czystym sumieniem u\u017cywa\u0107 ich na produkcji. Chyba, \u017ce wymagacie zgodno\u015bci z Jav\u0105 1.6 - Kotlin porzuca ostatecznie wsparcie dla tego runtime - wymagane minimum teraz to JVM 1.8.\n\nPrawda jest taka, \u017ce poza ma\u0142ymi usprawnieniami w API (zar\u00f3wno j\u0119zyka, jak i test\u00f3w), jakich\u015b drobiazgach dla Kotlina Native oraz zapowiedzi\u0105 nowej IR dla Kotlin\/JS - niewiele jest w nowej wersji innych du\u017cych rzeczy. Wida\u0107, jak czasoch\u0142onnym i m\u0119cz\u0105cym procesem by\u0142o dopasowanie si\u0119 do nowych zmian w JVM. Teraz z du\u017cym zaciekawieniem czekam na kolejn\u0105 iteracj\u0119 kotlinowej roadmapy - mam nadzieje, \u017ce poka\u017ce nam ona stoj\u0105ce na w\u0142asnych nogach zmiany, kt\u00f3re przedstawi\u0105 dalszy kierunek ewolucji j\u0119zyka.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/1_image-20.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-20.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-20.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/1_image-20.png 1136w\" alt=\"\" width=\"1136\" height=\"1094\" \/><\/figure>\nW okolicach Kotlina 1.5 dosz\u0142o te\u017c do innej, interesuj\u0105cej premiery. <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlinx-serialization-1-2-released\/\">kotlinx-serialization otrzyma\u0142a kolejn\u0105 edycj\u0119 1.2<\/a>, a wraz z ni\u0105 dopasowanie do nowych mo\u017cliwo\u015bci Kotlina 1.5 (jak np. Value classes) oraz szybsz\u0105 serializacj\u0105 JSON\u00f3w. kotlinx-serialization \u0142atwo przegapi\u0107, a stanowi on istotny budulec wielu bibliotek, dzia\u0142aj\u0105c jako swego rodzaju biblioteka standardowa do serializacji\/deserializacji, kt\u00f3rej (pomimo usilnych pr\u00f3b ludzi od Jakarty EE) tak brakuje w Javie.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-17.png\" alt=\"\" width=\"350\" height=\"274\" \/><\/figure>\nAle to nie ostatnia z kotlinowych zapowiedzi z zesz\u0142ego tygodnia...\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlin-1-5-0-released\/\">Kotlin 1.5.0 \u2013 the First Big Release of 2021<\/a><\/li>\n \t<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew15.html#lambdas-via-invokedynamic\">Lambdas via invokedynamic<\/a><\/li>\n<\/ul>\n<h2 id=\"2-jetpack-composer-rozpycha-si%C4%99-%C5%82okciami-%F0%9F%9A%80\">2. Jetpack Composer rozpycha si\u0119 \u0142okciami<\/h2>\nPrzyznam, \u017ce cho\u0107 wiele wsp\u00f3lnego nie mam ju\u017c w tej chwili ani z aplikacjami desktopowymi, ani mobilnymi, to jednak Jetpack Compose nale\u017cy do projekt\u00f3w, kt\u00f3rym naprawd\u0119 bacznie si\u0119 przygl\u0105dam. Do macierzystego Androida i ci\u0105gle rozwijanej edycji desktopowej w zesz\u0142ym tygodniu do\u0142\u0105czy\u0142a wersja przeznaczona na... przegl\u0105darki.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-19.png\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/1_image-19.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-19.png 642w\" alt=\"\" width=\"642\" height=\"388\" \/><\/figure>\nW przestrzeni webowej konkurencji nie brakuje - poza frameworkami natywnymi dla JavaScripta, pokroju Vue, Angulara czy Reacta, s\u0105 przecie\u017c rozwi\u0105zania nieco mniej ortodoksyjne - \u017ceby wymieni\u0107 tutaj cho\u0107by Fluttera. W odr\u00f3\u017cnieniu od tego ostatniego, kt\u00f3ry opiera si\u0119 na rysowaniu interfejsu na obiekcie Canvas, <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/technology-preview-jetpack-compose-for-web\/\">Jetpack Compose for Web<\/a> ma opiera\u0107 si\u0119 na tworzeniu drzewa DOM z poziomu kodu aplikacji. Sprawia to, \u017ce jako rozwi\u0105zanie przypomina nieco JSX, aczkolwiek zamiast wzbogaconego DOMa mamy tutaj do czynienia z \u0142adnie komponowaln\u0105, ale jednak mocno kotlinow\u0105 sk\u0142adni\u0105. Opr\u00f3cz API opartego o DOM, nowa biblioteka zawiera r\u00f3wnie\u017c opcje na dzielenie komponent\u00f3w z wersjami mobilnymi czy desktopowymi - te maj\u0105 by\u0107 odbudowane za pomoc\u0105 semantycznego DOMa. I to w\u0142a\u015bnie w wypadku u\u017cy\u0107 wraz z innymi dobrodziejstwami Kotlin Multiplatform widz\u0119 najwi\u0119ksz\u0105 przysz\u0142o\u015b\u0107 tej technologii. Na tym etapie, bior\u0105c pod uwag\u0119 mnogo\u015b\u0107 alternatywnych, konkurencyjnych rozwi\u0105za\u0144, traktowa\u0107 nale\u017cy, co najwy\u017cej jako ciekawostk\u0119.\n\nA co powiecie na mo\u017cliwo\u015b\u0107 u\u017cycia Jetpack Compose do tworzenia\u2026 aplikacji Shellowych? Ot\u00f3\u017c \u015bwietnie znany w community Jake Wharton (kiedy jeszcze pisa\u0142em aplikacje na Androida, ten cz\u0142owiek odpowiedzialny by\u0142 za po\u0142ow\u0119 moich zewn\u0119trznych zale\u017cno\u015bci) zaprezentowa\u0142 <a href=\"https:\/\/github.com\/JakeWharton\/mosaic\">Mosaic<\/a>. Przy okazji tego projektu dowiedzie\u0107 si\u0119 mo\u017cna o samym Compose - jego mo\u017cliwo\u015bci wychodz\u0105 poza tworzenie warstwy prezentacji, czego mo\u017cna si\u0119 nauczy\u0107 z kodu \u017ar\u00f3d\u0142owego projektu.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-14.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-14.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-14.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/7_image-14.png 1600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/8_image-14.png 2400w\" alt=\"\" width=\"2000\" height=\"1572\" \/>\n<figcaption>BTW: Kiedy\u015b przygotowywa\u0142em cykl \u201cGitHub All-Stars\u201d, gdzie wchodzi\u0142em mocno w internale ciekawych projekt\u00f3w Open Source - mo\u017ce byliby\u015bcie zainteresowani takim dodatkiem do naszych standardowych Weekly ;)?<\/figcaption><\/figure>\nA, je\u017celi chcecie pobawi\u0107 si\u0119 wersj\u0105 desktopow\u0105 Jetpacka, <a href=\"https:\/\/dev.to\/kotlin\/how-i-built-an-asteroids-game-using-jetpack-compose-for-desktop-309l\">Sebastian Aigner - Developer Advocate z Jetbrains<\/a> - stworzy\u0142 tutorial pokazuj\u0105cy, jak krok po kroku odtworzy\u0107 klasyczn\u0105 gr\u0119 \u201cAsteroids\u201d. Mi\u0142ej zabawy.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/technology-preview-jetpack-compose-for-web\/\">Technology Preview: Jetpack Compose for Web<\/a><\/li>\n \t<li><a href=\"https:\/\/github.com\/JakeWharton\" rel=\"author\">JakeWharton<\/a>\/<strong><a href=\"https:\/\/github.com\/JakeWharton\/mosaic\">mosaic<\/a><\/strong><\/li>\n \t<li><a href=\"https:\/\/dev.to\/kotlin\/how-i-built-an-asteroids-game-using-jetpack-compose-for-desktop-309l\">How I\nbuilt an \"Asteroids\" game using Jetpack Compose for Desktop<\/a><\/li>\n<\/ul>\n<h2 id=\"3-security-manager-usuwany-z-javynie-bez-kontrowersji-%F0%9F%91%AE%E2%80%8D%E2%99%80%EF%B8%8F\">3. Security Manager usuwany z Javy - nie bez kontrowersji \u200d\u2640\ufe0f<\/h2>\nPo dw\u00f3ch tematach kotlinowych pora przej\u015b\u0107 do czego\u015b javowego - wiemy, \u017ce cho\u0107 j\u0119zyk stworzony przez Jetbrains\u00f3w jest niezwykle popularny, to jednak na JVMie niepodzielnie rz\u0105dzi jednak Java. Dlatego te\u017c dzisiejsz\u0105 edycje ko\u0144czymy JEPem. Jednak zamiast po prostu, jak to mamy w zwyczaju, podzieli\u0107 si\u0119, nad czym ciekawym architekci j\u0119zyka dumaj\u0105 - dzisiejszy proposal okraszony jest odrobin\u0105 kontrowersji z do\u015b\u0107 nieoczekiwanego kierunku.\n\nZacznijmy jednak od podstaw -<a href=\"https:\/\/openjdk.java.net\/jeps\/411\"> JEP 411: Deprecate the Security Manager for Removal<\/a> przynosi 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. 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() - 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. Jednak jak to bywa ze starymi API, Security Manager by\u0142 skomplikowany i niewydajny. Dzisiaj, wraz z powolnym odchodzeniem do niebytu Javy jako platformy do uruchamiania plik\u00f3w *.jar, tw\u00f3rcy JDK zdecydowali si\u0119 na usuni\u0119cie go z platformy.\n\nI tutaj ca\u0142y na bia\u0142o wchodzi\u2026 NetBeans. Pami\u0119tacie jeszcze to IDE, chyba pierwsze tego typu narz\u0119dzie dla Javy, rozwijane jeszcze przez Sun? Ot\u00f3\u017c z faktem, \u017ce oprogramowanie jest niemal tak stare jak ca\u0142a platforma, w jego bebechach drzemie wiele prehistorycznego kodu - w tym takiego mocno opieraj\u0105cego si\u0119 w\u0142a\u015bnie na Security Managerze. U\u017cywaj\u0105 oni Security Managera do do\u015b\u0107 nietypowych zastosowa\u0144 jak np. ochrona dost\u0119pu do konkretnych \u015bcie\u017cek systemu plik\u00f3w, czy \u015bledzenie okien pop-up u\u017cytkownika. W <a href=\"https:\/\/blogs.apache.org\/netbeans\/entry\/jep-411-deprecate-the-security\">swoim po\u015bcie<\/a> prosz\u0105 oni o komentarz i propozycje alternatyw, kt\u00f3re mog\u0105 u\u017cy\u0107.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-18.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-18.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-18.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-18.png 1600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-18.png 2400w\" alt=\"\" width=\"2000\" height=\"857\" \/>\n\n<figcaption>Najbardziej zaskoczy\u0142 mnie fakt, \u017ce NetBeans jest ci\u0105gle do\u015b\u0107 aktywnie rozwijany - by\u0142em pewien, \u017ce projekt umar\u0142, a nawet doczeka\u0142 si\u0119 nowoczesnego Dark Mode.<\/figcaption><\/figure>\nW ca\u0142ej sprawie wypowiedzia\u0142 si\u0119 sam Ron Pressler w <a href=\"https:\/\/inside.java\/2021\/04\/23\/security-and-sandboxing-post-securitymanager\/\">do\u015b\u0107 d\u0142ugiej publikacji na inside.java<\/a>, gdzie zaprezentowa\u0142, jak mo\u017cna emulowa\u0107 niekt\u00f3re z zachowa\u0144 Security Managera np. za pomoc\u0105 systemu modu\u0142\u00f3w. Nie twierdzi on, \u017ce nie pojawi\u0105 si\u0119 pewne luki, ale ch\u0119\u0107 usuni\u0119cia motywowana jest drogim kosztem utrzymania oraz... faktem, \u017ce jego spos\u00f3b zachowania nie jest kompatybilny z wirtualnymi w\u0105tkami. Jak ju\u017c kiedy\u015b pisali\u015bmy, interesuj\u0105co patrzy si\u0119 na inkrementalny proces dostarczania Projektu Loom - mamy tutaj do czynienia z kolejnym JEPem czyszcz\u0105cym przedpole zapowiadanej rewolucji.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/411\">JEP 411: Deprecate the Security Manager for Removal<\/a><\/li>\n \t<li><a href=\"https:\/\/blogs.apache.org\/netbeans\/entry\/jep-411-deprecate-the-security\">JEP 411: Deprecate the Security Manager for Removal - Apache NetBeans<\/a><\/li>\n \t<li><a href=\"https:\/\/inside.java\/2021\/04\/23\/security-and-sandboxing-post-securitymanager\/\">Security and Sandboxing Post SecurityManager<\/a><\/li>\n<\/ul>","innerContent":["<h2 id=\"1-kotlin-15-wyreleasowany-%F0%9F%8D%85\"><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlin-1-5-0-released\/\">1. Kotlin 1.5 wyreleasowany<\/a><\/h2>\nCzekali\u015bmy d\u0142ugo, jak chwal\u0105 si\u0119 tw\u00f3rcy w oficjalnym blogpo\u015bcie og\u0142aszaj\u0105cym premier\u0119. \u00a0To pierwsze du\u017ce wydanie Kotlina w tym roku. Wiele z funkcji, kt\u00f3re przynosi mieli\u015bmy ju\u017c okazj\u0119 opisywa\u0107 przy okazji wydania 1.4.30, stanowi\u0105cego de facto preview 1.5, ale gwoli przyzwoito\u015bci przejd\u017amy przez zmiany, jakie wprowadza nowa wersja.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-15.png\" alt=\"\" width=\"330\" height=\"440\" \/><\/figure>\nDo nowej edycji j\u0119zyka trafia kolejna iteracji \u201creprezentacji po\u015bredniej\u201d (IR) kodu dla JVMa, czyli zdecydowanie najwa\u017cniejszej i najcz\u0119\u015bciej u\u017cywanej wersji, pono\u0107 multiplatformowego Kotlina. Kompilator j\u0119zyka ma by\u0107 znacznie szybszy (co do tej pory by\u0142o jego pi\u0119t\u0105 achillesow\u0105), a sama nowa reprezentacja odblokowuje dynamiczniejsze nad\u0105\u017canie za zmianami w samej Javie.\n\nZa dow\u00f3d, \u017ce tw\u00f3rcy nie rzucaj\u0105 s\u0142\u00f3w na wiatr, niech pos\u0142u\u017cy druga du\u017ca nowo\u015b\u0107. Do \u201cinternali\u201d Kotlina trafiaj\u0105 Rekordy, Sealed Classes, Inline Classes, a tak\u017ce mo\u017cliwo\u015b\u0107 kompilacji do <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew15.html#sam-adapters-via-invokedynamic\">Single Abstract Methods<\/a> i <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew15.html#lambdas-via-invokedynamic\">Lambd<\/a> ze wsparciem invokedynamic. Ca\u0142o\u015b\u0107 ma doprowadzi\u0107 do interoperatywno\u015bci mi\u0119dzy Jav\u0105 i Kotlinem na niespotykanym wcze\u015bniej poziomie. Wi\u0119kszo\u015b\u0107 wspomnianych featur\u00f3w zosta\u0142a eksperymentalne udost\u0119pniona w ramach wydania 1.4.30 - teraz mo\u017cemy ju\u017c z czystym sumieniem u\u017cywa\u0107 ich na produkcji. Chyba, \u017ce wymagacie zgodno\u015bci z Jav\u0105 1.6 - Kotlin porzuca ostatecznie wsparcie dla tego runtime - wymagane minimum teraz to JVM 1.8.\n\nPrawda jest taka, \u017ce poza ma\u0142ymi usprawnieniami w API (zar\u00f3wno j\u0119zyka, jak i test\u00f3w), jakich\u015b drobiazgach dla Kotlina Native oraz zapowiedzi\u0105 nowej IR dla Kotlin\/JS - niewiele jest w nowej wersji innych du\u017cych rzeczy. Wida\u0107, jak czasoch\u0142onnym i m\u0119cz\u0105cym procesem by\u0142o dopasowanie si\u0119 do nowych zmian w JVM. Teraz z du\u017cym zaciekawieniem czekam na kolejn\u0105 iteracj\u0119 kotlinowej roadmapy - mam nadzieje, \u017ce poka\u017ce nam ona stoj\u0105ce na w\u0142asnych nogach zmiany, kt\u00f3re przedstawi\u0105 dalszy kierunek ewolucji j\u0119zyka.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/1_image-20.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-20.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-20.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/1_image-20.png 1136w\" alt=\"\" width=\"1136\" height=\"1094\" \/><\/figure>\nW okolicach Kotlina 1.5 dosz\u0142o te\u017c do innej, interesuj\u0105cej premiery. <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlinx-serialization-1-2-released\/\">kotlinx-serialization otrzyma\u0142a kolejn\u0105 edycj\u0119 1.2<\/a>, a wraz z ni\u0105 dopasowanie do nowych mo\u017cliwo\u015bci Kotlina 1.5 (jak np. Value classes) oraz szybsz\u0105 serializacj\u0105 JSON\u00f3w. kotlinx-serialization \u0142atwo przegapi\u0107, a stanowi on istotny budulec wielu bibliotek, dzia\u0142aj\u0105c jako swego rodzaju biblioteka standardowa do serializacji\/deserializacji, kt\u00f3rej (pomimo usilnych pr\u00f3b ludzi od Jakarty EE) tak brakuje w Javie.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-17.png\" alt=\"\" width=\"350\" height=\"274\" \/><\/figure>\nAle to nie ostatnia z kotlinowych zapowiedzi z zesz\u0142ego tygodnia...\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/kotlin-1-5-0-released\/\">Kotlin 1.5.0 \u2013 the First Big Release of 2021<\/a><\/li>\n \t<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew15.html#lambdas-via-invokedynamic\">Lambdas via invokedynamic<\/a><\/li>\n<\/ul>\n<h2 id=\"2-jetpack-composer-rozpycha-si%C4%99-%C5%82okciami-%F0%9F%9A%80\">2. Jetpack Composer rozpycha si\u0119 \u0142okciami<\/h2>\nPrzyznam, \u017ce cho\u0107 wiele wsp\u00f3lnego nie mam ju\u017c w tej chwili ani z aplikacjami desktopowymi, ani mobilnymi, to jednak Jetpack Compose nale\u017cy do projekt\u00f3w, kt\u00f3rym naprawd\u0119 bacznie si\u0119 przygl\u0105dam. Do macierzystego Androida i ci\u0105gle rozwijanej edycji desktopowej w zesz\u0142ym tygodniu do\u0142\u0105czy\u0142a wersja przeznaczona na... przegl\u0105darki.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-19.png\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/1_image-19.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/image-19.png 642w\" alt=\"\" width=\"642\" height=\"388\" \/><\/figure>\nW przestrzeni webowej konkurencji nie brakuje - poza frameworkami natywnymi dla JavaScripta, pokroju Vue, Angulara czy Reacta, s\u0105 przecie\u017c rozwi\u0105zania nieco mniej ortodoksyjne - \u017ceby wymieni\u0107 tutaj cho\u0107by Fluttera. W odr\u00f3\u017cnieniu od tego ostatniego, kt\u00f3ry opiera si\u0119 na rysowaniu interfejsu na obiekcie Canvas, <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/technology-preview-jetpack-compose-for-web\/\">Jetpack Compose for Web<\/a> ma opiera\u0107 si\u0119 na tworzeniu drzewa DOM z poziomu kodu aplikacji. Sprawia to, \u017ce jako rozwi\u0105zanie przypomina nieco JSX, aczkolwiek zamiast wzbogaconego DOMa mamy tutaj do czynienia z \u0142adnie komponowaln\u0105, ale jednak mocno kotlinow\u0105 sk\u0142adni\u0105. Opr\u00f3cz API opartego o DOM, nowa biblioteka zawiera r\u00f3wnie\u017c opcje na dzielenie komponent\u00f3w z wersjami mobilnymi czy desktopowymi - te maj\u0105 by\u0107 odbudowane za pomoc\u0105 semantycznego DOMa. I to w\u0142a\u015bnie w wypadku u\u017cy\u0107 wraz z innymi dobrodziejstwami Kotlin Multiplatform widz\u0119 najwi\u0119ksz\u0105 przysz\u0142o\u015b\u0107 tej technologii. Na tym etapie, bior\u0105c pod uwag\u0119 mnogo\u015b\u0107 alternatywnych, konkurencyjnych rozwi\u0105za\u0144, traktowa\u0107 nale\u017cy, co najwy\u017cej jako ciekawostk\u0119.\n\nA co powiecie na mo\u017cliwo\u015b\u0107 u\u017cycia Jetpack Compose do tworzenia\u2026 aplikacji Shellowych? Ot\u00f3\u017c \u015bwietnie znany w community Jake Wharton (kiedy jeszcze pisa\u0142em aplikacje na Androida, ten cz\u0142owiek odpowiedzialny by\u0142 za po\u0142ow\u0119 moich zewn\u0119trznych zale\u017cno\u015bci) zaprezentowa\u0142 <a href=\"https:\/\/github.com\/JakeWharton\/mosaic\">Mosaic<\/a>. Przy okazji tego projektu dowiedzie\u0107 si\u0119 mo\u017cna o samym Compose - jego mo\u017cliwo\u015bci wychodz\u0105 poza tworzenie warstwy prezentacji, czego mo\u017cna si\u0119 nauczy\u0107 z kodu \u017ar\u00f3d\u0142owego projektu.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-14.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-14.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-14.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/7_image-14.png 1600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/8_image-14.png 2400w\" alt=\"\" width=\"2000\" height=\"1572\" \/>\n<figcaption>BTW: Kiedy\u015b przygotowywa\u0142em cykl \u201cGitHub All-Stars\u201d, gdzie wchodzi\u0142em mocno w internale ciekawych projekt\u00f3w Open Source - mo\u017ce byliby\u015bcie zainteresowani takim dodatkiem do naszych standardowych Weekly ;)?<\/figcaption><\/figure>\nA, je\u017celi chcecie pobawi\u0107 si\u0119 wersj\u0105 desktopow\u0105 Jetpacka, <a href=\"https:\/\/dev.to\/kotlin\/how-i-built-an-asteroids-game-using-jetpack-compose-for-desktop-309l\">Sebastian Aigner - Developer Advocate z Jetbrains<\/a> - stworzy\u0142 tutorial pokazuj\u0105cy, jak krok po kroku odtworzy\u0107 klasyczn\u0105 gr\u0119 \u201cAsteroids\u201d. Mi\u0142ej zabawy.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/05\/technology-preview-jetpack-compose-for-web\/\">Technology Preview: Jetpack Compose for Web<\/a><\/li>\n \t<li><a href=\"https:\/\/github.com\/JakeWharton\" rel=\"author\">JakeWharton<\/a>\/<strong><a href=\"https:\/\/github.com\/JakeWharton\/mosaic\">mosaic<\/a><\/strong><\/li>\n \t<li><a href=\"https:\/\/dev.to\/kotlin\/how-i-built-an-asteroids-game-using-jetpack-compose-for-desktop-309l\">How I\nbuilt an \"Asteroids\" game using Jetpack Compose for Desktop<\/a><\/li>\n<\/ul>\n<h2 id=\"3-security-manager-usuwany-z-javynie-bez-kontrowersji-%F0%9F%91%AE%E2%80%8D%E2%99%80%EF%B8%8F\">3. Security Manager usuwany z Javy - nie bez kontrowersji \u200d\u2640\ufe0f<\/h2>\nPo dw\u00f3ch tematach kotlinowych pora przej\u015b\u0107 do czego\u015b javowego - wiemy, \u017ce cho\u0107 j\u0119zyk stworzony przez Jetbrains\u00f3w jest niezwykle popularny, to jednak na JVMie niepodzielnie rz\u0105dzi jednak Java. Dlatego te\u017c dzisiejsz\u0105 edycje ko\u0144czymy JEPem. Jednak zamiast po prostu, jak to mamy w zwyczaju, podzieli\u0107 si\u0119, nad czym ciekawym architekci j\u0119zyka dumaj\u0105 - dzisiejszy proposal okraszony jest odrobin\u0105 kontrowersji z do\u015b\u0107 nieoczekiwanego kierunku.\n\nZacznijmy jednak od podstaw -<a href=\"https:\/\/openjdk.java.net\/jeps\/411\"> JEP 411: Deprecate the Security Manager for Removal<\/a> przynosi 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. 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() - 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. Jednak jak to bywa ze starymi API, Security Manager by\u0142 skomplikowany i niewydajny. Dzisiaj, wraz z powolnym odchodzeniem do niebytu Javy jako platformy do uruchamiania plik\u00f3w *.jar, tw\u00f3rcy JDK zdecydowali si\u0119 na usuni\u0119cie go z platformy.\n\nI tutaj ca\u0142y na bia\u0142o wchodzi\u2026 NetBeans. Pami\u0119tacie jeszcze to IDE, chyba pierwsze tego typu narz\u0119dzie dla Javy, rozwijane jeszcze przez Sun? Ot\u00f3\u017c z faktem, \u017ce oprogramowanie jest niemal tak stare jak ca\u0142a platforma, w jego bebechach drzemie wiele prehistorycznego kodu - w tym takiego mocno opieraj\u0105cego si\u0119 w\u0142a\u015bnie na Security Managerze. U\u017cywaj\u0105 oni Security Managera do do\u015b\u0107 nietypowych zastosowa\u0144 jak np. ochrona dost\u0119pu do konkretnych \u015bcie\u017cek systemu plik\u00f3w, czy \u015bledzenie okien pop-up u\u017cytkownika. W <a href=\"https:\/\/blogs.apache.org\/netbeans\/entry\/jep-411-deprecate-the-security\">swoim po\u015bcie<\/a> prosz\u0105 oni o komentarz i propozycje alternatyw, kt\u00f3re mog\u0105 u\u017cy\u0107.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-18.png\" sizes=\"(min-width: 720px) 720px\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/3_image-18.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/4_image-18.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-18.png 1600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/2_image-18.png 2400w\" alt=\"\" width=\"2000\" height=\"857\" \/>\n\n<figcaption>Najbardziej zaskoczy\u0142 mnie fakt, \u017ce NetBeans jest ci\u0105gle do\u015b\u0107 aktywnie rozwijany - by\u0142em pewien, \u017ce projekt umar\u0142, a nawet doczeka\u0142 si\u0119 nowoczesnego Dark Mode.<\/figcaption><\/figure>\nW ca\u0142ej sprawie wypowiedzia\u0142 si\u0119 sam Ron Pressler w <a href=\"https:\/\/inside.java\/2021\/04\/23\/security-and-sandboxing-post-securitymanager\/\">do\u015b\u0107 d\u0142ugiej publikacji na inside.java<\/a>, gdzie zaprezentowa\u0142, jak mo\u017cna emulowa\u0107 niekt\u00f3re z zachowa\u0144 Security Managera np. za pomoc\u0105 systemu modu\u0142\u00f3w. Nie twierdzi on, \u017ce nie pojawi\u0105 si\u0119 pewne luki, ale ch\u0119\u0107 usuni\u0119cia motywowana jest drogim kosztem utrzymania oraz... faktem, \u017ce jego spos\u00f3b zachowania nie jest kompatybilny z wirtualnymi w\u0105tkami. Jak ju\u017c kiedy\u015b pisali\u015bmy, interesuj\u0105co patrzy si\u0119 na inkrementalny proces dostarczania Projektu Loom - mamy tutaj do czynienia z kolejnym JEPem czyszcz\u0105cym przedpole zapowiadanej rewolucji.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/411\">JEP 411: Deprecate the Security Manager for Removal<\/a><\/li>\n \t<li><a href=\"https:\/\/blogs.apache.org\/netbeans\/entry\/jep-411-deprecate-the-security\">JEP 411: Deprecate the Security Manager for Removal - Apache NetBeans<\/a><\/li>\n \t<li><a href=\"https:\/\/inside.java\/2021\/04\/23\/security-and-sandboxing-post-securitymanager\/\">Security and Sandboxing Post SecurityManager<\/a><\/li>\n<\/ul>"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10139","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=10139"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10139\/revisions"}],"predecessor-version":[{"id":10574,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10139\/revisions\/10574"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}