{"id":10112,"date":"2021-07-13T13:00:00","date_gmt":"2021-07-13T11:00:00","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-46\/"},"modified":"2022-09-19T13:10:51","modified_gmt":"2022-09-19T11:10:51","slug":"jvm-tuesday-vol-46","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/","title":{"rendered":"JVM Tuesday vol. 46"},"content":{"rendered":"<h2 id=\"1-facebook-dzieli-sie-swoim-uzyciem-graalvm\" data-num=1><a href=\"https:\/\/medium.com\/graalvm\/graalvm-at-facebook-af09338ac519\">1. Facebook dzieli si\u0119 swoim u\u017cyciem GraalVM<\/a><\/h2>\n<p>W niejednej edycji naszego wtorkowego przegl\u0105du mieli\u015bmy ju\u017c okazj\u0119 pisa\u0107 na temat GraalVM. Technologia ta jest jednym z najciekawszych element\u00f3w JVMowego ekosystemu ostatnich lat, a ka\u017cda nowa i wi\u0119ksza edycja wzbudza entuzjazm spo\u0142eczno\u015bci. I o ile ja sam mia\u0142em przyjemno\u015b\u0107 wdro\u017cenia jej na produkcj\u0119 (aczkolwiek w bardzo ograniczonym zakresie &#8211; \u201cnatywny\u201d Micronaut w Dockerze to najwi\u0119kszy mo\u017cliwy graalVMowy bana\u0142), o tyle jednak na rynku ci\u0105gle brakuje jakich\u015b ambitnych wdro\u017ce\u0144, kt\u00f3re mog\u0142yby przetrze\u0107 szlaki kolejnym eksperymentatorom. Dlatego zawsze z zainteresowaniem przygl\u0105dam si\u0119 nowym, pojawiaj\u0105cym si\u0119 Case Study. Tym razem swoimi do\u015bwiadczeniami z GraalVM postanowi\u0142 podzieli\u0107 si\u0119 Facebook.<\/p>\n<p>Facebook pewnie nie kojarzy si\u0119 nikomu bardzo z JVMem. Wszystkim zdziwionym \u015bpiesz\u0119 jednak przypomnie\u0107, \u017ce w tego typu firmach, ze wzgl\u0119du na szeroko\u015b\u0107 ich dzia\u0142a\u0144, znale\u017a\u0107 mo\u017cna w zasadzie ka\u017cd\u0105 mo\u017cliw\u0105 technologi\u0119. Cytuj\u0105c sam artyku\u0142: Java jest wykorzystywana w Facebooku w kilku kluczowych obszarach: big data (Spark, Presto itp.), r\u00f3\u017cnego rodzaju us\u0142ugach oraz w szeroko poj\u0119tym mobile. Tego typu firmy cz\u0119sto maj\u0105 te\u017c do\u015b\u0107 unikalne wymagania je\u015bli chodzi o performance. Przy pewnej skali dzia\u0142ania okazuje si\u0119, \u017ce ka\u017cdy procent wydajno\u015bci szybko przek\u0142ada si\u0119 na wymierne oszcz\u0119dno\u015bci.<\/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_610d09043a71a.png\" alt=\"\"><\/figure>\n<p>Przywo\u0142ane Case Study opisuje w\u0142a\u015bnie Sparka. Artyku\u0142 nie tylko przedstawia, jakie cechy GraalVM sprawi\u0142y, \u017ce Facebook zainteresowa\u0142 si\u0119 w\u0142a\u015bnie GraalVM, ale r\u00f3wnie\u017c pokazuje bardzo konkretne liczby. Ostatnio s\u0142ucha\u0142em odcinka podcastu Adama Biena, airhacks.fm, w kt\u00f3rym <a href=\"https:\/\/airhacks.fm\/#episode_141\">rozmawia\u0142 on z g\u0142\u00f3wnym Product Managerem Graala, Shaunem Smithem<\/a>. Jednym z aspekt\u00f3w, kt\u00f3ry przyku\u0142 moj\u0105 uwag\u0119 by\u0142y w\u0142a\u015bnie charakterystyki wydajno\u015bciowe &#8211; z rozmowy wynika\u0142o, \u017ce o ile ju\u017c Community Edition nieco zyskuje nad OpenJDK, to dopiero p\u0142atna wersja Enterprise rozwija skrzyd\u0142a. Jak udowadnia powy\u017cszy wykres, jest to zgodne z wynikami uzyskanymi przez Facebooka, co przyznam by\u0142o do\u015b\u0107 mi\u0142ym zaskoczeniem.<\/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_610d0904eaed5.png\" alt=\"\"><figcaption>Aczkolwiek nie wiem, czy inne liczby zosta\u0142yby opublikowane na oficjalnym blogu rozwijanej przez Oracle technologii, wi\u0119c patrz\u0119 na ca\u0142o\u015b\u0107 z lekkim przymru\u017ceniem oka.&nbsp;<\/figcaption><\/figure>\n<p>Tak jak ju\u017c wspomnia\u0142em, publikacja zawiera sporo interesuj\u0105cych detali, dlatego polecam przeczyta\u0107 pe\u0142ne podsumowanie, zw\u0142aszcza je\u015bli u\u017cywacie Apache Sparka.<\/p>\n<div class=\"embed-responsive embed-responsive-16by9\"><iframe loading=\"lazy\" title=\"Twitter\u2019s Quest for a Wholly Graal Runtime\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/G-vlQaPMAxg?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<p>Dla ch\u0119tnych &#8211; artyku\u0142 linkuje r\u00f3wnie\u017c do r\u00f3wnie interesuj\u0105cego Case Study, opublikowanego ju\u017c w 2017 przez in\u017cynier\u00f3w Twittera.<\/p>\n<p>BTW: A jak ju\u017c mowa o Sparku &#8211; w zesz\u0142ym tygodniu ukaza\u0142o si\u0119 stabilne wydanie <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/07\/kotlin-api-for-apache-spark-1-0-released\/\">kotlinowej wersji jego API<\/a>. Mo\u017ce kto\u015b b\u0119dzie chcia\u0142 spr\u00f3bowa\u0107.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n<li><a href=\"https:\/\/medium.com\/graalvm\/graalvm-at-facebook-af09338ac519\">GraalVM at Facebook. Facebook is using GraalVM to accelerate\u2026<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/07\/kotlin-api-for-apache-spark-1-0-released\/\">Kotlin API for Apache Spark 1.0 Released | The Kotlin Blog<\/a><\/li>\n<li><a href=\"https:\/\/airhacks.fm\/#episode_141\">Podcast with Adam Bien about Java and Web<\/a><\/li>\n<\/ul>\n<h2 id=\"2-scala-3-tech-report-z-informacjami-o-stanie-ekosystemu\" data-num=2><a href=\"https:\/\/softwaremill.com\/scala-3-tech-report\/\">2. Scala 3 Tech Report z informacjami o stanie ekosystemu<\/a> \u019b<\/h2>\n<p>Bardzo lubimy w Vivedzie wszelkiej ma\u015bci raporty. Mimo, \u017ce czasem ekstrapoluj\u0105 szerokie wnioski z nie zawsze wielkiej pr\u00f3bki (patrz\u0119 si\u0119 na ciebie, Jakarta EE Survey), albo mie\u0107 t\u0119 pr\u00f3bk\u0119 mocno zbiasowan\u0105 w kierunku \u201cbleeding edge\u201d (czyli w\u0142a\u015bnie ludzi sk\u0142onnych odpowiada\u0107 na pytania w takich zdalnych raportach), ale ka\u017cdorazowo potrafi\u0105 przynie\u015b\u0107 nieco szerszego spojrzenia na g\u0142osy pojawiaj\u0105ce si\u0119 w spo\u0142eczno\u015bci. Dlatego te\u017c ch\u0119tnie przytulili\u015bmy The Scala 3 Tech Report, wydany przez firm\u0119 SoftwareMill. Scala 3 mia\u0142a bowiem niedawno premier\u0119, wi\u0119c jest to dobry moment na przygl\u0105dni\u0119cie si\u0119 jej obecnej adopcji.<\/p>\n<p>Jak to zawsze w takich ankietach bywa, po cz\u0119\u015bci opisuj\u0105cej metodologie (pr\u00f3ba raportu to 671 os\u00f3b &#8211; \u201cnot great, not terrible\u201d) dostajemy mas\u0119 wykresik\u00f3w, \u0142adnie wyrysowanych w oparciu o zdobyte dane liczbowe. I o ile np. u\u017cycie Scali z podzia\u0142em na konkretne bran\u017ce mo\u017ce dla wielu os\u00f3b by\u0107 przydatne, to mnie zawsze najbardziej ciekawi\u0142y rzeczy nieco bli\u017csze \u201cmaszynie\u201d &#8211; mocno zwi\u0105zane z ekosystemem technicznym.<\/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_610d090529b13.png\" alt=\"\"><\/figure>\n<p>Linkowany raport zawiera par\u0119 smaczk\u00f3w dla takiej w\u0142a\u015bnie nerdozy jak ja. Co\u015b, co przyku\u0142o moj\u0105 uwag\u0119, to z pewno\u015bci\u0105 procentowe u\u017cycie poszczeg\u00f3lnych bibliotek. Co prawda, na samym szczycie mamy bana\u0142, czyli Scalatest, ale z wykres\u00f3w mo\u017cna odczyta\u0107 te\u017c kilka interesuj\u0105cych rzeczy.<\/p>\n<p>Przyk\u0142adowo, w oparciu o raport rysuje si\u0119 olbrzymia dominacja Cats, je\u015bli chodzi o rozwini\u0119cie wsparcia Scali dla programowania funkcyjnego (Aczkolwiek trzeba te\u017c zaznaczy\u0107, \u017ce w\u015br\u00f3d najcz\u0119\u015bciej u\u017cywanych rozwi\u0105za\u0144 dalej nie brakuje tych opartych na Akkce). Zar\u00f3wno Cats, jak i Cats-Effects nale\u017c\u0105 do \u015bcis\u0142ej czo\u0142\u00f3wki najcz\u0119\u015bciej u\u017cywanych bibliotek. Do czo\u0142\u00f3wki przebi\u0142o si\u0119 te\u017c Circe, wsp\u00f3\u0142pracuj\u0105ca z Catsami biblioteka do parsowania JSON\u00f3w. Dodatkowo to w\u0142a\u015bnie Cats i Circe s\u0105 r\u00f3wnie\u017c tymi rozwi\u0105zaniami, bez wsparcia kt\u00f3rych programi\u015bci nawet nie planowali by rozwa\u017ca\u0107 migracji do Scali 3 &#8211; a o ile Cats <a href=\"https:\/\/github.com\/typelevel\/cats\/releases\/tag\/v2.6.1\">w wspiera now\u0105 wersj\u0119 j\u0119zyka<\/a>, o tyle jej obs\u0142uga w Circe <a href=\"https:\/\/github.com\/circe\/circe\/releases\">jest ci\u0105gle w fazie eksperyment\u00f3w. <\/a><\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0906c243b.png\" alt=\"\"><\/figure>\n<p>Z tego punktu p\u0142ynnie mo\u017cemy przej\u015b\u0107 do pytania, kt\u00f3re najbardziej mnie zainteresowa\u0142a &#8211; czy programi\u015bci zamierzaj\u0105 przej\u015b\u0107 na Scal\u0119 3? Ot\u00f3\u017c okazuje si\u0119, \u017ce raczej tak &#8211; prawie 80% deklaruje taki zamiar z du\u017c\u0105 pewno\u015bci\u0105.<\/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_610d0908f2eff.png\" alt=\"\"><\/figure>\n<p>Nieco gorzej prezentuj\u0105 si\u0119 co prawda przewidywania, kiedy mo\u017ce to nast\u0105pi\u0107 (prawie po\u0142owa nie ma zdefiniowanego nawet zgrubnego planu migracji), ale w dalszym ci\u0105gu wygl\u0105da to do\u015b\u0107 optymistycznie. Oczywi\u015bcie, tak jak wspomnia\u0142em we wst\u0119pie, nale\u017cy bra\u0107 pewn\u0105 poprawk\u0119 na to, \u017ce odpowiedzi prawdopodobnie dokonywa\u0142a grupa najbardziej aktywnych u\u017cytkownik\u00f3w, wi\u0119c dane mog\u0105 by\u0107 delikatnie zaburzone.<\/p>\n<p>Polecamy oczywi\u015bcie ca\u0142y raport, kt\u00f3ry jest bardzo dobrze przygotowany i nawet dla kogo\u015b, kto nie pisze codziennie w Scali, zawiera mas\u0119 interesuj\u0105cych informacji.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n<li><a href=\"https:\/\/softwaremill.com\/scala-3-tech-report\/\">Scala 3 Tech Report by SoftwareMill<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/typelevel\/cats\/releases\/tag\/v2.6.1\">https:\/\/github.com\/typelevel\/cats\/releases\/tag\/v2.6.1<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/circe\/circe\/releases\">https:\/\/github.com\/circe\/circe\/releases<\/a><\/li>\n<\/ul>\n<h2 id=\"3-natywne-wsparcie-dla-graphqla-w-springu\" data-num=3><a href=\"https:\/\/spring.io\/blog\/2021\/07\/06\/introducing-spring-graphql\">3. Natywne wsparcie dla GraphQLa w Springu<\/a><\/h2>\n<p>Min\u0119\u0142o kilka lat, od kiedy pojawi\u0142 si\u0119 na rynku GraphQL, kt\u00f3ry zapowiadany by\u0142 jako pogromca RESTa. W zasadzie od 2015 do niedawna ka\u017cdy kolejny rok zapowiadany by\u0142 jako ten, w kt\u00f3rym ten nowy protok\u00f3\u0142 komunikacyjny ostatecznie \u201czaskoczy\u201d i zacznie szturmem zdobywa\u0107 rynek. Ostatnimi czasy mam jednak wra\u017cenie, \u017ce ch\u0119\u0107 opanowania \u015bwiata, tak widoczna w pocz\u0105tkowych latach, gdzie\u015b wyparowa\u0142a. To jednak bardzo dobrze &#8211; w jej wersji pojawi\u0142o si\u0119 nieco zdrowego pragmatyzmu, kt\u00f3ry co prawda wepchn\u0105\u0142 sam\u0105 technologi\u0119 w pewn\u0105 nisz\u0119 (czy te\u017c raczej wiele r\u00f3\u017cnych nisz), ale te\u017c zako\u0144czy\u0142 er\u0119 promocji GraphQLa jako idealnego rozwi\u0105zania w zasadzie na wszystko. Dzi\u0119ki temu na rynku pojawi\u0142o si\u0119 sporo interesuj\u0105cych success stories, powoli onie\u015bmielaj\u0105cych na\u015bladowc\u00f3w &nbsp;&#8211; przypadek nieco bli\u017aniaczy do GraalVM z pierwszego punktu. W zesz\u0142ym tygodniu ciekawe og\u0142oszenie pojawi\u0142o si\u0119 ze strony Spring. Zesp\u00f3\u0142 rozwijaj\u0105cy framework zainicjowa\u0142 bowiem nowy modu\u0142 &nbsp;&#8211; Spring GraphQL.<\/p>\n<p>Projekt \u015bci\u015ble integruj\u0105cy GraphQL Java (najstarsz\u0105 i najpopularniejsz\u0105, sze\u015bcioletni\u0105 ju\u017c bibliotek\u0119) i Springa nie powsta\u0142 w pr\u00f3\u017cni. Od lat powstawa\u0142y r\u00f3\u017cnorakie rozwi\u0105zania umo\u017cliwiaj\u0105ce tego typu wsp\u00f3\u0142prac\u0119. Jednocze\u015bnie jednak \u017cadne z istniej\u0105cych rozwi\u0105za\u0144 nie zapewnia\u0142o takiej wygody jak \u201cnatywnie springowe\u201d rozwi\u0105zania. Zniech\u0119ci\u0142o to do eksperyment\u00f3w i sprawia\u0142o, \u017ce pr\u00f3g wej\u015bcia nieraz by\u0142 po prostu za wysoki. Teraz ta sytuacja ma si\u0119 zmieni\u0107 &#8211; aczkolwiek nie powiem, \u017ce z mojej perspektywy jako\u015b diametralnie.<\/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_610d090bb6f7e.png\" alt=\"\">&nbsp;<figcaption>TL\/DR Moich pierwszych wra\u017ce\u0144<\/figcaption><\/figure>\n<p>G\u0142\u00f3wna integracja u\u017cywa Querydsl, kt\u00f3ry znany pewnie wszystkim korzystaj\u0105cym z projektu Spring Data, tak\u017ce je\u015bli chodzi o samo tworzenie zapyta\u0144 nie powinno by\u0107 wi\u0119kszych problem\u00f3w. R\u00f3wnocze\u015bnie jednak przyznam, \u017ce po przegl\u0105dni\u0119ciu si\u0119 <a href=\"https:\/\/github.com\/spring-projects\/spring-graphql\/tree\/main\/samples\">przyk\u0142adom<\/a> oraz <a href=\"https:\/\/github.com\/spring-projects\/spring-graphql#documentation\">dokumentacji<\/a>, ca\u0142o\u015b\u0107 rozwi\u0105zania (oparta o Interceptory i DataFetchera) wygl\u0105da na do\u015b\u0107 skomplikowane na pierwszy rzut oka. Niestety, wysoki pr\u00f3g wej\u015bcia zawsze by\u0142 jednym z problem\u00f3w GraphQLa, ale<br \/>\nmusz\u0119 przyzna\u0107, \u017ce rozwi\u0105zania Node.js (jak np. Apollo) wygl\u0105daj\u0105 du\u017co bardziej przyja\u017anie. Mo\u017cliwe, \u017ce jednak jest to tylko pierwsze wra\u017cenie, a po przegryzieniu si\u0119 przez do\u015b\u0107 skomplikowane Hello World ca\u0142o\u015b\u0107 b\u0119dzie przyjemna w u\u017cyciu.<\/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_610d090c5cbaf.gif\" alt=\"\">&nbsp;<figcaption>Marzyciel.<\/figcaption><\/figure>\n<p>Jak to w Springu bywa, rzeczona integracja to nie tylko samo wsparcie dla technologii, ale r\u00f3wnie\u017c dodatkowe elementy, niezb\u0119dne do tworzenia realnych, produkcyjnych aplikacji. Dlatego te\u017c nie brakuje wsparcia dla odpowiednich polityk bezpiecze\u0144stwa, czy zgodnych ze springowymi standardami obs\u0142ugi wyj\u0105tk\u00f3w. Sumarycznie wi\u0119c mamy do czynienia z do\u015b\u0107 ciekaw\u0105, \u201cpe\u0142n\u0105\u201d ofert\u0105.<\/p>\n<p>Ciekawe, czy projekt sprawi, \u017ce wi\u0119cej \u201cspringowc\u00f3w\u201d zdecyduje si\u0119 na GraphQL w swoich projektach.<\/p>\n<div class=\"embed-responsive embed-responsive-16by9\"><iframe loading=\"lazy\" title=\"Devs&#039; Talks #7: GraphQL\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/rp1Ek8gZ94c?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<p>A je\u015bli chcecie pos\u0142ucha\u0107 wi\u0119cej o GraphQL to zapraszam do odcinka videocastu, w kt\u00f3rym <a href=\"https:\/\/www.linkedin.com\/in\/kusmierz\/\">wraz z go\u015bciem<\/a> opisujemy, czym takowy jest oraz rozmawiamy o istniej\u0105cym scalowym ekosystemie.<\/p>\n<h3 id=\"%C5%BAr%C3%B3d%C5%82o\">\u0179r\u00f3d\u0142o<\/h3>\n<ul>\n<li><a href=\"https:\/\/spring.io\/blog\/2021\/07\/06\/introducing-spring-graphql\">Introducing Spring GraphQL<\/a><\/li>\n<li><a href=\"https:\/\/spring.io\/blog\/2021\/07\/06\/hello-spring-graphql\">Hello, Spring GraphQL<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/spring-projects\/spring-graphql\/tree\/main\/samples\">Spring GraphQL Examples<\/a><\/li>\n<\/ul>\n<hr>\n<p>\u200cPami\u0119tajcie, \u017ceby spr\u00f3bowa\u0107 <a href=\"https:\/\/blog.vived.io\/keep-up-czyli-o-tym-jak-byc-na-biezaco-bez-uczucia-przytloczenia-contentem\/\"><strong>Vived<\/strong><\/a>, je\u015bli chcesz otrzymywa\u0107 tego typu tre\u015bci spersonalizowane pod Ciebie!<\/p>\n<ul>\n<li><a href=\"https:\/\/apple.co\/3fB8Kcf\" rel=\"nofollow noopener\">App Store<\/a><\/li>\n<li><a href=\"https:\/\/bit.ly\/3m421dx\" rel=\"nofollow noopener\">Play Store<\/a><\/li>\n<li><a href=\"http:\/\/bit.ly\/2M7CeUN\">Wersja PWA<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>W dniu dzisiejszym mamy dla Was GraalVM od Facebooka, GraphQL od Springa, a tak\u017ce raport podsumowuj\u0105cy pierwsze miesi\u0105ce \u017cycia Scali 3. 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-10112","post","type-post","status-publish","format-standard","hentry","category-jvm-pl"],"acf":{"weekly_summary":true,"estimated_reading_time":"7"},"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. 46 - 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-46\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 46 - Vived\" \/>\n<meta property=\"og:description\" content=\"W dniu dzisiejszym mamy dla Was GraalVM od Facebooka, GraphQL od Springa, a tak\u017ce raport podsumowuj\u0105cy pierwsze miesi\u0105ce \u017cycia Scali 3. Zapraszamy do lektury!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-13T11:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d09043a71a.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-46\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 46\",\"datePublished\":\"2021-07-13T11:00:00+00:00\",\"dateModified\":\"2022-09-19T11:10:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/\"},\"wordCount\":1561,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d09043a71a.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/\",\"name\":\"JVM Tuesday vol. 46 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d09043a71a.png\",\"datePublished\":\"2021-07-13T11:00:00+00:00\",\"dateModified\":\"2022-09-19T11:10:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d09043a71a.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d09043a71a.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 46\"}]},{\"@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. 46 - 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-46\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 46 - Vived","og_description":"W dniu dzisiejszym mamy dla Was GraalVM od Facebooka, GraphQL od Springa, a tak\u017ce raport podsumowuj\u0105cy pierwsze miesi\u0105ce \u017cycia Scali 3. Zapraszamy do lektury!","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/","og_site_name":"Vived","article_published_time":"2021-07-13T11:00:00+00:00","article_modified_time":"2022-09-19T11:10:51+00:00","og_image":[{"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d09043a71a.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-46\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 46","datePublished":"2021-07-13T11:00:00+00:00","dateModified":"2022-09-19T11:10:51+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/"},"wordCount":1561,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d09043a71a.png","articleSection":["JVM"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/","name":"JVM Tuesday vol. 46 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d09043a71a.png","datePublished":"2021-07-13T11:00:00+00:00","dateModified":"2022-09-19T11:10:51+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d09043a71a.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d09043a71a.png"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-46\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 46"}]},{"@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-facebook-dzieli-si%C4%99-swoim-u%C5%BCyciem-graalvm-%F0%9F%9A%80\"><a href=\"https:\/\/medium.com\/graalvm\/graalvm-at-facebook-af09338ac519\">1. Facebook dzieli si\u0119 swoim u\u017cyciem GraalVM<\/a><\/h2>\nW niejednej edycji naszego wtorkowego przegl\u0105du mieli\u015bmy ju\u017c okazj\u0119 pisa\u0107 na temat GraalVM. Technologia ta jest jednym z najciekawszych element\u00f3w JVMowego ekosystemu ostatnich lat, a ka\u017cda nowa i wi\u0119ksza edycja wzbudza entuzjazm spo\u0142eczno\u015bci. I o ile ja sam mia\u0142em przyjemno\u015b\u0107 wdro\u017cenia jej na produkcj\u0119 (aczkolwiek w bardzo ograniczonym zakresie - \u201cnatywny\u201d Micronaut w Dockerze to najwi\u0119kszy mo\u017cliwy graalVMowy bana\u0142), o tyle jednak na rynku ci\u0105gle brakuje jakich\u015b ambitnych wdro\u017ce\u0144, kt\u00f3re mog\u0142yby przetrze\u0107 szlaki kolejnym eksperymentatorom. Dlatego zawsze z zainteresowaniem przygl\u0105dam si\u0119 nowym, pojawiaj\u0105cym si\u0119 Case Study. Tym razem swoimi do\u015bwiadczeniami z GraalVM postanowi\u0142 podzieli\u0107 si\u0119 Facebook.\n\nFacebook pewnie nie kojarzy si\u0119 nikomu bardzo z JVMem. Wszystkim zdziwionym \u015bpiesz\u0119 jednak przypomnie\u0107, \u017ce w tego typu firmach, ze wzgl\u0119du na szeroko\u015b\u0107 ich dzia\u0142a\u0144, znale\u017a\u0107 mo\u017cna w zasadzie ka\u017cd\u0105 mo\u017cliw\u0105 technologi\u0119. Cytuj\u0105c sam artyku\u0142: Java jest wykorzystywana w Facebooku w kilku kluczowych obszarach: big data (Spark, Presto itp.), r\u00f3\u017cnego rodzaju us\u0142ugach oraz w szeroko poj\u0119tym mobile. Tego typu firmy cz\u0119sto maj\u0105 te\u017c do\u015b\u0107 unikalne wymagania je\u015bli chodzi o performance. Przy pewnej skali dzia\u0142ania okazuje si\u0119, \u017ce ka\u017cdy procent wydajno\u015bci szybko przek\u0142ada si\u0119 na wymierne oszcz\u0119dno\u015bci.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d09043a71a.png\" alt=\"\"><\/figure>\nPrzywo\u0142ane Case Study opisuje w\u0142a\u015bnie Sparka. Artyku\u0142 nie tylko przedstawia, jakie cechy GraalVM sprawi\u0142y, \u017ce Facebook zainteresowa\u0142 si\u0119 w\u0142a\u015bnie GraalVM, ale r\u00f3wnie\u017c pokazuje bardzo konkretne liczby. Ostatnio s\u0142ucha\u0142em odcinka podcastu Adama Biena, airhacks.fm, w kt\u00f3rym <a href=\"https:\/\/airhacks.fm\/#episode_141\">rozmawia\u0142 on z g\u0142\u00f3wnym Product Managerem Graala, Shaunem Smithem<\/a>. Jednym z aspekt\u00f3w, kt\u00f3ry przyku\u0142 moj\u0105 uwag\u0119 by\u0142y w\u0142a\u015bnie charakterystyki wydajno\u015bciowe - z rozmowy wynika\u0142o, \u017ce o ile ju\u017c Community Edition nieco zyskuje nad OpenJDK, to dopiero p\u0142atna wersja Enterprise rozwija skrzyd\u0142a. Jak udowadnia powy\u017cszy wykres, jest to zgodne z wynikami uzyskanymi przez Facebooka, co przyznam by\u0142o do\u015b\u0107 mi\u0142ym zaskoczeniem.\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_610d0904eaed5.png\" alt=\"\"><figcaption>Aczkolwiek nie wiem, czy inne liczby zosta\u0142yby opublikowane na oficjalnym blogu rozwijanej przez Oracle technologii, wi\u0119c patrz\u0119 na ca\u0142o\u015b\u0107 z lekkim przymru\u017ceniem oka.&nbsp;<\/figcaption><\/figure>\nTak jak ju\u017c wspomnia\u0142em, publikacja zawiera sporo interesuj\u0105cych detali, dlatego polecam przeczyta\u0107 pe\u0142ne podsumowanie, zw\u0142aszcza je\u015bli u\u017cywacie Apache Sparka.\n\nhttps:\/\/www.youtube.com\/watch?v=G-vlQaPMAxg\n\nDla ch\u0119tnych - artyku\u0142 linkuje r\u00f3wnie\u017c do r\u00f3wnie interesuj\u0105cego Case Study, opublikowanego ju\u017c w 2017 przez in\u017cynier\u00f3w Twittera.\n\nBTW: A jak ju\u017c mowa o Sparku - w zesz\u0142ym tygodniu ukaza\u0142o si\u0119 stabilne wydanie <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/07\/kotlin-api-for-apache-spark-1-0-released\/\">kotlinowej wersji jego API<\/a>. Mo\u017ce kto\u015b b\u0119dzie chcia\u0142 spr\u00f3bowa\u0107.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/medium.com\/graalvm\/graalvm-at-facebook-af09338ac519\">GraalVM at Facebook. Facebook is using GraalVM to accelerate\u2026<\/a><\/li>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/07\/kotlin-api-for-apache-spark-1-0-released\/\">Kotlin API for Apache Spark 1.0 Released | The Kotlin Blog<\/a><\/li>\n \t<li><a href=\"https:\/\/airhacks.fm\/#episode_141\">Podcast with Adam Bien about Java and Web<\/a><\/li>\n<\/ul>\n<h2 id=\"2-scala-3-tech-report-z-informacjami-o-stanie-ekosystemu-%C6%9B\"><a href=\"https:\/\/softwaremill.com\/scala-3-tech-report\/\">2. Scala 3 Tech Report z informacjami o stanie ekosystemu<\/a> \u019b<\/h2>\nBardzo lubimy w Vivedzie wszelkiej ma\u015bci raporty. Mimo, \u017ce czasem ekstrapoluj\u0105 szerokie wnioski z nie zawsze wielkiej pr\u00f3bki (patrz\u0119 si\u0119 na ciebie, Jakarta EE Survey), albo mie\u0107 t\u0119 pr\u00f3bk\u0119 mocno zbiasowan\u0105 w kierunku \u201cbleeding edge\u201d (czyli w\u0142a\u015bnie ludzi sk\u0142onnych odpowiada\u0107 na pytania w takich zdalnych raportach), ale ka\u017cdorazowo potrafi\u0105 przynie\u015b\u0107 nieco szerszego spojrzenia na g\u0142osy pojawiaj\u0105ce si\u0119 w spo\u0142eczno\u015bci. Dlatego te\u017c ch\u0119tnie przytulili\u015bmy The Scala 3 Tech Report, wydany przez firm\u0119 SoftwareMill. Scala 3 mia\u0142a bowiem niedawno premier\u0119, wi\u0119c jest to dobry moment na przygl\u0105dni\u0119cie si\u0119 jej obecnej adopcji.\n\nJak to zawsze w takich ankietach bywa, po cz\u0119\u015bci opisuj\u0105cej metodologie (pr\u00f3ba raportu to 671 os\u00f3b - \u201cnot great, not terrible\u201d) dostajemy mas\u0119 wykresik\u00f3w, \u0142adnie wyrysowanych w oparciu o zdobyte dane liczbowe. I o ile np. u\u017cycie Scali z podzia\u0142em na konkretne bran\u017ce mo\u017ce dla wielu os\u00f3b by\u0107 przydatne, to mnie zawsze najbardziej ciekawi\u0142y rzeczy nieco bli\u017csze \u201cmaszynie\u201d - mocno zwi\u0105zane z ekosystemem technicznym.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d090529b13.png\" alt=\"\"><\/figure>\nLinkowany raport zawiera par\u0119 smaczk\u00f3w dla takiej w\u0142a\u015bnie nerdozy jak ja. Co\u015b, co przyku\u0142o moj\u0105 uwag\u0119, to z pewno\u015bci\u0105 procentowe u\u017cycie poszczeg\u00f3lnych bibliotek. Co prawda, na samym szczycie mamy bana\u0142, czyli Scalatest, ale z wykres\u00f3w mo\u017cna odczyta\u0107 te\u017c kilka interesuj\u0105cych rzeczy.\n\nPrzyk\u0142adowo, w oparciu o raport rysuje si\u0119 olbrzymia dominacja Cats, je\u015bli chodzi o rozwini\u0119cie wsparcia Scali dla programowania funkcyjnego (Aczkolwiek trzeba te\u017c zaznaczy\u0107, \u017ce w\u015br\u00f3d najcz\u0119\u015bciej u\u017cywanych rozwi\u0105za\u0144 dalej nie brakuje tych opartych na Akkce). Zar\u00f3wno Cats, jak i Cats-Effects nale\u017c\u0105 do \u015bcis\u0142ej czo\u0142\u00f3wki najcz\u0119\u015bciej u\u017cywanych bibliotek. Do czo\u0142\u00f3wki przebi\u0142o si\u0119 te\u017c Circe, wsp\u00f3\u0142pracuj\u0105ca z Catsami biblioteka do parsowania JSON\u00f3w. Dodatkowo to w\u0142a\u015bnie Cats i Circe s\u0105 r\u00f3wnie\u017c tymi rozwi\u0105zaniami, bez wsparcia kt\u00f3rych programi\u015bci nawet nie planowali by rozwa\u017ca\u0107 migracji do Scali 3 - a o ile Cats <a href=\"https:\/\/github.com\/typelevel\/cats\/releases\/tag\/v2.6.1\">w wspiera now\u0105 wersj\u0119 j\u0119zyka<\/a>, o tyle jej obs\u0142uga w Circe <a href=\"https:\/\/github.com\/circe\/circe\/releases\">jest ci\u0105gle w fazie eksperyment\u00f3w. <\/a>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0906c243b.png\" alt=\"\"><\/figure>\nZ tego punktu p\u0142ynnie mo\u017cemy przej\u015b\u0107 do pytania, kt\u00f3re najbardziej mnie zainteresowa\u0142a - czy programi\u015bci zamierzaj\u0105 przej\u015b\u0107 na Scal\u0119 3? Ot\u00f3\u017c okazuje si\u0119, \u017ce raczej tak - prawie 80% deklaruje taki zamiar z du\u017c\u0105 pewno\u015bci\u0105.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0908f2eff.png\" alt=\"\"><\/figure>\nNieco gorzej prezentuj\u0105 si\u0119 co prawda przewidywania, kiedy mo\u017ce to nast\u0105pi\u0107 (prawie po\u0142owa nie ma zdefiniowanego nawet zgrubnego planu migracji), ale w dalszym ci\u0105gu wygl\u0105da to do\u015b\u0107 optymistycznie. Oczywi\u015bcie, tak jak wspomnia\u0142em we wst\u0119pie, nale\u017cy bra\u0107 pewn\u0105 poprawk\u0119 na to, \u017ce odpowiedzi prawdopodobnie dokonywa\u0142a grupa najbardziej aktywnych u\u017cytkownik\u00f3w, wi\u0119c dane mog\u0105 by\u0107 delikatnie zaburzone.\n\nPolecamy oczywi\u015bcie ca\u0142y raport, kt\u00f3ry jest bardzo dobrze przygotowany i nawet dla kogo\u015b, kto nie pisze codziennie w Scali, zawiera mas\u0119 interesuj\u0105cych informacji.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/softwaremill.com\/scala-3-tech-report\/\">Scala 3 Tech Report by SoftwareMill<\/a><\/li>\n \t<li><a href=\"https:\/\/github.com\/typelevel\/cats\/releases\/tag\/v2.6.1\">https:\/\/github.com\/typelevel\/cats\/releases\/tag\/v2.6.1<\/a><\/li>\n \t<li><a href=\"https:\/\/github.com\/circe\/circe\/releases\">https:\/\/github.com\/circe\/circe\/releases<\/a><\/li>\n<\/ul>\n<h2 id=\"3-natywne-wsparcie-dla-graphqla-w-springu-%F0%9F%8D%83\"><a href=\"https:\/\/spring.io\/blog\/2021\/07\/06\/introducing-spring-graphql\">3. Natywne wsparcie dla GraphQLa w Springu<\/a><\/h2>\nMin\u0119\u0142o kilka lat, od kiedy pojawi\u0142 si\u0119 na rynku GraphQL, kt\u00f3ry zapowiadany by\u0142 jako pogromca RESTa. W zasadzie od 2015 do niedawna ka\u017cdy kolejny rok zapowiadany by\u0142 jako ten, w kt\u00f3rym ten nowy protok\u00f3\u0142 komunikacyjny ostatecznie \u201czaskoczy\u201d i zacznie szturmem zdobywa\u0107 rynek. Ostatnimi czasy mam jednak wra\u017cenie, \u017ce ch\u0119\u0107 opanowania \u015bwiata, tak widoczna w pocz\u0105tkowych latach, gdzie\u015b wyparowa\u0142a. To jednak bardzo dobrze - w jej wersji pojawi\u0142o si\u0119 nieco zdrowego pragmatyzmu, kt\u00f3ry co prawda wepchn\u0105\u0142 sam\u0105 technologi\u0119 w pewn\u0105 nisz\u0119 (czy te\u017c raczej wiele r\u00f3\u017cnych nisz), ale te\u017c zako\u0144czy\u0142 er\u0119 promocji GraphQLa jako idealnego rozwi\u0105zania w zasadzie na wszystko. Dzi\u0119ki temu na rynku pojawi\u0142o si\u0119 sporo interesuj\u0105cych success stories, powoli onie\u015bmielaj\u0105cych na\u015bladowc\u00f3w &nbsp;- przypadek nieco bli\u017aniaczy do GraalVM z pierwszego punktu. W zesz\u0142ym tygodniu ciekawe og\u0142oszenie pojawi\u0142o si\u0119 ze strony Spring. Zesp\u00f3\u0142 rozwijaj\u0105cy framework zainicjowa\u0142 bowiem nowy modu\u0142 &nbsp;- Spring GraphQL.\n\nProjekt \u015bci\u015ble integruj\u0105cy GraphQL Java (najstarsz\u0105 i najpopularniejsz\u0105, sze\u015bcioletni\u0105 ju\u017c bibliotek\u0119) i Springa nie powsta\u0142 w pr\u00f3\u017cni. Od lat powstawa\u0142y r\u00f3\u017cnorakie rozwi\u0105zania umo\u017cliwiaj\u0105ce tego typu wsp\u00f3\u0142prac\u0119. Jednocze\u015bnie jednak \u017cadne z istniej\u0105cych rozwi\u0105za\u0144 nie zapewnia\u0142o takiej wygody jak \u201cnatywnie springowe\u201d rozwi\u0105zania. Zniech\u0119ci\u0142o to do eksperyment\u00f3w i sprawia\u0142o, \u017ce pr\u00f3g wej\u015bcia nieraz by\u0142 po prostu za wysoki. Teraz ta sytuacja ma si\u0119 zmieni\u0107 - aczkolwiek nie powiem, \u017ce z mojej perspektywy jako\u015b diametralnie.\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_610d090bb6f7e.png\" alt=\"\">&nbsp;\n\n<figcaption>TL\/DR Moich pierwszych wra\u017ce\u0144<\/figcaption><\/figure>\nG\u0142\u00f3wna integracja u\u017cywa Querydsl, kt\u00f3ry znany pewnie wszystkim korzystaj\u0105cym z projektu Spring Data, tak\u017ce je\u015bli chodzi o samo tworzenie zapyta\u0144 nie powinno by\u0107 wi\u0119kszych problem\u00f3w. R\u00f3wnocze\u015bnie jednak przyznam, \u017ce po przegl\u0105dni\u0119ciu si\u0119 <a href=\"https:\/\/github.com\/spring-projects\/spring-graphql\/tree\/main\/samples\">przyk\u0142adom<\/a> oraz <a href=\"https:\/\/github.com\/spring-projects\/spring-graphql#documentation\">dokumentacji<\/a>, ca\u0142o\u015b\u0107 rozwi\u0105zania (oparta o Interceptory i DataFetchera) wygl\u0105da na do\u015b\u0107 skomplikowane na pierwszy rzut oka. Niestety, wysoki pr\u00f3g wej\u015bcia zawsze by\u0142 jednym z problem\u00f3w GraphQLa, ale\nmusz\u0119 przyzna\u0107, \u017ce rozwi\u0105zania Node.js (jak np. Apollo) wygl\u0105daj\u0105 du\u017co bardziej przyja\u017anie. Mo\u017cliwe, \u017ce jednak jest to tylko pierwsze wra\u017cenie, a po przegryzieniu si\u0119 przez do\u015b\u0107 skomplikowane Hello World ca\u0142o\u015b\u0107 b\u0119dzie przyjemna w u\u017cyciu.\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_610d090c5cbaf.gif\" alt=\"\">&nbsp;\n\n<figcaption>Marzyciel.<\/figcaption><\/figure>\nJak to w Springu bywa, rzeczona integracja to nie tylko samo wsparcie dla technologii, ale r\u00f3wnie\u017c dodatkowe elementy, niezb\u0119dne do tworzenia realnych, produkcyjnych aplikacji. Dlatego te\u017c nie brakuje wsparcia dla odpowiednich polityk bezpiecze\u0144stwa, czy zgodnych ze springowymi standardami obs\u0142ugi wyj\u0105tk\u00f3w. Sumarycznie wi\u0119c mamy do czynienia z do\u015b\u0107 ciekaw\u0105, \u201cpe\u0142n\u0105\u201d ofert\u0105.\n\nCiekawe, czy projekt sprawi, \u017ce wi\u0119cej \u201cspringowc\u00f3w\u201d zdecyduje si\u0119 na GraphQL w swoich projektach.\n\nhttps:\/\/www.youtube.com\/watch?v=rp1Ek8gZ94c\nA je\u015bli chcecie pos\u0142ucha\u0107 wi\u0119cej o GraphQL to zapraszam do odcinka videocastu, w kt\u00f3rym <a href=\"https:\/\/www.linkedin.com\/in\/kusmierz\/\">wraz z go\u015bciem<\/a> opisujemy, czym takowy jest oraz rozmawiamy o istniej\u0105cym scalowym ekosystemie.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82o\">\u0179r\u00f3d\u0142o<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/spring.io\/blog\/2021\/07\/06\/introducing-spring-graphql\">Introducing Spring GraphQL<\/a><\/li>\n \t<li><a href=\"https:\/\/spring.io\/blog\/2021\/07\/06\/hello-spring-graphql\">Hello, Spring GraphQL<\/a><\/li>\n \t<li><a href=\"https:\/\/github.com\/spring-projects\/spring-graphql\/tree\/main\/samples\">Spring GraphQL Examples<\/a><\/li>\n<\/ul>\n\n<hr>\n\n\u200cPami\u0119tajcie, \u017ceby spr\u00f3bowa\u0107 <a href=\"https:\/\/blog.vived.io\/keep-up-czyli-o-tym-jak-byc-na-biezaco-bez-uczucia-przytloczenia-contentem\/\"><strong>Vived<\/strong><\/a>, je\u015bli chcesz otrzymywa\u0107 tego typu tre\u015bci spersonalizowane pod Ciebie!\n<ul>\n \t<li><a href=\"https:\/\/apple.co\/3fB8Kcf\" rel=\"nofollow noopener\">App Store<\/a><\/li>\n \t<li><a href=\"https:\/\/bit.ly\/3m421dx\" rel=\"nofollow noopener\">Play Store<\/a><\/li>\n \t<li><a href=\"http:\/\/bit.ly\/2M7CeUN\">Wersja PWA<\/a><\/li>\n<\/ul>","innerContent":["<h2 id=\"1-facebook-dzieli-si%C4%99-swoim-u%C5%BCyciem-graalvm-%F0%9F%9A%80\"><a href=\"https:\/\/medium.com\/graalvm\/graalvm-at-facebook-af09338ac519\">1. Facebook dzieli si\u0119 swoim u\u017cyciem GraalVM<\/a><\/h2>\nW niejednej edycji naszego wtorkowego przegl\u0105du mieli\u015bmy ju\u017c okazj\u0119 pisa\u0107 na temat GraalVM. Technologia ta jest jednym z najciekawszych element\u00f3w JVMowego ekosystemu ostatnich lat, a ka\u017cda nowa i wi\u0119ksza edycja wzbudza entuzjazm spo\u0142eczno\u015bci. I o ile ja sam mia\u0142em przyjemno\u015b\u0107 wdro\u017cenia jej na produkcj\u0119 (aczkolwiek w bardzo ograniczonym zakresie - \u201cnatywny\u201d Micronaut w Dockerze to najwi\u0119kszy mo\u017cliwy graalVMowy bana\u0142), o tyle jednak na rynku ci\u0105gle brakuje jakich\u015b ambitnych wdro\u017ce\u0144, kt\u00f3re mog\u0142yby przetrze\u0107 szlaki kolejnym eksperymentatorom. Dlatego zawsze z zainteresowaniem przygl\u0105dam si\u0119 nowym, pojawiaj\u0105cym si\u0119 Case Study. Tym razem swoimi do\u015bwiadczeniami z GraalVM postanowi\u0142 podzieli\u0107 si\u0119 Facebook.\n\nFacebook pewnie nie kojarzy si\u0119 nikomu bardzo z JVMem. Wszystkim zdziwionym \u015bpiesz\u0119 jednak przypomnie\u0107, \u017ce w tego typu firmach, ze wzgl\u0119du na szeroko\u015b\u0107 ich dzia\u0142a\u0144, znale\u017a\u0107 mo\u017cna w zasadzie ka\u017cd\u0105 mo\u017cliw\u0105 technologi\u0119. Cytuj\u0105c sam artyku\u0142: Java jest wykorzystywana w Facebooku w kilku kluczowych obszarach: big data (Spark, Presto itp.), r\u00f3\u017cnego rodzaju us\u0142ugach oraz w szeroko poj\u0119tym mobile. Tego typu firmy cz\u0119sto maj\u0105 te\u017c do\u015b\u0107 unikalne wymagania je\u015bli chodzi o performance. Przy pewnej skali dzia\u0142ania okazuje si\u0119, \u017ce ka\u017cdy procent wydajno\u015bci szybko przek\u0142ada si\u0119 na wymierne oszcz\u0119dno\u015bci.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d09043a71a.png\" alt=\"\"><\/figure>\nPrzywo\u0142ane Case Study opisuje w\u0142a\u015bnie Sparka. Artyku\u0142 nie tylko przedstawia, jakie cechy GraalVM sprawi\u0142y, \u017ce Facebook zainteresowa\u0142 si\u0119 w\u0142a\u015bnie GraalVM, ale r\u00f3wnie\u017c pokazuje bardzo konkretne liczby. Ostatnio s\u0142ucha\u0142em odcinka podcastu Adama Biena, airhacks.fm, w kt\u00f3rym <a href=\"https:\/\/airhacks.fm\/#episode_141\">rozmawia\u0142 on z g\u0142\u00f3wnym Product Managerem Graala, Shaunem Smithem<\/a>. Jednym z aspekt\u00f3w, kt\u00f3ry przyku\u0142 moj\u0105 uwag\u0119 by\u0142y w\u0142a\u015bnie charakterystyki wydajno\u015bciowe - z rozmowy wynika\u0142o, \u017ce o ile ju\u017c Community Edition nieco zyskuje nad OpenJDK, to dopiero p\u0142atna wersja Enterprise rozwija skrzyd\u0142a. Jak udowadnia powy\u017cszy wykres, jest to zgodne z wynikami uzyskanymi przez Facebooka, co przyznam by\u0142o do\u015b\u0107 mi\u0142ym zaskoczeniem.\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_610d0904eaed5.png\" alt=\"\"><figcaption>Aczkolwiek nie wiem, czy inne liczby zosta\u0142yby opublikowane na oficjalnym blogu rozwijanej przez Oracle technologii, wi\u0119c patrz\u0119 na ca\u0142o\u015b\u0107 z lekkim przymru\u017ceniem oka.&nbsp;<\/figcaption><\/figure>\nTak jak ju\u017c wspomnia\u0142em, publikacja zawiera sporo interesuj\u0105cych detali, dlatego polecam przeczyta\u0107 pe\u0142ne podsumowanie, zw\u0142aszcza je\u015bli u\u017cywacie Apache Sparka.\n\nhttps:\/\/www.youtube.com\/watch?v=G-vlQaPMAxg\n\nDla ch\u0119tnych - artyku\u0142 linkuje r\u00f3wnie\u017c do r\u00f3wnie interesuj\u0105cego Case Study, opublikowanego ju\u017c w 2017 przez in\u017cynier\u00f3w Twittera.\n\nBTW: A jak ju\u017c mowa o Sparku - w zesz\u0142ym tygodniu ukaza\u0142o si\u0119 stabilne wydanie <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/07\/kotlin-api-for-apache-spark-1-0-released\/\">kotlinowej wersji jego API<\/a>. Mo\u017ce kto\u015b b\u0119dzie chcia\u0142 spr\u00f3bowa\u0107.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/medium.com\/graalvm\/graalvm-at-facebook-af09338ac519\">GraalVM at Facebook. Facebook is using GraalVM to accelerate\u2026<\/a><\/li>\n \t<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/07\/kotlin-api-for-apache-spark-1-0-released\/\">Kotlin API for Apache Spark 1.0 Released | The Kotlin Blog<\/a><\/li>\n \t<li><a href=\"https:\/\/airhacks.fm\/#episode_141\">Podcast with Adam Bien about Java and Web<\/a><\/li>\n<\/ul>\n<h2 id=\"2-scala-3-tech-report-z-informacjami-o-stanie-ekosystemu-%C6%9B\"><a href=\"https:\/\/softwaremill.com\/scala-3-tech-report\/\">2. Scala 3 Tech Report z informacjami o stanie ekosystemu<\/a> \u019b<\/h2>\nBardzo lubimy w Vivedzie wszelkiej ma\u015bci raporty. Mimo, \u017ce czasem ekstrapoluj\u0105 szerokie wnioski z nie zawsze wielkiej pr\u00f3bki (patrz\u0119 si\u0119 na ciebie, Jakarta EE Survey), albo mie\u0107 t\u0119 pr\u00f3bk\u0119 mocno zbiasowan\u0105 w kierunku \u201cbleeding edge\u201d (czyli w\u0142a\u015bnie ludzi sk\u0142onnych odpowiada\u0107 na pytania w takich zdalnych raportach), ale ka\u017cdorazowo potrafi\u0105 przynie\u015b\u0107 nieco szerszego spojrzenia na g\u0142osy pojawiaj\u0105ce si\u0119 w spo\u0142eczno\u015bci. Dlatego te\u017c ch\u0119tnie przytulili\u015bmy The Scala 3 Tech Report, wydany przez firm\u0119 SoftwareMill. Scala 3 mia\u0142a bowiem niedawno premier\u0119, wi\u0119c jest to dobry moment na przygl\u0105dni\u0119cie si\u0119 jej obecnej adopcji.\n\nJak to zawsze w takich ankietach bywa, po cz\u0119\u015bci opisuj\u0105cej metodologie (pr\u00f3ba raportu to 671 os\u00f3b - \u201cnot great, not terrible\u201d) dostajemy mas\u0119 wykresik\u00f3w, \u0142adnie wyrysowanych w oparciu o zdobyte dane liczbowe. I o ile np. u\u017cycie Scali z podzia\u0142em na konkretne bran\u017ce mo\u017ce dla wielu os\u00f3b by\u0107 przydatne, to mnie zawsze najbardziej ciekawi\u0142y rzeczy nieco bli\u017csze \u201cmaszynie\u201d - mocno zwi\u0105zane z ekosystemem technicznym.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d090529b13.png\" alt=\"\"><\/figure>\nLinkowany raport zawiera par\u0119 smaczk\u00f3w dla takiej w\u0142a\u015bnie nerdozy jak ja. Co\u015b, co przyku\u0142o moj\u0105 uwag\u0119, to z pewno\u015bci\u0105 procentowe u\u017cycie poszczeg\u00f3lnych bibliotek. Co prawda, na samym szczycie mamy bana\u0142, czyli Scalatest, ale z wykres\u00f3w mo\u017cna odczyta\u0107 te\u017c kilka interesuj\u0105cych rzeczy.\n\nPrzyk\u0142adowo, w oparciu o raport rysuje si\u0119 olbrzymia dominacja Cats, je\u015bli chodzi o rozwini\u0119cie wsparcia Scali dla programowania funkcyjnego (Aczkolwiek trzeba te\u017c zaznaczy\u0107, \u017ce w\u015br\u00f3d najcz\u0119\u015bciej u\u017cywanych rozwi\u0105za\u0144 dalej nie brakuje tych opartych na Akkce). Zar\u00f3wno Cats, jak i Cats-Effects nale\u017c\u0105 do \u015bcis\u0142ej czo\u0142\u00f3wki najcz\u0119\u015bciej u\u017cywanych bibliotek. Do czo\u0142\u00f3wki przebi\u0142o si\u0119 te\u017c Circe, wsp\u00f3\u0142pracuj\u0105ca z Catsami biblioteka do parsowania JSON\u00f3w. Dodatkowo to w\u0142a\u015bnie Cats i Circe s\u0105 r\u00f3wnie\u017c tymi rozwi\u0105zaniami, bez wsparcia kt\u00f3rych programi\u015bci nawet nie planowali by rozwa\u017ca\u0107 migracji do Scali 3 - a o ile Cats <a href=\"https:\/\/github.com\/typelevel\/cats\/releases\/tag\/v2.6.1\">w wspiera now\u0105 wersj\u0119 j\u0119zyka<\/a>, o tyle jej obs\u0142uga w Circe <a href=\"https:\/\/github.com\/circe\/circe\/releases\">jest ci\u0105gle w fazie eksperyment\u00f3w. <\/a>\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0906c243b.png\" alt=\"\"><\/figure>\nZ tego punktu p\u0142ynnie mo\u017cemy przej\u015b\u0107 do pytania, kt\u00f3re najbardziej mnie zainteresowa\u0142a - czy programi\u015bci zamierzaj\u0105 przej\u015b\u0107 na Scal\u0119 3? Ot\u00f3\u017c okazuje si\u0119, \u017ce raczej tak - prawie 80% deklaruje taki zamiar z du\u017c\u0105 pewno\u015bci\u0105.\n<figure class=\"kg-card kg-image-card\"><img class=\"kg-image\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0908f2eff.png\" alt=\"\"><\/figure>\nNieco gorzej prezentuj\u0105 si\u0119 co prawda przewidywania, kiedy mo\u017ce to nast\u0105pi\u0107 (prawie po\u0142owa nie ma zdefiniowanego nawet zgrubnego planu migracji), ale w dalszym ci\u0105gu wygl\u0105da to do\u015b\u0107 optymistycznie. Oczywi\u015bcie, tak jak wspomnia\u0142em we wst\u0119pie, nale\u017cy bra\u0107 pewn\u0105 poprawk\u0119 na to, \u017ce odpowiedzi prawdopodobnie dokonywa\u0142a grupa najbardziej aktywnych u\u017cytkownik\u00f3w, wi\u0119c dane mog\u0105 by\u0107 delikatnie zaburzone.\n\nPolecamy oczywi\u015bcie ca\u0142y raport, kt\u00f3ry jest bardzo dobrze przygotowany i nawet dla kogo\u015b, kto nie pisze codziennie w Scali, zawiera mas\u0119 interesuj\u0105cych informacji.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82a-1\">\u0179r\u00f3d\u0142a<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/softwaremill.com\/scala-3-tech-report\/\">Scala 3 Tech Report by SoftwareMill<\/a><\/li>\n \t<li><a href=\"https:\/\/github.com\/typelevel\/cats\/releases\/tag\/v2.6.1\">https:\/\/github.com\/typelevel\/cats\/releases\/tag\/v2.6.1<\/a><\/li>\n \t<li><a href=\"https:\/\/github.com\/circe\/circe\/releases\">https:\/\/github.com\/circe\/circe\/releases<\/a><\/li>\n<\/ul>\n<h2 id=\"3-natywne-wsparcie-dla-graphqla-w-springu-%F0%9F%8D%83\"><a href=\"https:\/\/spring.io\/blog\/2021\/07\/06\/introducing-spring-graphql\">3. Natywne wsparcie dla GraphQLa w Springu<\/a><\/h2>\nMin\u0119\u0142o kilka lat, od kiedy pojawi\u0142 si\u0119 na rynku GraphQL, kt\u00f3ry zapowiadany by\u0142 jako pogromca RESTa. W zasadzie od 2015 do niedawna ka\u017cdy kolejny rok zapowiadany by\u0142 jako ten, w kt\u00f3rym ten nowy protok\u00f3\u0142 komunikacyjny ostatecznie \u201czaskoczy\u201d i zacznie szturmem zdobywa\u0107 rynek. Ostatnimi czasy mam jednak wra\u017cenie, \u017ce ch\u0119\u0107 opanowania \u015bwiata, tak widoczna w pocz\u0105tkowych latach, gdzie\u015b wyparowa\u0142a. To jednak bardzo dobrze - w jej wersji pojawi\u0142o si\u0119 nieco zdrowego pragmatyzmu, kt\u00f3ry co prawda wepchn\u0105\u0142 sam\u0105 technologi\u0119 w pewn\u0105 nisz\u0119 (czy te\u017c raczej wiele r\u00f3\u017cnych nisz), ale te\u017c zako\u0144czy\u0142 er\u0119 promocji GraphQLa jako idealnego rozwi\u0105zania w zasadzie na wszystko. Dzi\u0119ki temu na rynku pojawi\u0142o si\u0119 sporo interesuj\u0105cych success stories, powoli onie\u015bmielaj\u0105cych na\u015bladowc\u00f3w &nbsp;- przypadek nieco bli\u017aniaczy do GraalVM z pierwszego punktu. W zesz\u0142ym tygodniu ciekawe og\u0142oszenie pojawi\u0142o si\u0119 ze strony Spring. Zesp\u00f3\u0142 rozwijaj\u0105cy framework zainicjowa\u0142 bowiem nowy modu\u0142 &nbsp;- Spring GraphQL.\n\nProjekt \u015bci\u015ble integruj\u0105cy GraphQL Java (najstarsz\u0105 i najpopularniejsz\u0105, sze\u015bcioletni\u0105 ju\u017c bibliotek\u0119) i Springa nie powsta\u0142 w pr\u00f3\u017cni. Od lat powstawa\u0142y r\u00f3\u017cnorakie rozwi\u0105zania umo\u017cliwiaj\u0105ce tego typu wsp\u00f3\u0142prac\u0119. Jednocze\u015bnie jednak \u017cadne z istniej\u0105cych rozwi\u0105za\u0144 nie zapewnia\u0142o takiej wygody jak \u201cnatywnie springowe\u201d rozwi\u0105zania. Zniech\u0119ci\u0142o to do eksperyment\u00f3w i sprawia\u0142o, \u017ce pr\u00f3g wej\u015bcia nieraz by\u0142 po prostu za wysoki. Teraz ta sytuacja ma si\u0119 zmieni\u0107 - aczkolwiek nie powiem, \u017ce z mojej perspektywy jako\u015b diametralnie.\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_610d090bb6f7e.png\" alt=\"\">&nbsp;\n\n<figcaption>TL\/DR Moich pierwszych wra\u017ce\u0144<\/figcaption><\/figure>\nG\u0142\u00f3wna integracja u\u017cywa Querydsl, kt\u00f3ry znany pewnie wszystkim korzystaj\u0105cym z projektu Spring Data, tak\u017ce je\u015bli chodzi o samo tworzenie zapyta\u0144 nie powinno by\u0107 wi\u0119kszych problem\u00f3w. R\u00f3wnocze\u015bnie jednak przyznam, \u017ce po przegl\u0105dni\u0119ciu si\u0119 <a href=\"https:\/\/github.com\/spring-projects\/spring-graphql\/tree\/main\/samples\">przyk\u0142adom<\/a> oraz <a href=\"https:\/\/github.com\/spring-projects\/spring-graphql#documentation\">dokumentacji<\/a>, ca\u0142o\u015b\u0107 rozwi\u0105zania (oparta o Interceptory i DataFetchera) wygl\u0105da na do\u015b\u0107 skomplikowane na pierwszy rzut oka. Niestety, wysoki pr\u00f3g wej\u015bcia zawsze by\u0142 jednym z problem\u00f3w GraphQLa, ale\nmusz\u0119 przyzna\u0107, \u017ce rozwi\u0105zania Node.js (jak np. Apollo) wygl\u0105daj\u0105 du\u017co bardziej przyja\u017anie. Mo\u017cliwe, \u017ce jednak jest to tylko pierwsze wra\u017cenie, a po przegryzieniu si\u0119 przez do\u015b\u0107 skomplikowane Hello World ca\u0142o\u015b\u0107 b\u0119dzie przyjemna w u\u017cyciu.\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_610d090c5cbaf.gif\" alt=\"\">&nbsp;\n\n<figcaption>Marzyciel.<\/figcaption><\/figure>\nJak to w Springu bywa, rzeczona integracja to nie tylko samo wsparcie dla technologii, ale r\u00f3wnie\u017c dodatkowe elementy, niezb\u0119dne do tworzenia realnych, produkcyjnych aplikacji. Dlatego te\u017c nie brakuje wsparcia dla odpowiednich polityk bezpiecze\u0144stwa, czy zgodnych ze springowymi standardami obs\u0142ugi wyj\u0105tk\u00f3w. Sumarycznie wi\u0119c mamy do czynienia z do\u015b\u0107 ciekaw\u0105, \u201cpe\u0142n\u0105\u201d ofert\u0105.\n\nCiekawe, czy projekt sprawi, \u017ce wi\u0119cej \u201cspringowc\u00f3w\u201d zdecyduje si\u0119 na GraphQL w swoich projektach.\n\nhttps:\/\/www.youtube.com\/watch?v=rp1Ek8gZ94c\nA je\u015bli chcecie pos\u0142ucha\u0107 wi\u0119cej o GraphQL to zapraszam do odcinka videocastu, w kt\u00f3rym <a href=\"https:\/\/www.linkedin.com\/in\/kusmierz\/\">wraz z go\u015bciem<\/a> opisujemy, czym takowy jest oraz rozmawiamy o istniej\u0105cym scalowym ekosystemie.\n<h3 id=\"%C5%BAr%C3%B3d%C5%82o\">\u0179r\u00f3d\u0142o<\/h3>\n<ul>\n \t<li><a href=\"https:\/\/spring.io\/blog\/2021\/07\/06\/introducing-spring-graphql\">Introducing Spring GraphQL<\/a><\/li>\n \t<li><a href=\"https:\/\/spring.io\/blog\/2021\/07\/06\/hello-spring-graphql\">Hello, Spring GraphQL<\/a><\/li>\n \t<li><a href=\"https:\/\/github.com\/spring-projects\/spring-graphql\/tree\/main\/samples\">Spring GraphQL Examples<\/a><\/li>\n<\/ul>\n\n<hr>\n\n\u200cPami\u0119tajcie, \u017ceby spr\u00f3bowa\u0107 <a href=\"https:\/\/blog.vived.io\/keep-up-czyli-o-tym-jak-byc-na-biezaco-bez-uczucia-przytloczenia-contentem\/\"><strong>Vived<\/strong><\/a>, je\u015bli chcesz otrzymywa\u0107 tego typu tre\u015bci spersonalizowane pod Ciebie!\n<ul>\n \t<li><a href=\"https:\/\/apple.co\/3fB8Kcf\" rel=\"nofollow noopener\">App Store<\/a><\/li>\n \t<li><a href=\"https:\/\/bit.ly\/3m421dx\" rel=\"nofollow noopener\">Play Store<\/a><\/li>\n \t<li><a href=\"http:\/\/bit.ly\/2M7CeUN\">Wersja PWA<\/a><\/li>\n<\/ul>"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10112","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=10112"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10112\/revisions"}],"predecessor-version":[{"id":10565,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10112\/revisions\/10565"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10112"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}