{"id":10163,"date":"2021-03-23T09:35:53","date_gmt":"2021-03-23T08:35:53","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-30\/"},"modified":"2022-09-19T13:10:55","modified_gmt":"2022-09-19T11:10:55","slug":"jvm-tuesday-vol-30","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/","title":{"rendered":"JVM Tuesday vol. 30"},"content":{"rendered":"<h2 id=\"1-zywot-applet-api-zbliza-sie-ku-koncowi\" data-num=1>1. \u017bywot Applet API zbli\u017ca si\u0119 ku ko\u0144cowi\u2026<\/h2>\n<p>Zacznijmy od nowiny, kt\u00f3ra pewnie wielu zaciekawi, cho\u0107 podejrzewam, \u017ce z pocz\u0105tkiem roku 2021 raczej nie wywr\u00f3ci nikomu pracy. Ot\u00f3\u017c wraz z Jav\u0105 17 i <a href=\"https:\/\/openjdk.java.net\/jeps\/398\">JEP-398<\/a>, Applety oficjalnie znikaj\u0105 z JDK.<\/p>\n<p>Nie jest to prawdopodobnie dla nikogo szczeg\u00f3lna niespodzianka, gdy\u017c \u201cdeprekacja\u201d Applet\u00f3w w JDK nast\u0105pi\u0142a ju\u017c par\u0119 lat temu, przy okazji Javy 9. Jednak tak naprawd\u0119 prawdziwym \u201cpoca\u0142unkiem \u015bmierci\u201d dla tego sposobu dystrybucji Javowych aplikacji, by\u0142y jednak dzia\u0142ania podmiot\u00f3w zewn\u0119trznych &#8211; przegl\u0105darek. \u017beby zrozumie\u0107 dlaczego, musimy przyjrze\u0107 si\u0119 kontekstowi, w kt\u00f3rym applety powstawa\u0142y.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba58c930.png\" alt=\"\" \/><\/figure>\n<p>W roku 1995 przegl\u0105darka Netscape Navigator by\u0142a domy\u015blnym wyborem dla ka\u017cdego bardziej \u015bwiadomego u\u017cytkownika internetu. By\u0142y to czasy zanim internet na dobr\u0105 spraw\u0119 zacz\u0105\u0142 si\u0119 standaryzowa\u0107. Tak\u017ce tw\u00f3rcy przegl\u0105darek mogli sobie pozwoli\u0107 na nieco bardziej szalone pomys\u0142y ni\u017c w dzisiejszym \u015bwiecie &#8211; jak np. znienawidzony przez wszystkich ActiveX, znany userom Internet Explorera. Jednak i Navigator m\u00f3g\u0142 poszczyci\u0107 si\u0119 \u201cw\u0142asno\u015bciowymi\u201d rozwi\u0105zaniami \u0142\u0105cz\u0105cymi \u015bwiat przegl\u0105darek i aplikacji desktopowych. Najwa\u017cniejszym z nich by\u0142 <a href=\"https:\/\/en.wikipedia.org\/wiki\/NPAPI\">Netscape Plugin Application Programming Interface<\/a> &#8211; w skr\u00f3cie NPAPI. By\u0142 to pierwszy popularny standard pisania wtyczek do przegl\u0105darek i to w\u0142a\u015bnie na nim oparli si\u0119 tw\u00f3rcy Javy, daj\u0105c mo\u017cliwo\u015b\u0107 uruchamiania JVMowych aplikacji \u201czaembedowanych\u201d w przegl\u0105darce.<\/p>\n<p>Mimo \u015bmierci Netscape w 2003, standard NPAPI nie umar\u0142. Zosta\u0142 on bowiem zaadaptowany przez Firefox, Chrome czy Safari. Jednak z czasem jego dobra passa zacz\u0119\u0142a przygasa\u0107. NPAPI by\u0142o pe\u0142ne luk bezpiecze\u0144stwa, zasobo\u017cerne i bardzo cz\u0119sto powodowa\u0142o zawieszanie przegl\u0105darek. Wraz z rozwojem \u201cnatywnych\u201d, webowych alternatyw, mniej wi\u0119cej od 2013 roku poszczeg\u00f3lni vendorzy powoli zacz\u0119li si\u0119 z tego standardu wycofywa\u0107. Oracle za\u015b ju\u017c w 2016 roku zapowiedzia\u0142o, <a href=\"https:\/\/www.oracle.com\/technetwork\/java\/javase\/migratingfromapplets-2872444.pdf\">\u017ce nie zamierza proponowa\u0107 alternatywy<\/a>.<\/p>\n<p>Tak wi\u0119c mniej wi\u0119cej za p\u00f3\u0142 roku ostatecznie po\u017cegnamy Applety. Ciekawe, jak wiele korporacyjnych \u015brodowisk nigdy nie b\u0119dzie mog\u0142o si\u0119 zaktualizowa\u0107 (zar\u00f3wno do nowej Javy, jak i aktualniejszych wersji przegl\u0105darek), gdy\u017c jaki\u015b np. system rozliczania delegacji nigdy nie zostanie przepisany z Appletu na co\u015b bardziej przystaj\u0105cego do roku 2021.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba68d376.png\" alt=\"\" \/><figcaption>Internet Explorer &#8211; pami\u0119tamy<\/figcaption><\/figure>\n<h3 id=\"-r-d-a-\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/openjdk.java.net\/jeps\/398\">JEP 398: Deprecate the Applet API for Removal<\/a><\/li>\n<li><a href=\"https:\/\/www.oracle.com\/technetwork\/java\/javase\/migratingfromapplets-2872444.pdf\">Migrating from Java Applets to plugin-free Java technologies<\/a><\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/NPAPI\">NPAPI na Wikipedii<\/a><\/li>\n<\/ul>\n<h2 id=\"2-za-to-valhalla-otrzymuje-nowe-preview\" data-num=2>2. &#8230;za to Valhalla otrzymuje nowe Preview<\/h2>\n<p>Oracle zabiera, Oracle r\u00f3wnie\u017c daje. W zesz\u0142ym tygodniu pojawi\u0142y si\u0119 aktualizacje dw\u00f3ch \u201cKandydat\u00f3w\u201d, zwi\u0105zanych z projektem Valhalla.<\/p>\n<p><strong><a href=\"https:\/\/openjdk.java.net\/jeps\/401\">JEP 401: Primitive Objects<\/a> <\/strong>przewija\u0142 si\u0119 ju\u017c w jednej <a href=\"https:\/\/blog.vived.io\/jvm-monday-21\/\">z naszych poprzednich edycji<\/a> (notabene, pierwszej, kt\u00f3ra opublikowana zosta\u0142a na tym blogu), wtedy jeszcze jako draft. W celu przypomnienia &#8211; obiekty prymitywne (u\u017cywanie t\u0142umaczenia \u201cprymitywne obiekty\u201d wydaje mi si\u0119 by\u0107 ciut niestosowne) to nowy spos\u00f3b deklarowania typ\u00f3w przez u\u017cytkownik\u00f3w j\u0119zyka. Celem jest tutaj mo\u017cliwo\u015b\u0107 stworzenia przez programist\u00f3w w\u0142asnych \u201cprymityw\u00f3w\u201d, czyli obiekt\u00f3w nieposiadaj\u0105cych nag\u0142\u00f3wka (o nag\u0142\u00f3wkach wi\u0119cej pisali\u015bmy tydzie\u0144 temu) oraz \u201cto\u017csamo\u015bci\u201d, trzymanych na stosie, a nie w heapie.<\/p>\n<p>Jednak tym co tak naprawd\u0119 ciekawe, jest <strong><a href=\"https:\/\/openjdk.java.net\/jeps\/402\">JEP 402: Unify the Basic Primitives with Objects<\/a><\/strong>. Podchodzi on do tematu z zupe\u0142nie drugiej strony. Ot\u00f3\u017c jego celem jest migracja wszystkich istniej\u0105cych ju\u017c typ\u00f3w prymitywnych (jak int, boolean czy char) do obiekt\u00f3w prymitywnych, sprawiaj\u0105c \u017ce te ostatnie staj\u0105 si\u0119 wsp\u00f3ln\u0105 abstrakcj\u0105 r\u00f3wnie\u017c dla tych bardzo podstawowych element\u00f3w j\u0119zyka. Sprawia to, \u017ce ostatecznie ka\u017cda warto\u015b\u0107 na JVMie b\u0119dzie mia\u0142a cechy obiektu.<\/p>\n<p>W proposalu jest kilka smaczk\u00f3w. Po pierwsze, dotychczas istniej\u0105ce wrappery, znane wszystkim programistom Javy od edycji pi\u0105tej, finalnie znikn\u0105 z j\u0119zyka. Pewnie wielu z Was w tym momencie osiwia\u0142a z przera\u017cenia na my\u015bl, jak bardzo uderzy to w kompatybilno\u015b\u0107 wsteczn\u0105, ale ju\u017c \u015bpiesz\u0119 z wyja\u015bnieniem. Ot\u00f3\u017c np. takie java.lang.Integer zostanie \u201creu\u017cyte\u201d jako klasa powi\u0105zana z obiektami prymitywnymi int. W ten spos\u00f3b zapewniona b\u0119dzie kompatybilno\u015b\u0107 wsteczna, przy wyeliminowaniu narzutu, kt\u00f3ry wi\u0105za\u0142 si\u0119 z autoboxingiem.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba9d4542.gif\" alt=\"\" \/><figcaption>JVM dokopuj\u0105ca si\u0119 do warto\u015bci w <code>java.lang.Integer<\/code><\/figcaption><\/figure>\n<p>Nie oznacza to jednak ko\u0144ca problem\u00f3w. Jak si\u0119 okazuje, \u015bwie\u017co wydana Java 16 wprowadza <a href=\"https:\/\/openjdk.java.net\/jeps\/390\">JEP 390: Warnings for Value-Based Classes<\/a>, kt\u00f3ry jako\u015b umkn\u0105\u0142 naszej uwadze. Dodaje on ostrze\u017cenia przy pr\u00f3bie u\u017cycia publicznego konstruktora klas wrappuj\u0105cych. Wed\u0142ug aktualnej wersji JEPa, te ostatecznie mog\u0105 znikn\u0105\u0107 z j\u0119zyka po wprowadzeniu Valhalli. Zmianom ulegnie r\u00f3wnie\u017c nieco spos\u00f3b zachowania refleksji, a tak\u017ce to jak typy prymitywne reprezentowane b\u0119d\u0105 w bytecodzie .<\/p>\n<p>Faza Preview oznacza, \u017ce ju\u017c nied\u0142ugo b\u0119dziemy mogli si\u0119 tymi nowymi mo\u017cliwo\u015bciami j\u0119zyka pobawi\u0107. Osobi\u015bcie spodziewam si\u0119 Javy 18, ale trzymam kciuki, \u017ce ju\u017c 17 udost\u0119pni \u201cpodgl\u0105d\u201d cho\u0107 jednego ze wspomnianych proposali. Niebezpo\u015brednio zapowiedziana zosta\u0142 r\u00f3wnie\u017c kolejny krok ca\u0142ego procesu &#8211; umo\u017cliwienie u\u017cywania obiekt\u00f3w prymitywnych jako generyk\u00f3w. Czekamy niecierpliwie.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0baae8132.png\" alt=\"\" \/><figcaption>Tonight, We dine in Valhalla!<\/figcaption><\/figure>\n<h3 id=\"-r-d-a--1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/openjdk.java.net\/jeps\/401\">JEP 401: Primitive Objects (Preview)<\/a><\/li>\n<li><a href=\"https:\/\/openjdk.java.net\/jeps\/402\">JEP 402: Unify the Basic Primitives with Objects (Preview)<\/a><\/li>\n<\/ul>\n<h2 id=\"3-co-pod-katem-bezpieczenstwa-zmienilo-sie-w-javie-16\" data-num=3>3. <a href=\"https:\/\/seanjmullan.org\/blog\/2021\/03\/18\/jdk16\">Co pod k\u0105tem bezpiecze\u0144stwa zmieni\u0142o si\u0119 w Javie 16 <\/a><\/h2>\n<p>Na sam koniec &#8211; kr\u00f3ciutko o bezpiecze\u0144stwie.<\/p>\n<p>Ka\u017cda nowa edycja Javy to tak\u017ce nowy artyku\u0142 od Seana Mullana, kt\u00f3ry \u00a0od kilku wyda\u0144 szczeg\u00f3\u0142owo opisuje wszelkie zmiany pod k\u0105tem security.<\/p>\n<p>Klasycznie nowa wersja<br \/>\nJavy to zmiana we wspieranych algorytmach i ponownie lista ta jest stosunkowo d\u0142uga. Dodana zosta\u0142a m.in. kompatybilno\u015b\u0107 z nowymi pozycjami z rodziny SHA-3. Opr\u00f3cz tego mo\u017cliwo\u015b\u0107 u\u017cycia TLS 1.0 i 1.1 domy\u015blnie zosta\u0142y wy\u0142\u0105czone i w celu ich u\u017cycia trzeba je celowo w\u0142\u0105czy\u0107 na poziomie maszyny wirtualnej. Dodano te\u017c mo\u017cliwo\u015b\u0107 podpisywania plik\u00f3w JAR za pomoc\u0105 <a href=\"https:\/\/openjdk.java.net\/jeps\/339\">wprowadzonej w Javie 15<\/a> nowej rodzinie algorytm\u00f3w eliptycznych.<\/p>\n<p>Nie b\u0119d\u0119 si\u0119 ju\u017c wi\u0119cej rozwodzi\u0142, Sean zrobi\u0142 to za mnie. Je\u015bli chcecie wi\u0119cej szczeg\u00f3\u0142\u00f3w, zapraszam do artyku\u0142u\u2026<\/p>\n<p>\u2026 crypto nerdy.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0bac8662a.png\" alt=\"\" \/><figcaption>TO O WAS<\/figcaption><\/figure>\n<h3 id=\"-r-d-a--2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/seanjmullan.org\/blog\/2021\/03\/18\/jdk16\">JDK 16 Security Enhancements<\/a><\/li>\n<li><a href=\"https:\/\/openjdk.java.net\/jeps\/339\">JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Tak jak w zesz\u0142ym tygodniu obiecali\u015bmy, dzisiaj mamy dla Was dwa (a w zasadzie trzy) ciekawe JEPy. Opr\u00f3cz tego, kr\u00f3tki przegl\u0105d updat\u00f3w security w nowej Javie.<\/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-10163","post","type-post","status-publish","format-standard","hentry","category-jvm-pl"],"acf":{"weekly_summary":true,"estimated_reading_time":"5"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JVM Tuesday vol. 30 - 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-30\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 30 - Vived\" \/>\n<meta property=\"og:description\" content=\"Tak jak w zesz\u0142ym tygodniu obiecali\u015bmy, dzisiaj mamy dla Was dwa (a w zasadzie trzy) ciekawe JEPy. Opr\u00f3cz tego, kr\u00f3tki przegl\u0105d updat\u00f3w security w nowej Javie.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-23T08:35:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba58c930.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-30\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 30\",\"datePublished\":\"2021-03-23T08:35:53+00:00\",\"dateModified\":\"2022-09-19T11:10:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/\"},\"wordCount\":1023,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba58c930.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/\",\"name\":\"JVM Tuesday vol. 30 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba58c930.png\",\"datePublished\":\"2021-03-23T08:35:53+00:00\",\"dateModified\":\"2022-09-19T11:10:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba58c930.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba58c930.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 30\"}]},{\"@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. 30 - 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-30\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 30 - Vived","og_description":"Tak jak w zesz\u0142ym tygodniu obiecali\u015bmy, dzisiaj mamy dla Was dwa (a w zasadzie trzy) ciekawe JEPy. Opr\u00f3cz tego, kr\u00f3tki przegl\u0105d updat\u00f3w security w nowej Javie.","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/","og_site_name":"Vived","article_published_time":"2021-03-23T08:35:53+00:00","article_modified_time":"2022-09-19T11:10:55+00:00","og_image":[{"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba58c930.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-30\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 30","datePublished":"2021-03-23T08:35:53+00:00","dateModified":"2022-09-19T11:10:55+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/"},"wordCount":1023,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba58c930.png","articleSection":["JVM"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/","name":"JVM Tuesday vol. 30 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba58c930.png","datePublished":"2021-03-23T08:35:53+00:00","dateModified":"2022-09-19T11:10:55+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba58c930.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba58c930.png"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-30\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 30"}]},{"@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-ywot-applet-api-zbli-a-si-ku-ko-cowi-\">1. \u017bywot Applet API zbli\u017ca si\u0119 ku ko\u0144cowi\u2026<\/h2>\nZacznijmy od nowiny, kt\u00f3ra pewnie wielu zaciekawi, cho\u0107 podejrzewam, \u017ce z pocz\u0105tkiem roku 2021 raczej nie wywr\u00f3ci nikomu pracy. Ot\u00f3\u017c wraz z Jav\u0105 17 i <a href=\"https:\/\/openjdk.java.net\/jeps\/398\">JEP-398<\/a>, Applety oficjalnie znikaj\u0105 z JDK.\n\nNie jest to prawdopodobnie dla nikogo szczeg\u00f3lna niespodzianka, gdy\u017c \u201cdeprekacja\u201d Applet\u00f3w w JDK nast\u0105pi\u0142a ju\u017c par\u0119 lat temu, przy okazji Javy 9. Jednak tak naprawd\u0119 prawdziwym \u201cpoca\u0142unkiem \u015bmierci\u201d dla tego sposobu dystrybucji Javowych aplikacji, by\u0142y jednak dzia\u0142ania podmiot\u00f3w zewn\u0119trznych - przegl\u0105darek. \u017beby zrozumie\u0107 dlaczego, musimy przyjrze\u0107 si\u0119 kontekstowi, w kt\u00f3rym applety powstawa\u0142y.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba58c930.png\" alt=\"\" \/><\/figure>\nW roku 1995 przegl\u0105darka Netscape Navigator by\u0142a domy\u015blnym wyborem dla ka\u017cdego bardziej \u015bwiadomego u\u017cytkownika internetu. By\u0142y to czasy zanim internet na dobr\u0105 spraw\u0119 zacz\u0105\u0142 si\u0119 standaryzowa\u0107. Tak\u017ce tw\u00f3rcy przegl\u0105darek mogli sobie pozwoli\u0107 na nieco bardziej szalone pomys\u0142y ni\u017c w dzisiejszym \u015bwiecie - jak np. znienawidzony przez wszystkich ActiveX, znany userom Internet Explorera. Jednak i Navigator m\u00f3g\u0142 poszczyci\u0107 si\u0119 \u201cw\u0142asno\u015bciowymi\u201d rozwi\u0105zaniami \u0142\u0105cz\u0105cymi \u015bwiat przegl\u0105darek i aplikacji desktopowych. Najwa\u017cniejszym z nich by\u0142 <a href=\"https:\/\/en.wikipedia.org\/wiki\/NPAPI\">Netscape Plugin Application Programming Interface<\/a> - w skr\u00f3cie NPAPI. By\u0142 to pierwszy popularny standard pisania wtyczek do przegl\u0105darek i to w\u0142a\u015bnie na nim oparli si\u0119 tw\u00f3rcy Javy, daj\u0105c mo\u017cliwo\u015b\u0107 uruchamiania JVMowych aplikacji \u201czaembedowanych\u201d w przegl\u0105darce.\n\nMimo \u015bmierci Netscape w 2003, standard NPAPI nie umar\u0142. Zosta\u0142 on bowiem zaadaptowany przez Firefox, Chrome czy Safari. Jednak z czasem jego dobra passa zacz\u0119\u0142a przygasa\u0107. NPAPI by\u0142o pe\u0142ne luk bezpiecze\u0144stwa, zasobo\u017cerne i bardzo cz\u0119sto powodowa\u0142o zawieszanie przegl\u0105darek. Wraz z rozwojem \u201cnatywnych\u201d, webowych alternatyw, mniej wi\u0119cej od 2013 roku poszczeg\u00f3lni vendorzy powoli zacz\u0119li si\u0119 z tego standardu wycofywa\u0107. Oracle za\u015b ju\u017c w 2016 roku zapowiedzia\u0142o, <a href=\"https:\/\/www.oracle.com\/technetwork\/java\/javase\/migratingfromapplets-2872444.pdf\">\u017ce nie zamierza proponowa\u0107 alternatywy<\/a>.\n\nTak wi\u0119c mniej wi\u0119cej za p\u00f3\u0142 roku ostatecznie po\u017cegnamy Applety. Ciekawe, jak wiele korporacyjnych \u015brodowisk nigdy nie b\u0119dzie mog\u0142o si\u0119 zaktualizowa\u0107 (zar\u00f3wno do nowej Javy, jak i aktualniejszych wersji przegl\u0105darek), gdy\u017c jaki\u015b np. system rozliczania delegacji nigdy nie zostanie przepisany z Appletu na co\u015b bardziej przystaj\u0105cego do roku 2021.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba68d376.png\" alt=\"\" \/>\n<figcaption>Internet Explorer - pami\u0119tamy<\/figcaption><\/figure>\n<h3 id=\"-r-d-a-\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/398\">JEP 398: Deprecate the Applet API for Removal<\/a><\/li>\n \t<li><a href=\"https:\/\/www.oracle.com\/technetwork\/java\/javase\/migratingfromapplets-2872444.pdf\">Migrating from Java Applets to plugin-free Java technologies<\/a><\/li>\n \t<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/NPAPI\">NPAPI na Wikipedii<\/a><\/li>\n<\/ul>\n<h2 id=\"2-za-to-valhalla-otrzymuje-nowe-preview-\">2. ...za to Valhalla otrzymuje nowe Preview<\/h2>\nOracle zabiera, Oracle r\u00f3wnie\u017c daje. W zesz\u0142ym tygodniu pojawi\u0142y si\u0119 aktualizacje dw\u00f3ch \u201cKandydat\u00f3w\u201d, zwi\u0105zanych z projektem Valhalla.\n\n<strong><a href=\"https:\/\/openjdk.java.net\/jeps\/401\">JEP 401: Primitive Objects<\/a> <\/strong>przewija\u0142 si\u0119 ju\u017c w jednej <a href=\"https:\/\/blog.vived.io\/jvm-monday-21\/\">z naszych poprzednich edycji<\/a> (notabene, pierwszej, kt\u00f3ra opublikowana zosta\u0142a na tym blogu), wtedy jeszcze jako draft. W celu przypomnienia - obiekty prymitywne (u\u017cywanie t\u0142umaczenia \u201cprymitywne obiekty\u201d wydaje mi si\u0119 by\u0107 ciut niestosowne) to nowy spos\u00f3b deklarowania typ\u00f3w przez u\u017cytkownik\u00f3w j\u0119zyka. Celem jest tutaj mo\u017cliwo\u015b\u0107 stworzenia przez programist\u00f3w w\u0142asnych \u201cprymityw\u00f3w\u201d, czyli obiekt\u00f3w nieposiadaj\u0105cych nag\u0142\u00f3wka (o nag\u0142\u00f3wkach wi\u0119cej pisali\u015bmy tydzie\u0144 temu) oraz \u201cto\u017csamo\u015bci\u201d, trzymanych na stosie, a nie w heapie.\n\nJednak tym co tak naprawd\u0119 ciekawe, jest <strong><a href=\"https:\/\/openjdk.java.net\/jeps\/402\">JEP 402: Unify the Basic Primitives with Objects<\/a><\/strong>. Podchodzi on do tematu z zupe\u0142nie drugiej strony. Ot\u00f3\u017c jego celem jest migracja wszystkich istniej\u0105cych ju\u017c typ\u00f3w prymitywnych (jak int, boolean czy char) do obiekt\u00f3w prymitywnych, sprawiaj\u0105c \u017ce te ostatnie staj\u0105 si\u0119 wsp\u00f3ln\u0105 abstrakcj\u0105 r\u00f3wnie\u017c dla tych bardzo podstawowych element\u00f3w j\u0119zyka. Sprawia to, \u017ce ostatecznie ka\u017cda warto\u015b\u0107 na JVMie b\u0119dzie mia\u0142a cechy obiektu.\n\nW proposalu jest kilka smaczk\u00f3w. Po pierwsze, dotychczas istniej\u0105ce wrappery, znane wszystkim programistom Javy od edycji pi\u0105tej, finalnie znikn\u0105 z j\u0119zyka. Pewnie wielu z Was w tym momencie osiwia\u0142a z przera\u017cenia na my\u015bl, jak bardzo uderzy to w kompatybilno\u015b\u0107 wsteczn\u0105, ale ju\u017c \u015bpiesz\u0119 z wyja\u015bnieniem. Ot\u00f3\u017c np. takie java.lang.Integer zostanie \u201creu\u017cyte\u201d jako klasa powi\u0105zana z obiektami prymitywnymi int. W ten spos\u00f3b zapewniona b\u0119dzie kompatybilno\u015b\u0107 wsteczna, przy wyeliminowaniu narzutu, kt\u00f3ry wi\u0105za\u0142 si\u0119 z autoboxingiem.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba9d4542.gif\" alt=\"\" \/>\n\n<figcaption>JVM dokopuj\u0105ca si\u0119 do warto\u015bci w <code>java.lang.Integer<\/code><\/figcaption><\/figure>\nNie oznacza to jednak ko\u0144ca problem\u00f3w. Jak si\u0119 okazuje, \u015bwie\u017co wydana Java 16 wprowadza <a href=\"https:\/\/openjdk.java.net\/jeps\/390\">JEP 390: Warnings for Value-Based Classes<\/a>, kt\u00f3ry jako\u015b umkn\u0105\u0142 naszej uwadze. Dodaje on ostrze\u017cenia przy pr\u00f3bie u\u017cycia publicznego konstruktora klas wrappuj\u0105cych. Wed\u0142ug aktualnej wersji JEPa, te ostatecznie mog\u0105 znikn\u0105\u0107 z j\u0119zyka po wprowadzeniu Valhalli. Zmianom ulegnie r\u00f3wnie\u017c nieco spos\u00f3b zachowania refleksji, a tak\u017ce to jak typy prymitywne reprezentowane b\u0119d\u0105 w bytecodzie .\n\nFaza Preview oznacza, \u017ce ju\u017c nied\u0142ugo b\u0119dziemy mogli si\u0119 tymi nowymi mo\u017cliwo\u015bciami j\u0119zyka pobawi\u0107. Osobi\u015bcie spodziewam si\u0119 Javy 18, ale trzymam kciuki, \u017ce ju\u017c 17 udost\u0119pni \u201cpodgl\u0105d\u201d cho\u0107 jednego ze wspomnianych proposali. Niebezpo\u015brednio zapowiedziana zosta\u0142 r\u00f3wnie\u017c kolejny krok ca\u0142ego procesu - umo\u017cliwienie u\u017cywania obiekt\u00f3w prymitywnych jako generyk\u00f3w. Czekamy niecierpliwie.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0baae8132.png\" alt=\"\" \/>\n\n<figcaption>Tonight, We dine in Valhalla!<\/figcaption><\/figure>\n<h3 id=\"-r-d-a--1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/401\">JEP 401: Primitive Objects (Preview)<\/a><\/li>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/402\">JEP 402: Unify the Basic Primitives with Objects (Preview)<\/a><\/li>\n<\/ul>\n<h2 id=\"3-co-pod-k-tem-bezpiecze-stwa-zmieni-o-si-w-javie-16-\">3. <a href=\"https:\/\/seanjmullan.org\/blog\/2021\/03\/18\/jdk16\">Co pod k\u0105tem bezpiecze\u0144stwa zmieni\u0142o si\u0119 w Javie 16 <\/a><\/h2>\nNa sam koniec - kr\u00f3ciutko o bezpiecze\u0144stwie.\n\nKa\u017cda nowa edycja Javy to tak\u017ce nowy artyku\u0142 od Seana Mullana, kt\u00f3ry \u00a0od kilku wyda\u0144 szczeg\u00f3\u0142owo opisuje wszelkie zmiany pod k\u0105tem security.\n\nKlasycznie nowa wersja\nJavy to zmiana we wspieranych algorytmach i ponownie lista ta jest stosunkowo d\u0142uga. Dodana zosta\u0142a m.in. kompatybilno\u015b\u0107 z nowymi pozycjami z rodziny SHA-3. Opr\u00f3cz tego mo\u017cliwo\u015b\u0107 u\u017cycia TLS 1.0 i 1.1 domy\u015blnie zosta\u0142y wy\u0142\u0105czone i w celu ich u\u017cycia trzeba je celowo w\u0142\u0105czy\u0107 na poziomie maszyny wirtualnej. Dodano te\u017c mo\u017cliwo\u015b\u0107 podpisywania plik\u00f3w JAR za pomoc\u0105 <a href=\"https:\/\/openjdk.java.net\/jeps\/339\">wprowadzonej w Javie 15<\/a> nowej rodzinie algorytm\u00f3w eliptycznych.\n\nNie b\u0119d\u0119 si\u0119 ju\u017c wi\u0119cej rozwodzi\u0142, Sean zrobi\u0142 to za mnie. Je\u015bli chcecie wi\u0119cej szczeg\u00f3\u0142\u00f3w, zapraszam do artyku\u0142u\u2026\n\n\u2026 crypto nerdy.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0bac8662a.png\" alt=\"\" \/>\n\n<figcaption>TO O WAS<\/figcaption><\/figure>\n<h3 id=\"-r-d-a--2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/seanjmullan.org\/blog\/2021\/03\/18\/jdk16\">JDK 16 Security Enhancements<\/a><\/li>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/339\">JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)<\/a><\/li>\n<\/ul>","innerContent":["<h2 id=\"1-ywot-applet-api-zbli-a-si-ku-ko-cowi-\">1. \u017bywot Applet API zbli\u017ca si\u0119 ku ko\u0144cowi\u2026<\/h2>\nZacznijmy od nowiny, kt\u00f3ra pewnie wielu zaciekawi, cho\u0107 podejrzewam, \u017ce z pocz\u0105tkiem roku 2021 raczej nie wywr\u00f3ci nikomu pracy. Ot\u00f3\u017c wraz z Jav\u0105 17 i <a href=\"https:\/\/openjdk.java.net\/jeps\/398\">JEP-398<\/a>, Applety oficjalnie znikaj\u0105 z JDK.\n\nNie jest to prawdopodobnie dla nikogo szczeg\u00f3lna niespodzianka, gdy\u017c \u201cdeprekacja\u201d Applet\u00f3w w JDK nast\u0105pi\u0142a ju\u017c par\u0119 lat temu, przy okazji Javy 9. Jednak tak naprawd\u0119 prawdziwym \u201cpoca\u0142unkiem \u015bmierci\u201d dla tego sposobu dystrybucji Javowych aplikacji, by\u0142y jednak dzia\u0142ania podmiot\u00f3w zewn\u0119trznych - przegl\u0105darek. \u017beby zrozumie\u0107 dlaczego, musimy przyjrze\u0107 si\u0119 kontekstowi, w kt\u00f3rym applety powstawa\u0142y.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba58c930.png\" alt=\"\" \/><\/figure>\nW roku 1995 przegl\u0105darka Netscape Navigator by\u0142a domy\u015blnym wyborem dla ka\u017cdego bardziej \u015bwiadomego u\u017cytkownika internetu. By\u0142y to czasy zanim internet na dobr\u0105 spraw\u0119 zacz\u0105\u0142 si\u0119 standaryzowa\u0107. Tak\u017ce tw\u00f3rcy przegl\u0105darek mogli sobie pozwoli\u0107 na nieco bardziej szalone pomys\u0142y ni\u017c w dzisiejszym \u015bwiecie - jak np. znienawidzony przez wszystkich ActiveX, znany userom Internet Explorera. Jednak i Navigator m\u00f3g\u0142 poszczyci\u0107 si\u0119 \u201cw\u0142asno\u015bciowymi\u201d rozwi\u0105zaniami \u0142\u0105cz\u0105cymi \u015bwiat przegl\u0105darek i aplikacji desktopowych. Najwa\u017cniejszym z nich by\u0142 <a href=\"https:\/\/en.wikipedia.org\/wiki\/NPAPI\">Netscape Plugin Application Programming Interface<\/a> - w skr\u00f3cie NPAPI. By\u0142 to pierwszy popularny standard pisania wtyczek do przegl\u0105darek i to w\u0142a\u015bnie na nim oparli si\u0119 tw\u00f3rcy Javy, daj\u0105c mo\u017cliwo\u015b\u0107 uruchamiania JVMowych aplikacji \u201czaembedowanych\u201d w przegl\u0105darce.\n\nMimo \u015bmierci Netscape w 2003, standard NPAPI nie umar\u0142. Zosta\u0142 on bowiem zaadaptowany przez Firefox, Chrome czy Safari. Jednak z czasem jego dobra passa zacz\u0119\u0142a przygasa\u0107. NPAPI by\u0142o pe\u0142ne luk bezpiecze\u0144stwa, zasobo\u017cerne i bardzo cz\u0119sto powodowa\u0142o zawieszanie przegl\u0105darek. Wraz z rozwojem \u201cnatywnych\u201d, webowych alternatyw, mniej wi\u0119cej od 2013 roku poszczeg\u00f3lni vendorzy powoli zacz\u0119li si\u0119 z tego standardu wycofywa\u0107. Oracle za\u015b ju\u017c w 2016 roku zapowiedzia\u0142o, <a href=\"https:\/\/www.oracle.com\/technetwork\/java\/javase\/migratingfromapplets-2872444.pdf\">\u017ce nie zamierza proponowa\u0107 alternatywy<\/a>.\n\nTak wi\u0119c mniej wi\u0119cej za p\u00f3\u0142 roku ostatecznie po\u017cegnamy Applety. Ciekawe, jak wiele korporacyjnych \u015brodowisk nigdy nie b\u0119dzie mog\u0142o si\u0119 zaktualizowa\u0107 (zar\u00f3wno do nowej Javy, jak i aktualniejszych wersji przegl\u0105darek), gdy\u017c jaki\u015b np. system rozliczania delegacji nigdy nie zostanie przepisany z Appletu na co\u015b bardziej przystaj\u0105cego do roku 2021.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba68d376.png\" alt=\"\" \/>\n<figcaption>Internet Explorer - pami\u0119tamy<\/figcaption><\/figure>\n<h3 id=\"-r-d-a-\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/398\">JEP 398: Deprecate the Applet API for Removal<\/a><\/li>\n \t<li><a href=\"https:\/\/www.oracle.com\/technetwork\/java\/javase\/migratingfromapplets-2872444.pdf\">Migrating from Java Applets to plugin-free Java technologies<\/a><\/li>\n \t<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/NPAPI\">NPAPI na Wikipedii<\/a><\/li>\n<\/ul>\n<h2 id=\"2-za-to-valhalla-otrzymuje-nowe-preview-\">2. ...za to Valhalla otrzymuje nowe Preview<\/h2>\nOracle zabiera, Oracle r\u00f3wnie\u017c daje. W zesz\u0142ym tygodniu pojawi\u0142y si\u0119 aktualizacje dw\u00f3ch \u201cKandydat\u00f3w\u201d, zwi\u0105zanych z projektem Valhalla.\n\n<strong><a href=\"https:\/\/openjdk.java.net\/jeps\/401\">JEP 401: Primitive Objects<\/a> <\/strong>przewija\u0142 si\u0119 ju\u017c w jednej <a href=\"https:\/\/blog.vived.io\/jvm-monday-21\/\">z naszych poprzednich edycji<\/a> (notabene, pierwszej, kt\u00f3ra opublikowana zosta\u0142a na tym blogu), wtedy jeszcze jako draft. W celu przypomnienia - obiekty prymitywne (u\u017cywanie t\u0142umaczenia \u201cprymitywne obiekty\u201d wydaje mi si\u0119 by\u0107 ciut niestosowne) to nowy spos\u00f3b deklarowania typ\u00f3w przez u\u017cytkownik\u00f3w j\u0119zyka. Celem jest tutaj mo\u017cliwo\u015b\u0107 stworzenia przez programist\u00f3w w\u0142asnych \u201cprymityw\u00f3w\u201d, czyli obiekt\u00f3w nieposiadaj\u0105cych nag\u0142\u00f3wka (o nag\u0142\u00f3wkach wi\u0119cej pisali\u015bmy tydzie\u0144 temu) oraz \u201cto\u017csamo\u015bci\u201d, trzymanych na stosie, a nie w heapie.\n\nJednak tym co tak naprawd\u0119 ciekawe, jest <strong><a href=\"https:\/\/openjdk.java.net\/jeps\/402\">JEP 402: Unify the Basic Primitives with Objects<\/a><\/strong>. Podchodzi on do tematu z zupe\u0142nie drugiej strony. Ot\u00f3\u017c jego celem jest migracja wszystkich istniej\u0105cych ju\u017c typ\u00f3w prymitywnych (jak int, boolean czy char) do obiekt\u00f3w prymitywnych, sprawiaj\u0105c \u017ce te ostatnie staj\u0105 si\u0119 wsp\u00f3ln\u0105 abstrakcj\u0105 r\u00f3wnie\u017c dla tych bardzo podstawowych element\u00f3w j\u0119zyka. Sprawia to, \u017ce ostatecznie ka\u017cda warto\u015b\u0107 na JVMie b\u0119dzie mia\u0142a cechy obiektu.\n\nW proposalu jest kilka smaczk\u00f3w. Po pierwsze, dotychczas istniej\u0105ce wrappery, znane wszystkim programistom Javy od edycji pi\u0105tej, finalnie znikn\u0105 z j\u0119zyka. Pewnie wielu z Was w tym momencie osiwia\u0142a z przera\u017cenia na my\u015bl, jak bardzo uderzy to w kompatybilno\u015b\u0107 wsteczn\u0105, ale ju\u017c \u015bpiesz\u0119 z wyja\u015bnieniem. Ot\u00f3\u017c np. takie java.lang.Integer zostanie \u201creu\u017cyte\u201d jako klasa powi\u0105zana z obiektami prymitywnymi int. W ten spos\u00f3b zapewniona b\u0119dzie kompatybilno\u015b\u0107 wsteczna, przy wyeliminowaniu narzutu, kt\u00f3ry wi\u0105za\u0142 si\u0119 z autoboxingiem.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0ba9d4542.gif\" alt=\"\" \/>\n\n<figcaption>JVM dokopuj\u0105ca si\u0119 do warto\u015bci w <code>java.lang.Integer<\/code><\/figcaption><\/figure>\nNie oznacza to jednak ko\u0144ca problem\u00f3w. Jak si\u0119 okazuje, \u015bwie\u017co wydana Java 16 wprowadza <a href=\"https:\/\/openjdk.java.net\/jeps\/390\">JEP 390: Warnings for Value-Based Classes<\/a>, kt\u00f3ry jako\u015b umkn\u0105\u0142 naszej uwadze. Dodaje on ostrze\u017cenia przy pr\u00f3bie u\u017cycia publicznego konstruktora klas wrappuj\u0105cych. Wed\u0142ug aktualnej wersji JEPa, te ostatecznie mog\u0105 znikn\u0105\u0107 z j\u0119zyka po wprowadzeniu Valhalli. Zmianom ulegnie r\u00f3wnie\u017c nieco spos\u00f3b zachowania refleksji, a tak\u017ce to jak typy prymitywne reprezentowane b\u0119d\u0105 w bytecodzie .\n\nFaza Preview oznacza, \u017ce ju\u017c nied\u0142ugo b\u0119dziemy mogli si\u0119 tymi nowymi mo\u017cliwo\u015bciami j\u0119zyka pobawi\u0107. Osobi\u015bcie spodziewam si\u0119 Javy 18, ale trzymam kciuki, \u017ce ju\u017c 17 udost\u0119pni \u201cpodgl\u0105d\u201d cho\u0107 jednego ze wspomnianych proposali. Niebezpo\u015brednio zapowiedziana zosta\u0142 r\u00f3wnie\u017c kolejny krok ca\u0142ego procesu - umo\u017cliwienie u\u017cywania obiekt\u00f3w prymitywnych jako generyk\u00f3w. Czekamy niecierpliwie.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0baae8132.png\" alt=\"\" \/>\n\n<figcaption>Tonight, We dine in Valhalla!<\/figcaption><\/figure>\n<h3 id=\"-r-d-a--1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/401\">JEP 401: Primitive Objects (Preview)<\/a><\/li>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/402\">JEP 402: Unify the Basic Primitives with Objects (Preview)<\/a><\/li>\n<\/ul>\n<h2 id=\"3-co-pod-k-tem-bezpiecze-stwa-zmieni-o-si-w-javie-16-\">3. <a href=\"https:\/\/seanjmullan.org\/blog\/2021\/03\/18\/jdk16\">Co pod k\u0105tem bezpiecze\u0144stwa zmieni\u0142o si\u0119 w Javie 16 <\/a><\/h2>\nNa sam koniec - kr\u00f3ciutko o bezpiecze\u0144stwie.\n\nKa\u017cda nowa edycja Javy to tak\u017ce nowy artyku\u0142 od Seana Mullana, kt\u00f3ry \u00a0od kilku wyda\u0144 szczeg\u00f3\u0142owo opisuje wszelkie zmiany pod k\u0105tem security.\n\nKlasycznie nowa wersja\nJavy to zmiana we wspieranych algorytmach i ponownie lista ta jest stosunkowo d\u0142uga. Dodana zosta\u0142a m.in. kompatybilno\u015b\u0107 z nowymi pozycjami z rodziny SHA-3. Opr\u00f3cz tego mo\u017cliwo\u015b\u0107 u\u017cycia TLS 1.0 i 1.1 domy\u015blnie zosta\u0142y wy\u0142\u0105czone i w celu ich u\u017cycia trzeba je celowo w\u0142\u0105czy\u0107 na poziomie maszyny wirtualnej. Dodano te\u017c mo\u017cliwo\u015b\u0107 podpisywania plik\u00f3w JAR za pomoc\u0105 <a href=\"https:\/\/openjdk.java.net\/jeps\/339\">wprowadzonej w Javie 15<\/a> nowej rodzinie algorytm\u00f3w eliptycznych.\n\nNie b\u0119d\u0119 si\u0119 ju\u017c wi\u0119cej rozwodzi\u0142, Sean zrobi\u0142 to za mnie. Je\u015bli chcecie wi\u0119cej szczeg\u00f3\u0142\u00f3w, zapraszam do artyku\u0142u\u2026\n\n\u2026 crypto nerdy.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0bac8662a.png\" alt=\"\" \/>\n\n<figcaption>TO O WAS<\/figcaption><\/figure>\n<h3 id=\"-r-d-a--2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/seanjmullan.org\/blog\/2021\/03\/18\/jdk16\">JDK 16 Security Enhancements<\/a><\/li>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/339\">JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)<\/a><\/li>\n<\/ul>"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10163","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=10163"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10163\/revisions"}],"predecessor-version":[{"id":10581,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10163\/revisions\/10581"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}