{"id":10157,"date":"2021-04-06T09:00:00","date_gmt":"2021-04-06T07:00:00","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-32\/"},"modified":"2022-09-19T13:10:55","modified_gmt":"2022-09-19T11:10:55","slug":"jvm-tuesday-vol-32","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/","title":{"rendered":"JVM Tuesday vol. 32"},"content":{"rendered":"<h2 id=\"1-skategoryzowana-lista-wszystkich-nowosci-miedzy-jdk-8-a-16\" data-num=1><a href=\"https:\/\/advancedweb.hu\/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-16\/\">1. Skategoryzowana lista wszystkich nowo\u015bci mi\u0119dzy JDK 8 a 16<\/a><\/h2>\n<p>Bardzo lubi\u0119 szybki cykl releasowy Javy. Wprawdzie ze strony spo\u0142eczno\u015bci innych j\u0119zyk\u00f3w (niedawno sie\u0107 obieg\u0142 tekst pokazuj\u0105cy problemy, <a href=\"https:\/\/kerkour.com\/blog\/the-biggest-threat-to-rust-sustainability\/\">jakie powoduje to w wypadku Rusta<\/a>, a sami tydzie\u0144 temu pisali\u015bmy o krytyce <a href=\"https:\/\/mungingdata.com\/scala\/maintenance-nightmare-upgrade\/\">z jak\u0105 spotka\u0142a si\u0119 Scala<\/a>), ale uwa\u017cam, \u017ce Oracle bardzo dobrze sobie z tym poradzi\u0142. R\u00f3wnoleg\u0142e posiadanie wersji Long-Time Support oraz co p\u00f3\u0142rocznych, rozwojowych edycji jest bardzo dobrym kompromisem. Podej\u015bcie oparte o \u201c<a href=\"https:\/\/www.thoughtworks.com\/radar\/techniques\/release-train\">Release Train<\/a>\u201d sprawia, \u017ce je\u015bli jaki\u015b \u201cficzur\u201d nie jest gotowy, to po prostu trafia do kolejnej edycji, kt\u00f3ra uka\u017ce si\u0119 za 6 miesi\u0119cy.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b600374f.png\" alt=\"\" \/><figcaption>Je\u015bli rozumiesz ten dowcip <a href=\"https:\/\/www.infoworld.com\/article\/3198912\/java-9-delayed-due-to-modularity-controversy.html\">bez klikania w link<\/a>, znaczy \u017ce ju\u017c pewnie jeste\u015b Javowym seniorem \u00a0<\/figcaption><\/figure>\n<p>Jednocze\u015bnie jednak zauwa\u017cam pewn\u0105 wad\u0119 takiego podej\u015bcia. Jeszcze za czas\u00f3w Javy 8, \u015bledzenie tego j\u0119zyka by\u0142o bardzo proste. Co ~3 lata wychodzi\u0142a nowa wersja, i nawet je\u015bli dostarcza\u0142a ona bardzo wiele nowych mo\u017cliwo\u015bci dla programist\u00f3w (je\u017celi przebili\u015bmy si\u0119 przez wszystkie zaprezentowane dodatki), to mieli\u015bmy \u201cspok\u00f3j\u201d. Dzisiaj nawet je\u015bli chcemy \u201cupgradowa\u0107 si\u0119\u201d tylko w wypadku LTS\u00f3w, niejako musimy \u015bledzi\u0107 ka\u017cde po\u015brednie wydanie &#8211; przy okazji premiery JDK 17 w release notesach nie b\u0119d\u0105 pojawia\u0142y si\u0119 zmiany np. z JDK 13. Chc\u0105c nadrobi\u0107 wszystko, co wydarzy\u0142o si\u0119 w ekosystemie od ostatniego LTSa (dla przypomnienia &#8211; JDK 11), musieliby\u015bmy sprawdzi\u0107, czy co\u015b interesuj\u0105cego dla nas nie pojawi\u0142o si\u0119 w JDK 12, 13, 14, 15 i 16. Mo\u017ce by\u0107 to nieco uci\u0105\u017cliwe.<\/p>\n<p>Dlatego te\u017c z tak wielk\u0105 rado\u015bci\u0105 przyjmujemy opracowania podobne do tego zaprezentowanego przez Advanced Web Machinery. W kr\u00f3tkim, zaledwie 14-minutowym tek\u015bcie, D\u00e1vid Cs\u00e1kv\u00e1ri zrobi\u0142 swoisty \u201crajd\u201d po wszystkich zmianach, grupuj\u0105c je w koherentny przegl\u0105d wszystkiego, co wydarzy\u0142o si\u0119 od czasu JDK 8. Bardzo wygodny, jest zaproponowany przez niego, spos\u00f3b grupowania &#8211; poszczeg\u00f3lne zmiany zebrane s\u0105 w logicznych kategoriach takich jak cho\u0107by \u201cwsp\u00f3\u0142bie\u017cno\u015b\u0107\u201d, \u201cGarbage Collectory\u201d czy \u201cpoprawki bezpiecze\u0144stwa\u201d. Pozwala to z jednej strony osobom, kt\u00f3re zosta\u0142y w tyle, szybko nadrobi\u0107 zaleg\u0142o\u015bci, regularnie \u015bledz\u0105cym za\u015b nowe wydania umo\u017cliwia szybk\u0105 powt\u00f3reczk\u0119. Bardzo polecamy.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/advancedweb.hu\/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-16\/\">A categorized list of all Java and JVM features since JDK 8 to 16<\/a><\/li>\n<li><a href=\"https:\/\/kerkour.com\/blog\/the-biggest-threat-to-rust-sustainability\/\">The biggest threat to Rust&#8217;s sustainability<\/a><\/li>\n<li><a href=\"https:\/\/mungingdata.com\/scala\/maintenance-nightmare-upgrade\/\">Scala is a Maintenance Nightmare<\/a><\/li>\n<\/ul>\n<h2 id=\"2-przepieknie-ilustrowany-przewodnik-po-kotlinie\" data-num=2><a href=\"https:\/\/typealias.com\/start\/kotlin-nulls\/\">2. Przepi\u0119knie ilustrowany przewodnik po Kotlinie <\/a> \u200d<\/h2>\n<p>Drugi z prezentowanych dzisiaj link\u00f3w mocno wybija si\u0119 na tle konkurencji. Wyj\u0105tkowo pow\u00f3d, dla kt\u00f3rego o nim piszemy nie jest zwi\u0105zany z zawarto\u015bci\u0105 artyku\u0142u, ale form\u0105 w jakiej ca\u0142o\u015b\u0107 zosta\u0142a przedstawiona.<\/p>\n<p>Od dawna szuka\u0142em okazji by opowiedzie\u0107 Wam o blogu \u201cDave Leeds on Kotlin\u201d. Autor w swoich publikacjach nie wymy\u015bla ko\u0142a na nowo &#8211; mamy do czynienia raczej z do\u015b\u0107 standardowym wprowadzeniem do Kotlina, pochylaj\u0105cym si\u0119 nad zagadnieniami takimi jak: kolekcje, nullowalno\u015b\u0107 czy wyra\u017cenia regularne. To, co wyr\u00f3\u017cnia autora nie tylko spo\u015br\u00f3d grona innych bloger\u00f3w, ale r\u00f3wnie\u017c bardzo dobrych przecie\u017c <a href=\"https:\/\/kotlinlang.org\/docs\/getting-started.html\">dokumentacji od Jetbrains<\/a>, to fakt, \u017ce postanowi\u0142 on t\u0142umaczy\u0107 poszczeg\u00f3lne koncepty, u\u017cywaj\u0105c kresk\u00f3wkowych grafik. Jako d\u0142ugoletni fan sztuki komiksowej musz\u0119 przyzna\u0107, \u017ce sprawia to bardzo dobre wra\u017cenie i powinno by\u0107 interesuj\u0105ce nie tylko dla nowicjusza, ale i dla Kotlinowych wyjadaczy.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b615eee0.png\" alt=\"\" \/><\/figure>\n<p>Najnowszy tekst autora dotyczy \u201cnullowalno\u015bci\u201d i w bardzo przyst\u0119pny spos\u00f3b t\u0142umaczy, jak dzia\u0142aj\u0105 optionale, oraz jak Kotlin jako j\u0119zyk pozwala w wygodny spos\u00f3b si\u0119 z nimi obchodzi\u0107. O ile wyjadacze nie znajd\u0105 dla siebie tutaj za wiele (aczkolwiek my\u015bl\u0119, \u017ce warto zagl\u0105dn\u0105\u0107, \u017ceby zobaczy\u0107 jak przyst\u0119pnie t\u0142umaczy\u0107 techniczne koncepty), o tyle je\u015bli chcia\u0142bym wprowadzi\u0107 np. programist\u0119 Javy do \u015bwiata Kotlina, ci\u0119\u017cko by\u0142oby mi znale\u017a\u0107 przyst\u0119pniejsze \u017ar\u00f3d\u0142o ni\u017c blog Dave.<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b6251cd3.png\" alt=\"\" \/><\/figure>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/typealias.com\/start\/kotlin-nulls\/\">Kotlin: An Illustrated Guide \u2022 Chapter 6 &#8211; Nulls and Null Safety<\/a><\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/getting-started.html\">Get started with Kotlin<\/a><\/li>\n<\/ul>\n<h2 id=\"3-przeglad-scalowych-bibliotek-do-programowania-funkcyjnego\" data-num=3><a href=\"https:\/\/blog.softwaremill.com\/figuring-out-scala-functional-programming-libraries-af8230efccb4\">3. Przegl\u0105d Scalowych bibliotek do programowania funkcyjnego \u200d<\/a><\/h2>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b62c3e21.png\" alt=\"\" \/><\/figure>\n<p>Scala umo\u015bci\u0142a si\u0119 w \u015bwiatku iloczynu lambda i chyba w nim w\u0142a\u015bnie pozostanie ju\u017c na zawsze. O ile jeszcze kilka lat temu r\u00f3wnowaga mi\u0119dzy podej\u015bciem obiektowym, a funkcyjnym nie by\u0142a jeszcze a\u017c tak zaburzona, to dzisiaj jednak cho\u0107by po stanie ekosystemu wida\u0107, \u017ce to drugie podej\u015bcie zwyci\u0119\u017cy\u0142o w sercach spo\u0142eczno\u015bci. Niech dowodem b\u0119dzie wysyp r\u00f3\u017cnorakich bibliotek pozwalaj\u0105cych na zaspokojenie potrzeb funkcyjnych puryst\u00f3w. O ile do\u015bwiadczeni programi\u015bci j\u0119zyka Lightbenda z pewno\u015bci\u0105 ciesz\u0105 si\u0119 z wachlarzu opcji, o tyle dla kogo\u015b wchodz\u0105cego do tego \u015bwiata sytuacja mo\u017ce by\u0107 ciutk\u0119 przyt\u0142aczaj\u0105ca.<\/p>\n<p>St\u0105d te\u017c bardzo cieszy artyku\u0142, kt\u00f3rym mam okazj\u0119 si\u0119 z Wami podzieli\u0107. Autor bierze na warsztat dost\u0119pne rozwi\u0105zania (Scalaz, Cats, Monix oraz ZIO) i w przyjemny spos\u00f3b pokazuje, w czym s\u0105 one do siebie podobne, a co je odr\u00f3\u017cnia. Ca\u0142o\u015b\u0107 nie wymaga, co prawda w zasadzie znajomo\u015bci samej Scali, ale na pewno przyda si\u0119 znajomo\u015b\u0107 funkcyjnych koncept\u00f3w. Na szcz\u0119\u015bcie autor ka\u017cdorazowo przywo\u0142uj\u0105c Monoid czy Functor, odsy\u0142a do innych materia\u0142\u00f3w. Je\u017celi za\u015b kt\u00f3re\u015b z opisywanych rozwi\u0105za\u0144 Was zainteresuje, w samym tek\u015bcie znajdziecie te\u017c sporo odno\u015bnik\u00f3w do materia\u0142\u00f3w pozwalaj\u0105cych pog\u0142\u0119bi\u0107 wiedz\u0119.<\/p>\n<p>Zdecydo<br \/>\nwanie polecam ten artyku\u0142 ka\u017cdej osobie, kt\u00f3ra zaczyna swoj\u0105 przygod\u0119 z funkcyjnym programowaniem w Scali. Opracowanie z pewno\u015bci\u0105 u\u0142atwi odnalezienie si\u0119 w g\u0105szczu mo\u017cliwo\u015bci.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b6345977.png\" alt=\"\" \/><figcaption>Zacz\u0119li\u015bmy od \u015bmiania si\u0119 z rekurencji, to jeszcze na po\u017cegnanie&#8230;<\/figcaption><\/figure>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/blog.softwaremill.com\/figuring-out-scala-functional-programming-libraries-af8230efccb4\">Figuring out Scala functional programming libraries<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u015awi\u0105teczny tydzie\u0144 rz\u0105dzi si\u0119 swoimi prawami, w zwi\u0105zku z czym nie pojawi\u0142o si\u0119 za wiele &#8222;\u0142ami\u0105cych&#8221; news\u00f3w. Za to mamy dla Was trzy przegl\u0105d\u00f3wki, kt\u00f3re z pewno\u015bci b\u0119d\u0105 interesuj\u0105ce. Zapraszamy do lektury!<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[259],"tags":[],"class_list":["post-10157","post","type-post","status-publish","format-standard","hentry","category-jvm-pl"],"acf":{"weekly_summary":true,"estimated_reading_time":"4"},"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. 32 - 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-32\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 32 - Vived\" \/>\n<meta property=\"og:description\" content=\"\u015awi\u0105teczny tydzie\u0144 rz\u0105dzi si\u0119 swoimi prawami, w zwi\u0105zku z czym nie pojawi\u0142o si\u0119 za wiele &quot;\u0142ami\u0105cych&quot; news\u00f3w. Za to mamy dla Was trzy przegl\u0105d\u00f3wki, kt\u00f3re z pewno\u015bci b\u0119d\u0105 interesuj\u0105ce. Zapraszamy do lektury!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-06T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b600374f.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-32\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 32\",\"datePublished\":\"2021-04-06T07:00:00+00:00\",\"dateModified\":\"2022-09-19T11:10:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/\"},\"wordCount\":959,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b600374f.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/\",\"name\":\"JVM Tuesday vol. 32 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b600374f.png\",\"datePublished\":\"2021-04-06T07:00:00+00:00\",\"dateModified\":\"2022-09-19T11:10:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b600374f.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b600374f.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 32\"}]},{\"@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. 32 - 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-32\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 32 - Vived","og_description":"\u015awi\u0105teczny tydzie\u0144 rz\u0105dzi si\u0119 swoimi prawami, w zwi\u0105zku z czym nie pojawi\u0142o si\u0119 za wiele \"\u0142ami\u0105cych\" news\u00f3w. Za to mamy dla Was trzy przegl\u0105d\u00f3wki, kt\u00f3re z pewno\u015bci b\u0119d\u0105 interesuj\u0105ce. Zapraszamy do lektury!","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/","og_site_name":"Vived","article_published_time":"2021-04-06T07:00:00+00:00","article_modified_time":"2022-09-19T11:10:55+00:00","og_image":[{"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b600374f.png","type":"","width":"","height":""}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 32","datePublished":"2021-04-06T07:00:00+00:00","dateModified":"2022-09-19T11:10:55+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/"},"wordCount":959,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b600374f.png","articleSection":["JVM"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/","name":"JVM Tuesday vol. 32 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b600374f.png","datePublished":"2021-04-06T07:00:00+00:00","dateModified":"2022-09-19T11:10:55+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b600374f.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b600374f.png"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-32\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 32"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","caption":"Artur Skowro\u0144ski"}}]}},"blocks_vived":[{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"<h2 id=\"1-skategoryzowana-lista-wszystkich-nowo%C5%9Bci-mi%C4%99dzy-jdk-8-a-16-%F0%9F%91%91\"><a href=\"https:\/\/advancedweb.hu\/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-16\/\">1. Skategoryzowana lista wszystkich nowo\u015bci mi\u0119dzy JDK 8 a 16<\/a><\/h2>\nBardzo lubi\u0119 szybki cykl releasowy Javy. Wprawdzie ze strony spo\u0142eczno\u015bci innych j\u0119zyk\u00f3w (niedawno sie\u0107 obieg\u0142 tekst pokazuj\u0105cy problemy, <a href=\"https:\/\/kerkour.com\/blog\/the-biggest-threat-to-rust-sustainability\/\">jakie powoduje to w wypadku Rusta<\/a>, a sami tydzie\u0144 temu pisali\u015bmy o krytyce <a href=\"https:\/\/mungingdata.com\/scala\/maintenance-nightmare-upgrade\/\">z jak\u0105 spotka\u0142a si\u0119 Scala<\/a>), ale uwa\u017cam, \u017ce Oracle bardzo dobrze sobie z tym poradzi\u0142. R\u00f3wnoleg\u0142e posiadanie wersji Long-Time Support oraz co p\u00f3\u0142rocznych, rozwojowych edycji jest bardzo dobrym kompromisem. Podej\u015bcie oparte o \u201c<a href=\"https:\/\/www.thoughtworks.com\/radar\/techniques\/release-train\">Release Train<\/a>\u201d sprawia, \u017ce je\u015bli jaki\u015b \u201cficzur\u201d nie jest gotowy, to po prostu trafia do kolejnej edycji, kt\u00f3ra uka\u017ce si\u0119 za 6 miesi\u0119cy.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b600374f.png\" alt=\"\" \/>\n<figcaption>Je\u015bli rozumiesz ten dowcip <a href=\"https:\/\/www.infoworld.com\/article\/3198912\/java-9-delayed-due-to-modularity-controversy.html\">bez klikania w link<\/a>, znaczy \u017ce ju\u017c pewnie jeste\u015b Javowym seniorem \u00a0<\/figcaption><\/figure>\nJednocze\u015bnie jednak zauwa\u017cam pewn\u0105 wad\u0119 takiego podej\u015bcia. Jeszcze za czas\u00f3w Javy 8, \u015bledzenie tego j\u0119zyka by\u0142o bardzo proste. Co ~3 lata wychodzi\u0142a nowa wersja, i nawet je\u015bli dostarcza\u0142a ona bardzo wiele nowych mo\u017cliwo\u015bci dla programist\u00f3w (je\u017celi przebili\u015bmy si\u0119 przez wszystkie zaprezentowane dodatki), to mieli\u015bmy \u201cspok\u00f3j\u201d. Dzisiaj nawet je\u015bli chcemy \u201cupgradowa\u0107 si\u0119\u201d tylko w wypadku LTS\u00f3w, niejako musimy \u015bledzi\u0107 ka\u017cde po\u015brednie wydanie - przy okazji premiery JDK 17 w release notesach nie b\u0119d\u0105 pojawia\u0142y si\u0119 zmiany np. z JDK 13. Chc\u0105c nadrobi\u0107 wszystko, co wydarzy\u0142o si\u0119 w ekosystemie od ostatniego LTSa (dla przypomnienia - JDK 11), musieliby\u015bmy sprawdzi\u0107, czy co\u015b interesuj\u0105cego dla nas nie pojawi\u0142o si\u0119 w JDK 12, 13, 14, 15 i 16. Mo\u017ce by\u0107 to nieco uci\u0105\u017cliwe.\n\nDlatego te\u017c z tak wielk\u0105 rado\u015bci\u0105 przyjmujemy opracowania podobne do tego zaprezentowanego przez Advanced Web Machinery. W kr\u00f3tkim, zaledwie 14-minutowym tek\u015bcie, D\u00e1vid Cs\u00e1kv\u00e1ri zrobi\u0142 swoisty \u201crajd\u201d po wszystkich zmianach, grupuj\u0105c je w koherentny przegl\u0105d wszystkiego, co wydarzy\u0142o si\u0119 od czasu JDK 8. Bardzo wygodny, jest zaproponowany przez niego, spos\u00f3b grupowania - poszczeg\u00f3lne zmiany zebrane s\u0105 w logicznych kategoriach takich jak cho\u0107by \u201cwsp\u00f3\u0142bie\u017cno\u015b\u0107\u201d, \u201cGarbage Collectory\u201d czy \u201cpoprawki bezpiecze\u0144stwa\u201d. Pozwala to z jednej strony osobom, kt\u00f3re zosta\u0142y w tyle, szybko nadrobi\u0107 zaleg\u0142o\u015bci, regularnie \u015bledz\u0105cym za\u015b nowe wydania umo\u017cliwia szybk\u0105 powt\u00f3reczk\u0119. Bardzo polecamy.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/advancedweb.hu\/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-16\/\">A categorized list of all Java and JVM features since JDK 8 to 16<\/a><\/li>\n \t<li><a href=\"https:\/\/kerkour.com\/blog\/the-biggest-threat-to-rust-sustainability\/\">The biggest threat to Rust's sustainability<\/a><\/li>\n \t<li><a href=\"https:\/\/mungingdata.com\/scala\/maintenance-nightmare-upgrade\/\">Scala is a Maintenance Nightmare<\/a><\/li>\n<\/ul>\n<h2 id=\"2-przepi%C4%99knie-ilustrowany-przewodnik-po-kotlinie-%F0%9F%91%A8%E2%80%8D%F0%9F%8E%A8\"><a href=\"https:\/\/typealias.com\/start\/kotlin-nulls\/\">2. Przepi\u0119knie ilustrowany przewodnik po Kotlinie <\/a> \u200d<\/h2>\nDrugi z prezentowanych dzisiaj link\u00f3w mocno wybija si\u0119 na tle konkurencji. Wyj\u0105tkowo pow\u00f3d, dla kt\u00f3rego o nim piszemy nie jest zwi\u0105zany z zawarto\u015bci\u0105 artyku\u0142u, ale form\u0105 w jakiej ca\u0142o\u015b\u0107 zosta\u0142a przedstawiona.\n\nOd dawna szuka\u0142em okazji by opowiedzie\u0107 Wam o blogu \u201cDave Leeds on Kotlin\u201d. Autor w swoich publikacjach nie wymy\u015bla ko\u0142a na nowo - mamy do czynienia raczej z do\u015b\u0107 standardowym wprowadzeniem do Kotlina, pochylaj\u0105cym si\u0119 nad zagadnieniami takimi jak: kolekcje, nullowalno\u015b\u0107 czy wyra\u017cenia regularne. To, co wyr\u00f3\u017cnia autora nie tylko spo\u015br\u00f3d grona innych bloger\u00f3w, ale r\u00f3wnie\u017c bardzo dobrych przecie\u017c <a href=\"https:\/\/kotlinlang.org\/docs\/getting-started.html\">dokumentacji od Jetbrains<\/a>, to fakt, \u017ce postanowi\u0142 on t\u0142umaczy\u0107 poszczeg\u00f3lne koncepty, u\u017cywaj\u0105c kresk\u00f3wkowych grafik. Jako d\u0142ugoletni fan sztuki komiksowej musz\u0119 przyzna\u0107, \u017ce sprawia to bardzo dobre wra\u017cenie i powinno by\u0107 interesuj\u0105ce nie tylko dla nowicjusza, ale i dla Kotlinowych wyjadaczy.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b615eee0.png\" alt=\"\" \/><\/figure>\nNajnowszy tekst autora dotyczy \u201cnullowalno\u015bci\u201d i w bardzo przyst\u0119pny spos\u00f3b t\u0142umaczy, jak dzia\u0142aj\u0105 optionale, oraz jak Kotlin jako j\u0119zyk pozwala w wygodny spos\u00f3b si\u0119 z nimi obchodzi\u0107. O ile wyjadacze nie znajd\u0105 dla siebie tutaj za wiele (aczkolwiek my\u015bl\u0119, \u017ce warto zagl\u0105dn\u0105\u0107, \u017ceby zobaczy\u0107 jak przyst\u0119pnie t\u0142umaczy\u0107 techniczne koncepty), o tyle je\u015bli chcia\u0142bym wprowadzi\u0107 np. programist\u0119 Javy do \u015bwiata Kotlina, ci\u0119\u017cko by\u0142oby mi znale\u017a\u0107 przyst\u0119pniejsze \u017ar\u00f3d\u0142o ni\u017c blog Dave.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b6251cd3.png\" alt=\"\" \/><\/figure>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/typealias.com\/start\/kotlin-nulls\/\">Kotlin: An Illustrated Guide \u2022 Chapter 6 - Nulls and Null Safety<\/a><\/li>\n \t<li><a href=\"https:\/\/kotlinlang.org\/docs\/getting-started.html\">Get started with Kotlin<\/a><\/li>\n<\/ul>\n<h2 id=\"3-przegl%C4%85d-scalowych-bibliotek-do-programowania-funkcyjnego-%F0%9F%91%A9%E2%80%8D%F0%9F%8F%AB\"><a href=\"https:\/\/blog.softwaremill.com\/figuring-out-scala-functional-programming-libraries-af8230efccb4\">3. Przegl\u0105d Scalowych bibliotek do programowania funkcyjnego \u200d<\/a><\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b62c3e21.png\" alt=\"\" \/><\/figure>\nScala umo\u015bci\u0142a si\u0119 w \u015bwiatku iloczynu lambda i chyba w nim w\u0142a\u015bnie pozostanie ju\u017c na zawsze. O ile jeszcze kilka lat temu r\u00f3wnowaga mi\u0119dzy podej\u015bciem obiektowym, a funkcyjnym nie by\u0142a jeszcze a\u017c tak zaburzona, to dzisiaj jednak cho\u0107by po stanie ekosystemu wida\u0107, \u017ce to drugie podej\u015bcie zwyci\u0119\u017cy\u0142o w sercach spo\u0142eczno\u015bci. Niech dowodem b\u0119dzie wysyp r\u00f3\u017cnorakich bibliotek pozwalaj\u0105cych na zaspokojenie potrzeb funkcyjnych puryst\u00f3w. O ile do\u015bwiadczeni programi\u015bci j\u0119zyka Lightbenda z pewno\u015bci\u0105 ciesz\u0105 si\u0119 z wachlarzu opcji, o tyle dla kogo\u015b wchodz\u0105cego do tego \u015bwiata sytuacja mo\u017ce by\u0107 ciutk\u0119 przyt\u0142aczaj\u0105ca.\n\nSt\u0105d te\u017c bardzo cieszy artyku\u0142, kt\u00f3rym mam okazj\u0119 si\u0119 z Wami podzieli\u0107. Autor bierze na warsztat dost\u0119pne rozwi\u0105zania (Scalaz, Cats, Monix oraz ZIO) i w przyjemny spos\u00f3b pokazuje, w czym s\u0105 one do siebie podobne, a co je odr\u00f3\u017cnia. Ca\u0142o\u015b\u0107 nie wymaga, co prawda w zasadzie znajomo\u015bci samej Scali, ale na pewno przyda si\u0119 znajomo\u015b\u0107 funkcyjnych koncept\u00f3w. Na szcz\u0119\u015bcie autor ka\u017cdorazowo przywo\u0142uj\u0105c Monoid czy Functor, odsy\u0142a do innych materia\u0142\u00f3w. Je\u017celi za\u015b kt\u00f3re\u015b z opisywanych rozwi\u0105za\u0144 Was zainteresuje, w samym tek\u015bcie znajdziecie te\u017c sporo odno\u015bnik\u00f3w do materia\u0142\u00f3w pozwalaj\u0105cych pog\u0142\u0119bi\u0107 wiedz\u0119.\n\nZdecydo\nwanie polecam ten artyku\u0142 ka\u017cdej osobie, kt\u00f3ra zaczyna swoj\u0105 przygod\u0119 z funkcyjnym programowaniem w Scali. Opracowanie z pewno\u015bci\u0105 u\u0142atwi odnalezienie si\u0119 w g\u0105szczu mo\u017cliwo\u015bci.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b6345977.png\" alt=\"\" \/>\n\n<figcaption>Zacz\u0119li\u015bmy od \u015bmiania si\u0119 z rekurencji, to jeszcze na po\u017cegnanie...<\/figcaption><\/figure>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/blog.softwaremill.com\/figuring-out-scala-functional-programming-libraries-af8230efccb4\">Figuring out Scala functional programming libraries<\/a><\/li>\n<\/ul>","innerContent":["<h2 id=\"1-skategoryzowana-lista-wszystkich-nowo%C5%9Bci-mi%C4%99dzy-jdk-8-a-16-%F0%9F%91%91\"><a href=\"https:\/\/advancedweb.hu\/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-16\/\">1. Skategoryzowana lista wszystkich nowo\u015bci mi\u0119dzy JDK 8 a 16<\/a><\/h2>\nBardzo lubi\u0119 szybki cykl releasowy Javy. Wprawdzie ze strony spo\u0142eczno\u015bci innych j\u0119zyk\u00f3w (niedawno sie\u0107 obieg\u0142 tekst pokazuj\u0105cy problemy, <a href=\"https:\/\/kerkour.com\/blog\/the-biggest-threat-to-rust-sustainability\/\">jakie powoduje to w wypadku Rusta<\/a>, a sami tydzie\u0144 temu pisali\u015bmy o krytyce <a href=\"https:\/\/mungingdata.com\/scala\/maintenance-nightmare-upgrade\/\">z jak\u0105 spotka\u0142a si\u0119 Scala<\/a>), ale uwa\u017cam, \u017ce Oracle bardzo dobrze sobie z tym poradzi\u0142. R\u00f3wnoleg\u0142e posiadanie wersji Long-Time Support oraz co p\u00f3\u0142rocznych, rozwojowych edycji jest bardzo dobrym kompromisem. Podej\u015bcie oparte o \u201c<a href=\"https:\/\/www.thoughtworks.com\/radar\/techniques\/release-train\">Release Train<\/a>\u201d sprawia, \u017ce je\u015bli jaki\u015b \u201cficzur\u201d nie jest gotowy, to po prostu trafia do kolejnej edycji, kt\u00f3ra uka\u017ce si\u0119 za 6 miesi\u0119cy.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b600374f.png\" alt=\"\" \/>\n<figcaption>Je\u015bli rozumiesz ten dowcip <a href=\"https:\/\/www.infoworld.com\/article\/3198912\/java-9-delayed-due-to-modularity-controversy.html\">bez klikania w link<\/a>, znaczy \u017ce ju\u017c pewnie jeste\u015b Javowym seniorem \u00a0<\/figcaption><\/figure>\nJednocze\u015bnie jednak zauwa\u017cam pewn\u0105 wad\u0119 takiego podej\u015bcia. Jeszcze za czas\u00f3w Javy 8, \u015bledzenie tego j\u0119zyka by\u0142o bardzo proste. Co ~3 lata wychodzi\u0142a nowa wersja, i nawet je\u015bli dostarcza\u0142a ona bardzo wiele nowych mo\u017cliwo\u015bci dla programist\u00f3w (je\u017celi przebili\u015bmy si\u0119 przez wszystkie zaprezentowane dodatki), to mieli\u015bmy \u201cspok\u00f3j\u201d. Dzisiaj nawet je\u015bli chcemy \u201cupgradowa\u0107 si\u0119\u201d tylko w wypadku LTS\u00f3w, niejako musimy \u015bledzi\u0107 ka\u017cde po\u015brednie wydanie - przy okazji premiery JDK 17 w release notesach nie b\u0119d\u0105 pojawia\u0142y si\u0119 zmiany np. z JDK 13. Chc\u0105c nadrobi\u0107 wszystko, co wydarzy\u0142o si\u0119 w ekosystemie od ostatniego LTSa (dla przypomnienia - JDK 11), musieliby\u015bmy sprawdzi\u0107, czy co\u015b interesuj\u0105cego dla nas nie pojawi\u0142o si\u0119 w JDK 12, 13, 14, 15 i 16. Mo\u017ce by\u0107 to nieco uci\u0105\u017cliwe.\n\nDlatego te\u017c z tak wielk\u0105 rado\u015bci\u0105 przyjmujemy opracowania podobne do tego zaprezentowanego przez Advanced Web Machinery. W kr\u00f3tkim, zaledwie 14-minutowym tek\u015bcie, D\u00e1vid Cs\u00e1kv\u00e1ri zrobi\u0142 swoisty \u201crajd\u201d po wszystkich zmianach, grupuj\u0105c je w koherentny przegl\u0105d wszystkiego, co wydarzy\u0142o si\u0119 od czasu JDK 8. Bardzo wygodny, jest zaproponowany przez niego, spos\u00f3b grupowania - poszczeg\u00f3lne zmiany zebrane s\u0105 w logicznych kategoriach takich jak cho\u0107by \u201cwsp\u00f3\u0142bie\u017cno\u015b\u0107\u201d, \u201cGarbage Collectory\u201d czy \u201cpoprawki bezpiecze\u0144stwa\u201d. Pozwala to z jednej strony osobom, kt\u00f3re zosta\u0142y w tyle, szybko nadrobi\u0107 zaleg\u0142o\u015bci, regularnie \u015bledz\u0105cym za\u015b nowe wydania umo\u017cliwia szybk\u0105 powt\u00f3reczk\u0119. Bardzo polecamy.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/advancedweb.hu\/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-16\/\">A categorized list of all Java and JVM features since JDK 8 to 16<\/a><\/li>\n \t<li><a href=\"https:\/\/kerkour.com\/blog\/the-biggest-threat-to-rust-sustainability\/\">The biggest threat to Rust's sustainability<\/a><\/li>\n \t<li><a href=\"https:\/\/mungingdata.com\/scala\/maintenance-nightmare-upgrade\/\">Scala is a Maintenance Nightmare<\/a><\/li>\n<\/ul>\n<h2 id=\"2-przepi%C4%99knie-ilustrowany-przewodnik-po-kotlinie-%F0%9F%91%A8%E2%80%8D%F0%9F%8E%A8\"><a href=\"https:\/\/typealias.com\/start\/kotlin-nulls\/\">2. Przepi\u0119knie ilustrowany przewodnik po Kotlinie <\/a> \u200d<\/h2>\nDrugi z prezentowanych dzisiaj link\u00f3w mocno wybija si\u0119 na tle konkurencji. Wyj\u0105tkowo pow\u00f3d, dla kt\u00f3rego o nim piszemy nie jest zwi\u0105zany z zawarto\u015bci\u0105 artyku\u0142u, ale form\u0105 w jakiej ca\u0142o\u015b\u0107 zosta\u0142a przedstawiona.\n\nOd dawna szuka\u0142em okazji by opowiedzie\u0107 Wam o blogu \u201cDave Leeds on Kotlin\u201d. Autor w swoich publikacjach nie wymy\u015bla ko\u0142a na nowo - mamy do czynienia raczej z do\u015b\u0107 standardowym wprowadzeniem do Kotlina, pochylaj\u0105cym si\u0119 nad zagadnieniami takimi jak: kolekcje, nullowalno\u015b\u0107 czy wyra\u017cenia regularne. To, co wyr\u00f3\u017cnia autora nie tylko spo\u015br\u00f3d grona innych bloger\u00f3w, ale r\u00f3wnie\u017c bardzo dobrych przecie\u017c <a href=\"https:\/\/kotlinlang.org\/docs\/getting-started.html\">dokumentacji od Jetbrains<\/a>, to fakt, \u017ce postanowi\u0142 on t\u0142umaczy\u0107 poszczeg\u00f3lne koncepty, u\u017cywaj\u0105c kresk\u00f3wkowych grafik. Jako d\u0142ugoletni fan sztuki komiksowej musz\u0119 przyzna\u0107, \u017ce sprawia to bardzo dobre wra\u017cenie i powinno by\u0107 interesuj\u0105ce nie tylko dla nowicjusza, ale i dla Kotlinowych wyjadaczy.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b615eee0.png\" alt=\"\" \/><\/figure>\nNajnowszy tekst autora dotyczy \u201cnullowalno\u015bci\u201d i w bardzo przyst\u0119pny spos\u00f3b t\u0142umaczy, jak dzia\u0142aj\u0105 optionale, oraz jak Kotlin jako j\u0119zyk pozwala w wygodny spos\u00f3b si\u0119 z nimi obchodzi\u0107. O ile wyjadacze nie znajd\u0105 dla siebie tutaj za wiele (aczkolwiek my\u015bl\u0119, \u017ce warto zagl\u0105dn\u0105\u0107, \u017ceby zobaczy\u0107 jak przyst\u0119pnie t\u0142umaczy\u0107 techniczne koncepty), o tyle je\u015bli chcia\u0142bym wprowadzi\u0107 np. programist\u0119 Javy do \u015bwiata Kotlina, ci\u0119\u017cko by\u0142oby mi znale\u017a\u0107 przyst\u0119pniejsze \u017ar\u00f3d\u0142o ni\u017c blog Dave.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b6251cd3.png\" alt=\"\" \/><\/figure>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/typealias.com\/start\/kotlin-nulls\/\">Kotlin: An Illustrated Guide \u2022 Chapter 6 - Nulls and Null Safety<\/a><\/li>\n \t<li><a href=\"https:\/\/kotlinlang.org\/docs\/getting-started.html\">Get started with Kotlin<\/a><\/li>\n<\/ul>\n<h2 id=\"3-przegl%C4%85d-scalowych-bibliotek-do-programowania-funkcyjnego-%F0%9F%91%A9%E2%80%8D%F0%9F%8F%AB\"><a href=\"https:\/\/blog.softwaremill.com\/figuring-out-scala-functional-programming-libraries-af8230efccb4\">3. Przegl\u0105d Scalowych bibliotek do programowania funkcyjnego \u200d<\/a><\/h2>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b62c3e21.png\" alt=\"\" \/><\/figure>\nScala umo\u015bci\u0142a si\u0119 w \u015bwiatku iloczynu lambda i chyba w nim w\u0142a\u015bnie pozostanie ju\u017c na zawsze. O ile jeszcze kilka lat temu r\u00f3wnowaga mi\u0119dzy podej\u015bciem obiektowym, a funkcyjnym nie by\u0142a jeszcze a\u017c tak zaburzona, to dzisiaj jednak cho\u0107by po stanie ekosystemu wida\u0107, \u017ce to drugie podej\u015bcie zwyci\u0119\u017cy\u0142o w sercach spo\u0142eczno\u015bci. Niech dowodem b\u0119dzie wysyp r\u00f3\u017cnorakich bibliotek pozwalaj\u0105cych na zaspokojenie potrzeb funkcyjnych puryst\u00f3w. O ile do\u015bwiadczeni programi\u015bci j\u0119zyka Lightbenda z pewno\u015bci\u0105 ciesz\u0105 si\u0119 z wachlarzu opcji, o tyle dla kogo\u015b wchodz\u0105cego do tego \u015bwiata sytuacja mo\u017ce by\u0107 ciutk\u0119 przyt\u0142aczaj\u0105ca.\n\nSt\u0105d te\u017c bardzo cieszy artyku\u0142, kt\u00f3rym mam okazj\u0119 si\u0119 z Wami podzieli\u0107. Autor bierze na warsztat dost\u0119pne rozwi\u0105zania (Scalaz, Cats, Monix oraz ZIO) i w przyjemny spos\u00f3b pokazuje, w czym s\u0105 one do siebie podobne, a co je odr\u00f3\u017cnia. Ca\u0142o\u015b\u0107 nie wymaga, co prawda w zasadzie znajomo\u015bci samej Scali, ale na pewno przyda si\u0119 znajomo\u015b\u0107 funkcyjnych koncept\u00f3w. Na szcz\u0119\u015bcie autor ka\u017cdorazowo przywo\u0142uj\u0105c Monoid czy Functor, odsy\u0142a do innych materia\u0142\u00f3w. Je\u017celi za\u015b kt\u00f3re\u015b z opisywanych rozwi\u0105za\u0144 Was zainteresuje, w samym tek\u015bcie znajdziecie te\u017c sporo odno\u015bnik\u00f3w do materia\u0142\u00f3w pozwalaj\u0105cych pog\u0142\u0119bi\u0107 wiedz\u0119.\n\nZdecydo\nwanie polecam ten artyku\u0142 ka\u017cdej osobie, kt\u00f3ra zaczyna swoj\u0105 przygod\u0119 z funkcyjnym programowaniem w Scali. Opracowanie z pewno\u015bci\u0105 u\u0142atwi odnalezienie si\u0119 w g\u0105szczu mo\u017cliwo\u015bci.\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0b6345977.png\" alt=\"\" \/>\n\n<figcaption>Zacz\u0119li\u015bmy od \u015bmiania si\u0119 z rekurencji, to jeszcze na po\u017cegnanie...<\/figcaption><\/figure>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-2\">\u0179r\u00f3d\u0142a:<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/blog.softwaremill.com\/figuring-out-scala-functional-programming-libraries-af8230efccb4\">Figuring out Scala functional programming libraries<\/a><\/li>\n<\/ul>"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10157","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=10157"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10157\/revisions"}],"predecessor-version":[{"id":10579,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10157\/revisions\/10579"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}