{"id":10177,"date":"2021-02-23T11:05:47","date_gmt":"2021-02-23T10:05:47","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-26\/"},"modified":"2022-09-19T13:10:56","modified_gmt":"2022-09-19T11:10:56","slug":"jvm-tuesday-vol-26","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/","title":{"rendered":"JVM Tuesday vol. 26"},"content":{"rendered":"<h2 id=\"1-jep-draft-pattern-matching-for-switch\" data-num=1>1. <a href=\"https:\/\/openjdk.java.net\/jeps\/8213076\">JEP draft: Pattern Matching for switch<\/a> \u2615\ufe0f<\/h2>\n<p>Klasycznie ju\u017c zaczynamy od nowego JEPa (co staje si\u0119 nasz\u0105 ma\u0142\u0105 tradycj\u0105). Tym razem jest to co\u015b, na co wszyscy u\u017cytkownicy Javy czekali bardzo d\u0142ugo\u2026 przynajmniej od Javy 8 (kt\u00f3ra, jak sprawdzi\u0142em swoj\u0105 premier\u0119 mia\u0142a 7 lat temu).<\/p>\n<p>Czas wspomnie\u0144 starego pryka. JDK 8 by\u0142o ostatnim \u201ctakim\u201d wydaniem. O ile daleki jestem od twierdzenia, \u017ce kolejne edycje nie wnosi\u0142y niczego nowego do j\u0119zyka (gwoli sprawiedliwo\u015bci, Java 9 z punktu widzenia ewolucji j\u0119zyka by\u0142a znacznie istotniejsza), to jednak zmiany z \u00f3semki najmocniej wp\u0142yn\u0119\u0142y na to, jak na co dzie\u0144 piszemy w tym j\u0119zyku. To w\u0142a\u015bnie ona sta\u0142a si\u0119 \u201cgateway drugiem\u201d do programowania funkcyjnego dla wielu ludzi dzi\u0119ki lambdom i strumieniom. Wed\u0142ug wielu by\u0142a te\u017c ostatecznym ciosem dla Scali.<\/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_610d0d35566e7.gif\" alt=\"\" \/><figcaption>Bardzo podobne wnioski pojawia\u0142y si\u0119 te\u017c przy premierze Kotlina. Flagowy j\u0119zyk Lightbendu nieszczeg\u00f3lnie si\u0119 przej\u0105\u0142.\u00a0<\/figcaption><\/figure>\n<p>Dobrze pami\u0119tam te do\u015b\u0107 zagorza\u0142e dyskusje i to, w jaki spos\u00f3b zwolennicy Scali bronili swojego j\u0119zyka. Jednym z najcz\u0119\u015bciej wywo\u0142ywanych argument\u00f3w by\u0142 fakt wsparcia Scali dla Pattern Matchingu. Nie da si\u0119 ukry\u0107, \u017ce brak tego fragmentu syntaxu zawsze sprawia\u0142, \u017ce idiomatyczne programowanie funkcyjne w Javie by\u0142o dosy\u0107\u2026 ko\u015blawe, robi\u0105c miejsce dla bibliotek w stylu niszowego (acz w swojej niszy niezwykle popularnego) Vavra.<\/p>\n<p>W mi\u0119dzyczasie prace trwa\u0142y, <a href=\"https:\/\/cr.openjdk.java.net\/~briangoetz\/amber\/pattern-match.html\">Brian Goetz i autor opisywanego proposal<\/a>a, Gavin Bierman<a href=\"https:\/\/cr.openjdk.java.net\/~briangoetz\/amber\/pattern-match.html\"> prezentowali \u015bmia\u0142e plany<\/a>, a zal\u0105\u017cki nowych mo\u017cliwo\u015bci pojawia\u0142y si\u0119 w kolejnych edycjach JDK. Pierwsz\u0105 jask\u00f3\u0142k\u0105 by\u0142 <a href=\"https:\/\/www.baeldung.com\/java-pattern-matching-instanceof\">Pattern Matching for instanceof<\/a> aka <a href=\"https:\/\/openjdk.java.net\/jeps\/305\">JEP 305<\/a>, kt\u00f3ry mia\u0142 swoj\u0105 premier\u0119 wraz z Jav\u0105 14 i zapewnia\u0142 co\u015b, co mo\u017cna okre\u015bli\u0107 jako automatyczne rzutowanie zmiennych:<\/p>\n<pre><code>if (animal instanceof Cat cat) {\n    cat.meow();\n} else if(animal instanceof Dog dog) {\n    dog.woof();\n}<\/code><\/pre>\n<p>W dalszym ci\u0105gu jednak by\u0142a to namiastka tego, co przynosi\u0142y ze sob\u0105 \u201cprawdziwe\u201d j\u0119zyki funkcyjne.<\/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_610d0d3594ded.gif\" alt=\"\" \/><\/figure>\n<p>To nie by\u0142o ostatnie s\u0142owo, jakie powiedzieli architekci Javy. W zesz\u0142ym tygodniu opublikowany zosta\u0142 draft JEPa, kt\u00f3ry przenosi \u201cwy\u0142uskiwanie\u201d znane z instanceofa do switcha.<\/p>\n<pre><code>String formatted;\nObject obj = new Long(12L);\nswitch (obj) {\n    case Integer i: formatted = String.format(&quot;int %d&quot;, i); break;\n    case Byte b:    formatted = String.format(&quot;byte %d&quot;, b); break;\n    case Long l:    formatted = String.format(&quot;long %d&quot;, l); break;\n    case Double d:  formatted = String.format(&quot;double %f&quot;, d); break;\n    case String s:  formatted = String.format(&quot;String %s&quot;, s); break\n    default:        formatted = obj.toString();\n}<\/code><\/pre>\n<p>Sam Proposal jest bardzo d\u0142ugi i niezwykle interesuj\u0105cy, gdy\u017c pozycjonuje siebie samego jako krok do prawdziwej rewolucji \u2013 pattern matchingu, opartego na prawdziwych wzorcach:<\/p>\n<pre><code class=\"language-java \">switch (s) {\n   case &quot;Hello world&quot; -&gt;\n        System.out.println(&quot;Hello back&quot;);\n   case String s -&gt;\n        System.out.println(&quot;Nothing?&quot;);\n}<\/code><\/pre>\n<p>na kt\u00f3ry przyjdzie nam jednak chwil\u0119 poczeka\u0107.<\/p>\n<p>I tak te\u017c ma\u0142ymi kroczkami zasypywana jest dziura mi\u0119dzy Scal\u0105 a Jav\u0105. Aczkolwiek premiera Scali 3.0 (ju\u017c nied\u0142ugo, Release Candidate pojawi\u0142 si\u0119 w zesz\u0142ym tygodniu) znowu j\u0105 poszerzy \u2013 ale nie ubiegajmy fakt\u00f3w, musz\u0119 mie\u0107, o czym pisa\u0107 w nast\u0119pnych edycjach .<\/p>\n<h3 id=\"-r-d-a-\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/openjdk.java.net\/jeps\/305\">JEP draft: Pattern Matching for switch (Preview)<\/a><\/li>\n<li><a href=\"https:\/\/openjdk.java.net\/jeps\/305\">JEP 305: Pattern Matching for instanceof<\/a><\/li>\n<li><a href=\"https:\/\/cr.openjdk.java.net\/~briangoetz\/amber\/pattern-match.html\">Pattern Matching for Java<\/a><\/li>\n<\/ul>\n<h2 id=\"2-wyniki-ankiety-dotyczacej-adopcji-jakarty-ee\" data-num=2><a href=\"https:\/\/arjan-tijms.omnifaces.org\/2021\/02\/jakarta-ee-survey-20202021-results.html\">2. Wyniki ankiety dotycz\u0105cej adopcji Jakarty EE <\/a><\/h2>\n<p>Mam czasem wra\u017cenie, \u017ce nasze cotygodniowe przegl\u0105dy s\u0105 jedynym miejscem w Polskim internecie, w kt\u00f3rym da si\u0119 przeczyta\u0107 jeszcze o Javie (tfu Jakarcie) EE, a przynajmniej pojawiaj\u0105cych si\u0119 w niej nowo\u015bciach. Mimo mojej ca\u0142ej sympatii do \u015brodowiska, wydaje si\u0119 ono traci\u0107 swoich zwolennik\u00f3w. Nie pomagaj\u0105 ani dobre frameworki, ani Microprofile (Enterprise Edition wydaje si\u0119 stawa\u0107 coraz bardziej niszowym rozwi\u0105zaniem).<\/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_610d0d35f337a.gif\" alt=\"\" \/><figcaption>Ja i koledzy czekamy na premier\u0119 Jakarty EE 10.<span class=\"-mobiledoc-kit__atom\">\u200c\u200c<\/span><\/figcaption><\/figure>\n<p>Za dow\u00f3d tego niech pos\u0142u\u017cy coroczna ankieta dotycz\u0105ca stanu ekosystemu, kt\u00f3rej tegoroczna edycja przekroczy\u0142a ledwo nieco ponad po\u0142ow\u0119 respondent\u00f3w w stosunku do podobnej, zrealizowanej rok wcze\u015bniej. W dalszym ci\u0105gu jest to jednak bardzo dobre \u017ar\u00f3d\u0142o informacji, je\u015bli chodzi o poznanie preferencji spo\u0142eczno\u015bci Jakarta EE.<\/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_610d0d3631b12.png\" alt=\"\" \/><\/figure>\n<p>Z pewno\u015bci\u0105 jedn\u0105 z interesuj\u0105cych rzeczy, jest bardzo du\u017ca przewaga, jak\u0105 zdoby\u0142 Wildfly nad innymi serwerami aplikacyjnymi. Nie ma si\u0119 co dziwi\u0107, ta Community Edition JBossa od lat jest solidnym wyborem zar\u00f3wno dla hobbyst\u00f3w, jak i firm. Przoduje r\u00f3wnie\u017c w rankingu najbardziej \u201ckochanych\u201d projekt\u00f3w, kt\u00f3ry \u00a0r\u00f3wnie\u017c mo\u017cna znale\u017a\u0107 w ankiecie. Mam nadziej\u0119, \u017ce <a href=\"https:\/\/www.techradar.com\/news\/centos-linux-ending-because-red-hat-simply-refused-to-invest-in-it\">nie sko\u0144czy jak CentOS<\/a>.<\/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_610d0d36ecb90.png\" alt=\"\" \/><\/figure>\n<p>Kolejnym ciekawym wykresem jest ten zwi\u0105zany z popularno\u015bci\u0105 framework\u00f3w. Bardzo wida\u0107, jak du\u017c\u0105 trakcje w spo\u0142eczno\u015bci zdoby\u0142 Quarkus, 5-krotnie g\u00f3ruj\u0105c nad pozycjonuj\u0105cym si\u0119 na jego bezpo\u015bredniego konkurenta Helidona. Bior\u0105c pod uwag\u0119 niszowo\u015b\u0107 \u015brodowiska, wydaje si\u0119, \u017ce je\u015bli chodzi o podzia\u0142 tortu \u201cMikroserwisy na Jakarcie EE\u201d, to sprawa jest ju\u017c dosy\u0107 oczywista i podejrzewam, \u017ce przewaga Quarkusa b\u0119dzie si\u0119 tylko powi\u0119ksza\u0107.<\/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_610d0d37c5bf3.png\" alt=\"\" \/><\/figure>\n<p>Na sam koniec zostawi\u0142em sobie wisienk\u0119 na torcie, kt\u00f3r\u0105 to jest adopcja samej Jakarty po przej\u0119ciu przez spo\u0142eczno\u015b\u0107 projektu od Oracle. Na ten moment nie mo\u017cna m\u00f3wi\u0107 o spektakularnym sukcesie \u2013 w dalszym ci\u0105gu wi\u0119kszo\u015b\u0107 projekt\u00f3w nie zdecydowa\u0142o si\u0119 na migracje (a bior\u0105c pod uwag\u0119, \u017ce w rankingu popularno\u015bci przoduje Java EE 8, mo\u017cna wysnu\u0107 wniosek, \u017ce g\u0142osy odda\u0142a \u201cawangarda\u201d \u015brodowiska).<\/p>\n<p>Ankieta zawiera\u0142a r\u00f3wnie\u017c sporo interesuj\u0105cych pyta\u0144 zwi\u0105zanych np. z adopcj\u0105 poszczeg\u00f3lnych API, w zwi\u0105zku z czym zapraszamy do lektury ca\u0142o\u015bci.<\/p>\n<h3 id=\"-r-d-a--1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/arjan-tijms.omnifaces.org\/2021\/02\/jakarta-ee-survey-20202021-results.html\">Jakarta EE Survey 2020\/2021 &#8211; results<\/a><\/li>\n<li><a href=\"https:\/\/www.techradar.com\/news\/centos-linux-ending-because-red-hat-simply-refused-to-invest-in-it\">CentOS Linux ending because &#8222;Red Hat simply refused to invest in it&#8221;<\/a><\/li>\n<\/ul>\n<h2 id=\"3-pierwsza-prezentacja-androida-12\" data-num=3>3. <a href=\"https:\/\/android-developers.googleblog.com\/2021\/02\/android-12-dp1.html\">Pierwsza prezentacja Androida 12 <\/a><\/h2>\n<p>W mobilnych systemach operacyjnych z pewno\u015bci\u0105 dosz\u0142o do pewnego rodzaju dojrza\u0142o\u015bci. Bez wchodzenia w zb\u0119dne \u201cboomerstwo\u201d, kiedy\u015b ka\u017cda nowa edycja takiego Androida powodowa\u0142a du\u017cy skok jako\u015bciowy dla u\u017cytkownika, a kolejnymi wersjami pasjonowali si\u0119 nie tylko programi\u015bci, ale tak\u017ce zwykli u\u017cytkownicy. Od pewnego czasu jednak wi\u0119kszo\u015b\u0107 zmian dzieje si\u0119 pod mask\u0105, a wszystkie poprawki UXowe \u201cgo\u0142ego\u201d Androida w zasadzie s\u0105 kopiowaniem nowo\u015bci zaprezentowanych przez tw\u00f3rc\u00f3w nak\u0142adek lub third-party launcher\u00f3w. Czy Android 12 prze\u0142amie t\u0105 pass\u0119?<\/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_610d0d38c889a.gif\" alt=\"\" \/><\/figure>\n<p>Oczywi\u015bcie, jak zwykle \u201cw bebechach\u201d nie brakuje ciekawych usprawnie\u0144. Dostajemy kilka zabezpiecze\u0144 prywatno\u015bci, nowe algorytmy kompresji (zar\u00f3wno grafiki, jak i wideo), a tak\u017ce klasyczne ju\u017c \u201cwynoszenie\u201d kolejnych cz\u0119\u015bci systemu do Google Play Services, co u\u0142atwia p\u00f3\u017aniejsze aktualizacje. Jednocze\u015bnie jednak, jak na razie jedyn\u0105 sensowniejsz\u0105 zmian\u0105 z punktu widzenia u\u017cytkownika ko\u0144cowego (bo \u017ce \u201chaptyczne audio\u201d to bajer, kt\u00f3ry b\u0119dzie u\u017cywany przez trzy gry i dwa telefony to chyba nie musz\u0119 wspomina\u0107) s\u0105 lekkie poprawki dla panelu notyfikacji i dynamiczny dob\u00f3r kolor\u00f3w w oparciu o systemow\u0105 tapet\u0119.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d3932075.png\" alt=\"\" \/><figcaption>Og\u00f3lnie do\u015b\u0107 du\u017co pomniejszych zmian pozwala na jeszcze wi\u0119ksz\u0105 personalizacj\u0119 wygl\u0105du systemu.<\/figcaption><\/figure>\n<p>To dopiero pierwsze preview, mam wi\u0119c jednak nadzieje, \u017ce Android jeszcze nas zaskoczy przed swoj\u0105 zapowiedzian\u0105 na sierpie\u0144 premier\u0105 (BTW: ciekawe, czy w tym roku odb\u0119dzie si\u0119 Google I\/O &#8211; <a href=\"https:\/\/www.lifewire.com\/google-io-5097160\">na razie Google nabra\u0142o w temacie wody w usta<\/a>). Wed\u0142ug przeciek\u00f3w, nowa wersja ma przynie\u015b\u0107 upgrade graficzny nazywany wewn\u0119trznie Material Design NEXT. Zobaczymy, mo\u017ce ona wprowadzi co\u015b co sprawi, \u017ce Android stanie si\u0119 gwiazd\u0105 bran\u017cowych \u201cpudelk\u00f3w\u201d.<\/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_610d0d3a26959.png\" alt=\"\" \/><figcaption>Fun Fact: podczas robienia researchu do edycji, kt\u00f3r\u0105 w\u0142a\u015bnie czytacie dosta\u0142em aktualizacj\u0119 do Androida 11. Cud\u00f3w nie oczekuj\u0119 &#8211; ju\u017c nie pami\u0119tam, co przynosi\u0142a<\/figcaption><\/figure>\n<h3 id=\"-r-d-a--2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/android-developers.googleblog.com\/2021\/02\/android-12-dp1.html\">First preview of Android 12<\/a><\/li>\n<li><a href=\"https:\/\/www.xda-developers.com\/android-12\/\">Android 12 \u201cSnow Cone\u201d: Everything we know so far about Google\u2019s next big update, with Developer Preview 1 changes!<\/a><\/li>\n<li><a href=\"https:\/\/www.lifewire.com\/google-io-5097160\">Google I\/O 2021: \u00a0News, Rumors, and Everything Else To Know<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Czym\u017ce by\u0142by kolejny przegl\u0105d temat\u00f3w Javowych bez kolejnego JEPa (tym razem z gatunku tych na kt\u00f3re czekali\u015bmy od d\u0142u\u017cszego czasu). Opr\u00f3cz tego dzielimy si\u0119 &#8222;Zeitgeistem&#8221; spo\u0142eczno\u015bci Jakraty EE oraz informacj\u0105 o &#8222;pasjonuj\u0105cej&#8221; wersji nowego Androida.<\/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-10177","post","type-post","status-publish","format-standard","hentry","category-jvm-pl"],"acf":{"weekly_summary":true,"estimated_reading_time":"6"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JVM Tuesday vol. 26 - 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-26\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 26 - Vived\" \/>\n<meta property=\"og:description\" content=\"Czym\u017ce by\u0142by kolejny przegl\u0105d temat\u00f3w Javowych bez kolejnego JEPa (tym razem z gatunku tych na kt\u00f3re czekali\u015bmy od d\u0142u\u017cszego czasu). Opr\u00f3cz tego dzielimy si\u0119 &quot;Zeitgeistem&quot; spo\u0142eczno\u015bci Jakraty EE oraz informacj\u0105 o &quot;pasjonuj\u0105cej&quot; wersji nowego Androida.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-23T10:05:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d35566e7.gif\" \/>\n<meta name=\"author\" content=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 26\",\"datePublished\":\"2021-02-23T10:05:47+00:00\",\"dateModified\":\"2022-09-19T11:10:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/\"},\"wordCount\":1197,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d35566e7.gif\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/\",\"name\":\"JVM Tuesday vol. 26 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d35566e7.gif\",\"datePublished\":\"2021-02-23T10:05:47+00:00\",\"dateModified\":\"2022-09-19T11:10:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d35566e7.gif\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d35566e7.gif\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 26\"}]},{\"@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. 26 - 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-26\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 26 - Vived","og_description":"Czym\u017ce by\u0142by kolejny przegl\u0105d temat\u00f3w Javowych bez kolejnego JEPa (tym razem z gatunku tych na kt\u00f3re czekali\u015bmy od d\u0142u\u017cszego czasu). Opr\u00f3cz tego dzielimy si\u0119 \"Zeitgeistem\" spo\u0142eczno\u015bci Jakraty EE oraz informacj\u0105 o \"pasjonuj\u0105cej\" wersji nowego Androida.","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/","og_site_name":"Vived","article_published_time":"2021-02-23T10:05:47+00:00","article_modified_time":"2022-09-19T11:10:56+00:00","og_image":[{"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d35566e7.gif","type":"","width":"","height":""}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 26","datePublished":"2021-02-23T10:05:47+00:00","dateModified":"2022-09-19T11:10:56+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/"},"wordCount":1197,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d35566e7.gif","articleSection":["JVM"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/","name":"JVM Tuesday vol. 26 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d35566e7.gif","datePublished":"2021-02-23T10:05:47+00:00","dateModified":"2022-09-19T11:10:56+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d35566e7.gif","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d35566e7.gif"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-26\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 26"}]},{"@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-jep-draft-pattern-matching-for-switch-\">1. <a href=\"https:\/\/openjdk.java.net\/jeps\/8213076\">JEP draft: Pattern Matching for switch<\/a> \u2615\ufe0f<\/h2>\nKlasycznie ju\u017c zaczynamy od nowego JEPa (co staje si\u0119 nasz\u0105 ma\u0142\u0105 tradycj\u0105). Tym razem jest to co\u015b, na co wszyscy u\u017cytkownicy Javy czekali bardzo d\u0142ugo\u2026 przynajmniej od Javy 8 (kt\u00f3ra, jak sprawdzi\u0142em swoj\u0105 premier\u0119 mia\u0142a 7 lat temu).\n\nCzas wspomnie\u0144 starego pryka. JDK 8 by\u0142o ostatnim \u201ctakim\u201d wydaniem. O ile daleki jestem od twierdzenia, \u017ce kolejne edycje nie wnosi\u0142y niczego nowego do j\u0119zyka (gwoli sprawiedliwo\u015bci, Java 9 z punktu widzenia ewolucji j\u0119zyka by\u0142a znacznie istotniejsza), to jednak zmiany z \u00f3semki najmocniej wp\u0142yn\u0119\u0142y na to, jak na co dzie\u0144 piszemy w tym j\u0119zyku. To w\u0142a\u015bnie ona sta\u0142a si\u0119 \u201cgateway drugiem\u201d do programowania funkcyjnego dla wielu ludzi dzi\u0119ki lambdom i strumieniom. Wed\u0142ug wielu by\u0142a te\u017c ostatecznym ciosem dla Scali.\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_610d0d35566e7.gif\" alt=\"\" \/>\n<figcaption>Bardzo podobne wnioski pojawia\u0142y si\u0119 te\u017c przy premierze Kotlina. Flagowy j\u0119zyk Lightbendu nieszczeg\u00f3lnie si\u0119 przej\u0105\u0142.\u00a0<\/figcaption><\/figure>\nDobrze pami\u0119tam te do\u015b\u0107 zagorza\u0142e dyskusje i to, w jaki spos\u00f3b zwolennicy Scali bronili swojego j\u0119zyka. Jednym z najcz\u0119\u015bciej wywo\u0142ywanych argument\u00f3w by\u0142 fakt wsparcia Scali dla Pattern Matchingu. Nie da si\u0119 ukry\u0107, \u017ce brak tego fragmentu syntaxu zawsze sprawia\u0142, \u017ce idiomatyczne programowanie funkcyjne w Javie by\u0142o dosy\u0107\u2026 ko\u015blawe, robi\u0105c miejsce dla bibliotek w stylu niszowego (acz w swojej niszy niezwykle popularnego) Vavra.\n\nW mi\u0119dzyczasie prace trwa\u0142y, <a href=\"https:\/\/cr.openjdk.java.net\/~briangoetz\/amber\/pattern-match.html\">Brian Goetz i autor opisywanego proposal<\/a>a, Gavin Bierman<a href=\"https:\/\/cr.openjdk.java.net\/~briangoetz\/amber\/pattern-match.html\"> prezentowali \u015bmia\u0142e plany<\/a>, a zal\u0105\u017cki nowych mo\u017cliwo\u015bci pojawia\u0142y si\u0119 w kolejnych edycjach JDK. Pierwsz\u0105 jask\u00f3\u0142k\u0105 by\u0142 <a href=\"https:\/\/www.baeldung.com\/java-pattern-matching-instanceof\">Pattern Matching for instanceof<\/a> aka <a href=\"https:\/\/openjdk.java.net\/jeps\/305\">JEP 305<\/a>, kt\u00f3ry mia\u0142 swoj\u0105 premier\u0119 wraz z Jav\u0105 14 i zapewnia\u0142 co\u015b, co mo\u017cna okre\u015bli\u0107 jako automatyczne rzutowanie zmiennych:\n<pre><code>if (animal instanceof Cat cat) {\n    cat.meow();\n} else if(animal instanceof Dog dog) {\n    dog.woof();\n}<\/code><\/pre>\nW dalszym ci\u0105gu jednak by\u0142a to namiastka tego, co przynosi\u0142y ze sob\u0105 \u201cprawdziwe\u201d j\u0119zyki funkcyjne.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d3594ded.gif\" alt=\"\" \/><\/figure>\nTo nie by\u0142o ostatnie s\u0142owo, jakie powiedzieli architekci Javy. W zesz\u0142ym tygodniu opublikowany zosta\u0142 draft JEPa, kt\u00f3ry przenosi \u201cwy\u0142uskiwanie\u201d znane z instanceofa do switcha.\n<pre><code>String formatted;\nObject obj = new Long(12L);\nswitch (obj) {\n    case Integer i: formatted = String.format(\"int %d\", i); break;\n    case Byte b:    formatted = String.format(\"byte %d\", b); break;\n    case Long l:    formatted = String.format(\"long %d\", l); break;\n    case Double d:  formatted = String.format(\"double %f\", d); break;\n    case String s:  formatted = String.format(\"String %s\", s); break\n    default:        formatted = obj.toString();\n}<\/code><\/pre>\nSam Proposal jest bardzo d\u0142ugi i niezwykle interesuj\u0105cy, gdy\u017c pozycjonuje siebie samego jako krok do prawdziwej rewolucji \u2013 pattern matchingu, opartego na prawdziwych wzorcach:\n<pre><code class=\"language-java \">switch (s) {\n   case \"Hello world\" -&gt;\n        System.out.println(\"Hello back\");\n   case String s -&gt;\n        System.out.println(\"Nothing?\");\n}<\/code><\/pre>\nna kt\u00f3ry przyjdzie nam jednak chwil\u0119 poczeka\u0107.\n\nI tak te\u017c ma\u0142ymi kroczkami zasypywana jest dziura mi\u0119dzy Scal\u0105 a Jav\u0105. Aczkolwiek premiera Scali 3.0 (ju\u017c nied\u0142ugo, Release Candidate pojawi\u0142 si\u0119 w zesz\u0142ym tygodniu) znowu j\u0105 poszerzy \u2013 ale nie ubiegajmy fakt\u00f3w, musz\u0119 mie\u0107, o czym pisa\u0107 w nast\u0119pnych edycjach .\n<h3 id=\"-r-d-a-\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/305\">JEP draft: Pattern Matching for switch (Preview)<\/a><\/li>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/305\">JEP 305: Pattern Matching for instanceof<\/a><\/li>\n \t<li><a href=\"https:\/\/cr.openjdk.java.net\/~briangoetz\/amber\/pattern-match.html\">Pattern Matching for Java<\/a><\/li>\n<\/ul>\n<h2 id=\"2-wyniki-ankiety-dotycz-cej-adopcji-jakarty-ee-\"><a href=\"https:\/\/arjan-tijms.omnifaces.org\/2021\/02\/jakarta-ee-survey-20202021-results.html\">2. Wyniki ankiety dotycz\u0105cej adopcji Jakarty EE <\/a><\/h2>\nMam czasem wra\u017cenie, \u017ce nasze cotygodniowe przegl\u0105dy s\u0105 jedynym miejscem w Polskim internecie, w kt\u00f3rym da si\u0119 przeczyta\u0107 jeszcze o Javie (tfu Jakarcie) EE, a przynajmniej pojawiaj\u0105cych si\u0119 w niej nowo\u015bciach. Mimo mojej ca\u0142ej sympatii do \u015brodowiska, wydaje si\u0119 ono traci\u0107 swoich zwolennik\u00f3w. Nie pomagaj\u0105 ani dobre frameworki, ani Microprofile (Enterprise Edition wydaje si\u0119 stawa\u0107 coraz bardziej niszowym rozwi\u0105zaniem).\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_610d0d35f337a.gif\" alt=\"\" \/>\n\n<figcaption>Ja i koledzy czekamy na premier\u0119 Jakarty EE 10.<span class=\"-mobiledoc-kit__atom\">\u200c\u200c<\/span><\/figcaption><\/figure>\nZa dow\u00f3d tego niech pos\u0142u\u017cy coroczna ankieta dotycz\u0105ca stanu ekosystemu, kt\u00f3rej tegoroczna edycja przekroczy\u0142a ledwo nieco ponad po\u0142ow\u0119 respondent\u00f3w w stosunku do podobnej, zrealizowanej rok wcze\u015bniej. W dalszym ci\u0105gu jest to jednak bardzo dobre \u017ar\u00f3d\u0142o informacji, je\u015bli chodzi o poznanie preferencji spo\u0142eczno\u015bci Jakarta EE.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d3631b12.png\" alt=\"\" \/><\/figure>\nZ pewno\u015bci\u0105 jedn\u0105 z interesuj\u0105cych rzeczy, jest bardzo du\u017ca przewaga, jak\u0105 zdoby\u0142 Wildfly nad innymi serwerami aplikacyjnymi. Nie ma si\u0119 co dziwi\u0107, ta Community Edition JBossa od lat jest solidnym wyborem zar\u00f3wno dla hobbyst\u00f3w, jak i firm. Przoduje r\u00f3wnie\u017c w rankingu najbardziej \u201ckochanych\u201d projekt\u00f3w, kt\u00f3ry \u00a0r\u00f3wnie\u017c mo\u017cna znale\u017a\u0107 w ankiecie. Mam nadziej\u0119, \u017ce <a href=\"https:\/\/www.techradar.com\/news\/centos-linux-ending-because-red-hat-simply-refused-to-invest-in-it\">nie sko\u0144czy jak CentOS<\/a>.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d36ecb90.png\" alt=\"\" \/><\/figure>\nKolejnym ciekawym wykresem jest ten zwi\u0105zany z popularno\u015bci\u0105 framework\u00f3w. Bardzo wida\u0107, jak du\u017c\u0105 trakcje w spo\u0142eczno\u015bci zdoby\u0142 Quarkus, 5-krotnie g\u00f3ruj\u0105c nad pozycjonuj\u0105cym si\u0119 na jego bezpo\u015bredniego konkurenta Helidona. Bior\u0105c pod uwag\u0119 niszowo\u015b\u0107 \u015brodowiska, wydaje si\u0119, \u017ce je\u015bli chodzi o podzia\u0142 tortu \u201cMikroserwisy na Jakarcie EE\u201d, to sprawa jest ju\u017c dosy\u0107 oczywista i podejrzewam, \u017ce przewaga Quarkusa b\u0119dzie si\u0119 tylko powi\u0119ksza\u0107.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d37c5bf3.png\" alt=\"\" \/><\/figure>\nNa sam koniec zostawi\u0142em sobie wisienk\u0119 na torcie, kt\u00f3r\u0105 to jest adopcja samej Jakarty po przej\u0119ciu przez spo\u0142eczno\u015b\u0107 projektu od Oracle. Na ten moment nie mo\u017cna m\u00f3wi\u0107 o spektakularnym sukcesie \u2013 w dalszym ci\u0105gu wi\u0119kszo\u015b\u0107 projekt\u00f3w nie zdecydowa\u0142o si\u0119 na migracje (a bior\u0105c pod uwag\u0119, \u017ce w rankingu popularno\u015bci przoduje Java EE 8, mo\u017cna wysnu\u0107 wniosek, \u017ce g\u0142osy odda\u0142a \u201cawangarda\u201d \u015brodowiska).\n\nAnkieta zawiera\u0142a r\u00f3wnie\u017c sporo interesuj\u0105cych pyta\u0144 zwi\u0105zanych np. z adopcj\u0105 poszczeg\u00f3lnych API, w zwi\u0105zku z czym zapraszamy do lektury ca\u0142o\u015bci.\n<h3 id=\"-r-d-a--1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/arjan-tijms.omnifaces.org\/2021\/02\/jakarta-ee-survey-20202021-results.html\">Jakarta EE Survey 2020\/2021 - results<\/a><\/li>\n \t<li><a href=\"https:\/\/www.techradar.com\/news\/centos-linux-ending-because-red-hat-simply-refused-to-invest-in-it\">CentOS Linux ending because \"Red Hat simply refused to invest in it\"<\/a><\/li>\n<\/ul>\n<h2 id=\"3-pierwsza-prezentacja-androida-12-\">3. <a href=\"https:\/\/android-developers.googleblog.com\/2021\/02\/android-12-dp1.html\">Pierwsza prezentacja Androida 12 <\/a><\/h2>\nW mobilnych systemach operacyjnych z pewno\u015bci\u0105 dosz\u0142o do pewnego rodzaju dojrza\u0142o\u015bci. Bez wchodzenia w zb\u0119dne \u201cboomerstwo\u201d, kiedy\u015b ka\u017cda nowa edycja takiego Androida powodowa\u0142a du\u017cy skok jako\u015bciowy dla u\u017cytkownika, a kolejnymi wersjami pasjonowali si\u0119 nie tylko programi\u015bci, ale tak\u017ce zwykli u\u017cytkownicy. Od pewnego czasu jednak wi\u0119kszo\u015b\u0107 zmian dzieje si\u0119 pod mask\u0105, a wszystkie poprawki UXowe \u201cgo\u0142ego\u201d Androida w zasadzie s\u0105 kopiowaniem nowo\u015bci zaprezentowanych przez tw\u00f3rc\u00f3w nak\u0142adek lub third-party launcher\u00f3w. Czy Android 12 prze\u0142amie t\u0105 pass\u0119?\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d38c889a.gif\" alt=\"\" \/><\/figure>\nOczywi\u015bcie, jak zwykle \u201cw bebechach\u201d nie brakuje ciekawych usprawnie\u0144. Dostajemy kilka zabezpiecze\u0144 prywatno\u015bci, nowe algorytmy kompresji (zar\u00f3wno grafiki, jak i wideo), a tak\u017ce klasyczne ju\u017c \u201cwynoszenie\u201d kolejnych cz\u0119\u015bci systemu do Google Play Services, co u\u0142atwia p\u00f3\u017aniejsze aktualizacje. Jednocze\u015bnie jednak, jak na razie jedyn\u0105 sensowniejsz\u0105 zmian\u0105 z punktu widzenia u\u017cytkownika ko\u0144cowego (bo \u017ce \u201chaptyczne audio\u201d to bajer, kt\u00f3ry b\u0119dzie u\u017cywany przez trzy gry i dwa telefony to chyba nie musz\u0119 wspomina\u0107) s\u0105 lekkie poprawki dla panelu notyfikacji i dynamiczny dob\u00f3r kolor\u00f3w w oparciu o systemow\u0105 tapet\u0119.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d3932075.png\" alt=\"\" \/>\n\n<figcaption>Og\u00f3lnie do\u015b\u0107 du\u017co pomniejszych zmian pozwala na jeszcze wi\u0119ksz\u0105 personalizacj\u0119 wygl\u0105du systemu.<\/figcaption><\/figure>\nTo dopiero pierwsze preview, mam wi\u0119c jednak nadzieje, \u017ce Android jeszcze nas zaskoczy przed swoj\u0105 zapowiedzian\u0105 na sierpie\u0144 premier\u0105 (BTW: ciekawe, czy w tym roku odb\u0119dzie si\u0119 Google I\/O - <a href=\"https:\/\/www.lifewire.com\/google-io-5097160\">na razie Google nabra\u0142o w temacie wody w usta<\/a>). Wed\u0142ug przeciek\u00f3w, nowa wersja ma przynie\u015b\u0107 upgrade graficzny nazywany wewn\u0119trznie Material Design NEXT. Zobaczymy, mo\u017ce ona wprowadzi co\u015b co sprawi, \u017ce Android stanie si\u0119 gwiazd\u0105 bran\u017cowych \u201cpudelk\u00f3w\u201d.\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_610d0d3a26959.png\" alt=\"\" \/>\n\n<figcaption>Fun Fact: podczas robienia researchu do edycji, kt\u00f3r\u0105 w\u0142a\u015bnie czytacie dosta\u0142em aktualizacj\u0119 do Androida 11. Cud\u00f3w nie oczekuj\u0119 - ju\u017c nie pami\u0119tam, co przynosi\u0142a<\/figcaption><\/figure>\n<h3 id=\"-r-d-a--2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/android-developers.googleblog.com\/2021\/02\/android-12-dp1.html\">First preview of Android 12<\/a><\/li>\n \t<li><a href=\"https:\/\/www.xda-developers.com\/android-12\/\">Android 12 \u201cSnow Cone\u201d: Everything we know so far about Google\u2019s next big update, with Developer Preview 1 changes!<\/a><\/li>\n \t<li><a href=\"https:\/\/www.lifewire.com\/google-io-5097160\">Google I\/O 2021: \u00a0News, Rumors, and Everything Else To Know<\/a><\/li>\n<\/ul>","innerContent":["<h2 id=\"1-jep-draft-pattern-matching-for-switch-\">1. <a href=\"https:\/\/openjdk.java.net\/jeps\/8213076\">JEP draft: Pattern Matching for switch<\/a> \u2615\ufe0f<\/h2>\nKlasycznie ju\u017c zaczynamy od nowego JEPa (co staje si\u0119 nasz\u0105 ma\u0142\u0105 tradycj\u0105). Tym razem jest to co\u015b, na co wszyscy u\u017cytkownicy Javy czekali bardzo d\u0142ugo\u2026 przynajmniej od Javy 8 (kt\u00f3ra, jak sprawdzi\u0142em swoj\u0105 premier\u0119 mia\u0142a 7 lat temu).\n\nCzas wspomnie\u0144 starego pryka. JDK 8 by\u0142o ostatnim \u201ctakim\u201d wydaniem. O ile daleki jestem od twierdzenia, \u017ce kolejne edycje nie wnosi\u0142y niczego nowego do j\u0119zyka (gwoli sprawiedliwo\u015bci, Java 9 z punktu widzenia ewolucji j\u0119zyka by\u0142a znacznie istotniejsza), to jednak zmiany z \u00f3semki najmocniej wp\u0142yn\u0119\u0142y na to, jak na co dzie\u0144 piszemy w tym j\u0119zyku. To w\u0142a\u015bnie ona sta\u0142a si\u0119 \u201cgateway drugiem\u201d do programowania funkcyjnego dla wielu ludzi dzi\u0119ki lambdom i strumieniom. Wed\u0142ug wielu by\u0142a te\u017c ostatecznym ciosem dla Scali.\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_610d0d35566e7.gif\" alt=\"\" \/>\n<figcaption>Bardzo podobne wnioski pojawia\u0142y si\u0119 te\u017c przy premierze Kotlina. Flagowy j\u0119zyk Lightbendu nieszczeg\u00f3lnie si\u0119 przej\u0105\u0142.\u00a0<\/figcaption><\/figure>\nDobrze pami\u0119tam te do\u015b\u0107 zagorza\u0142e dyskusje i to, w jaki spos\u00f3b zwolennicy Scali bronili swojego j\u0119zyka. Jednym z najcz\u0119\u015bciej wywo\u0142ywanych argument\u00f3w by\u0142 fakt wsparcia Scali dla Pattern Matchingu. Nie da si\u0119 ukry\u0107, \u017ce brak tego fragmentu syntaxu zawsze sprawia\u0142, \u017ce idiomatyczne programowanie funkcyjne w Javie by\u0142o dosy\u0107\u2026 ko\u015blawe, robi\u0105c miejsce dla bibliotek w stylu niszowego (acz w swojej niszy niezwykle popularnego) Vavra.\n\nW mi\u0119dzyczasie prace trwa\u0142y, <a href=\"https:\/\/cr.openjdk.java.net\/~briangoetz\/amber\/pattern-match.html\">Brian Goetz i autor opisywanego proposal<\/a>a, Gavin Bierman<a href=\"https:\/\/cr.openjdk.java.net\/~briangoetz\/amber\/pattern-match.html\"> prezentowali \u015bmia\u0142e plany<\/a>, a zal\u0105\u017cki nowych mo\u017cliwo\u015bci pojawia\u0142y si\u0119 w kolejnych edycjach JDK. Pierwsz\u0105 jask\u00f3\u0142k\u0105 by\u0142 <a href=\"https:\/\/www.baeldung.com\/java-pattern-matching-instanceof\">Pattern Matching for instanceof<\/a> aka <a href=\"https:\/\/openjdk.java.net\/jeps\/305\">JEP 305<\/a>, kt\u00f3ry mia\u0142 swoj\u0105 premier\u0119 wraz z Jav\u0105 14 i zapewnia\u0142 co\u015b, co mo\u017cna okre\u015bli\u0107 jako automatyczne rzutowanie zmiennych:\n<pre><code>if (animal instanceof Cat cat) {\n    cat.meow();\n} else if(animal instanceof Dog dog) {\n    dog.woof();\n}<\/code><\/pre>\nW dalszym ci\u0105gu jednak by\u0142a to namiastka tego, co przynosi\u0142y ze sob\u0105 \u201cprawdziwe\u201d j\u0119zyki funkcyjne.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d3594ded.gif\" alt=\"\" \/><\/figure>\nTo nie by\u0142o ostatnie s\u0142owo, jakie powiedzieli architekci Javy. W zesz\u0142ym tygodniu opublikowany zosta\u0142 draft JEPa, kt\u00f3ry przenosi \u201cwy\u0142uskiwanie\u201d znane z instanceofa do switcha.\n<pre><code>String formatted;\nObject obj = new Long(12L);\nswitch (obj) {\n    case Integer i: formatted = String.format(\"int %d\", i); break;\n    case Byte b:    formatted = String.format(\"byte %d\", b); break;\n    case Long l:    formatted = String.format(\"long %d\", l); break;\n    case Double d:  formatted = String.format(\"double %f\", d); break;\n    case String s:  formatted = String.format(\"String %s\", s); break\n    default:        formatted = obj.toString();\n}<\/code><\/pre>\nSam Proposal jest bardzo d\u0142ugi i niezwykle interesuj\u0105cy, gdy\u017c pozycjonuje siebie samego jako krok do prawdziwej rewolucji \u2013 pattern matchingu, opartego na prawdziwych wzorcach:\n<pre><code class=\"language-java \">switch (s) {\n   case \"Hello world\" -&gt;\n        System.out.println(\"Hello back\");\n   case String s -&gt;\n        System.out.println(\"Nothing?\");\n}<\/code><\/pre>\nna kt\u00f3ry przyjdzie nam jednak chwil\u0119 poczeka\u0107.\n\nI tak te\u017c ma\u0142ymi kroczkami zasypywana jest dziura mi\u0119dzy Scal\u0105 a Jav\u0105. Aczkolwiek premiera Scali 3.0 (ju\u017c nied\u0142ugo, Release Candidate pojawi\u0142 si\u0119 w zesz\u0142ym tygodniu) znowu j\u0105 poszerzy \u2013 ale nie ubiegajmy fakt\u00f3w, musz\u0119 mie\u0107, o czym pisa\u0107 w nast\u0119pnych edycjach .\n<h3 id=\"-r-d-a-\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/305\">JEP draft: Pattern Matching for switch (Preview)<\/a><\/li>\n \t<li><a href=\"https:\/\/openjdk.java.net\/jeps\/305\">JEP 305: Pattern Matching for instanceof<\/a><\/li>\n \t<li><a href=\"https:\/\/cr.openjdk.java.net\/~briangoetz\/amber\/pattern-match.html\">Pattern Matching for Java<\/a><\/li>\n<\/ul>\n<h2 id=\"2-wyniki-ankiety-dotycz-cej-adopcji-jakarty-ee-\"><a href=\"https:\/\/arjan-tijms.omnifaces.org\/2021\/02\/jakarta-ee-survey-20202021-results.html\">2. Wyniki ankiety dotycz\u0105cej adopcji Jakarty EE <\/a><\/h2>\nMam czasem wra\u017cenie, \u017ce nasze cotygodniowe przegl\u0105dy s\u0105 jedynym miejscem w Polskim internecie, w kt\u00f3rym da si\u0119 przeczyta\u0107 jeszcze o Javie (tfu Jakarcie) EE, a przynajmniej pojawiaj\u0105cych si\u0119 w niej nowo\u015bciach. Mimo mojej ca\u0142ej sympatii do \u015brodowiska, wydaje si\u0119 ono traci\u0107 swoich zwolennik\u00f3w. Nie pomagaj\u0105 ani dobre frameworki, ani Microprofile (Enterprise Edition wydaje si\u0119 stawa\u0107 coraz bardziej niszowym rozwi\u0105zaniem).\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_610d0d35f337a.gif\" alt=\"\" \/>\n\n<figcaption>Ja i koledzy czekamy na premier\u0119 Jakarty EE 10.<span class=\"-mobiledoc-kit__atom\">\u200c\u200c<\/span><\/figcaption><\/figure>\nZa dow\u00f3d tego niech pos\u0142u\u017cy coroczna ankieta dotycz\u0105ca stanu ekosystemu, kt\u00f3rej tegoroczna edycja przekroczy\u0142a ledwo nieco ponad po\u0142ow\u0119 respondent\u00f3w w stosunku do podobnej, zrealizowanej rok wcze\u015bniej. W dalszym ci\u0105gu jest to jednak bardzo dobre \u017ar\u00f3d\u0142o informacji, je\u015bli chodzi o poznanie preferencji spo\u0142eczno\u015bci Jakarta EE.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d3631b12.png\" alt=\"\" \/><\/figure>\nZ pewno\u015bci\u0105 jedn\u0105 z interesuj\u0105cych rzeczy, jest bardzo du\u017ca przewaga, jak\u0105 zdoby\u0142 Wildfly nad innymi serwerami aplikacyjnymi. Nie ma si\u0119 co dziwi\u0107, ta Community Edition JBossa od lat jest solidnym wyborem zar\u00f3wno dla hobbyst\u00f3w, jak i firm. Przoduje r\u00f3wnie\u017c w rankingu najbardziej \u201ckochanych\u201d projekt\u00f3w, kt\u00f3ry \u00a0r\u00f3wnie\u017c mo\u017cna znale\u017a\u0107 w ankiecie. Mam nadziej\u0119, \u017ce <a href=\"https:\/\/www.techradar.com\/news\/centos-linux-ending-because-red-hat-simply-refused-to-invest-in-it\">nie sko\u0144czy jak CentOS<\/a>.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d36ecb90.png\" alt=\"\" \/><\/figure>\nKolejnym ciekawym wykresem jest ten zwi\u0105zany z popularno\u015bci\u0105 framework\u00f3w. Bardzo wida\u0107, jak du\u017c\u0105 trakcje w spo\u0142eczno\u015bci zdoby\u0142 Quarkus, 5-krotnie g\u00f3ruj\u0105c nad pozycjonuj\u0105cym si\u0119 na jego bezpo\u015bredniego konkurenta Helidona. Bior\u0105c pod uwag\u0119 niszowo\u015b\u0107 \u015brodowiska, wydaje si\u0119, \u017ce je\u015bli chodzi o podzia\u0142 tortu \u201cMikroserwisy na Jakarcie EE\u201d, to sprawa jest ju\u017c dosy\u0107 oczywista i podejrzewam, \u017ce przewaga Quarkusa b\u0119dzie si\u0119 tylko powi\u0119ksza\u0107.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d37c5bf3.png\" alt=\"\" \/><\/figure>\nNa sam koniec zostawi\u0142em sobie wisienk\u0119 na torcie, kt\u00f3r\u0105 to jest adopcja samej Jakarty po przej\u0119ciu przez spo\u0142eczno\u015b\u0107 projektu od Oracle. Na ten moment nie mo\u017cna m\u00f3wi\u0107 o spektakularnym sukcesie \u2013 w dalszym ci\u0105gu wi\u0119kszo\u015b\u0107 projekt\u00f3w nie zdecydowa\u0142o si\u0119 na migracje (a bior\u0105c pod uwag\u0119, \u017ce w rankingu popularno\u015bci przoduje Java EE 8, mo\u017cna wysnu\u0107 wniosek, \u017ce g\u0142osy odda\u0142a \u201cawangarda\u201d \u015brodowiska).\n\nAnkieta zawiera\u0142a r\u00f3wnie\u017c sporo interesuj\u0105cych pyta\u0144 zwi\u0105zanych np. z adopcj\u0105 poszczeg\u00f3lnych API, w zwi\u0105zku z czym zapraszamy do lektury ca\u0142o\u015bci.\n<h3 id=\"-r-d-a--1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/arjan-tijms.omnifaces.org\/2021\/02\/jakarta-ee-survey-20202021-results.html\">Jakarta EE Survey 2020\/2021 - results<\/a><\/li>\n \t<li><a href=\"https:\/\/www.techradar.com\/news\/centos-linux-ending-because-red-hat-simply-refused-to-invest-in-it\">CentOS Linux ending because \"Red Hat simply refused to invest in it\"<\/a><\/li>\n<\/ul>\n<h2 id=\"3-pierwsza-prezentacja-androida-12-\">3. <a href=\"https:\/\/android-developers.googleblog.com\/2021\/02\/android-12-dp1.html\">Pierwsza prezentacja Androida 12 <\/a><\/h2>\nW mobilnych systemach operacyjnych z pewno\u015bci\u0105 dosz\u0142o do pewnego rodzaju dojrza\u0142o\u015bci. Bez wchodzenia w zb\u0119dne \u201cboomerstwo\u201d, kiedy\u015b ka\u017cda nowa edycja takiego Androida powodowa\u0142a du\u017cy skok jako\u015bciowy dla u\u017cytkownika, a kolejnymi wersjami pasjonowali si\u0119 nie tylko programi\u015bci, ale tak\u017ce zwykli u\u017cytkownicy. Od pewnego czasu jednak wi\u0119kszo\u015b\u0107 zmian dzieje si\u0119 pod mask\u0105, a wszystkie poprawki UXowe \u201cgo\u0142ego\u201d Androida w zasadzie s\u0105 kopiowaniem nowo\u015bci zaprezentowanych przez tw\u00f3rc\u00f3w nak\u0142adek lub third-party launcher\u00f3w. Czy Android 12 prze\u0142amie t\u0105 pass\u0119?\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d38c889a.gif\" alt=\"\" \/><\/figure>\nOczywi\u015bcie, jak zwykle \u201cw bebechach\u201d nie brakuje ciekawych usprawnie\u0144. Dostajemy kilka zabezpiecze\u0144 prywatno\u015bci, nowe algorytmy kompresji (zar\u00f3wno grafiki, jak i wideo), a tak\u017ce klasyczne ju\u017c \u201cwynoszenie\u201d kolejnych cz\u0119\u015bci systemu do Google Play Services, co u\u0142atwia p\u00f3\u017aniejsze aktualizacje. Jednocze\u015bnie jednak, jak na razie jedyn\u0105 sensowniejsz\u0105 zmian\u0105 z punktu widzenia u\u017cytkownika ko\u0144cowego (bo \u017ce \u201chaptyczne audio\u201d to bajer, kt\u00f3ry b\u0119dzie u\u017cywany przez trzy gry i dwa telefony to chyba nie musz\u0119 wspomina\u0107) s\u0105 lekkie poprawki dla panelu notyfikacji i dynamiczny dob\u00f3r kolor\u00f3w w oparciu o systemow\u0105 tapet\u0119.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d3932075.png\" alt=\"\" \/>\n\n<figcaption>Og\u00f3lnie do\u015b\u0107 du\u017co pomniejszych zmian pozwala na jeszcze wi\u0119ksz\u0105 personalizacj\u0119 wygl\u0105du systemu.<\/figcaption><\/figure>\nTo dopiero pierwsze preview, mam wi\u0119c jednak nadzieje, \u017ce Android jeszcze nas zaskoczy przed swoj\u0105 zapowiedzian\u0105 na sierpie\u0144 premier\u0105 (BTW: ciekawe, czy w tym roku odb\u0119dzie si\u0119 Google I\/O - <a href=\"https:\/\/www.lifewire.com\/google-io-5097160\">na razie Google nabra\u0142o w temacie wody w usta<\/a>). Wed\u0142ug przeciek\u00f3w, nowa wersja ma przynie\u015b\u0107 upgrade graficzny nazywany wewn\u0119trznie Material Design NEXT. Zobaczymy, mo\u017ce ona wprowadzi co\u015b co sprawi, \u017ce Android stanie si\u0119 gwiazd\u0105 bran\u017cowych \u201cpudelk\u00f3w\u201d.\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_610d0d3a26959.png\" alt=\"\" \/>\n\n<figcaption>Fun Fact: podczas robienia researchu do edycji, kt\u00f3r\u0105 w\u0142a\u015bnie czytacie dosta\u0142em aktualizacj\u0119 do Androida 11. Cud\u00f3w nie oczekuj\u0119 - ju\u017c nie pami\u0119tam, co przynosi\u0142a<\/figcaption><\/figure>\n<h3 id=\"-r-d-a--2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/android-developers.googleblog.com\/2021\/02\/android-12-dp1.html\">First preview of Android 12<\/a><\/li>\n \t<li><a href=\"https:\/\/www.xda-developers.com\/android-12\/\">Android 12 \u201cSnow Cone\u201d: Everything we know so far about Google\u2019s next big update, with Developer Preview 1 changes!<\/a><\/li>\n \t<li><a href=\"https:\/\/www.lifewire.com\/google-io-5097160\">Google I\/O 2021: \u00a0News, Rumors, and Everything Else To Know<\/a><\/li>\n<\/ul>"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10177","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=10177"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10177\/revisions"}],"predecessor-version":[{"id":10585,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10177\/revisions\/10585"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10177"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10177"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10177"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}