{"id":10079,"date":"2021-09-21T15:37:19","date_gmt":"2021-09-21T13:37:19","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/"},"modified":"2022-09-19T13:10:48","modified_gmt":"2022-09-19T11:10:48","slug":"jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/","title":{"rendered":"JVM Tuesday vol.56 \u2013 Java 17&#8230; again. A tak\u017ce Refleksja w czasie kompilacji \ud83e\udd2f"},"content":{"rendered":"\n<h2 id=\"1-java-17-najciekawsze-ogloszenia-od-oracle\" data-num=1><strong>1. Java 17 &#8211; najciekawsze og\u0142oszenia od Oracle<\/strong> \ud83e\udddd\u200d\u2640\ufe0f<\/h2>\n\n\n\n<p>Zanim przejdziemy do g\u0142osu spo\u0142eczno\u015bci, skupmy si\u0119 na zapowiedziach od samego Oracle &#8211; mamy bowiem do czynienia a\u017c z trzema du\u017cymi. Zmian\u0105, kt\u00f3ra w najwi\u0119kszym stopniu wp\u0142ynie na \u017cycie programist\u00f3w, b\u0119dzie z pewno\u015bci\u0105 zwi\u0119kszenie cz\u0119stotliwo\u015bci wyda\u0144 LTS (Long-Time Support). Do tej pory ukazywa\u0142y si\u0119 one co trzy lata &#8211; aktualnie okres ten zostanie skr\u00f3cony do dw\u00f3ch. Ma to uzasadnienie w badaniach przeprowadzonych przez Oracle. Mimo, i\u017c wersje po\u015brednie maj\u0105 swoich amator\u00f3w, to jednak wi\u0119kszo\u015b\u0107 du\u017cych firm zdecydowa\u0142a si\u0119 na u\u017cywanie wyda\u0144 z d\u0142ugim wsparciem. Skr\u00f3cenie okresu mi\u0119dzy wersjami jest wi\u0119c uk\u0142onem w stron\u0119 spo\u0142eczno\u015bci i pozwoli na cz\u0119stsze dostarczanie nowych funkcji, w mniejszych \u201cpaczkach\u201d. Dzi\u0119ki temu, ka\u017cda aktualizacja powinna by\u0107 te\u017c \u0142atwiejsza.<\/p>\n\n\n\n<p>Jednak to nie koniec zmian ze strony Oracle. Firma zaskoczy\u0142a wszystkich ponownie kombinuj\u0105c z licencj\u0105 JDK &#8211; postanowili dystrybuowa\u0107 Oracle JDK (czyli swoj\u0105 edycj\u0119 Javy &#8211; nie myli\u0107 z Oracle OpenJDK), przy u\u017cyciu licencji o wdzi\u0119cznej nazwie <a href=\"https:\/\/www.oracle.com\/downloads\/licenses\/no-fee-license.html\">&#8222;Oracle No-Fee Terms and Conditions&#8221;<\/a>. Ma ona zezwala\u0107 na bezp\u0142atne korzystanie z produktu wszystkim u\u017cytkownikom, nawet do u\u017cytku komercyjnego i produkcyjnego. Nie pozwala jednak na redystrybucje za op\u0142at\u0105 &#8211; czyli prawdopodobnie nie b\u0119dzie mog\u0142a by\u0107 zastosowana przez vendor\u00f3w chmurowych. \u017beby jednak nie by\u0142o za mi\u0142o &#8211; nowe edycje Javy b\u0119d\u0105 dost\u0119pne za darmo (w rozumieniu postanowie\u0144 licencji NFTC) wy\u0142\u0105cznie przez rok. Po tym okresie ka\u017cde wydanie zostanie przetransformowane do <a href=\"https:\/\/www.oracle.com\/downloads\/licenses\/javase-license1.html\">OTN<\/a> &#8211; poprzedniej, bardziej restrykcyjnej licencji. Je\u017celi wi\u0119c nie stawiacie na ci\u0105g\u0142\u0105 aktualizacj\u0119 wyda\u0144 to nowa licencja b\u0119dzie dla Was bardziej jak garniec miodu i forma roszerzonego dema.<\/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\/2021\/09\/mny.gif\" alt=\"\" class=\"wp-image-2471\" width=\"523\" height=\"293\"\/><figcaption>Ciekawostka &#8211; GraalVM Enterprise dalej jest dost\u0119pny za op\u0142at\u0105. Czy\u017cby Oracle czu\u0142o, \u017ce ten produkt potencjalnie rokuje lepiej jako \u017ar\u00f3d\u0142o przychodu?<\/figcaption><\/figure><\/div>\n\n\n<p>Ostatni\u0105 zapowiedzi\u0105 ze strony Oracle jest nowy portal dla spo\u0142eczno\u015bci programist\u00f3w <a href=\"https:\/\/dev.java\/\">dev.java<\/a>. I o ile wygl\u0105da on dosy\u0107\u2026 siermi\u0119\u017cnie, to je\u015bli chodzi o zawarto\u015b\u0107 jawi si\u0119 jako najlepsze (a przynajmniej najlepiej skondensowane i najwygodniejsze) \u017ar\u00f3d\u0142o wiedzy o Javie jako j\u0119zyku. Znajdziecie tam nie tylko dokumentacje j\u0119zyka, ale tak\u017ce uzyskacie mo\u017cliwo\u015b\u0107 \u015bci\u0105gni\u0119cia najnowszych binarek JDK. Strona zawiera tak\u017ce mas\u0119 artyku\u0142\u00f3w poradnikowych, odno\u015bnik\u00f3w do zewn\u0119trznych zasob\u00f3w (jak np. podcasty i videocasty), a ju\u017c nied\u0142ugo pojawi\u0107 ma si\u0119 te\u017c interaktywny shell, pozwalaj\u0105cy na pobawienie si\u0119 j\u0119zykiem z poziomu przegl\u0105darki.<\/p>\n\n\n\n<p>Jako, \u017ce ju\u017c wspomnieli\u015bmy oraclowe podcasty&nbsp; &#8211; klasycznie ju\u017c polecamy inside.java. Je\u017celi preferujecie form\u0119 \u201cgadaj\u0105cych g\u0142\u00f3w\u201d, jest to chyba najlepsze miejsce w kt\u00f3rym mo\u017cecie dowiedzie\u0107 si\u0119 szczeg\u00f3\u0142\u00f3w na temat nowego wydania.<\/p>\n\n\n\n<p><strong>\u0179r\u00f3d\u0142a<\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/blogs.oracle.com\/java\/post\/moving-the-jdk-to-a-two-year-lts-cadence\">Moving the JDK to a Two Year LTS Cadence &#8211; Java<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/java\/post\/free-java-license\">Introducing the Free Java License<\/a><\/li><li><a href=\"https:\/\/www.zdnet.com\/article\/oracle-adds-improvement-cream-to-the-newest-lts-version-of-java\/#ftag=RSSbaffb68\">https:\/\/www.zdnet.com\/article\/oracle-adds-improvement-cream-to-the-newest-lts-version-of-java\/<\/a><\/li><li><a href=\"https:\/\/dev.java\/\">Dev.java: The Destination for Java Developers<\/a><\/li><li><a href=\"https:\/\/www.theregister.com\/2021\/09\/16\/oracle_jdk_free_license\/\">Oracle sets its own JDK free, sort of, for a while<\/a><\/li><li><a href=\"https:\/\/inside.java\/2021\/09\/15\/insidejava-newscast-012\/\">Faster lts and free jdk with java 17 &#8211; inside java newscast #12<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"2-java-17-najciekawsze-posty-ze-strony-spolecznosci\" data-num=2><strong>2. Java 17 &#8211; najciekawsze posty ze strony spo\u0142eczno\u015bci<\/strong> \ud83e\uddd1\u200d\ud83d\udcbb<\/h2>\n\n\n\n<p>Jak ju\u017c wspomnieli\u015bmy we wst\u0119pie, oczywi\u015bcie nie tylko Oracle postanowi\u0142 o\u015bwietli\u0107 si\u0119 w blasku nowego wydania. Mam wra\u017cenie, \u017ce spo\u0142aczeno\u015b\u0107 od dawna bawi\u0142a si\u0119 nowym LTSem i przygotowywa\u0142a materia\u0142y, aby m\u00f3c je wypu\u015bci\u0107 jak najbli\u017cej samej premiery nowej wersji j\u0119zyka.<\/p>\n\n\n\n<p>Zatem klasycznie ju\u017c mo\u017cemy dosta\u0107 przegl\u0105d nowo\u015bci w zakresie bezpiecze\u0144stwa, regularnie dostarczanych przez Seana Mullana. Mamy do czynienia z do\u015b\u0107 wyj\u0105tkow\u0105 sytuacj\u0105 &#8211; dawno nie by\u0142o wydania, w kt\u00f3rym zmiany w tym zakresie by\u0142yby a\u017c tak \u201cmedialne\u201d. Mam tu na my\u015bli temat SecurityManagera, kt\u00f3rego deprekacja nale\u017cy do najbardziej kontrowersyjnych aspekt\u00f3w nowego wydania. Sean zwraca jednak r\u00f3wnie\u017c uwag\u0119, \u017ce zar\u00f3wno kolejny krok w stron\u0119 pe\u0142nej enkapsulacji \u201cj\u0105dra\u201d Javy, jak i sealed classy, maj\u0105 bardzo pozytywny wp\u0142yw na bezpiecze\u0144stwo aplikacji. Nie brak\u0142o te\u017c dobrego s\u0142owa w kierunku ulepszenia <a href=\"https:\/\/openjdk.java.net\/jeps\/415\">filtr\u00f3w deserializacyjnych<\/a>. Poza wspomnianymi du\u017cymi JEPami, post stanowi tak\u017ce kumulacj\u0119 wszelkich drobniejszych zmian w kontek\u015bcie kryptografii &#8211; a tych jak zawsze nie brakuje. Po szczeg\u00f3\u0142y zapraszam do <a href=\"https:\/\/seanjmullan.org\/blog\/2021\/09\/14\/jdk17\">oryginalnego posta<\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a885aa2f979.gif\" alt=\"For The Good Of The Country - Dilbert by Scott Adams\"\/><\/figure><\/div>\n\n\n<p>Po wzi\u0119ciu pod lup\u0119 aspektu bezpiecze\u0144sta, nast\u0119pnym przystankiem b\u0119dzie wydajno\u015b\u0107. Okazuje si\u0119 bowiem, \u017ce i pod tym wzgl\u0119dem JDK 17 przynosi interesuj\u0105ce zmiany. OptaPlanner &#8211; firma zajmuj\u0105ca si\u0119 rozwi\u0105zywaniem odpowiednik\u00f3w \u201cproblemu plecakowego\u201d z realnego \u015bwiata (bo niby czym innym jest efektywne zarz\u0105dzanie zasobami w du\u017cych przedsi\u0119biorstwach?) &#8211; <a href=\"https:\/\/www.optaplanner.org\/blog\/2021\/09\/15\/HowMuchFasterIsJava17.html\">zdecydowa\u0142a si\u0119 przetestowa\u0107<\/a>, jaki jest uzysk z migracji na nowego LTSa. Wed\u0142ug ich test\u00f3w mo\u017cemy m\u00f3wi\u0107 o niemal dziesi\u0119cioprocentowym wzro\u015bcie wydajno\u015bci w stosunku do JDK 11. Oczywi\u015bcie, jak to z benchmarkami, sugeruj\u0119 patrze\u0107 na ich wyniki z przymr\u00f3\u017ceniem oka. Trzeba jednak przyzna\u0107, \u017ce firma do\u015b\u0107 dobrze opisa\u0142a swoj\u0105 metodologi\u0119, wi\u0119c na pewno warto cho\u0107 spojrze\u0107 na ich rezultaty. Zw\u0142aszcza, \u017ce por\u00f3wnuj\u0105 te\u017c dzia\u0142anie poszczeg\u00f3lnych GC ju\u017c w ramach samej Javy 17.&nbsp;<\/p>\n\n\n\n<p>A jak ju\u017c o \u201cod\u015bmiecaczach\u201d mowa &#8211; <a href=\"https:\/\/tschatzl.github.io\/2021\/09\/16\/jdk17-g1-parallel-gc-changes.html\">bardzo dobr\u0105 analiz\u0119 zmian<\/a> w takowych dostarczy\u0142 blog Thomasa Schatzla, jednego z kontrybutor\u00f3w Javy. Skupia si\u0119 on na szczeg\u00f3\u0142ach Parallel GC oraz G1, przedstawiaj\u0105c jakie optmalizacje zosta\u0142y do nich wprowadzone w celu uzyskania przyspieszenia, o kt\u00f3rym mieli\u015bcie okazje dopiero co przeczyta\u0107. Je\u015bli chodzi o zmiany w Shenandoah, o nich mo\u017cecie dowiedzie\u0107 si\u0119 te\u017c ze <a href=\"https:\/\/developers.redhat.com\/articles\/2021\/09\/16\/shenandoah-openjdk-17-sub-millisecond-gc-pauses\">strony RedHata<\/a>. Je\u017celi za\u015b jeste\u015bcie ciekawi detali tego, co dzieje si\u0119 obecnie w ZGC &#8211; ju\u017c nied\u0142ugo powinno pojawi\u0107 si\u0119 takowe <a href=\"https:\/\/malloc.se\/\">na blogu Pera Lidena<\/a>. Na dzie\u0144 pisania tej edycji jest ona ci\u0105gle \u201cw toku\u201d. Warto jednak czeka\u0107, gdy\u017c Per zawsze bardzo przejrzy\u015bcie opisuje zakres wprowadzonych zmian.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/Epsilon.jpg\" alt=\"The Best Garbage Collection for JMeter | DevsDay.ru\"\/><figcaption>Akurat nie uda\u0142o mi si\u0119 znale\u017a\u0107 \u017cadnego dobrego opracowania <a href=\"https:\/\/www.baeldung.com\/jvm-epsilon-gc-garbage-collector\">Epsilona<\/a>&#8230;<\/figcaption><\/figure><\/div>\n\n\n<p><strong>\u0179r\u00f3d\u0142a<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/openjdk.java.net\/jeps\/415\">JEP 415: Context-Specific Deserialization Filters<\/a><\/li><li><a href=\"https:\/\/seanjmullan.org\/blog\/2021\/09\/14\/jdk17\">JDK 17 Security Enhancements<\/a><\/li><li><a href=\"https:\/\/www.optaplanner.org\/blog\/2021\/09\/15\/HowMuchFasterIsJava17.html\">How much faster is Java 17?<\/a><\/li><li><a href=\"https:\/\/tschatzl.github.io\/2021\/09\/16\/jdk17-g1-parallel-gc-changes.html\">JDK 17 G1\/Parallel GC changes<\/a><\/li><li><a href=\"https:\/\/developers.redhat.com\/articles\/2021\/09\/16\/shenandoah-openjdk-17-sub-millisecond-gc-pauses\">Shenandoah in OpenJDK 17: Sub-millisecond GC pauses<\/a><\/li><li><a href=\"https:\/\/malloc.se\/\">Per Liden | Blog<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"3-kotlin-reflekt-refleksja-w-czasie-kompilacji\" data-num=3><strong>3. Kotlin Reflekt &#8211; Refleksja w czasie kompilacji<\/strong> \ud83e\udd2f<\/h2>\n\n\n\n<p>Ok, na koniec, w celu odpocznku od tej ca\u0142ej Javy 17 &#8211; mamy zapowied\u017a wyjatkowo ciekawej biblioteki od JetBrains mog\u0105cej sporo namiesza\u0107 w kotlinowym ekosystemie.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/JetBrains-Research\/reflekt\">Reflekt<\/a> (bo o nim tu mowa) to biblioteka do refleksji dzia\u0142aj\u0105ca w czasie kompilacji (!). Zamiast polega\u0107 na JVMowym mechani\u017amie refleksji, Reflekt wykonuje analiz\u0119 statyczn\u0105 kodu aplikacji za pomoc\u0105 kotlinowego kompilatora, umo\u017cliwiaj\u0105c dalsze u\u017cywanie znajomego i powszechnie u\u017cywanego Reflection API odbi\u0107, bez faktycznego u\u017cywania refleksji. Na dobr\u0105 spraw\u0119, mamy do czynienia z generycznym syntezatorem efekt\u00f3w dzia\u0142ania tego mechanizmu, uruchamianym podczas tworzenia binarki.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>val objects1 = Reflekt.objects().withSupertype&lt;AInterface&gt;()\n        .withAnnotations&lt;AInterface&gt;(FirstAnnotation::class, SecondAnnotation::class).toList()<\/code><\/pre>\n\n\n\n<p>Projekt jest efektem wsp\u00f3\u0142pracy dzia\u0142u R&amp;D JetBrains oraz zespo\u0142u pracuj\u0105cego nad <a href=\"https:\/\/github.com\/JetBrains\/kotless\">Kotless<\/a> (kotlinowym frameworkiem serverless). Jak pisz\u0105 sami tw\u00f3rcy, g\u0142\u00f3wnym powodem powstania Reflekta by\u0142a ch\u0119\u0107 obs\u0142ugi GraalVM w aplikacjach serverless, ale Reflekt ma te\u017c u\u0142atwi\u0107 u\u017cycie tej technologii w np. w bardzo mocno opartym na refleksji Springu. Do tej pory ka\u017cdy projekt, kt\u00f3ry chcia\u0142 pozby\u0107 si\u0119 refleksji musia\u0142 samodzielnie \u201chakowa\u0107\u201d refleksje za pomoc\u0105 np. annotation processor\u00f3w. Reflekt stanowi\u0107 ma reu\u017cywalny komponent.<\/p>\n\n\n\n<p>Je\u015bli chcecie zobaczy\u0107 jak to dzia\u0142a &#8211; przyk\u0142ady znajdziecie <a href=\"https:\/\/github.com\/JetBrains-Research\/reflekt\/tree\/master\/examples\">tutaj<\/a>. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/image-3-1024x572.png\" alt=\"\" class=\"wp-image-2470\" width=\"522\" height=\"291\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/image-3-1024x572.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/image-3-300x168.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/image-3-768x429.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/image-3.png 1382w\" sizes=\"auto, (max-width: 522px) 100vw, 522px\" \/><figcaption>Brzmi jak magia &#8211; mam nadziej\u0119, \u017ce w praktyce b\u0119dzie zachowywa\u0107 si\u0119 r\u00f3wnie dobrze.<\/figcaption><\/figure><\/div>\n\n\n<p>&nbsp;<br><strong>\u0179r\u00f3d\u0142a<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/github.com\/JetBrains-Research\/reflekt\">JetBrains-Research\/reflekt: A plugin for Kotlin compiler for compile-time reflection<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Tydzie\u0144 temu mieli\u015bmy okazj\u0119 poinformowa\u0107 wszystkich o premierze Javy 17. Wtedy jednak jeszcze nie spodziewa\u0142em si\u0119 takiego wysypu publikacji dotycz\u0105cych tego wydania. Oracle klasycznie wykorzysta\u0142o nowe JDK do obwieszczenia kilku interesuj\u0105cych zmian, ale tym razem doczekali\u015bmy r\u00f3wnie\u017c kilku ciekawych, zewn\u0119trznych publikacji.<\/p>\n","protected":false},"author":10,"featured_media":7703,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[259],"tags":[],"class_list":["post-10079","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm-pl"],"acf":{"estimated_reading_time":"6","weekly_summary":true,"feature_image_blog":false,"push_notification_image":false,"feature_image_visible":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JVM Tuesday vol.56 \u2013 Java 17... again. A tak\u017ce Refleksja w czasie kompilacji \ud83e\udd2f - 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-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol.56 \u2013 Java 17... again. A tak\u017ce Refleksja w czasie kompilacji \ud83e\udd2f - Vived\" \/>\n<meta property=\"og:description\" content=\"Tydzie\u0144 temu mieli\u015bmy okazj\u0119 poinformowa\u0107 wszystkich o premierze Javy 17. Wtedy jednak jeszcze nie spodziewa\u0142em si\u0119 takiego wysypu publikacji dotycz\u0105cych tego wydania. Oracle klasycznie wykorzysta\u0142o nowe JDK do obwieszczenia kilku interesuj\u0105cych zmian, ale tym razem doczekali\u015bmy r\u00f3wnie\u017c kilku ciekawych, zewn\u0119trznych publikacji.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-21T13:37:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-21-at-15.36.10.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2396\" \/>\n\t<meta property=\"og:image:height\" content=\"1246\" \/>\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-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol.56 \u2013 Java 17&#8230; again. A tak\u017ce Refleksja w czasie kompilacji \ud83e\udd2f\",\"datePublished\":\"2021-09-21T13:37:19+00:00\",\"dateModified\":\"2022-09-19T11:10:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/\"},\"wordCount\":1294,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-21-at-15.36.10.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/\",\"name\":\"JVM Tuesday vol.56 \u2013 Java 17... again. A tak\u017ce Refleksja w czasie kompilacji \ud83e\udd2f - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-21-at-15.36.10.png\",\"datePublished\":\"2021-09-21T13:37:19+00:00\",\"dateModified\":\"2022-09-19T11:10:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-21-at-15.36.10.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-21-at-15.36.10.png\",\"width\":2396,\"height\":1246},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol.56 \u2013 Java 17&#8230; again. A tak\u017ce Refleksja w czasie kompilacji \ud83e\udd2f\"}]},{\"@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.56 \u2013 Java 17... again. A tak\u017ce Refleksja w czasie kompilacji \ud83e\udd2f - 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-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol.56 \u2013 Java 17... again. A tak\u017ce Refleksja w czasie kompilacji \ud83e\udd2f - Vived","og_description":"Tydzie\u0144 temu mieli\u015bmy okazj\u0119 poinformowa\u0107 wszystkich o premierze Javy 17. Wtedy jednak jeszcze nie spodziewa\u0142em si\u0119 takiego wysypu publikacji dotycz\u0105cych tego wydania. Oracle klasycznie wykorzysta\u0142o nowe JDK do obwieszczenia kilku interesuj\u0105cych zmian, ale tym razem doczekali\u015bmy r\u00f3wnie\u017c kilku ciekawych, zewn\u0119trznych publikacji.","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/","og_site_name":"Vived","article_published_time":"2021-09-21T13:37:19+00:00","article_modified_time":"2022-09-19T11:10:48+00:00","og_image":[{"width":2396,"height":1246,"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-21-at-15.36.10.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-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol.56 \u2013 Java 17&#8230; again. A tak\u017ce Refleksja w czasie kompilacji \ud83e\udd2f","datePublished":"2021-09-21T13:37:19+00:00","dateModified":"2022-09-19T11:10:48+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/"},"wordCount":1294,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-21-at-15.36.10.png","articleSection":["JVM"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/","name":"JVM Tuesday vol.56 \u2013 Java 17... again. A tak\u017ce Refleksja w czasie kompilacji \ud83e\udd2f - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-21-at-15.36.10.png","datePublished":"2021-09-21T13:37:19+00:00","dateModified":"2022-09-19T11:10:48+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-21-at-15.36.10.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-21-at-15.36.10.png","width":2396,"height":1246},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-56-java-17-again-a-takze-refleksja-w-czasie-kompilacji\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol.56 \u2013 Java 17&#8230; again. A tak\u017ce Refleksja w czasie kompilacji \ud83e\udd2f"}]},{"@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><strong>1. Java 17 - najciekawsze og\u0142oszenia od Oracle<\/strong> \ud83e\udddd\u200d\u2640\ufe0f<\/h2>\n","innerContent":["\n<h2><strong>1. Java 17 - najciekawsze og\u0142oszenia od Oracle<\/strong> \ud83e\udddd\u200d\u2640\ufe0f<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zanim przejdziemy do g\u0142osu spo\u0142eczno\u015bci, skupmy si\u0119 na zapowiedziach od samego Oracle - mamy bowiem do czynienia a\u017c z trzema du\u017cymi. Zmian\u0105, kt\u00f3ra w najwi\u0119kszym stopniu wp\u0142ynie na \u017cycie programist\u00f3w, b\u0119dzie z pewno\u015bci\u0105 zwi\u0119kszenie cz\u0119stotliwo\u015bci wyda\u0144 LTS (Long-Time Support). Do tej pory ukazywa\u0142y si\u0119 one co trzy lata - aktualnie okres ten zostanie skr\u00f3cony do dw\u00f3ch. Ma to uzasadnienie w badaniach przeprowadzonych przez Oracle. Mimo, i\u017c wersje po\u015brednie maj\u0105 swoich amator\u00f3w, to jednak wi\u0119kszo\u015b\u0107 du\u017cych firm zdecydowa\u0142a si\u0119 na u\u017cywanie wyda\u0144 z d\u0142ugim wsparciem. Skr\u00f3cenie okresu mi\u0119dzy wersjami jest wi\u0119c uk\u0142onem w stron\u0119 spo\u0142eczno\u015bci i pozwoli na cz\u0119stsze dostarczanie nowych funkcji, w mniejszych \u201cpaczkach\u201d. Dzi\u0119ki temu, ka\u017cda aktualizacja powinna by\u0107 te\u017c \u0142atwiejsza.<\/p>\n","innerContent":["\n<p>Zanim przejdziemy do g\u0142osu spo\u0142eczno\u015bci, skupmy si\u0119 na zapowiedziach od samego Oracle - mamy bowiem do czynienia a\u017c z trzema du\u017cymi. Zmian\u0105, kt\u00f3ra w najwi\u0119kszym stopniu wp\u0142ynie na \u017cycie programist\u00f3w, b\u0119dzie z pewno\u015bci\u0105 zwi\u0119kszenie cz\u0119stotliwo\u015bci wyda\u0144 LTS (Long-Time Support). Do tej pory ukazywa\u0142y si\u0119 one co trzy lata - aktualnie okres ten zostanie skr\u00f3cony do dw\u00f3ch. Ma to uzasadnienie w badaniach przeprowadzonych przez Oracle. Mimo, i\u017c wersje po\u015brednie maj\u0105 swoich amator\u00f3w, to jednak wi\u0119kszo\u015b\u0107 du\u017cych firm zdecydowa\u0142a si\u0119 na u\u017cywanie wyda\u0144 z d\u0142ugim wsparciem. Skr\u00f3cenie okresu mi\u0119dzy wersjami jest wi\u0119c uk\u0142onem w stron\u0119 spo\u0142eczno\u015bci i pozwoli na cz\u0119stsze dostarczanie nowych funkcji, w mniejszych \u201cpaczkach\u201d. Dzi\u0119ki temu, ka\u017cda aktualizacja powinna by\u0107 te\u017c \u0142atwiejsza.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jednak to nie koniec zmian ze strony Oracle. Firma zaskoczy\u0142a wszystkich ponownie kombinuj\u0105c z licencj\u0105 JDK - postanowili dystrybuowa\u0107 Oracle JDK (czyli swoj\u0105 edycj\u0119 Javy - nie myli\u0107 z Oracle OpenJDK), przy u\u017cyciu licencji o wdzi\u0119cznej nazwie <a href=\"https:\/\/www.oracle.com\/downloads\/licenses\/no-fee-license.html\">\"Oracle No-Fee Terms and Conditions\"<\/a>. Ma ona zezwala\u0107 na bezp\u0142atne korzystanie z produktu wszystkim u\u017cytkownikom, nawet do u\u017cytku komercyjnego i produkcyjnego. Nie pozwala jednak na redystrybucje za op\u0142at\u0105 - czyli prawdopodobnie nie b\u0119dzie mog\u0142a by\u0107 zastosowana przez vendor\u00f3w chmurowych. \u017beby jednak nie by\u0142o za mi\u0142o - nowe edycje Javy b\u0119d\u0105 dost\u0119pne za darmo (w rozumieniu postanowie\u0144 licencji NFTC) wy\u0142\u0105cznie przez rok. Po tym okresie ka\u017cde wydanie zostanie przetransformowane do <a href=\"https:\/\/www.oracle.com\/downloads\/licenses\/javase-license1.html\">OTN<\/a> - poprzedniej, bardziej restrykcyjnej licencji. Je\u017celi wi\u0119c nie stawiacie na ci\u0105g\u0142\u0105 aktualizacj\u0119 wyda\u0144 to nowa licencja b\u0119dzie dla Was bardziej jak garniec miodu i forma roszerzonego dema.<\/p>\n","innerContent":["\n<p>Jednak to nie koniec zmian ze strony Oracle. Firma zaskoczy\u0142a wszystkich ponownie kombinuj\u0105c z licencj\u0105 JDK - postanowili dystrybuowa\u0107 Oracle JDK (czyli swoj\u0105 edycj\u0119 Javy - nie myli\u0107 z Oracle OpenJDK), przy u\u017cyciu licencji o wdzi\u0119cznej nazwie <a href=\"https:\/\/www.oracle.com\/downloads\/licenses\/no-fee-license.html\">\"Oracle No-Fee Terms and Conditions\"<\/a>. Ma ona zezwala\u0107 na bezp\u0142atne korzystanie z produktu wszystkim u\u017cytkownikom, nawet do u\u017cytku komercyjnego i produkcyjnego. Nie pozwala jednak na redystrybucje za op\u0142at\u0105 - czyli prawdopodobnie nie b\u0119dzie mog\u0142a by\u0107 zastosowana przez vendor\u00f3w chmurowych. \u017beby jednak nie by\u0142o za mi\u0142o - nowe edycje Javy b\u0119d\u0105 dost\u0119pne za darmo (w rozumieniu postanowie\u0144 licencji NFTC) wy\u0142\u0105cznie przez rok. Po tym okresie ka\u017cde wydanie zostanie przetransformowane do <a href=\"https:\/\/www.oracle.com\/downloads\/licenses\/javase-license1.html\">OTN<\/a> - poprzedniej, bardziej restrykcyjnej licencji. Je\u017celi wi\u0119c nie stawiacie na ci\u0105g\u0142\u0105 aktualizacj\u0119 wyda\u0144 to nowa licencja b\u0119dzie dla Was bardziej jak garniec miodu i forma roszerzonego dema.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":2471,"width":523,"height":293,"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\/2021\/09\/mny.gif\" alt=\"\" class=\"wp-image-2471\" width=\"523\" height=\"293\"\/><figcaption>Ciekawostka - GraalVM Enterprise dalej jest dost\u0119pny za op\u0142at\u0105. Czy\u017cby Oracle czu\u0142o, \u017ce ten produkt potencjalnie rokuje lepiej jako \u017ar\u00f3d\u0142o przychodu?<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/mny.gif\" alt=\"\" class=\"wp-image-2471\" width=\"523\" height=\"293\"\/><figcaption>Ciekawostka - GraalVM Enterprise dalej jest dost\u0119pny za op\u0142at\u0105. Czy\u017cby Oracle czu\u0142o, \u017ce ten produkt potencjalnie rokuje lepiej jako \u017ar\u00f3d\u0142o przychodu?<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ostatni\u0105 zapowiedzi\u0105 ze strony Oracle jest nowy portal dla spo\u0142eczno\u015bci programist\u00f3w <a href=\"https:\/\/dev.java\/\">dev.java<\/a>. I o ile wygl\u0105da on dosy\u0107\u2026 siermi\u0119\u017cnie, to je\u015bli chodzi o zawarto\u015b\u0107 jawi si\u0119 jako najlepsze (a przynajmniej najlepiej skondensowane i najwygodniejsze) \u017ar\u00f3d\u0142o wiedzy o Javie jako j\u0119zyku. Znajdziecie tam nie tylko dokumentacje j\u0119zyka, ale tak\u017ce uzyskacie mo\u017cliwo\u015b\u0107 \u015bci\u0105gni\u0119cia najnowszych binarek JDK. Strona zawiera tak\u017ce mas\u0119 artyku\u0142\u00f3w poradnikowych, odno\u015bnik\u00f3w do zewn\u0119trznych zasob\u00f3w (jak np. podcasty i videocasty), a ju\u017c nied\u0142ugo pojawi\u0107 ma si\u0119 te\u017c interaktywny shell, pozwalaj\u0105cy na pobawienie si\u0119 j\u0119zykiem z poziomu przegl\u0105darki.<\/p>\n","innerContent":["\n<p>Ostatni\u0105 zapowiedzi\u0105 ze strony Oracle jest nowy portal dla spo\u0142eczno\u015bci programist\u00f3w <a href=\"https:\/\/dev.java\/\">dev.java<\/a>. I o ile wygl\u0105da on dosy\u0107\u2026 siermi\u0119\u017cnie, to je\u015bli chodzi o zawarto\u015b\u0107 jawi si\u0119 jako najlepsze (a przynajmniej najlepiej skondensowane i najwygodniejsze) \u017ar\u00f3d\u0142o wiedzy o Javie jako j\u0119zyku. Znajdziecie tam nie tylko dokumentacje j\u0119zyka, ale tak\u017ce uzyskacie mo\u017cliwo\u015b\u0107 \u015bci\u0105gni\u0119cia najnowszych binarek JDK. Strona zawiera tak\u017ce mas\u0119 artyku\u0142\u00f3w poradnikowych, odno\u015bnik\u00f3w do zewn\u0119trznych zasob\u00f3w (jak np. podcasty i videocasty), a ju\u017c nied\u0142ugo pojawi\u0107 ma si\u0119 te\u017c interaktywny shell, pozwalaj\u0105cy na pobawienie si\u0119 j\u0119zykiem z poziomu przegl\u0105darki.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jako, \u017ce ju\u017c wspomnieli\u015bmy oraclowe podcasty&nbsp; - klasycznie ju\u017c polecamy inside.java. Je\u017celi preferujecie form\u0119 \u201cgadaj\u0105cych g\u0142\u00f3w\u201d, jest to chyba najlepsze miejsce w kt\u00f3rym mo\u017cecie dowiedzie\u0107 si\u0119 szczeg\u00f3\u0142\u00f3w na temat nowego wydania.<\/p>\n","innerContent":["\n<p>Jako, \u017ce ju\u017c wspomnieli\u015bmy oraclowe podcasty&nbsp; - klasycznie ju\u017c polecamy inside.java. Je\u017celi preferujecie form\u0119 \u201cgadaj\u0105cych g\u0142\u00f3w\u201d, jest to chyba najlepsze miejsce w kt\u00f3rym mo\u017cecie dowiedzie\u0107 si\u0119 szczeg\u00f3\u0142\u00f3w na temat nowego wydania.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><strong>\u0179r\u00f3d\u0142a<\/strong>&nbsp;<\/p>\n","innerContent":["\n<p><strong>\u0179r\u00f3d\u0142a<\/strong>&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/blogs.oracle.com\/java\/post\/moving-the-jdk-to-a-two-year-lts-cadence\">Moving the JDK to a Two Year LTS Cadence - Java<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/java\/post\/free-java-license\">Introducing the Free Java License<\/a><\/li><li><a href=\"https:\/\/www.zdnet.com\/article\/oracle-adds-improvement-cream-to-the-newest-lts-version-of-java\/#ftag=RSSbaffb68\">https:\/\/www.zdnet.com\/article\/oracle-adds-improvement-cream-to-the-newest-lts-version-of-java\/<\/a><\/li><li><a href=\"https:\/\/dev.java\/\">Dev.java: The Destination for Java Developers<\/a><\/li><li><a href=\"https:\/\/www.theregister.com\/2021\/09\/16\/oracle_jdk_free_license\/\">Oracle sets its own JDK free, sort of, for a while<\/a><\/li><li><a href=\"https:\/\/inside.java\/2021\/09\/15\/insidejava-newscast-012\/\">Faster lts and free jdk with java 17 - inside java newscast #12<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/blogs.oracle.com\/java\/post\/moving-the-jdk-to-a-two-year-lts-cadence\">Moving the JDK to a Two Year LTS Cadence - Java<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/java\/post\/free-java-license\">Introducing the Free Java License<\/a><\/li><li><a href=\"https:\/\/www.zdnet.com\/article\/oracle-adds-improvement-cream-to-the-newest-lts-version-of-java\/#ftag=RSSbaffb68\">https:\/\/www.zdnet.com\/article\/oracle-adds-improvement-cream-to-the-newest-lts-version-of-java\/<\/a><\/li><li><a href=\"https:\/\/dev.java\/\">Dev.java: The Destination for Java Developers<\/a><\/li><li><a href=\"https:\/\/www.theregister.com\/2021\/09\/16\/oracle_jdk_free_license\/\">Oracle sets its own JDK free, sort of, for a while<\/a><\/li><li><a href=\"https:\/\/inside.java\/2021\/09\/15\/insidejava-newscast-012\/\">Faster lts and free jdk with java 17 - inside java newscast #12<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2><strong>2. Java 17 - najciekawsze posty ze strony spo\u0142eczno\u015bci<\/strong> \ud83e\uddd1\u200d\ud83d\udcbb<\/h2>\n","innerContent":["\n<h2><strong>2. Java 17 - najciekawsze posty ze strony spo\u0142eczno\u015bci<\/strong> \ud83e\uddd1\u200d\ud83d\udcbb<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jak ju\u017c wspomnieli\u015bmy we wst\u0119pie, oczywi\u015bcie nie tylko Oracle postanowi\u0142 o\u015bwietli\u0107 si\u0119 w blasku nowego wydania. Mam wra\u017cenie, \u017ce spo\u0142aczeno\u015b\u0107 od dawna bawi\u0142a si\u0119 nowym LTSem i przygotowywa\u0142a materia\u0142y, aby m\u00f3c je wypu\u015bci\u0107 jak najbli\u017cej samej premiery nowej wersji j\u0119zyka.<\/p>\n","innerContent":["\n<p>Jak ju\u017c wspomnieli\u015bmy we wst\u0119pie, oczywi\u015bcie nie tylko Oracle postanowi\u0142 o\u015bwietli\u0107 si\u0119 w blasku nowego wydania. Mam wra\u017cenie, \u017ce spo\u0142aczeno\u015b\u0107 od dawna bawi\u0142a si\u0119 nowym LTSem i przygotowywa\u0142a materia\u0142y, aby m\u00f3c je wypu\u015bci\u0107 jak najbli\u017cej samej premiery nowej wersji j\u0119zyka.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zatem klasycznie ju\u017c mo\u017cemy dosta\u0107 przegl\u0105d nowo\u015bci w zakresie bezpiecze\u0144stwa, regularnie dostarczanych przez Seana Mullana. Mamy do czynienia z do\u015b\u0107 wyj\u0105tkow\u0105 sytuacj\u0105 - dawno nie by\u0142o wydania, w kt\u00f3rym zmiany w tym zakresie by\u0142yby a\u017c tak \u201cmedialne\u201d. Mam tu na my\u015bli temat SecurityManagera, kt\u00f3rego deprekacja nale\u017cy do najbardziej kontrowersyjnych aspekt\u00f3w nowego wydania. Sean zwraca jednak r\u00f3wnie\u017c uwag\u0119, \u017ce zar\u00f3wno kolejny krok w stron\u0119 pe\u0142nej enkapsulacji \u201cj\u0105dra\u201d Javy, jak i sealed classy, maj\u0105 bardzo pozytywny wp\u0142yw na bezpiecze\u0144stwo aplikacji. Nie brak\u0142o te\u017c dobrego s\u0142owa w kierunku ulepszenia <a href=\"https:\/\/openjdk.java.net\/jeps\/415\">filtr\u00f3w deserializacyjnych<\/a>. Poza wspomnianymi du\u017cymi JEPami, post stanowi tak\u017ce kumulacj\u0119 wszelkich drobniejszych zmian w kontek\u015bcie kryptografii - a tych jak zawsze nie brakuje. Po szczeg\u00f3\u0142y zapraszam do <a href=\"https:\/\/seanjmullan.org\/blog\/2021\/09\/14\/jdk17\">oryginalnego posta<\/a>.<\/p>\n","innerContent":["\n<p>Zatem klasycznie ju\u017c mo\u017cemy dosta\u0107 przegl\u0105d nowo\u015bci w zakresie bezpiecze\u0144stwa, regularnie dostarczanych przez Seana Mullana. Mamy do czynienia z do\u015b\u0107 wyj\u0105tkow\u0105 sytuacj\u0105 - dawno nie by\u0142o wydania, w kt\u00f3rym zmiany w tym zakresie by\u0142yby a\u017c tak \u201cmedialne\u201d. Mam tu na my\u015bli temat SecurityManagera, kt\u00f3rego deprekacja nale\u017cy do najbardziej kontrowersyjnych aspekt\u00f3w nowego wydania. Sean zwraca jednak r\u00f3wnie\u017c uwag\u0119, \u017ce zar\u00f3wno kolejny krok w stron\u0119 pe\u0142nej enkapsulacji \u201cj\u0105dra\u201d Javy, jak i sealed classy, maj\u0105 bardzo pozytywny wp\u0142yw na bezpiecze\u0144stwo aplikacji. Nie brak\u0142o te\u017c dobrego s\u0142owa w kierunku ulepszenia <a href=\"https:\/\/openjdk.java.net\/jeps\/415\">filtr\u00f3w deserializacyjnych<\/a>. Poza wspomnianymi du\u017cymi JEPami, post stanowi tak\u017ce kumulacj\u0119 wszelkich drobniejszych zmian w kontek\u015bcie kryptografii - a tych jak zawsze nie brakuje. Po szczeg\u00f3\u0142y zapraszam do <a href=\"https:\/\/seanjmullan.org\/blog\/2021\/09\/14\/jdk17\">oryginalnego posta<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a885aa2f979.gif\" alt=\"For The Good Of The Country - Dilbert by Scott Adams\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a885aa2f979.gif\" alt=\"For The Good Of The Country - Dilbert by Scott Adams\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Po wzi\u0119ciu pod lup\u0119 aspektu bezpiecze\u0144sta, nast\u0119pnym przystankiem b\u0119dzie wydajno\u015b\u0107. Okazuje si\u0119 bowiem, \u017ce i pod tym wzgl\u0119dem JDK 17 przynosi interesuj\u0105ce zmiany. OptaPlanner - firma zajmuj\u0105ca si\u0119 rozwi\u0105zywaniem odpowiednik\u00f3w \u201cproblemu plecakowego\u201d z realnego \u015bwiata (bo niby czym innym jest efektywne zarz\u0105dzanie zasobami w du\u017cych przedsi\u0119biorstwach?) - <a href=\"https:\/\/www.optaplanner.org\/blog\/2021\/09\/15\/HowMuchFasterIsJava17.html\">zdecydowa\u0142a si\u0119 przetestowa\u0107<\/a>, jaki jest uzysk z migracji na nowego LTSa. Wed\u0142ug ich test\u00f3w mo\u017cemy m\u00f3wi\u0107 o niemal dziesi\u0119cioprocentowym wzro\u015bcie wydajno\u015bci w stosunku do JDK 11. Oczywi\u015bcie, jak to z benchmarkami, sugeruj\u0119 patrze\u0107 na ich wyniki z przymr\u00f3\u017ceniem oka. Trzeba jednak przyzna\u0107, \u017ce firma do\u015b\u0107 dobrze opisa\u0142a swoj\u0105 metodologi\u0119, wi\u0119c na pewno warto cho\u0107 spojrze\u0107 na ich rezultaty. Zw\u0142aszcza, \u017ce por\u00f3wnuj\u0105 te\u017c dzia\u0142anie poszczeg\u00f3lnych GC ju\u017c w ramach samej Javy 17.&nbsp;<\/p>\n","innerContent":["\n<p>Po wzi\u0119ciu pod lup\u0119 aspektu bezpiecze\u0144sta, nast\u0119pnym przystankiem b\u0119dzie wydajno\u015b\u0107. Okazuje si\u0119 bowiem, \u017ce i pod tym wzgl\u0119dem JDK 17 przynosi interesuj\u0105ce zmiany. OptaPlanner - firma zajmuj\u0105ca si\u0119 rozwi\u0105zywaniem odpowiednik\u00f3w \u201cproblemu plecakowego\u201d z realnego \u015bwiata (bo niby czym innym jest efektywne zarz\u0105dzanie zasobami w du\u017cych przedsi\u0119biorstwach?) - <a href=\"https:\/\/www.optaplanner.org\/blog\/2021\/09\/15\/HowMuchFasterIsJava17.html\">zdecydowa\u0142a si\u0119 przetestowa\u0107<\/a>, jaki jest uzysk z migracji na nowego LTSa. Wed\u0142ug ich test\u00f3w mo\u017cemy m\u00f3wi\u0107 o niemal dziesi\u0119cioprocentowym wzro\u015bcie wydajno\u015bci w stosunku do JDK 11. Oczywi\u015bcie, jak to z benchmarkami, sugeruj\u0119 patrze\u0107 na ich wyniki z przymr\u00f3\u017ceniem oka. Trzeba jednak przyzna\u0107, \u017ce firma do\u015b\u0107 dobrze opisa\u0142a swoj\u0105 metodologi\u0119, wi\u0119c na pewno warto cho\u0107 spojrze\u0107 na ich rezultaty. Zw\u0142aszcza, \u017ce por\u00f3wnuj\u0105 te\u017c dzia\u0142anie poszczeg\u00f3lnych GC ju\u017c w ramach samej Javy 17.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A jak ju\u017c o \u201cod\u015bmiecaczach\u201d mowa - <a href=\"https:\/\/tschatzl.github.io\/2021\/09\/16\/jdk17-g1-parallel-gc-changes.html\">bardzo dobr\u0105 analiz\u0119 zmian<\/a> w takowych dostarczy\u0142 blog Thomasa Schatzla, jednego z kontrybutor\u00f3w Javy. Skupia si\u0119 on na szczeg\u00f3\u0142ach Parallel GC oraz G1, przedstawiaj\u0105c jakie optmalizacje zosta\u0142y do nich wprowadzone w celu uzyskania przyspieszenia, o kt\u00f3rym mieli\u015bcie okazje dopiero co przeczyta\u0107. Je\u015bli chodzi o zmiany w Shenandoah, o nich mo\u017cecie dowiedzie\u0107 si\u0119 te\u017c ze <a href=\"https:\/\/developers.redhat.com\/articles\/2021\/09\/16\/shenandoah-openjdk-17-sub-millisecond-gc-pauses\">strony RedHata<\/a>. Je\u017celi za\u015b jeste\u015bcie ciekawi detali tego, co dzieje si\u0119 obecnie w ZGC - ju\u017c nied\u0142ugo powinno pojawi\u0107 si\u0119 takowe <a href=\"https:\/\/malloc.se\/\">na blogu Pera Lidena<\/a>. Na dzie\u0144 pisania tej edycji jest ona ci\u0105gle \u201cw toku\u201d. Warto jednak czeka\u0107, gdy\u017c Per zawsze bardzo przejrzy\u015bcie opisuje zakres wprowadzonych zmian.<\/p>\n","innerContent":["\n<p>A jak ju\u017c o \u201cod\u015bmiecaczach\u201d mowa - <a href=\"https:\/\/tschatzl.github.io\/2021\/09\/16\/jdk17-g1-parallel-gc-changes.html\">bardzo dobr\u0105 analiz\u0119 zmian<\/a> w takowych dostarczy\u0142 blog Thomasa Schatzla, jednego z kontrybutor\u00f3w Javy. Skupia si\u0119 on na szczeg\u00f3\u0142ach Parallel GC oraz G1, przedstawiaj\u0105c jakie optmalizacje zosta\u0142y do nich wprowadzone w celu uzyskania przyspieszenia, o kt\u00f3rym mieli\u015bcie okazje dopiero co przeczyta\u0107. Je\u015bli chodzi o zmiany w Shenandoah, o nich mo\u017cecie dowiedzie\u0107 si\u0119 te\u017c ze <a href=\"https:\/\/developers.redhat.com\/articles\/2021\/09\/16\/shenandoah-openjdk-17-sub-millisecond-gc-pauses\">strony RedHata<\/a>. Je\u017celi za\u015b jeste\u015bcie ciekawi detali tego, co dzieje si\u0119 obecnie w ZGC - ju\u017c nied\u0142ugo powinno pojawi\u0107 si\u0119 takowe <a href=\"https:\/\/malloc.se\/\">na blogu Pera Lidena<\/a>. Na dzie\u0144 pisania tej edycji jest ona ci\u0105gle \u201cw toku\u201d. Warto jednak czeka\u0107, gdy\u017c Per zawsze bardzo przejrzy\u015bcie opisuje zakres wprowadzonych zmian.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/Epsilon.jpg\" alt=\"The Best Garbage Collection for JMeter | DevsDay.ru\"\/><figcaption>Akurat nie uda\u0142o mi si\u0119 znale\u017a\u0107 \u017cadnego dobrego opracowania <a href=\"https:\/\/www.baeldung.com\/jvm-epsilon-gc-garbage-collector\">Epsilona<\/a>...<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/Epsilon.jpg\" alt=\"The Best Garbage Collection for JMeter | DevsDay.ru\"\/><figcaption>Akurat nie uda\u0142o mi si\u0119 znale\u017a\u0107 \u017cadnego dobrego opracowania <a href=\"https:\/\/www.baeldung.com\/jvm-epsilon-gc-garbage-collector\">Epsilona<\/a>...<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><strong>\u0179r\u00f3d\u0142a<\/strong><\/p>\n","innerContent":["\n<p><strong>\u0179r\u00f3d\u0142a<\/strong><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/openjdk.java.net\/jeps\/415\">JEP 415: Context-Specific Deserialization Filters<\/a><\/li><li><a href=\"https:\/\/seanjmullan.org\/blog\/2021\/09\/14\/jdk17\">JDK 17 Security Enhancements<\/a><\/li><li><a href=\"https:\/\/www.optaplanner.org\/blog\/2021\/09\/15\/HowMuchFasterIsJava17.html\">How much faster is Java 17?<\/a><\/li><li><a href=\"https:\/\/tschatzl.github.io\/2021\/09\/16\/jdk17-g1-parallel-gc-changes.html\">JDK 17 G1\/Parallel GC changes<\/a><\/li><li><a href=\"https:\/\/developers.redhat.com\/articles\/2021\/09\/16\/shenandoah-openjdk-17-sub-millisecond-gc-pauses\">Shenandoah in OpenJDK 17: Sub-millisecond GC pauses<\/a><\/li><li><a href=\"https:\/\/malloc.se\/\">Per Liden | Blog<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/openjdk.java.net\/jeps\/415\">JEP 415: Context-Specific Deserialization Filters<\/a><\/li><li><a href=\"https:\/\/seanjmullan.org\/blog\/2021\/09\/14\/jdk17\">JDK 17 Security Enhancements<\/a><\/li><li><a href=\"https:\/\/www.optaplanner.org\/blog\/2021\/09\/15\/HowMuchFasterIsJava17.html\">How much faster is Java 17?<\/a><\/li><li><a href=\"https:\/\/tschatzl.github.io\/2021\/09\/16\/jdk17-g1-parallel-gc-changes.html\">JDK 17 G1\/Parallel GC changes<\/a><\/li><li><a href=\"https:\/\/developers.redhat.com\/articles\/2021\/09\/16\/shenandoah-openjdk-17-sub-millisecond-gc-pauses\">Shenandoah in OpenJDK 17: Sub-millisecond GC pauses<\/a><\/li><li><a href=\"https:\/\/malloc.se\/\">Per Liden | Blog<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2><strong>3. Kotlin Reflekt - Refleksja w czasie kompilacji<\/strong> \ud83e\udd2f<\/h2>\n","innerContent":["\n<h2><strong>3. Kotlin Reflekt - Refleksja w czasie kompilacji<\/strong> \ud83e\udd2f<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ok, na koniec, w celu odpocznku od tej ca\u0142ej Javy 17 - mamy zapowied\u017a wyjatkowo ciekawej biblioteki od JetBrains mog\u0105cej sporo namiesza\u0107 w kotlinowym ekosystemie.&nbsp;<\/p>\n","innerContent":["\n<p>Ok, na koniec, w celu odpocznku od tej ca\u0142ej Javy 17 - mamy zapowied\u017a wyjatkowo ciekawej biblioteki od JetBrains mog\u0105cej sporo namiesza\u0107 w kotlinowym ekosystemie.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><a href=\"https:\/\/github.com\/JetBrains-Research\/reflekt\">Reflekt<\/a> (bo o nim tu mowa) to biblioteka do refleksji dzia\u0142aj\u0105ca w czasie kompilacji (!). Zamiast polega\u0107 na JVMowym mechani\u017amie refleksji, Reflekt wykonuje analiz\u0119 statyczn\u0105 kodu aplikacji za pomoc\u0105 kotlinowego kompilatora, umo\u017cliwiaj\u0105c dalsze u\u017cywanie znajomego i powszechnie u\u017cywanego Reflection API odbi\u0107, bez faktycznego u\u017cywania refleksji. Na dobr\u0105 spraw\u0119, mamy do czynienia z generycznym syntezatorem efekt\u00f3w dzia\u0142ania tego mechanizmu, uruchamianym podczas tworzenia binarki.<\/p>\n","innerContent":["\n<p><a href=\"https:\/\/github.com\/JetBrains-Research\/reflekt\">Reflekt<\/a> (bo o nim tu mowa) to biblioteka do refleksji dzia\u0142aj\u0105ca w czasie kompilacji (!). Zamiast polega\u0107 na JVMowym mechani\u017amie refleksji, Reflekt wykonuje analiz\u0119 statyczn\u0105 kodu aplikacji za pomoc\u0105 kotlinowego kompilatora, umo\u017cliwiaj\u0105c dalsze u\u017cywanie znajomego i powszechnie u\u017cywanego Reflection API odbi\u0107, bez faktycznego u\u017cywania refleksji. Na dobr\u0105 spraw\u0119, mamy do czynienia z generycznym syntezatorem efekt\u00f3w dzia\u0142ania tego mechanizmu, uruchamianym podczas tworzenia binarki.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>val objects1 = Reflekt.objects().withSupertype&lt;AInterface&gt;()\n        .withAnnotations&lt;AInterface&gt;(FirstAnnotation::class, SecondAnnotation::class).toList()<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>val objects1 = Reflekt.objects().withSupertype&lt;AInterface&gt;()\n        .withAnnotations&lt;AInterface&gt;(FirstAnnotation::class, SecondAnnotation::class).toList()<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Projekt jest efektem wsp\u00f3\u0142pracy dzia\u0142u R&amp;D JetBrains oraz zespo\u0142u pracuj\u0105cego nad <a href=\"https:\/\/github.com\/JetBrains\/kotless\">Kotless<\/a> (kotlinowym frameworkiem serverless). Jak pisz\u0105 sami tw\u00f3rcy, g\u0142\u00f3wnym powodem powstania Reflekta by\u0142a ch\u0119\u0107 obs\u0142ugi GraalVM w aplikacjach serverless, ale Reflekt ma te\u017c u\u0142atwi\u0107 u\u017cycie tej technologii w np. w bardzo mocno opartym na refleksji Springu. Do tej pory ka\u017cdy projekt, kt\u00f3ry chcia\u0142 pozby\u0107 si\u0119 refleksji musia\u0142 samodzielnie \u201chakowa\u0107\u201d refleksje za pomoc\u0105 np. annotation processor\u00f3w. Reflekt stanowi\u0107 ma reu\u017cywalny komponent.<\/p>\n","innerContent":["\n<p>Projekt jest efektem wsp\u00f3\u0142pracy dzia\u0142u R&amp;D JetBrains oraz zespo\u0142u pracuj\u0105cego nad <a href=\"https:\/\/github.com\/JetBrains\/kotless\">Kotless<\/a> (kotlinowym frameworkiem serverless). Jak pisz\u0105 sami tw\u00f3rcy, g\u0142\u00f3wnym powodem powstania Reflekta by\u0142a ch\u0119\u0107 obs\u0142ugi GraalVM w aplikacjach serverless, ale Reflekt ma te\u017c u\u0142atwi\u0107 u\u017cycie tej technologii w np. w bardzo mocno opartym na refleksji Springu. Do tej pory ka\u017cdy projekt, kt\u00f3ry chcia\u0142 pozby\u0107 si\u0119 refleksji musia\u0142 samodzielnie \u201chakowa\u0107\u201d refleksje za pomoc\u0105 np. annotation processor\u00f3w. Reflekt stanowi\u0107 ma reu\u017cywalny komponent.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u015bli chcecie zobaczy\u0107 jak to dzia\u0142a - przyk\u0142ady znajdziecie <a href=\"https:\/\/github.com\/JetBrains-Research\/reflekt\/tree\/master\/examples\">tutaj<\/a>. <\/p>\n","innerContent":["\n<p>Je\u015bli chcecie zobaczy\u0107 jak to dzia\u0142a - przyk\u0142ady znajdziecie <a href=\"https:\/\/github.com\/JetBrains-Research\/reflekt\/tree\/master\/examples\">tutaj<\/a>. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":2470,"width":522,"height":291,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/image-3-1024x572.png\" alt=\"\" class=\"wp-image-2470\" width=\"522\" height=\"291\"\/><figcaption>Brzmi jak magia - mam nadziej\u0119, \u017ce w praktyce b\u0119dzie zachowywa\u0107 si\u0119 r\u00f3wnie dobrze.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/image-3-1024x572.png\" alt=\"\" class=\"wp-image-2470\" width=\"522\" height=\"291\"\/><figcaption>Brzmi jak magia - mam nadziej\u0119, \u017ce w praktyce b\u0119dzie zachowywa\u0107 si\u0119 r\u00f3wnie dobrze.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>&nbsp;<br><strong>\u0179r\u00f3d\u0142a<\/strong><\/p>\n","innerContent":["\n<p>&nbsp;<br><strong>\u0179r\u00f3d\u0142a<\/strong><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/github.com\/JetBrains-Research\/reflekt\">JetBrains-Research\/reflekt: A plugin for Kotlin compiler for compile-time reflection<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/github.com\/JetBrains-Research\/reflekt\">JetBrains-Research\/reflekt: A plugin for Kotlin compiler for compile-time reflection<\/a><\/li><\/ul>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10079","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=10079"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10079\/revisions"}],"predecessor-version":[{"id":10555,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10079\/revisions\/10555"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/7703"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10079"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10079"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}