{"id":10136,"date":"2021-05-18T12:45:31","date_gmt":"2021-05-18T10:45:31","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-38\/"},"modified":"2022-09-19T13:10:53","modified_gmt":"2022-09-19T11:10:53","slug":"jvm-tuesday-vol-38","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/","title":{"rendered":"JVM Tuesday vol. 38"},"content":{"rendered":"<h2 id=\"1-scala-3-nareszcie-wydana\" data-num=1><a href=\"https:\/\/www.scala-lang.org\/blog\/2021\/05\/14\/scala3-is-here.html\">1. Scala 3 nareszcie wydana!<\/a><\/h2>\n<p>Zacznijmy od zdecydowanie najwa\u017cniejszego wydarzenia zesz\u0142ego tygodnia.<\/p>\n<p>Cytuj\u0105c oryginalnych autor\u00f3w: po 8 latach pracy, 28 tysi\u0105cach commit\u00f3w, 7400 Pull Requestach oraz ponad 4000 zamkni\u0119tych issuesach &#8211; Scala 3 nareszcie jest z nami! Przez kr\u00f3tk\u0105 chwil\u0119 istnia\u0142o ryzyko, \u017ce czeka nas jeszcze jedna wersja Release Candidate, ale wszystkie krytyczne b\u0142\u0119dy uda\u0142o si\u0119 zamkn\u0105\u0107 przed docelowym terminem. Czternastego maja (a w\u0142a\u015bciwie jeszcze trzynastego w nocy &#8211; mamy nadziej\u0119, \u017ce to nie b\u0119dzie pechowe) nowa wersja zosta\u0142a opublikowana.<\/p>\n<p>Pozwol\u0119 sobie troch\u0119 oszuka\u0107, i zamiast robi\u0107 pe\u0142ny przegl\u0105d nowych mo\u017cliwo\u015bci, podlinkuje do rozmowy z naszym lokalnym firmowym specjalist\u0105, kt\u00f3r\u0105 mia\u0142em kiedy\u015b okazj\u0119 przeprowadzi\u0107 &#8211; poza ko\u0144c\u00f3wk\u0105, gdzie ci\u0105gle jeszcze si\u0119 \u0142udzimy, \u017ce Scala 3.0 b\u0119dzie gwiazdkowym prezentem, nie zestarza\u0142a si\u0119 za bardzo:<\/p>\n<div class=\"embed-responsive embed-responsive-16by9\"><iframe loading=\"lazy\" title=\"Devs&#039; Talks #2 Scala 3 - co przyniesie wyczekiwany Dotty?\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/kujjnei_TTo?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>Opublikowano te\u017c informacje na temat przysz\u0142ego cyklu releasowego. Nowe wydania patch (3.0.x) Scali maj\u0105 ukazywa\u0107 si\u0119 regularnie, co sze\u015b\u0107 tygodni.<\/p>\n<p>Obiecano r\u00f3wnie\u017c, \u017ce szczeg\u00f3lna uwaga b\u0119dzie po\u015bwi\u0119cona wstecznej kompatybilno\u015bci, co przez lata by\u0142o pi\u0119t\u0105 achillesow\u0105 Scali. Pozwoli\u0107 ma na to nowy format po\u015bredni binarek, o smakowitej nazwie TASTy. Na ten moment tw\u00f3rcy podaj\u0105, \u017ce 308 bibliotek (ze wszystkich 2597 dost\u0119pnych dla wersji 2.13) chwali si\u0119 pe\u0142n\u0105 kompatybilno\u015bci\u0105 ze wersj\u0105 3.0.<\/p>\n<p>No c\u00f3\u017c, \u017cyczymy Scali, \u017ceby to wydanie by\u0142o dla niej drug\u0105 m\u0142odo\u015bci\u0105<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-27.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"468\" height=\"513\"><figcaption>Nie wszystkim j\u0119zykom uda\u0142o si\u0119 to bezbole\u015bnie<\/figcaption><\/figure>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/www.scala-lang.org\/blog\/2021\/05\/14\/scala3-is-here.html\">Scala 3 is here!<\/a><\/li>\n<\/ul>\n<h2 id=\"2-czy-wiesz-czym-rozni-sie-jakarta-ee-od-microprofile\" data-num=2><a href=\"https:\/\/jakartaee-ambassadors.io\/2021\/05\/10\/jakarta-ee-ambassadors-joint-position-on-jakarta-ee-and-microprofile-alignment\/\">2. Czy wiesz czym r\u00f3\u017cni si\u0119 Jakarta EE od Microprofile ?<\/a><\/h2>\n<p>Je\u017celi kto\u015b robi\u0142by list\u0119 najbardziej myl\u0105cych dla programist\u00f3w aspekt\u00f3w Javowego ekosystemu, jestem przekonany, \u017ce relacja mi\u0119dzy Jakart\u0105 EE i Microprofilem by\u0142aby jedn\u0105 znajduj\u0105cych si\u0119 na samym szczycie. Nie do\u015b\u0107, \u017ce tak naprawd\u0119 wi\u0119kszo\u015b\u0107 os\u00f3b pracuj\u0105cych z Java EE, zatrzyma\u0142y si\u0119 na edycjach Java EE 5\/6 &#8211; nie bez winy s\u0105 tutaj wolno rozwijaj\u0105ce si\u0119 serwery aplikacyjne i kontrowersje, kt\u00f3rymi od samego pocz\u0105tku otoczona by\u0142a Jakarta EE. Oliwy do ognia doda\u0142 te\u017c fakt, \u017ce pojawienie si\u0119 Microprofilu (b\u0119d\u0105cego dodatkowym, niezale\u017cnym od g\u0142\u00f3wnej specyfikacji wycinkiem, przeznaczonym do zastosowa\u0144 mikroserwisowych) by\u0142o motywowane nieco przestarza\u0142ym sposobem dystrybucji serwer\u00f3w aplikacyjnych, nie realnymi potrzebami rynku.<\/p>\n<p>Na szcz\u0119\u015bcie tw\u00f3rcy Jakarty EE oraz MicroProfilu poszli po rozum do g\u0142owy i zaczynaj\u0105 interesuj\u0105ce ruchy w celu posprz\u0105tania tego ca\u0142ego bajzlu. Pocz\u0105tkiem roku powsta\u0142o The Cloud Native for Java (CN4J) Alliance, w sk\u0142ad kt\u00f3rego wchodz\u0105 reprezentanci obu standard\u00f3w. Pozwala to na wsp\u00f3lne planowanie ich roadmapy, znajdowanie element\u00f3w wsp\u00f3lnych, a tak\u017ce dbanie o klarowno\u015b\u0107 wizji obu projekt\u00f3w i odpowiednie zrozumienie w\u015br\u00f3d programist\u00f3w (w tym PR &#8211; nad PR Enterprise Edition musi popracowa\u0107 jak ma\u0142o kto).<\/p>\n<p>W zesz\u0142ym tygodniu CN4J postanowi\u0142o przedstawi\u0107 sw\u00f3j punkt widzenia na dalszy rozw\u00f3j obu projekt\u00f3w. Jakarta EE ma by\u0107 przeznaczona do aplikacji monolitycznych oraz mikroserwisowych, ale z du\u017cym naciskiem na utrzymanie wstecznej kompatybilno\u015bci &#8211; to wszystko przy pojedynczym, du\u017cym rocznym wydaniu. MicroProfile podbiera sobie z Jakarty EE to co mu pasuje, ma mie\u0107 mniejszy nacisk na wsteczn\u0105 kompatybilno\u015b\u0107, skupia\u0107 si\u0119 na nowych perspektywach rozwoju i i\u015bcie za trendami rynkowymi (GraphQL, OpenTelemetry). Dzi\u0119ki oddzielenie Mikroprofilu z Jakarty EE, mo\u017cliwe jest wydawanie kilku nowych wersji w ci\u0105gu jednego roku.<\/p>\n<p>Czy spo\u0142eczno\u015b\u0107 kupuje ten podzia\u0142? \u015arednio. Jak wida\u0107 na za\u0142\u0105czonej ankiecie, grubo ponad po\u0142owa spo\u0142eczno\u015bci jest za w\u0142\u0105czeniem Microprofilu do Jakarty EE i to w spos\u00f3b najbardziej radykalny &#8211; zmieniaj\u0105c jego przestrze\u0144 nazw, licz\u0105c si\u0119 z podobn\u0105 klas\u0105 problem\u00f3w, kt\u00f3re nie przesta\u0142y jeszcze realnie dotyka\u0107 Jakarty. Ja osobi\u015bcie by\u0142bym za opcj\u0105 A1, aczkolwiek pewnie wynika to z tego powodu, \u017ce troch\u0119 m\u0119czy mnie ju\u017c odyseja z wychodzeniem z Javowego namespace. Mo\u017ce po prostu moje my\u015blenie nie wybiega tak d\u0142ugoterminowo jak wi\u0119kszo\u015bci g\u0142osuj\u0105cych, a mo\u017ce przebija si\u0119 przez to m\u00f3j pragmatyzm.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0a2855ee1.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\"><\/figure>\n<p>B\u0119dziemy \u015bledzi\u0107 dalsze ruchy CN4J i informowa\u0107 Was o ciekawych og\u0142oszeniach.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/jakartaee-ambassadors.io\/2021\/05\/10\/jakarta-ee-ambassadors-joint-position-on-jakarta-ee-and-microprofile-alignment\/\">Jakarta EE Ambassadors Joint Position on Jakarta EE and MicroProfile Alignment \u2013 Jakarta EE Ambassadors<\/a><\/li>\n<\/ul>\n<h2 id=\"3-kalszkwal-w-sprawie-secruitymanagera-tworcy-jdk-chca-przepisac-mechanizm-refleksji\" data-num=3>3. Ka\u0142szkwa\u0142 w sprawie SecruityManagera  \/ tw\u00f3rcy JDK chc\u0105 przepisa\u0107 mechanizm Refleksji<\/h2>\n<p>A na koniec, pierwszy raz w historii JVMowych Wtork\u00f3w robimy followupa do tematu z poprzedniego tygodnia.<\/p>\n<p>Pami\u0119tacie jak przy okazji poprzedniego tygodnia wspomnieli\u015bmy o niepozornym JEPie, zwi\u0105zanym z usuni\u0119ciem Security Managera i tym, \u017ce NetBeansom si\u0119 to bardzo nie podoba\u0142o? Okazuje si\u0119, \u017ce nie tylko NetBeansom. &nbsp;<\/p>\n<p><a href=\"https:\/\/mail.openjdk.java.net\/pipermail\/security-dev\/2021-April\/025495.html\">Lista mailingowa JDK wr\u0119cz zalana zosta\u0142a krytyk\u0105 JEP 411<\/a>. Tw\u00f3rcom Javy zarzucane jest lenistwo, brak wypracowania sensownych alternatyw (innych ni\u017c &#8222;przykro nam, napisz sobie Agenta do maszyny wirtualnej&#8221;) &#8211; szczeg\u00f3lnie aktywnym dyskutantem jest <a href=\"https:\/\/twitter.com\/surial\">Reinier Zwitserloot<\/a>, jeden z tw\u00f3rc\u00f3w Lomboka. Z drugiej strony w rozmowie bierze udzia\u0142 min. przywo\u0142any w poprzedniej edycji Ron Pressler czy Alex Bateman, kt\u00f3rzy odbijaj\u0105 pi\u0142eczk\u0119. Zarzucaj\u0105 oni krytykom, \u017ce o ile tak naprawd\u0119 wiele ich <em>argumentum-at-securitum<\/em> 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. Przyznam, \u017ce dyskusja jest naprawd\u0119 ciekawa i pozwoli\u0142a mi dowiedzie\u0107 si\u0119 naprawd\u0119 du\u017co na temat niuans\u00f3w u\u017cycia SecurityManagera.<\/p>\n<div class=\"embed-responsive embed-responsive-16by9\"><iframe loading=\"lazy\" title=\"280. WJUG with Nicolas Frankel &quot;Securing the JVM&quot;\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/Bgo7dcCbqV8?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>Za zwr\u00f3cenie uwagi na ten pi\u0119kny ka\u0142szkwa\u0142 na li\u015bcie mailingowej Javy chcia\u0142em podzi\u0119kowa\u0107 <a href=\"https:\/\/twitter.com\/wyhasany\" rel=\"nofollow\">Micha\u0142owi Rowickiemu<\/a>. Podrzuci\u0142 te\u017c bardzo fajny materia\u0142, kt\u00f3ry mnie osobi\u015bcie pozwoli\u0142 sporo nauczy\u0107 si\u0119 o samym Security Managerze.<span class=\"-mobiledoc-kit__atom\">\u200c\u200c<\/span><\/p>\n<p>A \u017ce JVM Tuesday bawi i uczy z JEP\u00f3w, podrzucamy kolejnego \u015bwie\u017co opublikowanego, tym razem jeszcze w formie draftu &#8211; <a href=\"https:\/\/openjdk.java.net\/jeps\/8266010\">JEP draft: Reimplement Core Reflection on Method Handles<\/a>. Przynosi on ze sob\u0105 propozycje bardzo grubych zmian w mechanizmie refleksji Javy. &nbsp;Ponownie jest to motywowane pr\u00f3b\u0105 zmniejszenia z\u0142o\u017cono\u015bci implementacji i \u0142atwo\u015bci\u0105 zmian.<\/p>\n<p>Okazuje si\u0119 bowiem, \u017ce w kodzie JDK istniej\u0105 trzy mechanizmy refleksji &#8211; natywny <em>java.lang.reflect<\/em> (w wersji \u201cstandardowej\u201d przy u\u017cyciu tak zwanych natywnych ramek, oraz dodatkowo generowanego pomocniczego bajtkodu w procesie podobnym do tego jak dzia\u0142a JIT &#8211; po odpowiedniej ilo\u015bci u\u017cy\u0107) oraz <em>java.lang.invoke<\/em>, s\u0142awny invoke dynamics wprowadzony wraz z Jav\u0105 7. Sprawia to, \u017ce ka\u017cdy nowy feature (w JEPie przywo\u0142any jest Projekt Valhalla, ale jest to niefortunne r\u00f3wnie\u017c dla Looma) musi uwzgl\u0119dnia\u0107 zmiany we wszystkich tych miejscach.<\/p>\n<p>O ile rozwi\u0105zanie oparte na natywnych ramkach pozostanie, to ju\u017c dodatkowy mechanizm generowania bajtkodu w czasach gdy istnieje wywo\u0142ywanie dynamiczne jest czym\u015b mocno nadmiarowym. Dlatego te\u017c rozwi\u0105zaniem, kt\u00f3re zosta\u0142o zaproponowane, to przepisanie wewn\u0119trznej implementacji <em>java.lang.reflect<\/em> na <em>java.lang.invoke<\/em>, bez zmian w samym API. Dzi\u0119ki temu zmniejsz\u0105 si\u0119 koszty utrzymania ca\u0142o\u015bci, a \u017ce <em>java.lang.invoke<\/em> jest te\u017c API nowocze\u015bniejszym i wydajniejszym (a tak\u017ce nie u\u017cywaj\u0105cym Unsafe API), potencjalnie b\u0119dzie mo\u017cna uzyska\u0107 r\u00f3wnie\u017c szybsz\u0105 implementacje &#8211; aczkolwiek w tym aspekcie tw\u00f3rcy JEPa chc\u0105 sytuacji po prostu nie pogorszy\u0107, ich g\u0142\u00f3wnym celem jest jednak narzut zwi\u0105zany z utrzymaniem. Ca\u0142o\u015b\u0107 przypomina zmiany z JDK 13, gdzie w podobny spos\u00f3b potraktowano Socket API &#8211; przepisano je \u201cpod spodem\u201d na <em>java.nio<\/em><\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-25.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"1766\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-25.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/7_image-25.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/8_image-25.png 1600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-25.png 2063w\" sizes=\"auto, (min-width: 720px) 720px\"><figcaption>Ah, ale si\u0119 Ci architekci JDK zabrali za sp\u0142acanie d\u0142ugu technicznego.<\/figcaption><\/figure>\n<p>A za tydzie\u0144, je\u015bli nie stanie si\u0119 nic na tyle du\u017cego, \u017ce zag\u0142odzi nam edycje, opowiemy o innym ciekawym proposalu &#8211; Local Scopes.<\/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\/8266010\">JEP draft: Reimplement Core Reflection on Method Handles<\/a><\/li>\n<li><a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/nbhnj5\/jep_draft_reimplement_core_reflection_on_method\/\">JEP draft: Reimplement Core Reflection on Method Handles &#8211; Reddit Discussion<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=Bgo7dcCbqV8\">280. WJUG with Nicolas Frankel &#8222;Securing the JVM&#8221;<\/a><\/li>\n<li><a href=\"https:\/\/mail.openjdk.java.net\/pipermail\/security-dev\/2021-April\/025495.html\">https:\/\/mail.openjdk.java.net\/pipermail\/security-dev\/2021-April\/025495.html<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Wysypa\u0142o nam releaseami &#8211; tydzie\u0144 temu Kotlin 1.5, dzisiaj Scala 3 \ud83e\udd73. Opr\u00f3cz tego nieco wyja\u015bnie\u0144 z frontu Jakarty EE oraz dalszy ci\u0105g naszego cotygodniowego przegl\u0105du nowych JEP\u00f3w.<\/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-10136","post","type-post","status-publish","format-standard","hentry","category-jvm-pl"],"acf":{"weekly_summary":true,"estimated_reading_time":"6","feature_image_blog":false,"push_notification_image":false,"feature_image_visible":false},"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. 38 - 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-38\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 38 - Vived\" \/>\n<meta property=\"og:description\" content=\"Wysypa\u0142o nam releaseami - tydzie\u0144 temu Kotlin 1.5, dzisiaj Scala 3 \ud83e\udd73. Opr\u00f3cz tego nieco wyja\u015bnie\u0144 z frontu Jakarty EE oraz dalszy ci\u0105g naszego cotygodniowego przegl\u0105du nowych JEP\u00f3w.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-05-18T10:45:31+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\/6_image-27.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-38\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 38\",\"datePublished\":\"2021-05-18T10:45:31+00:00\",\"dateModified\":\"2022-09-19T11:10:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/\"},\"wordCount\":1335,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-27.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/\",\"name\":\"JVM Tuesday vol. 38 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-27.png\",\"datePublished\":\"2021-05-18T10:45:31+00:00\",\"dateModified\":\"2022-09-19T11:10:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-27.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-27.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 38\"}]},{\"@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. 38 - 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-38\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 38 - Vived","og_description":"Wysypa\u0142o nam releaseami - tydzie\u0144 temu Kotlin 1.5, dzisiaj Scala 3 \ud83e\udd73. Opr\u00f3cz tego nieco wyja\u015bnie\u0144 z frontu Jakarty EE oraz dalszy ci\u0105g naszego cotygodniowego przegl\u0105du nowych JEP\u00f3w.","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/","og_site_name":"Vived","article_published_time":"2021-05-18T10:45:31+00:00","article_modified_time":"2022-09-19T11:10:53+00:00","og_image":[{"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-27.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-38\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 38","datePublished":"2021-05-18T10:45:31+00:00","dateModified":"2022-09-19T11:10:53+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/"},"wordCount":1335,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-27.png","articleSection":["JVM"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/","name":"JVM Tuesday vol. 38 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-27.png","datePublished":"2021-05-18T10:45:31+00:00","dateModified":"2022-09-19T11:10:53+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-27.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-27.png"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-38\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 38"}]},{"@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-scala-3-nareszcie-wydana-%F0%9F%A5%B3\"><a href=\"https:\/\/www.scala-lang.org\/blog\/2021\/05\/14\/scala3-is-here.html\">1. Scala 3 nareszcie wydana!<\/a><\/h2>\nZacznijmy od zdecydowanie najwa\u017cniejszego wydarzenia zesz\u0142ego tygodnia.\n\nCytuj\u0105c oryginalnych autor\u00f3w: po 8 latach pracy, 28 tysi\u0105cach commit\u00f3w, 7400 Pull Requestach oraz ponad 4000 zamkni\u0119tych issuesach - Scala 3 nareszcie jest z nami! Przez kr\u00f3tk\u0105 chwil\u0119 istnia\u0142o ryzyko, \u017ce czeka nas jeszcze jedna wersja Release Candidate, ale wszystkie krytyczne b\u0142\u0119dy uda\u0142o si\u0119 zamkn\u0105\u0107 przed docelowym terminem. Czternastego maja (a w\u0142a\u015bciwie jeszcze trzynastego w nocy - mamy nadziej\u0119, \u017ce to nie b\u0119dzie pechowe) nowa wersja zosta\u0142a opublikowana.\n\nPozwol\u0119 sobie troch\u0119 oszuka\u0107, i zamiast robi\u0107 pe\u0142ny przegl\u0105d nowych mo\u017cliwo\u015bci, podlinkuje do rozmowy z naszym lokalnym firmowym specjalist\u0105, kt\u00f3r\u0105 mia\u0142em kiedy\u015b okazj\u0119 przeprowadzi\u0107 - poza ko\u0144c\u00f3wk\u0105, gdzie ci\u0105gle jeszcze si\u0119 \u0142udzimy, \u017ce Scala 3.0 b\u0119dzie gwiazdkowym prezentem, nie zestarza\u0142a si\u0119 za bardzo:\n\nhttps:\/\/www.youtube.com\/watch?v=kujjnei_TTo\n\nOpublikowano te\u017c informacje na temat przysz\u0142ego cyklu releasowego. Nowe wydania patch (3.0.x) Scali maj\u0105 ukazywa\u0107 si\u0119 regularnie, co sze\u015b\u0107 tygodni.\n\nObiecano r\u00f3wnie\u017c, \u017ce szczeg\u00f3lna uwaga b\u0119dzie po\u015bwi\u0119cona wstecznej kompatybilno\u015bci, co przez lata by\u0142o pi\u0119t\u0105 achillesow\u0105 Scali. Pozwoli\u0107 ma na to nowy format po\u015bredni binarek, o smakowitej nazwie TASTy. Na ten moment tw\u00f3rcy podaj\u0105, \u017ce 308 bibliotek (ze wszystkich 2597 dost\u0119pnych dla wersji 2.13) chwali si\u0119 pe\u0142n\u0105 kompatybilno\u015bci\u0105 ze wersj\u0105 3.0.\n\nNo c\u00f3\u017c, \u017cyczymy Scali, \u017ceby to wydanie by\u0142o dla niej drug\u0105 m\u0142odo\u015bci\u0105\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-27.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"468\" height=\"513\"><figcaption>Nie wszystkim j\u0119zykom uda\u0142o si\u0119 to bezbole\u015bnie<\/figcaption><\/figure>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/www.scala-lang.org\/blog\/2021\/05\/14\/scala3-is-here.html\">Scala 3 is here!<\/a><\/li>\n<\/ul>\n<h2 id=\"2-czy-wiesz-czym-r%C3%B3%C5%BCni-si%C4%99-jakarta-ee-od-microprofile-%F0%9F%98%8F\"><a href=\"https:\/\/jakartaee-ambassadors.io\/2021\/05\/10\/jakarta-ee-ambassadors-joint-position-on-jakarta-ee-and-microprofile-alignment\/\">2. Czy wiesz czym r\u00f3\u017cni si\u0119 Jakarta EE od Microprofile ?<\/a><\/h2>\nJe\u017celi kto\u015b robi\u0142by list\u0119 najbardziej myl\u0105cych dla programist\u00f3w aspekt\u00f3w Javowego ekosystemu, jestem przekonany, \u017ce relacja mi\u0119dzy Jakart\u0105 EE i Microprofilem by\u0142aby jedn\u0105 znajduj\u0105cych si\u0119 na samym szczycie. Nie do\u015b\u0107, \u017ce tak naprawd\u0119 wi\u0119kszo\u015b\u0107 os\u00f3b pracuj\u0105cych z Java EE, zatrzyma\u0142y si\u0119 na edycjach Java EE 5\/6 - nie bez winy s\u0105 tutaj wolno rozwijaj\u0105ce si\u0119 serwery aplikacyjne i kontrowersje, kt\u00f3rymi od samego pocz\u0105tku otoczona by\u0142a Jakarta EE. Oliwy do ognia doda\u0142 te\u017c fakt, \u017ce pojawienie si\u0119 Microprofilu (b\u0119d\u0105cego dodatkowym, niezale\u017cnym od g\u0142\u00f3wnej specyfikacji wycinkiem, przeznaczonym do zastosowa\u0144 mikroserwisowych) by\u0142o motywowane nieco przestarza\u0142ym sposobem dystrybucji serwer\u00f3w aplikacyjnych, nie realnymi potrzebami rynku.\n\nNa szcz\u0119\u015bcie tw\u00f3rcy Jakarty EE oraz MicroProfilu poszli po rozum do g\u0142owy i zaczynaj\u0105 interesuj\u0105ce ruchy w celu posprz\u0105tania tego ca\u0142ego bajzlu. Pocz\u0105tkiem roku powsta\u0142o The Cloud Native for Java (CN4J) Alliance, w sk\u0142ad kt\u00f3rego wchodz\u0105 reprezentanci obu standard\u00f3w. Pozwala to na wsp\u00f3lne planowanie ich roadmapy, znajdowanie element\u00f3w wsp\u00f3lnych, a tak\u017ce dbanie o klarowno\u015b\u0107 wizji obu projekt\u00f3w i odpowiednie zrozumienie w\u015br\u00f3d programist\u00f3w (w tym PR - nad PR Enterprise Edition musi popracowa\u0107 jak ma\u0142o kto).\n\nW zesz\u0142ym tygodniu CN4J postanowi\u0142o przedstawi\u0107 sw\u00f3j punkt widzenia na dalszy rozw\u00f3j obu projekt\u00f3w. Jakarta EE ma by\u0107 przeznaczona do aplikacji monolitycznych oraz mikroserwisowych, ale z du\u017cym naciskiem na utrzymanie wstecznej kompatybilno\u015bci - to wszystko przy pojedynczym, du\u017cym rocznym wydaniu. MicroProfile podbiera sobie z Jakarty EE to co mu pasuje, ma mie\u0107 mniejszy nacisk na wsteczn\u0105 kompatybilno\u015b\u0107, skupia\u0107 si\u0119 na nowych perspektywach rozwoju i i\u015bcie za trendami rynkowymi (GraphQL, OpenTelemetry). Dzi\u0119ki oddzielenie Mikroprofilu z Jakarty EE, mo\u017cliwe jest wydawanie kilku nowych wersji w ci\u0105gu jednego roku.\n\nCzy spo\u0142eczno\u015b\u0107 kupuje ten podzia\u0142? \u015arednio. Jak wida\u0107 na za\u0142\u0105czonej ankiecie, grubo ponad po\u0142owa spo\u0142eczno\u015bci jest za w\u0142\u0105czeniem Microprofilu do Jakarty EE i to w spos\u00f3b najbardziej radykalny - zmieniaj\u0105c jego przestrze\u0144 nazw, licz\u0105c si\u0119 z podobn\u0105 klas\u0105 problem\u00f3w, kt\u00f3re nie przesta\u0142y jeszcze realnie dotyka\u0107 Jakarty. Ja osobi\u015bcie by\u0142bym za opcj\u0105 A1, aczkolwiek pewnie wynika to z tego powodu, \u017ce troch\u0119 m\u0119czy mnie ju\u017c odyseja z wychodzeniem z Javowego namespace. Mo\u017ce po prostu moje my\u015blenie nie wybiega tak d\u0142ugoterminowo jak wi\u0119kszo\u015bci g\u0142osuj\u0105cych, a mo\u017ce przebija si\u0119 przez to m\u00f3j pragmatyzm.\n<figure class=\"kg-card kg-image-card\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0a2855ee1.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\"><\/figure>\nB\u0119dziemy \u015bledzi\u0107 dalsze ruchy CN4J i informowa\u0107 Was o ciekawych og\u0142oszeniach.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/jakartaee-ambassadors.io\/2021\/05\/10\/jakarta-ee-ambassadors-joint-position-on-jakarta-ee-and-microprofile-alignment\/\">Jakarta EE Ambassadors Joint Position on Jakarta EE and MicroProfile Alignment \u2013 Jakarta EE Ambassadors<\/a><\/li>\n<\/ul>\n<h2 id=\"3-ka%C5%82szkwa%C5%82-w-sprawie-secruitymanagera-%F0%9F%92%A9-tw%C3%B3rcy-jdk-chc%C4%85-przepisa%C4%87-mechanizm-refleksji-%F0%9F%97%BE\">3. Ka\u0142szkwa\u0142 w sprawie SecruityManagera  \/ tw\u00f3rcy JDK chc\u0105 przepisa\u0107 mechanizm Refleksji<\/h2>\nA na koniec, pierwszy raz w historii JVMowych Wtork\u00f3w robimy followupa do tematu z poprzedniego tygodnia.\n\nPami\u0119tacie jak przy okazji poprzedniego tygodnia wspomnieli\u015bmy o niepozornym JEPie, zwi\u0105zanym z usuni\u0119ciem Security Managera i tym, \u017ce NetBeansom si\u0119 to bardzo nie podoba\u0142o? Okazuje si\u0119, \u017ce nie tylko NetBeansom. &nbsp;\n\n<a href=\"https:\/\/mail.openjdk.java.net\/pipermail\/security-dev\/2021-April\/025495.html\">Lista mailingowa JDK wr\u0119cz zalana zosta\u0142a krytyk\u0105 JEP 411<\/a>. Tw\u00f3rcom Javy zarzucane jest lenistwo, brak wypracowania sensownych alternatyw (innych ni\u017c \"przykro nam, napisz sobie Agenta do maszyny wirtualnej\") - szczeg\u00f3lnie aktywnym dyskutantem jest <a href=\"https:\/\/twitter.com\/surial\">Reinier Zwitserloot<\/a>, jeden z tw\u00f3rc\u00f3w Lomboka. Z drugiej strony w rozmowie bierze udzia\u0142 min. przywo\u0142any w poprzedniej edycji Ron Pressler czy Alex Bateman, kt\u00f3rzy odbijaj\u0105 pi\u0142eczk\u0119. Zarzucaj\u0105 oni krytykom, \u017ce o ile tak naprawd\u0119 wiele ich <em>argumentum-at-securitum<\/em> jest do\u015b\u0107 trafnych, to w realnym \u015bwiecie nikt nie zwraca na przywo\u0142ywane aspekty uwagi - typu sandboxowanie u\u017cycia bibliotek zewn\u0119trznych. Przyznam, \u017ce dyskusja jest naprawd\u0119 ciekawa i pozwoli\u0142a mi dowiedzie\u0107 si\u0119 naprawd\u0119 du\u017co na temat niuans\u00f3w u\u017cycia SecurityManagera.\n\nhttps:\/\/www.youtube.com\/watch?v=Bgo7dcCbqV8\nZa zwr\u00f3cenie uwagi na ten pi\u0119kny ka\u0142szkwa\u0142 na li\u015bcie mailingowej Javy chcia\u0142em podzi\u0119kowa\u0107 <a href=\"https:\/\/twitter.com\/wyhasany\" rel=\"nofollow\">Micha\u0142owi Rowickiemu<\/a>. Podrzuci\u0142 te\u017c bardzo fajny materia\u0142, kt\u00f3ry mnie osobi\u015bcie pozwoli\u0142 sporo nauczy\u0107 si\u0119 o samym Security Managerze.<span class=\"-mobiledoc-kit__atom\">\u200c\u200c<\/span>\n\nA \u017ce JVM Tuesday bawi i uczy z JEP\u00f3w, podrzucamy kolejnego \u015bwie\u017co opublikowanego, tym razem jeszcze w formie draftu - <a href=\"https:\/\/openjdk.java.net\/jeps\/8266010\">JEP draft: Reimplement Core Reflection on Method Handles<\/a>. Przynosi on ze sob\u0105 propozycje bardzo grubych zmian w mechanizmie refleksji Javy. &nbsp;Ponownie jest to motywowane pr\u00f3b\u0105 zmniejszenia z\u0142o\u017cono\u015bci implementacji i \u0142atwo\u015bci\u0105 zmian.\n\nOkazuje si\u0119 bowiem, \u017ce w kodzie JDK istniej\u0105 trzy mechanizmy refleksji - natywny <em>java.lang.reflect<\/em> (w wersji \u201cstandardowej\u201d przy u\u017cyciu tak zwanych natywnych ramek, oraz dodatkowo generowanego pomocniczego bajtkodu w procesie podobnym do tego jak dzia\u0142a JIT - po odpowiedniej ilo\u015bci u\u017cy\u0107) oraz <em>java.lang.invoke<\/em>, s\u0142awny invoke dynamics wprowadzony wraz z Jav\u0105 7. Sprawia to, \u017ce ka\u017cdy nowy feature (w JEPie przywo\u0142any jest Projekt Valhalla, ale jest to niefortunne r\u00f3wnie\u017c dla Looma) musi uwzgl\u0119dnia\u0107 zmiany we wszystkich tych miejscach.\n\nO ile rozwi\u0105zanie oparte na natywnych ramkach pozostanie, to ju\u017c dodatkowy mechanizm generowania bajtkodu w czasach gdy istnieje wywo\u0142ywanie dynamiczne jest czym\u015b mocno nadmiarowym. Dlatego te\u017c rozwi\u0105zaniem, kt\u00f3re zosta\u0142o zaproponowane, to przepisanie wewn\u0119trznej implementacji <em>java.lang.reflect<\/em> na <em>java.lang.invoke<\/em>, bez zmian w samym API. Dzi\u0119ki temu zmniejsz\u0105 si\u0119 koszty utrzymania ca\u0142o\u015bci, a \u017ce <em>java.lang.invoke<\/em> jest te\u017c API nowocze\u015bniejszym i wydajniejszym (a tak\u017ce nie u\u017cywaj\u0105cym Unsafe API), potencjalnie b\u0119dzie mo\u017cna uzyska\u0107 r\u00f3wnie\u017c szybsz\u0105 implementacje - aczkolwiek w tym aspekcie tw\u00f3rcy JEPa chc\u0105 sytuacji po prostu nie pogorszy\u0107, ich g\u0142\u00f3wnym celem jest jednak narzut zwi\u0105zany z utrzymaniem. Ca\u0142o\u015b\u0107 przypomina zmiany z JDK 13, gdzie w podobny spos\u00f3b potraktowano Socket API - przepisano je \u201cpod spodem\u201d na <em>java.nio<\/em>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-25.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"1766\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-25.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/7_image-25.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/8_image-25.png 1600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-25.png 2063w\" sizes=\"(min-width: 720px) 720px\">\n\n<figcaption>Ah, ale si\u0119 Ci architekci JDK zabrali za sp\u0142acanie d\u0142ugu technicznego.<\/figcaption><\/figure>\nA za tydzie\u0144, je\u015bli nie stanie si\u0119 nic na tyle du\u017cego, \u017ce zag\u0142odzi nam edycje, opowiemy o innym ciekawym proposalu - Local Scopes.\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\/8266010\">JEP draft: Reimplement Core Reflection on Method Handles<\/a><\/li>\n \t<li><a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/nbhnj5\/jep_draft_reimplement_core_reflection_on_method\/\">JEP draft: Reimplement Core Reflection on Method Handles - Reddit Discussion<\/a><\/li>\n \t<li><a href=\"https:\/\/www.youtube.com\/watch?v=Bgo7dcCbqV8\">280. WJUG with Nicolas Frankel \"Securing the JVM\"<\/a><\/li>\n \t<li><a href=\"https:\/\/mail.openjdk.java.net\/pipermail\/security-dev\/2021-April\/025495.html\">https:\/\/mail.openjdk.java.net\/pipermail\/security-dev\/2021-April\/025495.html<\/a><\/li>\n<\/ul>","innerContent":["<h2 id=\"1-scala-3-nareszcie-wydana-%F0%9F%A5%B3\"><a href=\"https:\/\/www.scala-lang.org\/blog\/2021\/05\/14\/scala3-is-here.html\">1. Scala 3 nareszcie wydana!<\/a><\/h2>\nZacznijmy od zdecydowanie najwa\u017cniejszego wydarzenia zesz\u0142ego tygodnia.\n\nCytuj\u0105c oryginalnych autor\u00f3w: po 8 latach pracy, 28 tysi\u0105cach commit\u00f3w, 7400 Pull Requestach oraz ponad 4000 zamkni\u0119tych issuesach - Scala 3 nareszcie jest z nami! Przez kr\u00f3tk\u0105 chwil\u0119 istnia\u0142o ryzyko, \u017ce czeka nas jeszcze jedna wersja Release Candidate, ale wszystkie krytyczne b\u0142\u0119dy uda\u0142o si\u0119 zamkn\u0105\u0107 przed docelowym terminem. Czternastego maja (a w\u0142a\u015bciwie jeszcze trzynastego w nocy - mamy nadziej\u0119, \u017ce to nie b\u0119dzie pechowe) nowa wersja zosta\u0142a opublikowana.\n\nPozwol\u0119 sobie troch\u0119 oszuka\u0107, i zamiast robi\u0107 pe\u0142ny przegl\u0105d nowych mo\u017cliwo\u015bci, podlinkuje do rozmowy z naszym lokalnym firmowym specjalist\u0105, kt\u00f3r\u0105 mia\u0142em kiedy\u015b okazj\u0119 przeprowadzi\u0107 - poza ko\u0144c\u00f3wk\u0105, gdzie ci\u0105gle jeszcze si\u0119 \u0142udzimy, \u017ce Scala 3.0 b\u0119dzie gwiazdkowym prezentem, nie zestarza\u0142a si\u0119 za bardzo:\n\nhttps:\/\/www.youtube.com\/watch?v=kujjnei_TTo\n\nOpublikowano te\u017c informacje na temat przysz\u0142ego cyklu releasowego. Nowe wydania patch (3.0.x) Scali maj\u0105 ukazywa\u0107 si\u0119 regularnie, co sze\u015b\u0107 tygodni.\n\nObiecano r\u00f3wnie\u017c, \u017ce szczeg\u00f3lna uwaga b\u0119dzie po\u015bwi\u0119cona wstecznej kompatybilno\u015bci, co przez lata by\u0142o pi\u0119t\u0105 achillesow\u0105 Scali. Pozwoli\u0107 ma na to nowy format po\u015bredni binarek, o smakowitej nazwie TASTy. Na ten moment tw\u00f3rcy podaj\u0105, \u017ce 308 bibliotek (ze wszystkich 2597 dost\u0119pnych dla wersji 2.13) chwali si\u0119 pe\u0142n\u0105 kompatybilno\u015bci\u0105 ze wersj\u0105 3.0.\n\nNo c\u00f3\u017c, \u017cyczymy Scali, \u017ceby to wydanie by\u0142o dla niej drug\u0105 m\u0142odo\u015bci\u0105\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-27.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"468\" height=\"513\"><figcaption>Nie wszystkim j\u0119zykom uda\u0142o si\u0119 to bezbole\u015bnie<\/figcaption><\/figure>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/www.scala-lang.org\/blog\/2021\/05\/14\/scala3-is-here.html\">Scala 3 is here!<\/a><\/li>\n<\/ul>\n<h2 id=\"2-czy-wiesz-czym-r%C3%B3%C5%BCni-si%C4%99-jakarta-ee-od-microprofile-%F0%9F%98%8F\"><a href=\"https:\/\/jakartaee-ambassadors.io\/2021\/05\/10\/jakarta-ee-ambassadors-joint-position-on-jakarta-ee-and-microprofile-alignment\/\">2. Czy wiesz czym r\u00f3\u017cni si\u0119 Jakarta EE od Microprofile ?<\/a><\/h2>\nJe\u017celi kto\u015b robi\u0142by list\u0119 najbardziej myl\u0105cych dla programist\u00f3w aspekt\u00f3w Javowego ekosystemu, jestem przekonany, \u017ce relacja mi\u0119dzy Jakart\u0105 EE i Microprofilem by\u0142aby jedn\u0105 znajduj\u0105cych si\u0119 na samym szczycie. Nie do\u015b\u0107, \u017ce tak naprawd\u0119 wi\u0119kszo\u015b\u0107 os\u00f3b pracuj\u0105cych z Java EE, zatrzyma\u0142y si\u0119 na edycjach Java EE 5\/6 - nie bez winy s\u0105 tutaj wolno rozwijaj\u0105ce si\u0119 serwery aplikacyjne i kontrowersje, kt\u00f3rymi od samego pocz\u0105tku otoczona by\u0142a Jakarta EE. Oliwy do ognia doda\u0142 te\u017c fakt, \u017ce pojawienie si\u0119 Microprofilu (b\u0119d\u0105cego dodatkowym, niezale\u017cnym od g\u0142\u00f3wnej specyfikacji wycinkiem, przeznaczonym do zastosowa\u0144 mikroserwisowych) by\u0142o motywowane nieco przestarza\u0142ym sposobem dystrybucji serwer\u00f3w aplikacyjnych, nie realnymi potrzebami rynku.\n\nNa szcz\u0119\u015bcie tw\u00f3rcy Jakarty EE oraz MicroProfilu poszli po rozum do g\u0142owy i zaczynaj\u0105 interesuj\u0105ce ruchy w celu posprz\u0105tania tego ca\u0142ego bajzlu. Pocz\u0105tkiem roku powsta\u0142o The Cloud Native for Java (CN4J) Alliance, w sk\u0142ad kt\u00f3rego wchodz\u0105 reprezentanci obu standard\u00f3w. Pozwala to na wsp\u00f3lne planowanie ich roadmapy, znajdowanie element\u00f3w wsp\u00f3lnych, a tak\u017ce dbanie o klarowno\u015b\u0107 wizji obu projekt\u00f3w i odpowiednie zrozumienie w\u015br\u00f3d programist\u00f3w (w tym PR - nad PR Enterprise Edition musi popracowa\u0107 jak ma\u0142o kto).\n\nW zesz\u0142ym tygodniu CN4J postanowi\u0142o przedstawi\u0107 sw\u00f3j punkt widzenia na dalszy rozw\u00f3j obu projekt\u00f3w. Jakarta EE ma by\u0107 przeznaczona do aplikacji monolitycznych oraz mikroserwisowych, ale z du\u017cym naciskiem na utrzymanie wstecznej kompatybilno\u015bci - to wszystko przy pojedynczym, du\u017cym rocznym wydaniu. MicroProfile podbiera sobie z Jakarty EE to co mu pasuje, ma mie\u0107 mniejszy nacisk na wsteczn\u0105 kompatybilno\u015b\u0107, skupia\u0107 si\u0119 na nowych perspektywach rozwoju i i\u015bcie za trendami rynkowymi (GraphQL, OpenTelemetry). Dzi\u0119ki oddzielenie Mikroprofilu z Jakarty EE, mo\u017cliwe jest wydawanie kilku nowych wersji w ci\u0105gu jednego roku.\n\nCzy spo\u0142eczno\u015b\u0107 kupuje ten podzia\u0142? \u015arednio. Jak wida\u0107 na za\u0142\u0105czonej ankiecie, grubo ponad po\u0142owa spo\u0142eczno\u015bci jest za w\u0142\u0105czeniem Microprofilu do Jakarty EE i to w spos\u00f3b najbardziej radykalny - zmieniaj\u0105c jego przestrze\u0144 nazw, licz\u0105c si\u0119 z podobn\u0105 klas\u0105 problem\u00f3w, kt\u00f3re nie przesta\u0142y jeszcze realnie dotyka\u0107 Jakarty. Ja osobi\u015bcie by\u0142bym za opcj\u0105 A1, aczkolwiek pewnie wynika to z tego powodu, \u017ce troch\u0119 m\u0119czy mnie ju\u017c odyseja z wychodzeniem z Javowego namespace. Mo\u017ce po prostu moje my\u015blenie nie wybiega tak d\u0142ugoterminowo jak wi\u0119kszo\u015bci g\u0142osuj\u0105cych, a mo\u017ce przebija si\u0119 przez to m\u00f3j pragmatyzm.\n<figure class=\"kg-card kg-image-card\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0a2855ee1.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\"><\/figure>\nB\u0119dziemy \u015bledzi\u0107 dalsze ruchy CN4J i informowa\u0107 Was o ciekawych og\u0142oszeniach.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/jakartaee-ambassadors.io\/2021\/05\/10\/jakarta-ee-ambassadors-joint-position-on-jakarta-ee-and-microprofile-alignment\/\">Jakarta EE Ambassadors Joint Position on Jakarta EE and MicroProfile Alignment \u2013 Jakarta EE Ambassadors<\/a><\/li>\n<\/ul>\n<h2 id=\"3-ka%C5%82szkwa%C5%82-w-sprawie-secruitymanagera-%F0%9F%92%A9-tw%C3%B3rcy-jdk-chc%C4%85-przepisa%C4%87-mechanizm-refleksji-%F0%9F%97%BE\">3. Ka\u0142szkwa\u0142 w sprawie SecruityManagera  \/ tw\u00f3rcy JDK chc\u0105 przepisa\u0107 mechanizm Refleksji<\/h2>\nA na koniec, pierwszy raz w historii JVMowych Wtork\u00f3w robimy followupa do tematu z poprzedniego tygodnia.\n\nPami\u0119tacie jak przy okazji poprzedniego tygodnia wspomnieli\u015bmy o niepozornym JEPie, zwi\u0105zanym z usuni\u0119ciem Security Managera i tym, \u017ce NetBeansom si\u0119 to bardzo nie podoba\u0142o? Okazuje si\u0119, \u017ce nie tylko NetBeansom. &nbsp;\n\n<a href=\"https:\/\/mail.openjdk.java.net\/pipermail\/security-dev\/2021-April\/025495.html\">Lista mailingowa JDK wr\u0119cz zalana zosta\u0142a krytyk\u0105 JEP 411<\/a>. Tw\u00f3rcom Javy zarzucane jest lenistwo, brak wypracowania sensownych alternatyw (innych ni\u017c \"przykro nam, napisz sobie Agenta do maszyny wirtualnej\") - szczeg\u00f3lnie aktywnym dyskutantem jest <a href=\"https:\/\/twitter.com\/surial\">Reinier Zwitserloot<\/a>, jeden z tw\u00f3rc\u00f3w Lomboka. Z drugiej strony w rozmowie bierze udzia\u0142 min. przywo\u0142any w poprzedniej edycji Ron Pressler czy Alex Bateman, kt\u00f3rzy odbijaj\u0105 pi\u0142eczk\u0119. Zarzucaj\u0105 oni krytykom, \u017ce o ile tak naprawd\u0119 wiele ich <em>argumentum-at-securitum<\/em> jest do\u015b\u0107 trafnych, to w realnym \u015bwiecie nikt nie zwraca na przywo\u0142ywane aspekty uwagi - typu sandboxowanie u\u017cycia bibliotek zewn\u0119trznych. Przyznam, \u017ce dyskusja jest naprawd\u0119 ciekawa i pozwoli\u0142a mi dowiedzie\u0107 si\u0119 naprawd\u0119 du\u017co na temat niuans\u00f3w u\u017cycia SecurityManagera.\n\nhttps:\/\/www.youtube.com\/watch?v=Bgo7dcCbqV8\nZa zwr\u00f3cenie uwagi na ten pi\u0119kny ka\u0142szkwa\u0142 na li\u015bcie mailingowej Javy chcia\u0142em podzi\u0119kowa\u0107 <a href=\"https:\/\/twitter.com\/wyhasany\" rel=\"nofollow\">Micha\u0142owi Rowickiemu<\/a>. Podrzuci\u0142 te\u017c bardzo fajny materia\u0142, kt\u00f3ry mnie osobi\u015bcie pozwoli\u0142 sporo nauczy\u0107 si\u0119 o samym Security Managerze.<span class=\"-mobiledoc-kit__atom\">\u200c\u200c<\/span>\n\nA \u017ce JVM Tuesday bawi i uczy z JEP\u00f3w, podrzucamy kolejnego \u015bwie\u017co opublikowanego, tym razem jeszcze w formie draftu - <a href=\"https:\/\/openjdk.java.net\/jeps\/8266010\">JEP draft: Reimplement Core Reflection on Method Handles<\/a>. Przynosi on ze sob\u0105 propozycje bardzo grubych zmian w mechanizmie refleksji Javy. &nbsp;Ponownie jest to motywowane pr\u00f3b\u0105 zmniejszenia z\u0142o\u017cono\u015bci implementacji i \u0142atwo\u015bci\u0105 zmian.\n\nOkazuje si\u0119 bowiem, \u017ce w kodzie JDK istniej\u0105 trzy mechanizmy refleksji - natywny <em>java.lang.reflect<\/em> (w wersji \u201cstandardowej\u201d przy u\u017cyciu tak zwanych natywnych ramek, oraz dodatkowo generowanego pomocniczego bajtkodu w procesie podobnym do tego jak dzia\u0142a JIT - po odpowiedniej ilo\u015bci u\u017cy\u0107) oraz <em>java.lang.invoke<\/em>, s\u0142awny invoke dynamics wprowadzony wraz z Jav\u0105 7. Sprawia to, \u017ce ka\u017cdy nowy feature (w JEPie przywo\u0142any jest Projekt Valhalla, ale jest to niefortunne r\u00f3wnie\u017c dla Looma) musi uwzgl\u0119dnia\u0107 zmiany we wszystkich tych miejscach.\n\nO ile rozwi\u0105zanie oparte na natywnych ramkach pozostanie, to ju\u017c dodatkowy mechanizm generowania bajtkodu w czasach gdy istnieje wywo\u0142ywanie dynamiczne jest czym\u015b mocno nadmiarowym. Dlatego te\u017c rozwi\u0105zaniem, kt\u00f3re zosta\u0142o zaproponowane, to przepisanie wewn\u0119trznej implementacji <em>java.lang.reflect<\/em> na <em>java.lang.invoke<\/em>, bez zmian w samym API. Dzi\u0119ki temu zmniejsz\u0105 si\u0119 koszty utrzymania ca\u0142o\u015bci, a \u017ce <em>java.lang.invoke<\/em> jest te\u017c API nowocze\u015bniejszym i wydajniejszym (a tak\u017ce nie u\u017cywaj\u0105cym Unsafe API), potencjalnie b\u0119dzie mo\u017cna uzyska\u0107 r\u00f3wnie\u017c szybsz\u0105 implementacje - aczkolwiek w tym aspekcie tw\u00f3rcy JEPa chc\u0105 sytuacji po prostu nie pogorszy\u0107, ich g\u0142\u00f3wnym celem jest jednak narzut zwi\u0105zany z utrzymaniem. Ca\u0142o\u015b\u0107 przypomina zmiany z JDK 13, gdzie w podobny spos\u00f3b potraktowano Socket API - przepisano je \u201cpod spodem\u201d na <em>java.nio<\/em>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-25.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"1766\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/6_image-25.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/7_image-25.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/8_image-25.png 1600w, https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/5_image-25.png 2063w\" sizes=\"(min-width: 720px) 720px\">\n\n<figcaption>Ah, ale si\u0119 Ci architekci JDK zabrali za sp\u0142acanie d\u0142ugu technicznego.<\/figcaption><\/figure>\nA za tydzie\u0144, je\u015bli nie stanie si\u0119 nic na tyle du\u017cego, \u017ce zag\u0142odzi nam edycje, opowiemy o innym ciekawym proposalu - Local Scopes.\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\/8266010\">JEP draft: Reimplement Core Reflection on Method Handles<\/a><\/li>\n \t<li><a href=\"https:\/\/www.reddit.com\/r\/java\/comments\/nbhnj5\/jep_draft_reimplement_core_reflection_on_method\/\">JEP draft: Reimplement Core Reflection on Method Handles - Reddit Discussion<\/a><\/li>\n \t<li><a href=\"https:\/\/www.youtube.com\/watch?v=Bgo7dcCbqV8\">280. WJUG with Nicolas Frankel \"Securing the JVM\"<\/a><\/li>\n \t<li><a href=\"https:\/\/mail.openjdk.java.net\/pipermail\/security-dev\/2021-April\/025495.html\">https:\/\/mail.openjdk.java.net\/pipermail\/security-dev\/2021-April\/025495.html<\/a><\/li>\n<\/ul>"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10136","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=10136"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10136\/revisions"}],"predecessor-version":[{"id":10573,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10136\/revisions\/10573"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}