{"id":9954,"date":"2022-06-22T08:30:10","date_gmt":"2022-06-22T06:30:10","guid":{"rendered":"https:\/\/vived.io\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/"},"modified":"2022-09-19T13:10:37","modified_gmt":"2022-09-19T11:10:37","slug":"jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/","title":{"rendered":"JVM Wednesday vol.92 &#8211; Classfile API, zalety Kotlina, migracja do Javy 11 w LinkedIn"},"content":{"rendered":"\n<h2 id=\"1-classfile-api-natywne-api-do-generowania-klas-trafi-do-javy\" data-num=1>1. Classfile API &#8211; Natywne API do generowania klas trafi do Javy<\/h2>\n\n\n\n<p>Nawet w takie spokojniejsze tygodnie jak ten, na Briana Goetza zawsze mo\u017cna liczy\u0107. Opublikowa\u0142 on bowiem, zupe\u0142nie znienacka, bardzo interesuj\u0105cego JEPa, znajduj\u0105cego si\u0119 w tematyce kt\u00f3ra w bardzo ma\u0142ym stopniu zahacza o te najbardziej \u201cwokalne\u201d kwestie, o kt\u00f3rych dyskutuje si\u0119 ostatnio w ramach JVMa. <a href=\"https:\/\/openjdk.org\/jeps\/8280389\">Draft Classfile API<\/a> sam w sobie nie wywr\u00f3ci \u017cycia programistom \u201cprzemys\u0142owym\u201d, ale tw\u00f3rcy bibliotek dostan\u0105 kolejne ma\u0142y, przydatny dodatek do biblioteki standardowej, pozwalaj\u0105cy im na zminimalizowanie zale\u017cno\u015bci.<\/p>\n\n\n\n<p>Cytuj\u0105c tutaj samego JEPa &#8211; bardzo wiele \u201cjavowych\u201d narz\u0119dzi opiera si\u0119 na generowaniu klas &#8211; na tym polega ta ca\u0142a legendarna magia wielu narz\u0119dzi.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"498\" height=\"457\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/magic.gif\" alt=\"\" class=\"wp-image-5431\"\/><\/figure><\/div>\n\n\n<p>Do tej pory niezb\u0119dne by\u0142o do tego u\u017cywanie zewn\u0119trznych bibliotek. Tw\u00f3rcy JDK zdecydowali jednak ca\u0142y proces u\u0142atwi\u0107, proponuj\u0105c stworzenie wydajnego API do odczytu, zapisu i przekszta\u0142cania plik\u00f3w klas. Zalet\u0105 narz\u0119dzia, nie tak oczywist\u0105 na pierwszy rzut oka, ma by\u0107 gwarancja zgodno\u015bci z ca\u0142o\u015bci z aktualn\u0105 wersj\u0105 Javy i potencjalnymi zmianami. Brian Goetz zarzeka si\u0119 w proposalu, \u017ce celem tw\u00f3rc\u00f3w nie jest zast\u0105pienie istniej\u0105cych bibliotek, a po prostu wyj\u015bcie na przeciw tym, kt\u00f3rzy nie chc\u0105 si\u0119 zastanawia\u0107, kt\u00f3ra wersja ByteBuddy\u2019ego b\u0119dzie odpowiednia.<\/p>\n\n\n\n<p>To oczywi\u015bcie nie tak, \u017ce Java nie posiada \u017cadnego sposobu na manipulowanie klasami. Jak \u0142adnie wyt\u0142uszcza nowy proposal, w \u201cbebechach\u201d JVMa znajduje si\u0119 biblioteka ASM (<strong>jdk<\/strong>.<strong>internal<\/strong>.<strong>org<\/strong>.<strong>objectweb<\/strong>.<strong>asm<\/strong>.ClassReader) , kt\u00f3ra u\u017cywana jest mi\u0119dzy innymi przez klasy zwi\u0105zane z Lambdami. Wi\u0105\u017ce si\u0119 z tym interesuj\u0105cy problem \u201cjajka i kury\u201d &#8211; jako, \u017ce aby sfinalizowa\u0107 wersje JDK, kod Javy musi by\u0107 stabilny, znajduj\u0105cy si\u0119 w internalach javy ASM (b\u0119d\u0105cy bibliotek\u0105) zawsze pozostaje krok do ty\u0142u w stosunku do g\u0142\u00f3wnej edycji Javy.&nbsp; Takich \u201cpomniejszych\u201d bibliotek jak Xalan czy cglib jest w JDK sporo, i nowe API ma wyczy\u015bci\u0107 internale projektu min. konsoliduj\u0105c te w\u0142a\u015bnie&nbsp;<\/p>\n\n\n\n<p>Dlaczego teraz? Tw\u00f3rcy przekonuj\u0105, \u017ce ewolucja JVMa znacznie przyspieszy\u0142a i coraz wi\u0119cej zmian odbywa si\u0119 w\u0142a\u015bnie na poziomie generowanego kodu. Dzi\u0119ki nowemu API du\u017ce inicjatywy jak np. Valhalla ma by\u0107 mniej uci\u0105\u017cliwe dla ca\u0142ego ekosystemu.\u00a0<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"341\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/giphy-4.gif\" alt=\"\" class=\"wp-image-5432\"\/><figcaption>W tym momencie zacz\u0105\u0142em si\u0119 zastanawia\u0107 &#8211; jak du\u017co rzeczy tak naprawd\u0119 zepsuje si\u0119 wraz z nadej\u015bciem Value Type? Co\u015b mi si\u0119 wydaje, \u017ce to w\u0142a\u015bnie informacja o tym zmotywowa\u0142a Briana Goetza do napisania bohatera dzisiejszego przegl\u0105du.<\/figcaption><\/figure><\/div>\n\n\n<h2 id=\"2-co-tak-naprawde-boli-programistow-kotlina-po-powrocie-do-javy\" data-num=2>2. Co tak naprawd\u0119 boli programist\u00f3w Kotlina po powrocie do Javy?<\/h2>\n\n\n\n<p>Drugi z dzisiejszych tekst\u00f3w to w zasadzie \u201cdrobnica\u201d i nic co mocno wstrz\u0105\u015bnie waszym \u017cyciem, ale jest na tyle przyst\u0119pny w lekturze, \u017ce stwierdzi\u0142em i\u017c warto si\u0119 z Wami nim podzieli\u0107. Nicolas Fr\u00e4nkel, kt\u00f3ry w ci\u0105gu \u017cycia naszego newslettera nieraz si\u0119 przez niego przewija, <a href=\"https:\/\/blog.frankel.ch\/miss-in-java-kotlin-developer\/\">opublikowa\u0142 ostatnio swoje przemy\u015blenia<\/a> o wszystkim tym co tracimy, kiedy z Kotlina jeste\u015bmy zmuszeni wraca\u0107 do Javy.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-3.png\" alt=\"\" class=\"wp-image-5435\" width=\"680\" height=\"680\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-3.png 680w, https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-3-300x300.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-3-150x150.png 150w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><figcaption>Nicolas podczas pisania postu, nie zmy\u015blam<\/figcaption><\/figure><\/div>\n\n\n<p>Tekst sam w sobie nie jest czym\u015b wyj\u0105tkowym (takich, a nawet du\u017co bardziej dog\u0142\u0119bnych por\u00f3wna\u0144, w sieci nie brakuje), ale na jego korzy\u015b\u0107 przemawia zwi\u0119z\u0142o\u015b\u0107 oraz lekko\u015b\u0107 pi\u00f3ra Nicolasa. Ca\u0142o\u015b\u0107 mo\u017cna przej\u015b\u0107 w dos\u0142ownie par\u0119 minut, a autor skupia si\u0119 na prawdziwym \u201cDeveloper Experience\u201d &#8211; tych funkcjonalno\u015bciach, kt\u00f3rych realnie jest mu brak za ka\u017cdym razem gdy siada do Javy. I musz\u0119 przyzna\u0107, \u017ce ten kr\u00f3tki wyw\u00f3d o tak oklepanych tematach jak generyki i nulle moim zdaniem daje nam w przyst\u0119pny spos\u00f3b amunicj\u0119, pozwalaj\u0105c\u0105 na przekonanie kogo\u015b do dania Kotlinowi szansy. W mojej banieczce zawsze t\u0105 funkcjonalno\u015bci\u0105, kt\u00f3ra zach\u0119ca\u0142a ludzi do migracji by\u0142y Korutyny, ale bior\u0105c pod uwag\u0119 jak niewiele ludzi pisze realnie wsp\u00f3\u0142bie\u017cny kod, bez zrzucania tego na adnotacje @Asynchronous, to w\u0142a\u015bnie mniejsza ilo\u015b\u0107 b\u0142\u0119d\u00f3w dzi\u0119ki niemutowalno\u015bci czy mo\u017cliwo\u015b\u0107 obej\u015bcia upo\u015bledzonych javowych generyk\u00f3w mo\u017ce by\u0107 znacznie lepszym argumentem.&nbsp;<\/p>\n\n\n\n<p>Zatem je\u015bli chcecie przekona\u0107 kogo\u015b, \u017ceby jednak zdecydowa\u0142 si\u0119 da\u0107 szans\u0119 ketchupowemu j\u0119zykowi (albo samemu nad tym si\u0119 zastanawiacie), my\u015bl\u0119, \u017ce warto z publikacj\u0105 Nicolasa si\u0119 zapozna\u0107.<\/p>\n\n\n\n<h2 id=\"3-jak-wygladala-migracja-do-javy-11-w-takiej-firmie-jak-linkedin\" data-num=3>3. Jak wygl\u0105da\u0142a migracja do Javy 11 w takiej firmie jak LinkedIn?<\/h2>\n\n\n\n<p>M\u00f3wi si\u0119 du\u017co o tym, \u017ce im wi\u0119ksza firma, tym bardziej oci\u0105gaj\u0105 si\u0119 z tym, \u017ceby wprowadzi\u0107 nowe wersje oprogramowania na produkcj\u0119. Dodatkowo, sporo os\u00f3b twierdzi, \u017ce tak naprawd\u0119 \u00f3semka jest \u201cgood enough\u201d &#8211; w znaczeniu, \u017ce wszelkie zmiany, kt\u00f3re zosta\u0142y wprowadzone od JDK 9+ okazuj\u0105 si\u0119 by\u0107 na tyle ma\u0142e, \u017ce ca\u0142y wysi\u0142ek zwi\u0105zany z migracj\u0105 po prostu nie raz nie jest warty. Nie ma si\u0119 jednak co dziwi\u0107 &#8211; w du\u017cych firmach proces migracji nie zawsze jest bezbolesny. Dlatego te\u017c zawsze ciekawie przeczyta\u0107 analizy, jak taki proces odbywa si\u0119 w innych firmach. Ma\u0142o komu chce si\u0119 pisa\u0107 o tak \u201ctrywialnych\u201d rzeczach jak migracja Javy, dlatego (podobnie jak w przypadku zalet Kotlina) wykorzystuje okazj\u0119, \u017ceby podrzuci\u0107 tak\u0105 \u201coczywisto\u015b\u0107\u201d, kt\u00f3ra w praktyce wcale a\u017c tak oczywista nie jest.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"400\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-4.png\" alt=\"\" class=\"wp-image-5436\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-4.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-4-300x200.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption>Nic nie jest proste kiedy firma ma 1000+ pracownik\u00f3w<\/figcaption><\/figure><\/div>\n\n\n<p><a href=\"https:\/\/engineering.linkedin.com\/blog\/2022\/linkedin-s-journey-to-java-11?s=09\">Tekst LinkedIna<\/a> jest zaskakuj\u0105co ciekawy, poniewa\u017c skupia si\u0119 na mocno \u201c\u017cyciowych\u201d fragmentach ca\u0142ego procesu migracji. Dowiecie si\u0119 z niego sporo o usprawnieniach, jakie przynosi nowa Java &#8211; zw\u0142aszcza o Garbage Collectorach, kt\u00f3re mog\u0142y umkn\u0105\u0107 troch\u0119 Waszej uwadze w wyniku tego, jak bardzo \u201citeracyjnym\u201d by\u0142 proces wprowadzania do nich poprawek na prze\u0142omie kilku ostatnich wersji. Sporo miejsca po\u015bwi\u0119cono te\u017c mniej oczywistym problemom, jak cho\u0107by fakt \u017ce niekt\u00f3re API JavaEE rozpanoszy\u0142y si\u0119 w wielu du\u017cych codebase. Z mojej perspektywy najciekawszym by\u0142 jednak poruszony aspekt tego jak trudnym w utrzymaniu jest drzewo zale\u017cno\u015bci posiadaj\u0105cych r\u00f3\u017cne warianty JDK, zw\u0142aszcza te pochodz\u0105ce ze \u015bwiata przed i po wprowadzeniu modu\u0142\u00f3w. Podobnie jak w przypadku powy\u017cszego tekstu o Kotlinie, ca\u0142o\u015b\u0107 okaza\u0142a si\u0119 by\u0107 znacznie bardziej interesuj\u0105ca ni\u017c kaza\u0142 si\u0119 spodziewa\u0107 tytu\u0142.<\/p>\n\n\n\n<p>Polecam, w ko\u0144cu jest to ta unikalna mo\u017cliwo\u015b\u0107, \u017ce w nikim nie wzbudzi zaniepokojenie fakt, \u017ce w godzinach pracy czytacie LinkedIna.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"384\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-5.png\" alt=\"\" class=\"wp-image-5437\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-5.png 600w, https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-5-300x192.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption>\u201cTak, panie szefie, wchodz\u0119 na LinkedIna \u017ceby dowiedzie\u0107 si\u0119 jak now\u0105 Jav\u0119 zainstalowa\u0107\u201c<\/figcaption><\/figure><\/div>\n\n\n<p>A jaki jest dla Was dobry pow\u00f3d do przepisania si\u0119 na now\u0105 Jav\u0119? Dla kolegi pytam \ud83d\ude05<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ten tydzie\u0144 stanowi dla mnie kwintesencje tego, co okre\u015blam jako &#8222;spokojny&#8221;. Dlatego te\u017c  porozmawiamy sobie o &#8222;oczywisto\u015bciach&#8221;, ale wa\u017cnych, a cz\u0119sto zapominanych w pogoni za nowo\u015bciami. Ale nie martwcie si\u0119 &#8211; b\u0119dzie te\u017c nowy JEP.<\/p>\n","protected":false},"author":10,"featured_media":8747,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[259],"tags":[],"class_list":["post-9954","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm-pl"],"acf":{"estimated_reading_time":"5","feature_image_blog":{"ID":8748,"id":8748,"title":"254096_1651834031534","filename":"254096_1651834031534.jpeg","filesize":55081,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/254096_1651834031534.jpeg","link":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/254096_1651834031534-2\/","alt":"","author":"10","description":"","caption":"","name":"254096_1651834031534-2","status":"inherit","uploaded_to":9954,"date":"2022-06-22 06:29:46","modified":"2022-06-22 06:29:46","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/vived.io\/wp-includes\/images\/media\/default.png","width":900,"height":506,"sizes":{"thumbnail":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/254096_1651834031534-150x150.jpeg","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/254096_1651834031534-300x169.jpeg","medium-width":300,"medium-height":169,"medium_large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/254096_1651834031534-768x432.jpeg","medium_large-width":768,"medium_large-height":432,"large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/254096_1651834031534.jpeg","large-width":900,"large-height":506,"1536x1536":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/254096_1651834031534.jpeg","1536x1536-width":900,"1536x1536-height":506,"2048x2048":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/254096_1651834031534.jpeg","2048x2048-width":900,"2048x2048-height":506,"gform-image-choice-sm":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/254096_1651834031534.jpeg","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":169,"gform-image-choice-md":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/254096_1651834031534.jpeg","gform-image-choice-md-width":400,"gform-image-choice-md-height":225,"gform-image-choice-lg":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/254096_1651834031534.jpeg","gform-image-choice-lg-width":600,"gform-image-choice-lg-height":337}},"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-3.png","feature_image_visible":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JVM Wednesday vol.92 - Classfile API, zalety Kotlina, migracja do Javy 11 w LinkedIn - 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-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Wednesday vol.92 - Classfile API, zalety Kotlina, migracja do Javy 11 w LinkedIn - Vived\" \/>\n<meta property=\"og:description\" content=\"Ten tydzie\u0144 stanowi dla mnie kwintesencje tego, co okre\u015blam jako &quot;spokojny&quot;. Dlatego te\u017c porozmawiamy sobie o &quot;oczywisto\u015bciach&quot;, ale wa\u017cnych, a cz\u0119sto zapominanych w pogoni za nowo\u015bciami. Ale nie martwcie si\u0119 - b\u0119dzie te\u017c nowy JEP.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-22T06:30:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/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-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Wednesday vol.92 &#8211; Classfile API, zalety Kotlina, migracja do Javy 11 w LinkedIn\",\"datePublished\":\"2022-06-22T06:30:10+00:00\",\"dateModified\":\"2022-09-19T11:10:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/\"},\"wordCount\":1108,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-3.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/\",\"name\":\"JVM Wednesday vol.92 - Classfile API, zalety Kotlina, migracja do Javy 11 w LinkedIn - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-3.png\",\"datePublished\":\"2022-06-22T06:30:10+00:00\",\"dateModified\":\"2022-09-19T11:10:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-3.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-3.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Wednesday vol.92 &#8211; Classfile API, zalety Kotlina, migracja do Javy 11 w LinkedIn\"}]},{\"@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 Wednesday vol.92 - Classfile API, zalety Kotlina, migracja do Javy 11 w LinkedIn - 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-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Wednesday vol.92 - Classfile API, zalety Kotlina, migracja do Javy 11 w LinkedIn - Vived","og_description":"Ten tydzie\u0144 stanowi dla mnie kwintesencje tego, co okre\u015blam jako \"spokojny\". Dlatego te\u017c porozmawiamy sobie o \"oczywisto\u015bciach\", ale wa\u017cnych, a cz\u0119sto zapominanych w pogoni za nowo\u015bciami. Ale nie martwcie si\u0119 - b\u0119dzie te\u017c nowy JEP.","og_url":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/","og_site_name":"Vived","article_published_time":"2022-06-22T06:30:10+00:00","article_modified_time":"2022-09-19T11:10:37+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-3.png","type":"image\/png"}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Wednesday vol.92 &#8211; Classfile API, zalety Kotlina, migracja do Javy 11 w LinkedIn","datePublished":"2022-06-22T06:30:10+00:00","dateModified":"2022-09-19T11:10:37+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/"},"wordCount":1108,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-3.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/","url":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/","name":"JVM Wednesday vol.92 - Classfile API, zalety Kotlina, migracja do Javy 11 w LinkedIn - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-3.png","datePublished":"2022-06-22T06:30:10+00:00","dateModified":"2022-09-19T11:10:37+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-3.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-3.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-wednesday-vol-92-classfile-api-zalety-kotlina-migracja-do-javy-11-w-linkedin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Wednesday vol.92 &#8211; Classfile API, zalety Kotlina, migracja do Javy 11 w LinkedIn"}]},{"@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":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>1. Classfile API - Natywne API do generowania klas trafi do Javy<\/h2>\n","innerContent":["\n<h2>1. Classfile API - Natywne API do generowania klas trafi do Javy<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Nawet w takie spokojniejsze tygodnie jak ten, na Briana Goetza zawsze mo\u017cna liczy\u0107. Opublikowa\u0142 on bowiem, zupe\u0142nie znienacka, bardzo interesuj\u0105cego JEPa, znajduj\u0105cego si\u0119 w tematyce kt\u00f3ra w bardzo ma\u0142ym stopniu zahacza o te najbardziej \u201cwokalne\u201d kwestie, o kt\u00f3rych dyskutuje si\u0119 ostatnio w ramach JVMa. <a href=\"https:\/\/openjdk.org\/jeps\/8280389\">Draft Classfile API<\/a> sam w sobie nie wywr\u00f3ci \u017cycia programistom \u201cprzemys\u0142owym\u201d, ale tw\u00f3rcy bibliotek dostan\u0105 kolejne ma\u0142y, przydatny dodatek do biblioteki standardowej, pozwalaj\u0105cy im na zminimalizowanie zale\u017cno\u015bci.<\/p>\n","innerContent":["\n<p>Nawet w takie spokojniejsze tygodnie jak ten, na Briana Goetza zawsze mo\u017cna liczy\u0107. Opublikowa\u0142 on bowiem, zupe\u0142nie znienacka, bardzo interesuj\u0105cego JEPa, znajduj\u0105cego si\u0119 w tematyce kt\u00f3ra w bardzo ma\u0142ym stopniu zahacza o te najbardziej \u201cwokalne\u201d kwestie, o kt\u00f3rych dyskutuje si\u0119 ostatnio w ramach JVMa. <a href=\"https:\/\/openjdk.org\/jeps\/8280389\">Draft Classfile API<\/a> sam w sobie nie wywr\u00f3ci \u017cycia programistom \u201cprzemys\u0142owym\u201d, ale tw\u00f3rcy bibliotek dostan\u0105 kolejne ma\u0142y, przydatny dodatek do biblioteki standardowej, pozwalaj\u0105cy im na zminimalizowanie zale\u017cno\u015bci.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Cytuj\u0105c tutaj samego JEPa - bardzo wiele \u201cjavowych\u201d narz\u0119dzi opiera si\u0119 na generowaniu klas - na tym polega ta ca\u0142a legendarna magia wielu narz\u0119dzi.&nbsp;<\/p>\n","innerContent":["\n<p>Cytuj\u0105c tutaj samego JEPa - bardzo wiele \u201cjavowych\u201d narz\u0119dzi opiera si\u0119 na generowaniu klas - na tym polega ta ca\u0142a legendarna magia wielu narz\u0119dzi.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":5431,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/magic.gif\" alt=\"\" class=\"wp-image-5431\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/magic.gif\" alt=\"\" class=\"wp-image-5431\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Do tej pory niezb\u0119dne by\u0142o do tego u\u017cywanie zewn\u0119trznych bibliotek. Tw\u00f3rcy JDK zdecydowali jednak ca\u0142y proces u\u0142atwi\u0107, proponuj\u0105c stworzenie wydajnego API do odczytu, zapisu i przekszta\u0142cania plik\u00f3w klas. Zalet\u0105 narz\u0119dzia, nie tak oczywist\u0105 na pierwszy rzut oka, ma by\u0107 gwarancja zgodno\u015bci z ca\u0142o\u015bci z aktualn\u0105 wersj\u0105 Javy i potencjalnymi zmianami. Brian Goetz zarzeka si\u0119 w proposalu, \u017ce celem tw\u00f3rc\u00f3w nie jest zast\u0105pienie istniej\u0105cych bibliotek, a po prostu wyj\u015bcie na przeciw tym, kt\u00f3rzy nie chc\u0105 si\u0119 zastanawia\u0107, kt\u00f3ra wersja ByteBuddy\u2019ego b\u0119dzie odpowiednia.<\/p>\n","innerContent":["\n<p>Do tej pory niezb\u0119dne by\u0142o do tego u\u017cywanie zewn\u0119trznych bibliotek. Tw\u00f3rcy JDK zdecydowali jednak ca\u0142y proces u\u0142atwi\u0107, proponuj\u0105c stworzenie wydajnego API do odczytu, zapisu i przekszta\u0142cania plik\u00f3w klas. Zalet\u0105 narz\u0119dzia, nie tak oczywist\u0105 na pierwszy rzut oka, ma by\u0107 gwarancja zgodno\u015bci z ca\u0142o\u015bci z aktualn\u0105 wersj\u0105 Javy i potencjalnymi zmianami. Brian Goetz zarzeka si\u0119 w proposalu, \u017ce celem tw\u00f3rc\u00f3w nie jest zast\u0105pienie istniej\u0105cych bibliotek, a po prostu wyj\u015bcie na przeciw tym, kt\u00f3rzy nie chc\u0105 si\u0119 zastanawia\u0107, kt\u00f3ra wersja ByteBuddy\u2019ego b\u0119dzie odpowiednia.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To oczywi\u015bcie nie tak, \u017ce Java nie posiada \u017cadnego sposobu na manipulowanie klasami. Jak \u0142adnie wyt\u0142uszcza nowy proposal, w \u201cbebechach\u201d JVMa znajduje si\u0119 biblioteka ASM (<strong>jdk<\/strong>.<strong>internal<\/strong>.<strong>org<\/strong>.<strong>objectweb<\/strong>.<strong>asm<\/strong>.ClassReader) , kt\u00f3ra u\u017cywana jest mi\u0119dzy innymi przez klasy zwi\u0105zane z Lambdami. Wi\u0105\u017ce si\u0119 z tym interesuj\u0105cy problem \u201cjajka i kury\u201d - jako, \u017ce aby sfinalizowa\u0107 wersje JDK, kod Javy musi by\u0107 stabilny, znajduj\u0105cy si\u0119 w internalach javy ASM (b\u0119d\u0105cy bibliotek\u0105) zawsze pozostaje krok do ty\u0142u w stosunku do g\u0142\u00f3wnej edycji Javy.&nbsp; Takich \u201cpomniejszych\u201d bibliotek jak Xalan czy cglib jest w JDK sporo, i nowe API ma wyczy\u015bci\u0107 internale projektu min. konsoliduj\u0105c te w\u0142a\u015bnie&nbsp;<\/p>\n","innerContent":["\n<p>To oczywi\u015bcie nie tak, \u017ce Java nie posiada \u017cadnego sposobu na manipulowanie klasami. Jak \u0142adnie wyt\u0142uszcza nowy proposal, w \u201cbebechach\u201d JVMa znajduje si\u0119 biblioteka ASM (<strong>jdk<\/strong>.<strong>internal<\/strong>.<strong>org<\/strong>.<strong>objectweb<\/strong>.<strong>asm<\/strong>.ClassReader) , kt\u00f3ra u\u017cywana jest mi\u0119dzy innymi przez klasy zwi\u0105zane z Lambdami. Wi\u0105\u017ce si\u0119 z tym interesuj\u0105cy problem \u201cjajka i kury\u201d - jako, \u017ce aby sfinalizowa\u0107 wersje JDK, kod Javy musi by\u0107 stabilny, znajduj\u0105cy si\u0119 w internalach javy ASM (b\u0119d\u0105cy bibliotek\u0105) zawsze pozostaje krok do ty\u0142u w stosunku do g\u0142\u00f3wnej edycji Javy.&nbsp; Takich \u201cpomniejszych\u201d bibliotek jak Xalan czy cglib jest w JDK sporo, i nowe API ma wyczy\u015bci\u0107 internale projektu min. konsoliduj\u0105c te w\u0142a\u015bnie&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dlaczego teraz? Tw\u00f3rcy przekonuj\u0105, \u017ce ewolucja JVMa znacznie przyspieszy\u0142a i coraz wi\u0119cej zmian odbywa si\u0119 w\u0142a\u015bnie na poziomie generowanego kodu. Dzi\u0119ki nowemu API du\u017ce inicjatywy jak np. Valhalla ma by\u0107 mniej uci\u0105\u017cliwe dla ca\u0142ego ekosystemu.\u00a0<\/p>\n","innerContent":["\n<p>Dlaczego teraz? Tw\u00f3rcy przekonuj\u0105, \u017ce ewolucja JVMa znacznie przyspieszy\u0142a i coraz wi\u0119cej zmian odbywa si\u0119 w\u0142a\u015bnie na poziomie generowanego kodu. Dzi\u0119ki nowemu API du\u017ce inicjatywy jak np. Valhalla ma by\u0107 mniej uci\u0105\u017cliwe dla ca\u0142ego ekosystemu.\u00a0<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":5432,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/giphy-4.gif\" alt=\"\" class=\"wp-image-5432\"\/><figcaption>W tym momencie zacz\u0105\u0142em si\u0119 zastanawia\u0107 - jak du\u017co rzeczy tak naprawd\u0119 zepsuje si\u0119 wraz z nadej\u015bciem Value Type? Co\u015b mi si\u0119 wydaje, \u017ce to w\u0142a\u015bnie informacja o tym zmotywowa\u0142a Briana Goetza do napisania bohatera dzisiejszego przegl\u0105du.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/giphy-4.gif\" alt=\"\" class=\"wp-image-5432\"\/><figcaption>W tym momencie zacz\u0105\u0142em si\u0119 zastanawia\u0107 - jak du\u017co rzeczy tak naprawd\u0119 zepsuje si\u0119 wraz z nadej\u015bciem Value Type? Co\u015b mi si\u0119 wydaje, \u017ce to w\u0142a\u015bnie informacja o tym zmotywowa\u0142a Briana Goetza do napisania bohatera dzisiejszego przegl\u0105du.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. Co tak naprawd\u0119 boli programist\u00f3w Kotlina po powrocie do Javy?<\/h2>\n","innerContent":["\n<h2>2. Co tak naprawd\u0119 boli programist\u00f3w Kotlina po powrocie do Javy?<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Drugi z dzisiejszych tekst\u00f3w to w zasadzie \u201cdrobnica\u201d i nic co mocno wstrz\u0105\u015bnie waszym \u017cyciem, ale jest na tyle przyst\u0119pny w lekturze, \u017ce stwierdzi\u0142em i\u017c warto si\u0119 z Wami nim podzieli\u0107. Nicolas Fr\u00e4nkel, kt\u00f3ry w ci\u0105gu \u017cycia naszego newslettera nieraz si\u0119 przez niego przewija, <a href=\"https:\/\/blog.frankel.ch\/miss-in-java-kotlin-developer\/\">opublikowa\u0142 ostatnio swoje przemy\u015blenia<\/a> o wszystkim tym co tracimy, kiedy z Kotlina jeste\u015bmy zmuszeni wraca\u0107 do Javy.<\/p>\n","innerContent":["\n<p>Drugi z dzisiejszych tekst\u00f3w to w zasadzie \u201cdrobnica\u201d i nic co mocno wstrz\u0105\u015bnie waszym \u017cyciem, ale jest na tyle przyst\u0119pny w lekturze, \u017ce stwierdzi\u0142em i\u017c warto si\u0119 z Wami nim podzieli\u0107. Nicolas Fr\u00e4nkel, kt\u00f3ry w ci\u0105gu \u017cycia naszego newslettera nieraz si\u0119 przez niego przewija, <a href=\"https:\/\/blog.frankel.ch\/miss-in-java-kotlin-developer\/\">opublikowa\u0142 ostatnio swoje przemy\u015blenia<\/a> o wszystkim tym co tracimy, kiedy z Kotlina jeste\u015bmy zmuszeni wraca\u0107 do Javy.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":5435,"width":680,"height":680,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-3.png\" alt=\"\" class=\"wp-image-5435\" width=\"680\" height=\"680\"\/><figcaption>Nicolas podczas pisania postu, nie zmy\u015blam<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-3.png\" alt=\"\" class=\"wp-image-5435\" width=\"680\" height=\"680\"\/><figcaption>Nicolas podczas pisania postu, nie zmy\u015blam<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Tekst sam w sobie nie jest czym\u015b wyj\u0105tkowym (takich, a nawet du\u017co bardziej dog\u0142\u0119bnych por\u00f3wna\u0144, w sieci nie brakuje), ale na jego korzy\u015b\u0107 przemawia zwi\u0119z\u0142o\u015b\u0107 oraz lekko\u015b\u0107 pi\u00f3ra Nicolasa. Ca\u0142o\u015b\u0107 mo\u017cna przej\u015b\u0107 w dos\u0142ownie par\u0119 minut, a autor skupia si\u0119 na prawdziwym \u201cDeveloper Experience\u201d - tych funkcjonalno\u015bciach, kt\u00f3rych realnie jest mu brak za ka\u017cdym razem gdy siada do Javy. I musz\u0119 przyzna\u0107, \u017ce ten kr\u00f3tki wyw\u00f3d o tak oklepanych tematach jak generyki i nulle moim zdaniem daje nam w przyst\u0119pny spos\u00f3b amunicj\u0119, pozwalaj\u0105c\u0105 na przekonanie kogo\u015b do dania Kotlinowi szansy. W mojej banieczce zawsze t\u0105 funkcjonalno\u015bci\u0105, kt\u00f3ra zach\u0119ca\u0142a ludzi do migracji by\u0142y Korutyny, ale bior\u0105c pod uwag\u0119 jak niewiele ludzi pisze realnie wsp\u00f3\u0142bie\u017cny kod, bez zrzucania tego na adnotacje @Asynchronous, to w\u0142a\u015bnie mniejsza ilo\u015b\u0107 b\u0142\u0119d\u00f3w dzi\u0119ki niemutowalno\u015bci czy mo\u017cliwo\u015b\u0107 obej\u015bcia upo\u015bledzonych javowych generyk\u00f3w mo\u017ce by\u0107 znacznie lepszym argumentem.&nbsp;<\/p>\n","innerContent":["\n<p>Tekst sam w sobie nie jest czym\u015b wyj\u0105tkowym (takich, a nawet du\u017co bardziej dog\u0142\u0119bnych por\u00f3wna\u0144, w sieci nie brakuje), ale na jego korzy\u015b\u0107 przemawia zwi\u0119z\u0142o\u015b\u0107 oraz lekko\u015b\u0107 pi\u00f3ra Nicolasa. Ca\u0142o\u015b\u0107 mo\u017cna przej\u015b\u0107 w dos\u0142ownie par\u0119 minut, a autor skupia si\u0119 na prawdziwym \u201cDeveloper Experience\u201d - tych funkcjonalno\u015bciach, kt\u00f3rych realnie jest mu brak za ka\u017cdym razem gdy siada do Javy. I musz\u0119 przyzna\u0107, \u017ce ten kr\u00f3tki wyw\u00f3d o tak oklepanych tematach jak generyki i nulle moim zdaniem daje nam w przyst\u0119pny spos\u00f3b amunicj\u0119, pozwalaj\u0105c\u0105 na przekonanie kogo\u015b do dania Kotlinowi szansy. W mojej banieczce zawsze t\u0105 funkcjonalno\u015bci\u0105, kt\u00f3ra zach\u0119ca\u0142a ludzi do migracji by\u0142y Korutyny, ale bior\u0105c pod uwag\u0119 jak niewiele ludzi pisze realnie wsp\u00f3\u0142bie\u017cny kod, bez zrzucania tego na adnotacje @Asynchronous, to w\u0142a\u015bnie mniejsza ilo\u015b\u0107 b\u0142\u0119d\u00f3w dzi\u0119ki niemutowalno\u015bci czy mo\u017cliwo\u015b\u0107 obej\u015bcia upo\u015bledzonych javowych generyk\u00f3w mo\u017ce by\u0107 znacznie lepszym argumentem.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zatem je\u015bli chcecie przekona\u0107 kogo\u015b, \u017ceby jednak zdecydowa\u0142 si\u0119 da\u0107 szans\u0119 ketchupowemu j\u0119zykowi (albo samemu nad tym si\u0119 zastanawiacie), my\u015bl\u0119, \u017ce warto z publikacj\u0105 Nicolasa si\u0119 zapozna\u0107.<\/p>\n","innerContent":["\n<p>Zatem je\u015bli chcecie przekona\u0107 kogo\u015b, \u017ceby jednak zdecydowa\u0142 si\u0119 da\u0107 szans\u0119 ketchupowemu j\u0119zykowi (albo samemu nad tym si\u0119 zastanawiacie), my\u015bl\u0119, \u017ce warto z publikacj\u0105 Nicolasa si\u0119 zapozna\u0107.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>3. Jak wygl\u0105da\u0142a migracja do Javy 11 w takiej firmie jak LinkedIn?<\/h2>\n","innerContent":["\n<h2>3. Jak wygl\u0105da\u0142a migracja do Javy 11 w takiej firmie jak LinkedIn?<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>M\u00f3wi si\u0119 du\u017co o tym, \u017ce im wi\u0119ksza firma, tym bardziej oci\u0105gaj\u0105 si\u0119 z tym, \u017ceby wprowadzi\u0107 nowe wersje oprogramowania na produkcj\u0119. Dodatkowo, sporo os\u00f3b twierdzi, \u017ce tak naprawd\u0119 \u00f3semka jest \u201cgood enough\u201d - w znaczeniu, \u017ce wszelkie zmiany, kt\u00f3re zosta\u0142y wprowadzone od JDK 9+ okazuj\u0105 si\u0119 by\u0107 na tyle ma\u0142e, \u017ce ca\u0142y wysi\u0142ek zwi\u0105zany z migracj\u0105 po prostu nie raz nie jest warty. Nie ma si\u0119 jednak co dziwi\u0107 - w du\u017cych firmach proces migracji nie zawsze jest bezbolesny. Dlatego te\u017c zawsze ciekawie przeczyta\u0107 analizy, jak taki proces odbywa si\u0119 w innych firmach. Ma\u0142o komu chce si\u0119 pisa\u0107 o tak \u201ctrywialnych\u201d rzeczach jak migracja Javy, dlatego (podobnie jak w przypadku zalet Kotlina) wykorzystuje okazj\u0119, \u017ceby podrzuci\u0107 tak\u0105 \u201coczywisto\u015b\u0107\u201d, kt\u00f3ra w praktyce wcale a\u017c tak oczywista nie jest.<\/p>\n","innerContent":["\n<p>M\u00f3wi si\u0119 du\u017co o tym, \u017ce im wi\u0119ksza firma, tym bardziej oci\u0105gaj\u0105 si\u0119 z tym, \u017ceby wprowadzi\u0107 nowe wersje oprogramowania na produkcj\u0119. Dodatkowo, sporo os\u00f3b twierdzi, \u017ce tak naprawd\u0119 \u00f3semka jest \u201cgood enough\u201d - w znaczeniu, \u017ce wszelkie zmiany, kt\u00f3re zosta\u0142y wprowadzone od JDK 9+ okazuj\u0105 si\u0119 by\u0107 na tyle ma\u0142e, \u017ce ca\u0142y wysi\u0142ek zwi\u0105zany z migracj\u0105 po prostu nie raz nie jest warty. Nie ma si\u0119 jednak co dziwi\u0107 - w du\u017cych firmach proces migracji nie zawsze jest bezbolesny. Dlatego te\u017c zawsze ciekawie przeczyta\u0107 analizy, jak taki proces odbywa si\u0119 w innych firmach. Ma\u0142o komu chce si\u0119 pisa\u0107 o tak \u201ctrywialnych\u201d rzeczach jak migracja Javy, dlatego (podobnie jak w przypadku zalet Kotlina) wykorzystuje okazj\u0119, \u017ceby podrzuci\u0107 tak\u0105 \u201coczywisto\u015b\u0107\u201d, kt\u00f3ra w praktyce wcale a\u017c tak oczywista nie jest.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":5436,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-4.png\" alt=\"\" class=\"wp-image-5436\"\/><figcaption>Nic nie jest proste kiedy firma ma 1000+ pracownik\u00f3w<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-4.png\" alt=\"\" class=\"wp-image-5436\"\/><figcaption>Nic nie jest proste kiedy firma ma 1000+ pracownik\u00f3w<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><a href=\"https:\/\/engineering.linkedin.com\/blog\/2022\/linkedin-s-journey-to-java-11?s=09\">Tekst LinkedIna<\/a> jest zaskakuj\u0105co ciekawy, poniewa\u017c skupia si\u0119 na mocno \u201c\u017cyciowych\u201d fragmentach ca\u0142ego procesu migracji. Dowiecie si\u0119 z niego sporo o usprawnieniach, jakie przynosi nowa Java - zw\u0142aszcza o Garbage Collectorach, kt\u00f3re mog\u0142y umkn\u0105\u0107 troch\u0119 Waszej uwadze w wyniku tego, jak bardzo \u201citeracyjnym\u201d by\u0142 proces wprowadzania do nich poprawek na prze\u0142omie kilku ostatnich wersji. Sporo miejsca po\u015bwi\u0119cono te\u017c mniej oczywistym problemom, jak cho\u0107by fakt \u017ce niekt\u00f3re API JavaEE rozpanoszy\u0142y si\u0119 w wielu du\u017cych codebase. Z mojej perspektywy najciekawszym by\u0142 jednak poruszony aspekt tego jak trudnym w utrzymaniu jest drzewo zale\u017cno\u015bci posiadaj\u0105cych r\u00f3\u017cne warianty JDK, zw\u0142aszcza te pochodz\u0105ce ze \u015bwiata przed i po wprowadzeniu modu\u0142\u00f3w. Podobnie jak w przypadku powy\u017cszego tekstu o Kotlinie, ca\u0142o\u015b\u0107 okaza\u0142a si\u0119 by\u0107 znacznie bardziej interesuj\u0105ca ni\u017c kaza\u0142 si\u0119 spodziewa\u0107 tytu\u0142.<\/p>\n","innerContent":["\n<p><a href=\"https:\/\/engineering.linkedin.com\/blog\/2022\/linkedin-s-journey-to-java-11?s=09\">Tekst LinkedIna<\/a> jest zaskakuj\u0105co ciekawy, poniewa\u017c skupia si\u0119 na mocno \u201c\u017cyciowych\u201d fragmentach ca\u0142ego procesu migracji. Dowiecie si\u0119 z niego sporo o usprawnieniach, jakie przynosi nowa Java - zw\u0142aszcza o Garbage Collectorach, kt\u00f3re mog\u0142y umkn\u0105\u0107 troch\u0119 Waszej uwadze w wyniku tego, jak bardzo \u201citeracyjnym\u201d by\u0142 proces wprowadzania do nich poprawek na prze\u0142omie kilku ostatnich wersji. Sporo miejsca po\u015bwi\u0119cono te\u017c mniej oczywistym problemom, jak cho\u0107by fakt \u017ce niekt\u00f3re API JavaEE rozpanoszy\u0142y si\u0119 w wielu du\u017cych codebase. Z mojej perspektywy najciekawszym by\u0142 jednak poruszony aspekt tego jak trudnym w utrzymaniu jest drzewo zale\u017cno\u015bci posiadaj\u0105cych r\u00f3\u017cne warianty JDK, zw\u0142aszcza te pochodz\u0105ce ze \u015bwiata przed i po wprowadzeniu modu\u0142\u00f3w. Podobnie jak w przypadku powy\u017cszego tekstu o Kotlinie, ca\u0142o\u015b\u0107 okaza\u0142a si\u0119 by\u0107 znacznie bardziej interesuj\u0105ca ni\u017c kaza\u0142 si\u0119 spodziewa\u0107 tytu\u0142.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Polecam, w ko\u0144cu jest to ta unikalna mo\u017cliwo\u015b\u0107, \u017ce w nikim nie wzbudzi zaniepokojenie fakt, \u017ce w godzinach pracy czytacie LinkedIna.<\/p>\n","innerContent":["\n<p>Polecam, w ko\u0144cu jest to ta unikalna mo\u017cliwo\u015b\u0107, \u017ce w nikim nie wzbudzi zaniepokojenie fakt, \u017ce w godzinach pracy czytacie LinkedIna.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":5437,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-5.png\" alt=\"\" class=\"wp-image-5437\"\/><figcaption>\u201cTak, panie szefie, wchodz\u0119 na LinkedIna \u017ceby dowiedzie\u0107 si\u0119 jak now\u0105 Jav\u0119 zainstalowa\u0107\u201c<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-5.png\" alt=\"\" class=\"wp-image-5437\"\/><figcaption>\u201cTak, panie szefie, wchodz\u0119 na LinkedIna \u017ceby dowiedzie\u0107 si\u0119 jak now\u0105 Jav\u0119 zainstalowa\u0107\u201c<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A jaki jest dla Was dobry pow\u00f3d do przepisania si\u0119 na now\u0105 Jav\u0119? Dla kolegi pytam \ud83d\ude05<\/p>\n","innerContent":["\n<p>A jaki jest dla Was dobry pow\u00f3d do przepisania si\u0119 na now\u0105 Jav\u0119? Dla kolegi pytam \ud83d\ude05<\/p>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9954","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=9954"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9954\/revisions"}],"predecessor-version":[{"id":10480,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9954\/revisions\/10480"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/8747"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=9954"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=9954"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=9954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}