{"id":9648,"date":"2022-08-31T08:41:31","date_gmt":"2022-08-31T06:41:31","guid":{"rendered":"https:\/\/vived.io\/?p=9648"},"modified":"2022-09-19T13:10:34","modified_gmt":"2022-09-19T11:10:34","slug":"jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/","title":{"rendered":"Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? (na przyk\u0142adzie Scali) &#8211; JVM Weekly #102"},"content":{"rendered":"\n<h2 id=\"1-eclipse-temurin-dostaje-komercyjne-wsparcie-od-redhata\" data-num=1>1. Eclipse Temurin dostaje komercyjne wsparcie od RedHata<\/h2>\n\n\n\n<p>Zacznijmy od jedynej wi\u0119kszemu newsowi z ostatniego tygodnia &#8211; czyli informacji o tym, \u017ce Eclipse Temurin, czyli build OpenJDK tworzony przez Adoptium, zosta\u0142o oficjalnie adoptowane (hehe) przez kolejnego gracza &#8211; <a href=\"https:\/\/developers.redhat.com\/articles\/2022\/08\/24\/red-hat-expands-support-java-eclipse-temurin\">RedHat (zaanga\u017cowany w projekt od samego pocz\u0105tku) zapowiedzia\u0142 bowiem oficjalne wsparcie komercyjne dla inicjatywy<\/a>. Dla wielu z Was pewnie pojawi\u0142o si\u0119 tutaj troch\u0119 dziwnych nazw, dlatego \u015bpiesz\u0119 z przypomnieniem i ma\u0142ym s\u0142owniczkiem.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"498\" height=\"215\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/harry-potter-daniel-radcliffe.gif\" alt=\"\" class=\"wp-image-9656\"\/><figcaption>&#8222;Ma\u0142y s\u0142owniczek&#8221; <br><em><strong><a href=\"https:\/\/www.gry-online.pl\/newsroom\/warner-bros-zastrzeglo-prawa-do-mema-big-chungus\/z822b11\">Dmuchaj\u0105c na zimne:<\/a><\/strong> Obrazek powy\u017cej stanowi w\u0142asno\u015b\u0107 firmy WarnerBros.<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>Pewnie wi\u0119kszo\u015b\u0107 kojarzy projekt AdoptOpenJDK, kt\u00f3ry powsta\u0142 jako efekt wysi\u0142k\u00f3w spo\u0142eczno\u015bci walcz\u0105cej o \u201cwoln\u0105\u201d implementacje JDK w momencie, kiedy Oracle par\u0119 lat temu uczyni\u0142 Oracle JDK p\u0142atnym dla u\u017cytku komercyjnego. AdoptOpenJDK pocz\u0105tkowo rozwijany by\u0142 przez spo\u0142eczno\u015b\u0107 JUG\u00f3w z ca\u0142ego \u015bwiata, by ostatecznie trafi\u0107 pod skrzyd\u0142a Eclipse Foundation. W efekcie AdoptOpenJDK zosta\u0142o przechrzczone na na Eclipse Adoptium (JDK jest znakiem towarowym nale\u017c\u0105cym do Oracle) oraz powstanie Adoptium Working Group. <\/p>\n\n\n\n<p>W jej sk\u0142ad wchodzi wiele zaanga\u017cowanych w rozw\u00f3j Javy firm, w tym wspomniany RedHat, a g\u0142\u00f3wnymi artefaktami pracy grupy s\u0105:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Eclipse Temurin &#8211; oficjalna dystrybucja OpenJDK grupy, ale tak\u017ce ca\u0142a infrastruktura do budowania i koordynacj\u0119 wyda\u0144.<\/li><li>Eclipse AQAvit &#8211; du\u017cy zestaw test\u00f3w jako\u015bciowych obejmuj\u0105cych funkcje, bezpiecze\u0144stwo, wydajno\u015b\u0107 i trwa\u0142o\u015b\u0107 oraz definiuje kryteria jako\u015bci, wymaganej przez &#8222;klient\u00f3w korporacyjnych&#8221;.<\/li><li>Eclipse Temurin-Compliance zapewnia, \u017ce binarki Eclipse Temurin s\u0105 zgodne ze specyfikacj\u0105 Java SE.<\/li><\/ul>\n\n\n\n<p>Wracaj\u0105c do RedHata, to ten przez wiele lat posiada\u0142 w\u0142asne OpenJDK, teraz za\u015b zamierza skupi\u0107 si\u0119 na Temurinie. Oznacza to, \u017ce klienci firmy <a href=\"https:\/\/access.redhat.com\/support\/policy\/updates\/jboss_notes\/?extIdCarryOver=true&amp;sc_cid=701f2000001OH6pAAG\">mog\u0105 liczy\u0107 na oficjalny support tego wydania<\/a> i to w\u0142a\u015bnie ono ma by\u0107 dost\u0119pne we wszystkich produktach firmy.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"268\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-1-2.gif\" alt=\"\" class=\"wp-image-9652\"\/><figcaption>Aczkolwiek prawd\u0105 jest, \u017ce to i tak IMHO bardzo uczciwy spos\u00f3b zarabiania na Javie<\/figcaption><\/figure><\/div>\n\n\n<p>Oczywi\u015bcie, RedHat nie jest w tej inicjatywie sam, a ostatnio mas\u0119 energii w rozw\u00f3j javowego ekosystemu wk\u0142ada te\u017c Microsoft. Robi to poprzez cz\u0142onkostwo we wspomnianych grupach roboczych (czy to Adoptium, czy te\u017c Jakarta EE), ale te\u017c jak najlepsze wsparcie Javy w chmurze Azure. Firmie chyba zale\u017cy, \u017ceby o ca\u0142ej wsp\u00f3\u0142pracy by\u0142o g\u0142o\u015bno, bo w ramach kana\u0142\u00f3w komunikacyjnych Spring Framework pojawi\u0142 si\u0119 w tym tygodniu <a href=\"https:\/\/spring.io\/blog\/2022\/08\/30\/microsoft-is-committed-to-the-success-of-java-developers\">go\u015bcinny artyku\u0142 autorstwa Julii Liuson z Microsoft<\/a>, podsumowuj\u0105cy ca\u0142y wachlarz dzia\u0142a\u0144 Microsoftu w tym obszarze. Je\u017celi jeste\u015bcie u\u017cytkownikami Azure, warto zerkn\u0105\u0107, a dodatkowo tego typu &#8222;crossover episodes&#8221; zwracaj\u0105 uwag\u0119 na ciekawe, odbywaj\u0105ce si\u0119 w ekosystemie wsp\u00f3\u0142prac.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"300\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/91382132-d0f0-4fcb-a335-d632577472d1_text.gif\" alt=\"\" class=\"wp-image-9650\"\/><figcaption>I to pewnie obup\u00f3lne wsp\u00f3\u0142prace. A ja jestem frajerem, kt\u00f3ry pisze o nich zupe\u0142nie za darmo.<\/figcaption><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/developers.redhat.com\/articles\/2022\/08\/24\/red-hat-expands-support-java-eclipse-temurin\">Red Hat expands support for Java with Eclipse Temurin<\/a><\/li><li><a href=\"https:\/\/spring.io\/blog\/2022\/08\/30\/microsoft-is-committed-to-the-success-of-java-developers\">Microsoft is committed to the success of Java developers<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"2-a-wy-co-macie-w-swoich-zaleznosciach-i-jak-to-weryfikujecie\" data-num=2>2. A Wy co macie w swoich zale\u017cno\u015bciach? I jak to weryfikujecie?<\/h2>\n\n\n\n<p>No i je\u015bli chodzi o newsy, to powy\u017cszy Red Hat wyczerpa\u0142 nam pul\u0119. Ale nie samymi newsami cz\u0142owiek \u017cyje &#8211; czasem (a powiedzia\u0142bym, \u017ce niepokoj\u0105co cz\u0119sto) to, co zaprz\u0105ta jego uwag\u0119 to nie najnowsza wersji JDK, ale problemy kompatybilno\u015bciowe lub (gulp) bezpiecze\u0144stwa z zewn\u0119trznymi zale\u017cno\u015bciami. Mam wra\u017cenie, \u017ce w tej kwestii nasza bran\u017ca porusza si\u0119 mi\u0119dzy dwoma skrajno\u015bciami &#8211; projekty albo maj\u0105 bardzo \u015bcis\u0142e regu\u0142y typu &#8222;starszyzna plemienna, kt\u00f3ra nie widzia\u0142a kodu \u017ar\u00f3d\u0142owego od dziesi\u0119ciu lat musi wyrazi\u0107 zgod\u0119 na podbicie minora Springa&#8221; do &#8222;left-pad? A po co to pisa\u0107 od zera, jak mo\u017cna u\u017cy\u0107 zewn\u0119trzenej biblioteki od randoma z internet\u00f3w maj\u0105cej 10 linijek&#8221;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"567\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-36-1024x567.png\" alt=\"\" class=\"wp-image-9660\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-36-1024x567.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-36-300x166.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-36-768x425.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-36-1536x851.png 1536w, https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-36-2048x1135.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>I uwaga z mojej strony &#8211; u\u017cycie zale\u017cno\u015bci w formie API nie jest po\u017c\u0105danym rozwi\u0105zaniem problemu.<\/figcaption><\/figure>\n\n\n\n<p>Na szcz\u0119\u015bcie istnieje r\u00f3wnie\u017c trzecia droga, czyli \u015bwiadome i rozs\u0105dne podej\u015bcie do tematu zale\u017cno\u015bci. Zdaje sobie spraw\u0119, \u017ce ka\u017cdy projekt b\u0119dzie musia\u0142 sobie gdzie\u015b stuningowa\u0107, jak bardzo &#8222;na ostrzu \u017cyletki&#8221; chce pozostawa\u0107. Je\u015bli jednak szukacie jakich\u015b dobrych praktyk, kt\u00f3re pomog\u0105 w uzyskaniu po\u017c\u0105danego balansu, polecam tekst <strong><a href=\"https:\/\/snyk.io\/blog\/best-practices-for-managing-java-dependencies\/\">Best practices for managing Java dependencies<\/a><\/strong> od <a class=\"autolink\" href=\"https:\/\/snyk.io\">snyk.io<\/a> w\u0142a\u015bnie w tym temacie. Snyk to szeroko znana platforma zapewniaj\u0105ca wsparcie bezpiecze\u0144stwa w buildach programistycznych (w tym w\u0142a\u015bnie min. Skanowanie zale\u017cno\u015bci). Rzeczona publikacja przedstawia za\u015b zesp\u00f3\u0142 sugestii, kt\u00f3re warto wdro\u017cy\u0107 w ka\u017cdym projekcie.<\/p>\n\n\n\n<p>W tek\u015bcie znajdziecie sporo dobrych tip\u00f3w, w jaki spos\u00f3b \u0142atwo sprawdzi\u0107 poziom wsparcia u\u017cywanych przez was bibliotek, to czy Wasze pakiety nie wymagaj\u0105 aktualizacji, oraz kt\u00f3re pluginy do Mavena i Gradle, u\u0142atwiaj\u0105ce ten proces u\u017cy\u0107. Nie zabrak\u0142o oczywi\u015bcie odrobiny content marketingu, poniewa\u017c w\u015br\u00f3d narz\u0119dzi znajdziecie r\u00f3wnie\u017c Synka, ale nawet osoby nie zamierzaj\u0105ce dok\u0142ada\u0107 nowego narz\u0119dzia do swojego toolchaina znajd\u0105 dla siebie interesuj\u0105ce porady.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/snyk.io\/blog\/best-practices-for-managing-java-dependencies\/\">Best practices for managing Java dependencies<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"3-jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-dowiedzcie-sie-na-przykladzie-scali\" data-num=3>3. Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? Dowiedzcie si\u0119 na przyk\u0142adzie Scali<\/h2>\n\n\n\n<p>A na koniec b\u0119dzie o Scali &#8211; w naprawd\u0119 unikalnym kontek\u015bcie. Mam bowiem dla Was dwa teksty, pozwalaj\u0105ce zajrze\u0107 pod mask\u0119 core teamu rozwijaj\u0105cego sam j\u0119zyk.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-37.png\" alt=\"\" class=\"wp-image-9666\" width=\"512\" height=\"306\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-37.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-37-300x179.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-37-768x458.png 768w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption>\u201cCome on, big guy. Let&#8217;s go for a ride. Let&#8217;s cruise.\u201d<\/figcaption><\/figure><\/div>\n\n\n<p>Czasem zapominamy o tym, ale kompilator to nie jest magiczna skrzynka zamieniaj\u0105ca kod w uruchamialn\u0105 aplikacj\u0119, ale r\u00f3wnie\u017c program sam w sobie. Oznacza to, \u017ce pracuj\u0105 nad nim zespo\u0142y programistyczne posiadaj\u0105ce swoje w\u0142asne Jiry, Sprinty i og\u00f3lnie u\u017cywaj\u0105ce normalnych metodologii wytwarzania oprogramowania. Dlatego te\u017c np. ka\u017cde nowe wydanie Javy posiada swoje konkretne <a href=\"https:\/\/openjdk.org\/projects\/jdk\/19\/\">kamienie milowe<\/a>, wymagane do stabilizacji ca\u0142o\u015bci wraz z odpowiednimi okresami testowania. Ca\u0142o\u015b\u0107 musi by\u0107 te\u017c gdzie\u015b budowana.<\/p>\n\n\n\n<p>Zacz\u0119li\u015bmy dzisiejsz\u0105 edycj\u0119 do Eclipse Temurina, kt\u00f3ry zapewnia (poza samym wariantem OpenJDK) r\u00f3wnie\u017c infrastruktur\u0119 do budowania takowego. Dla zaciekawionych, jak tego typu proces przebiega r\u00f3wnie\u017c w innych j\u0119zykach, pojawia si\u0119 dobra szansa aby poczyta\u0107 o ca\u0142ym procesie od kuchni. Zesp\u00f3\u0142 odpowiedzialny za kompilator Scali w VirtusLab podzieli\u0142 si\u0119 bowiem <a href=\"https:\/\/virtuslab.com\/blog\/prevent-scala3-compiler-regressions-community-build\/\">Case Study opisuj\u0105cym ich podej\u015bcie do test\u00f3w regresyjnych kompilatora<\/a>. O ile jednak Java skupia si\u0119 na spe\u0142nieniu formalnej specyfikacji i tak zwanego TCK (Technology Compatibility Kit), o tyle tw\u00f3rcy Scali id\u0105 o krok dalej, testuj\u0105c sw\u00f3j produkt ko\u0144cowy na realnych projektach open-source, dzi\u0119ki czemu nabieraj\u0105 pewno\u015bci, \u017ce wprowadzone przez ich zmiany nie popsuj\u0105 ekosystemu.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"320\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/cT24Xy.gif\" alt=\"\" class=\"wp-image-9669\"\/><figcaption>Klatka z \u017cycia tw\u00f3rcy kompilatora<\/figcaption><\/figure><\/div>\n\n\n<p>Jednym z moich ulubionych &#8222;praw&#8221; wytwarzania oprogramowania jest tak zwane <a href=\"https:\/\/www.hyrumslaw.com\/\">Prawo Hyruma<\/a>, okre\u015blane r\u00f3wnie\u017c &#8222;Prawem Murphy&#8217;ego dla API&#8221;. Brzmi ono nast\u0119puj\u0105co:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Przy odpowiedniej liczbie u\u017cytkownik\u00f3w API, nie ma znaczenia, co obiecujesz w kontrakcie: wszystkie obserwowalne zachowania twojego systemu b\u0119d\u0105 przez kogo\u015b zale\u017cne.<\/p><\/blockquote>\n\n\n\n<p>Mam wra\u017cenie, \u017ce tw\u00f3rcy Scali wzi\u0119li sobie je mocno do serca i dzia\u0142aj\u0105 dok\u0142adnie w tym samym duchu. Wszystkim zainteresowanym internalami narz\u0119dzi developerskich bardzo polecam lektur\u0119 samego case study, bo stanowi do\u015b\u0107 jednak unikalny wgl\u0105d w proces testowania tak krytycznego elementu ekosystemu j\u0119zyka, jak kompilator.<\/p>\n\n\n\n<p>A jak ju\u017c jeste\u015bmy w temacie Scali, to ostatnio ukaza\u0142y si\u0119 jej <a href=\"https:\/\/www.scala-lang.org\/blog\/2022\/08\/17\/long-term-compatibility-plans.html\">d\u0142ugookresowe plany wsparcia<\/a>. Mo\u017cna si\u0119 z nich dowiedzie\u0107, kt\u00f3re wydania dostan\u0105 d\u0142u\u017csze wsparcie, kt\u00f3re nie b\u0119d\u0105 ju\u017c rozwijane, kt\u00f3re powinny by\u0107 za\u015b porzucone. Tw\u00f3rcy Scali wprowadzaj\u0105 bowiem dwa typy build\u00f3w &#8211; Scala LTS (z trzyletnim wsparciem) i Scala Next, kt\u00f3re b\u0119d\u0105 od siebie do\u015b\u0107 mocno odseparowane, przy r\u00f3wnoczesnym umo\u017cliwieniu stosunkowo prostej migracji. Nawet je\u015bli nie u\u017cywacie Scali, to ponownie jest to kawa\u0142 ciekawej lektury &#8211; tekst mocno bowiem wchodzi w niuanse tego, co siedzi w g\u0142owie tw\u00f3rc\u00f3w j\u0119zyka, gdy my\u015bl\u0105 oni o d\u0142ugoterminowym wsparciu konkretnych wersji.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"498\" height=\"370\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/pokemon-sadism.gif\" alt=\"\" class=\"wp-image-9664\"\/><figcaption>I uzmys\u0142awia, \u017ce po drugiej stronie wcale nie siedz\u0105 sady\u015bci, chc\u0105cy wymusi\u0107 na ca\u0142ym ekosystemie jak najwi\u0119cej przepalonych godzin na ci\u0105g\u0142y maintanance.<\/figcaption><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.scala-lang.org\/blog\/2022\/08\/17\/long-term-compatibility-plans.html\">Long-term compatibility plans for Scala 3<\/a><\/li><li><a href=\"https:\/\/www.hyrumslaw.com\/\">Prawo Hyruma<\/a><\/li><li><a href=\"https:\/\/virtuslab.com\/blog\/prevent-scala3-compiler-regressions-community-build\/\">How to prevent Scala 3 compiler regressions with Community Build<\/a><\/li><\/ul>\n\n\n\n<p>PS: Za tydzie\u0144 nie ma JVM Weekly &#8211; urlop mam \ud83c\udfdd<\/p>\n","protected":false},"excerpt":{"rendered":"<p>G\u0142\u00f3wnym daniem dzisiejszej edycji jest przygl\u0105dni\u0119cie si\u0119, co jak wygl\u0105daj\u0105 procesy tworzenia j\u0119zyka pod mask\u0105 &#8211; na przyk\u0142\u0105dzie tw\u00f3rc\u00f3w Scali. Porozmawiamy jednak r\u00f3wnie\u017c o wi\u0119kszym zaanga\u017cowaniu RedHata w Eclipse Temurin oraz o procesie zarz\u0105dzania zale\u017cno\u015bciami.<\/p>\n","protected":false},"author":10,"featured_media":9677,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[259],"tags":[],"class_list":["post-9648","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm-pl"],"acf":{"estimated_reading_time":"6","feature_image_blog":{"ID":9679,"id":9679,"title":"46951045152_e73d9cd871_b","filename":"46951045152_e73d9cd871_b.jpeg","filesize":238605,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/46951045152_e73d9cd871_b.jpeg","link":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/46951045152_e73d9cd871_b\/","alt":"","author":"10","description":"","caption":"","name":"46951045152_e73d9cd871_b","status":"inherit","uploaded_to":9648,"date":"2022-08-31 06:39:43","modified":"2022-08-31 06:39:43","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/vived.io\/wp-includes\/images\/media\/default.png","width":1024,"height":768,"sizes":{"thumbnail":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/46951045152_e73d9cd871_b-150x150.jpeg","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/46951045152_e73d9cd871_b-300x225.jpeg","medium-width":300,"medium-height":225,"medium_large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/46951045152_e73d9cd871_b-768x576.jpeg","medium_large-width":768,"medium_large-height":576,"large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/46951045152_e73d9cd871_b.jpeg","large-width":1024,"large-height":768,"1536x1536":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/46951045152_e73d9cd871_b.jpeg","1536x1536-width":1024,"1536x1536-height":768,"2048x2048":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/46951045152_e73d9cd871_b.jpeg","2048x2048-width":1024,"2048x2048-height":768,"gform-image-choice-sm":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/46951045152_e73d9cd871_b.jpeg","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":225,"gform-image-choice-md":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/46951045152_e73d9cd871_b.jpeg","gform-image-choice-md-width":400,"gform-image-choice-md-height":300,"gform-image-choice-lg":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/46951045152_e73d9cd871_b.jpeg","gform-image-choice-lg-width":600,"gform-image-choice-lg-height":450}},"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-Weekly-1200x628_V2-1-1.png","feature_image_visible":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? (na przyk\u0142adzie Scali) - JVM Weekly #102 - 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\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? (na przyk\u0142adzie Scali) - JVM Weekly #102 - Vived\" \/>\n<meta property=\"og:description\" content=\"G\u0142\u00f3wnym daniem dzisiejszej edycji jest przygl\u0105dni\u0119cie si\u0119, co jak wygl\u0105daj\u0105 procesy tworzenia j\u0119zyka pod mask\u0105 - na przyk\u0142\u0105dzie tw\u00f3rc\u00f3w Scali. Porozmawiamy jednak r\u00f3wnie\u017c o wi\u0119kszym zaanga\u017cowaniu RedHata w Eclipse Temurin oraz o procesie zarz\u0105dzania zale\u017cno\u015bciami.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-31T06:41:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-Weekly-1200x628_V2-1-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? (na przyk\u0142adzie Scali) &#8211; JVM Weekly #102\",\"datePublished\":\"2022-08-31T06:41:31+00:00\",\"dateModified\":\"2022-09-19T11:10:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/\"},\"wordCount\":1411,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-Weekly-1200x628_V2-1-1.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/\",\"url\":\"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/\",\"name\":\"Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? (na przyk\u0142adzie Scali) - JVM Weekly #102 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-Weekly-1200x628_V2-1-1.png\",\"datePublished\":\"2022-08-31T06:41:31+00:00\",\"dateModified\":\"2022-09-19T11:10:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-Weekly-1200x628_V2-1-1.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-Weekly-1200x628_V2-1-1.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? (na przyk\u0142adzie Scali) &#8211; JVM Weekly #102\"}]},{\"@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":"Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? (na przyk\u0142adzie Scali) - JVM Weekly #102 - 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\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/","og_locale":"pl_PL","og_type":"article","og_title":"Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? (na przyk\u0142adzie Scali) - JVM Weekly #102 - Vived","og_description":"G\u0142\u00f3wnym daniem dzisiejszej edycji jest przygl\u0105dni\u0119cie si\u0119, co jak wygl\u0105daj\u0105 procesy tworzenia j\u0119zyka pod mask\u0105 - na przyk\u0142\u0105dzie tw\u00f3rc\u00f3w Scali. Porozmawiamy jednak r\u00f3wnie\u017c o wi\u0119kszym zaanga\u017cowaniu RedHata w Eclipse Temurin oraz o procesie zarz\u0105dzania zale\u017cno\u015bciami.","og_url":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/","og_site_name":"Vived","article_published_time":"2022-08-31T06:41:31+00:00","article_modified_time":"2022-09-19T11:10:34+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-Weekly-1200x628_V2-1-1.png","type":"image\/png"}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? (na przyk\u0142adzie Scali) &#8211; JVM Weekly #102","datePublished":"2022-08-31T06:41:31+00:00","dateModified":"2022-09-19T11:10:34+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/"},"wordCount":1411,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-Weekly-1200x628_V2-1-1.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/","url":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/","name":"Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? (na przyk\u0142adzie Scali) - JVM Weekly #102 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-Weekly-1200x628_V2-1-1.png","datePublished":"2022-08-31T06:41:31+00:00","dateModified":"2022-09-19T11:10:34+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-Weekly-1200x628_V2-1-1.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-Weekly-1200x628_V2-1-1.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jak-sie-testuje-kompilatory-i-projektuje-cykl-releasowy-na-przykladzie-scali-jvm-weekly-102\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? (na przyk\u0142adzie Scali) &#8211; JVM Weekly #102"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","caption":"Artur Skowro\u0144ski"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>1. Eclipse Temurin dostaje komercyjne wsparcie od RedHata<\/h2>\n","innerContent":["\n<h2>1. Eclipse Temurin dostaje komercyjne wsparcie od RedHata<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zacznijmy od jedynej wi\u0119kszemu newsowi z ostatniego tygodnia - czyli informacji o tym, \u017ce Eclipse Temurin, czyli build OpenJDK tworzony przez Adoptium, zosta\u0142o oficjalnie adoptowane (hehe) przez kolejnego gracza - <a href=\"https:\/\/developers.redhat.com\/articles\/2022\/08\/24\/red-hat-expands-support-java-eclipse-temurin\">RedHat (zaanga\u017cowany w projekt od samego pocz\u0105tku) zapowiedzia\u0142 bowiem oficjalne wsparcie komercyjne dla inicjatywy<\/a>. Dla wielu z Was pewnie pojawi\u0142o si\u0119 tutaj troch\u0119 dziwnych nazw, dlatego \u015bpiesz\u0119 z przypomnieniem i ma\u0142ym s\u0142owniczkiem.<\/p>\n","innerContent":["\n<p>Zacznijmy od jedynej wi\u0119kszemu newsowi z ostatniego tygodnia - czyli informacji o tym, \u017ce Eclipse Temurin, czyli build OpenJDK tworzony przez Adoptium, zosta\u0142o oficjalnie adoptowane (hehe) przez kolejnego gracza - <a href=\"https:\/\/developers.redhat.com\/articles\/2022\/08\/24\/red-hat-expands-support-java-eclipse-temurin\">RedHat (zaanga\u017cowany w projekt od samego pocz\u0105tku) zapowiedzia\u0142 bowiem oficjalne wsparcie komercyjne dla inicjatywy<\/a>. Dla wielu z Was pewnie pojawi\u0142o si\u0119 tutaj troch\u0119 dziwnych nazw, dlatego \u015bpiesz\u0119 z przypomnieniem i ma\u0142ym s\u0142owniczkiem.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":9656,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/harry-potter-daniel-radcliffe.gif\" alt=\"\" class=\"wp-image-9656\"\/><figcaption>\"Ma\u0142y s\u0142owniczek\" <br><em><strong><a href=\"https:\/\/www.gry-online.pl\/newsroom\/warner-bros-zastrzeglo-prawa-do-mema-big-chungus\/z822b11\">Dmuchaj\u0105c na zimne:<\/a><\/strong> Obrazek powy\u017cej stanowi w\u0142asno\u015b\u0107 firmy WarnerBros.<\/em><\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/harry-potter-daniel-radcliffe.gif\" alt=\"\" class=\"wp-image-9656\"\/><figcaption>\"Ma\u0142y s\u0142owniczek\" <br><em><strong><a href=\"https:\/\/www.gry-online.pl\/newsroom\/warner-bros-zastrzeglo-prawa-do-mema-big-chungus\/z822b11\">Dmuchaj\u0105c na zimne:<\/a><\/strong> Obrazek powy\u017cej stanowi w\u0142asno\u015b\u0107 firmy WarnerBros.<\/em><\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Pewnie wi\u0119kszo\u015b\u0107 kojarzy projekt AdoptOpenJDK, kt\u00f3ry powsta\u0142 jako efekt wysi\u0142k\u00f3w spo\u0142eczno\u015bci walcz\u0105cej o \u201cwoln\u0105\u201d implementacje JDK w momencie, kiedy Oracle par\u0119 lat temu uczyni\u0142 Oracle JDK p\u0142atnym dla u\u017cytku komercyjnego. AdoptOpenJDK pocz\u0105tkowo rozwijany by\u0142 przez spo\u0142eczno\u015b\u0107 JUG\u00f3w z ca\u0142ego \u015bwiata, by ostatecznie trafi\u0107 pod skrzyd\u0142a Eclipse Foundation. W efekcie AdoptOpenJDK zosta\u0142o przechrzczone na na Eclipse Adoptium (JDK jest znakiem towarowym nale\u017c\u0105cym do Oracle) oraz powstanie Adoptium Working Group. <\/p>\n","innerContent":["\n<p>Pewnie wi\u0119kszo\u015b\u0107 kojarzy projekt AdoptOpenJDK, kt\u00f3ry powsta\u0142 jako efekt wysi\u0142k\u00f3w spo\u0142eczno\u015bci walcz\u0105cej o \u201cwoln\u0105\u201d implementacje JDK w momencie, kiedy Oracle par\u0119 lat temu uczyni\u0142 Oracle JDK p\u0142atnym dla u\u017cytku komercyjnego. AdoptOpenJDK pocz\u0105tkowo rozwijany by\u0142 przez spo\u0142eczno\u015b\u0107 JUG\u00f3w z ca\u0142ego \u015bwiata, by ostatecznie trafi\u0107 pod skrzyd\u0142a Eclipse Foundation. W efekcie AdoptOpenJDK zosta\u0142o przechrzczone na na Eclipse Adoptium (JDK jest znakiem towarowym nale\u017c\u0105cym do Oracle) oraz powstanie Adoptium Working Group. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W jej sk\u0142ad wchodzi wiele zaanga\u017cowanych w rozw\u00f3j Javy firm, w tym wspomniany RedHat, a g\u0142\u00f3wnymi artefaktami pracy grupy s\u0105:<\/p>\n","innerContent":["\n<p>W jej sk\u0142ad wchodzi wiele zaanga\u017cowanych w rozw\u00f3j Javy firm, w tym wspomniany RedHat, a g\u0142\u00f3wnymi artefaktami pracy grupy s\u0105:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li>Eclipse Temurin - oficjalna dystrybucja OpenJDK grupy, ale tak\u017ce ca\u0142a infrastruktura do budowania i koordynacj\u0119 wyda\u0144.<\/li><li>Eclipse AQAvit - du\u017cy zestaw test\u00f3w jako\u015bciowych obejmuj\u0105cych funkcje, bezpiecze\u0144stwo, wydajno\u015b\u0107 i trwa\u0142o\u015b\u0107 oraz definiuje kryteria jako\u015bci, wymaganej przez \"klient\u00f3w korporacyjnych\".<\/li><li>Eclipse Temurin-Compliance zapewnia, \u017ce binarki Eclipse Temurin s\u0105 zgodne ze specyfikacj\u0105 Java SE.<\/li><\/ul>\n","innerContent":["\n<ul><li>Eclipse Temurin - oficjalna dystrybucja OpenJDK grupy, ale tak\u017ce ca\u0142a infrastruktura do budowania i koordynacj\u0119 wyda\u0144.<\/li><li>Eclipse AQAvit - du\u017cy zestaw test\u00f3w jako\u015bciowych obejmuj\u0105cych funkcje, bezpiecze\u0144stwo, wydajno\u015b\u0107 i trwa\u0142o\u015b\u0107 oraz definiuje kryteria jako\u015bci, wymaganej przez \"klient\u00f3w korporacyjnych\".<\/li><li>Eclipse Temurin-Compliance zapewnia, \u017ce binarki Eclipse Temurin s\u0105 zgodne ze specyfikacj\u0105 Java SE.<\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Wracaj\u0105c do RedHata, to ten przez wiele lat posiada\u0142 w\u0142asne OpenJDK, teraz za\u015b zamierza skupi\u0107 si\u0119 na Temurinie. Oznacza to, \u017ce klienci firmy <a href=\"https:\/\/access.redhat.com\/support\/policy\/updates\/jboss_notes\/?extIdCarryOver=true&amp;sc_cid=701f2000001OH6pAAG\">mog\u0105 liczy\u0107 na oficjalny support tego wydania<\/a> i to w\u0142a\u015bnie ono ma by\u0107 dost\u0119pne we wszystkich produktach firmy.<\/p>\n","innerContent":["\n<p>Wracaj\u0105c do RedHata, to ten przez wiele lat posiada\u0142 w\u0142asne OpenJDK, teraz za\u015b zamierza skupi\u0107 si\u0119 na Temurinie. Oznacza to, \u017ce klienci firmy <a href=\"https:\/\/access.redhat.com\/support\/policy\/updates\/jboss_notes\/?extIdCarryOver=true&amp;sc_cid=701f2000001OH6pAAG\">mog\u0105 liczy\u0107 na oficjalny support tego wydania<\/a> i to w\u0142a\u015bnie ono ma by\u0107 dost\u0119pne we wszystkich produktach firmy.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":9652,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-1-2.gif\" alt=\"\" class=\"wp-image-9652\"\/><figcaption>Aczkolwiek prawd\u0105 jest, \u017ce to i tak IMHO bardzo uczciwy spos\u00f3b zarabiania na Javie<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-1-2.gif\" alt=\"\" class=\"wp-image-9652\"\/><figcaption>Aczkolwiek prawd\u0105 jest, \u017ce to i tak IMHO bardzo uczciwy spos\u00f3b zarabiania na Javie<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Oczywi\u015bcie, RedHat nie jest w tej inicjatywie sam, a ostatnio mas\u0119 energii w rozw\u00f3j javowego ekosystemu wk\u0142ada te\u017c Microsoft. Robi to poprzez cz\u0142onkostwo we wspomnianych grupach roboczych (czy to Adoptium, czy te\u017c Jakarta EE), ale te\u017c jak najlepsze wsparcie Javy w chmurze Azure. Firmie chyba zale\u017cy, \u017ceby o ca\u0142ej wsp\u00f3\u0142pracy by\u0142o g\u0142o\u015bno, bo w ramach kana\u0142\u00f3w komunikacyjnych Spring Framework pojawi\u0142 si\u0119 w tym tygodniu <a href=\"https:\/\/spring.io\/blog\/2022\/08\/30\/microsoft-is-committed-to-the-success-of-java-developers\">go\u015bcinny artyku\u0142 autorstwa Julii Liuson z Microsoft<\/a>, podsumowuj\u0105cy ca\u0142y wachlarz dzia\u0142a\u0144 Microsoftu w tym obszarze. Je\u017celi jeste\u015bcie u\u017cytkownikami Azure, warto zerkn\u0105\u0107, a dodatkowo tego typu \"crossover episodes\" zwracaj\u0105 uwag\u0119 na ciekawe, odbywaj\u0105ce si\u0119 w ekosystemie wsp\u00f3\u0142prac.<\/p>\n","innerContent":["\n<p>Oczywi\u015bcie, RedHat nie jest w tej inicjatywie sam, a ostatnio mas\u0119 energii w rozw\u00f3j javowego ekosystemu wk\u0142ada te\u017c Microsoft. Robi to poprzez cz\u0142onkostwo we wspomnianych grupach roboczych (czy to Adoptium, czy te\u017c Jakarta EE), ale te\u017c jak najlepsze wsparcie Javy w chmurze Azure. Firmie chyba zale\u017cy, \u017ceby o ca\u0142ej wsp\u00f3\u0142pracy by\u0142o g\u0142o\u015bno, bo w ramach kana\u0142\u00f3w komunikacyjnych Spring Framework pojawi\u0142 si\u0119 w tym tygodniu <a href=\"https:\/\/spring.io\/blog\/2022\/08\/30\/microsoft-is-committed-to-the-success-of-java-developers\">go\u015bcinny artyku\u0142 autorstwa Julii Liuson z Microsoft<\/a>, podsumowuj\u0105cy ca\u0142y wachlarz dzia\u0142a\u0144 Microsoftu w tym obszarze. Je\u017celi jeste\u015bcie u\u017cytkownikami Azure, warto zerkn\u0105\u0107, a dodatkowo tego typu \"crossover episodes\" zwracaj\u0105 uwag\u0119 na ciekawe, odbywaj\u0105ce si\u0119 w ekosystemie wsp\u00f3\u0142prac.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":9650,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/91382132-d0f0-4fcb-a335-d632577472d1_text.gif\" alt=\"\" class=\"wp-image-9650\"\/><figcaption>I to pewnie obup\u00f3lne wsp\u00f3\u0142prace. A ja jestem frajerem, kt\u00f3ry pisze o nich zupe\u0142nie za darmo.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/91382132-d0f0-4fcb-a335-d632577472d1_text.gif\" alt=\"\" class=\"wp-image-9650\"\/><figcaption>I to pewnie obup\u00f3lne wsp\u00f3\u0142prace. A ja jestem frajerem, kt\u00f3ry pisze o nich zupe\u0142nie za darmo.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/developers.redhat.com\/articles\/2022\/08\/24\/red-hat-expands-support-java-eclipse-temurin\">Red Hat expands support for Java with Eclipse Temurin<\/a><\/li><li><a href=\"https:\/\/spring.io\/blog\/2022\/08\/30\/microsoft-is-committed-to-the-success-of-java-developers\">Microsoft is committed to the success of Java developers<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/developers.redhat.com\/articles\/2022\/08\/24\/red-hat-expands-support-java-eclipse-temurin\">Red Hat expands support for Java with Eclipse Temurin<\/a><\/li><li><a href=\"https:\/\/spring.io\/blog\/2022\/08\/30\/microsoft-is-committed-to-the-success-of-java-developers\">Microsoft is committed to the success of Java developers<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. A Wy co macie w swoich zale\u017cno\u015bciach? I jak to weryfikujecie?<\/h2>\n","innerContent":["\n<h2>2. A Wy co macie w swoich zale\u017cno\u015bciach? I jak to weryfikujecie?<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>No i je\u015bli chodzi o newsy, to powy\u017cszy Red Hat wyczerpa\u0142 nam pul\u0119. Ale nie samymi newsami cz\u0142owiek \u017cyje - czasem (a powiedzia\u0142bym, \u017ce niepokoj\u0105co cz\u0119sto) to, co zaprz\u0105ta jego uwag\u0119 to nie najnowsza wersji JDK, ale problemy kompatybilno\u015bciowe lub (gulp) bezpiecze\u0144stwa z zewn\u0119trznymi zale\u017cno\u015bciami. Mam wra\u017cenie, \u017ce w tej kwestii nasza bran\u017ca porusza si\u0119 mi\u0119dzy dwoma skrajno\u015bciami - projekty albo maj\u0105 bardzo \u015bcis\u0142e regu\u0142y typu \"starszyzna plemienna, kt\u00f3ra nie widzia\u0142a kodu \u017ar\u00f3d\u0142owego od dziesi\u0119ciu lat musi wyrazi\u0107 zgod\u0119 na podbicie minora Springa\" do \"left-pad? A po co to pisa\u0107 od zera, jak mo\u017cna u\u017cy\u0107 zewn\u0119trzenej biblioteki od randoma z internet\u00f3w maj\u0105cej 10 linijek\"<\/p>\n","innerContent":["\n<p>No i je\u015bli chodzi o newsy, to powy\u017cszy Red Hat wyczerpa\u0142 nam pul\u0119. Ale nie samymi newsami cz\u0142owiek \u017cyje - czasem (a powiedzia\u0142bym, \u017ce niepokoj\u0105co cz\u0119sto) to, co zaprz\u0105ta jego uwag\u0119 to nie najnowsza wersji JDK, ale problemy kompatybilno\u015bciowe lub (gulp) bezpiecze\u0144stwa z zewn\u0119trznymi zale\u017cno\u015bciami. Mam wra\u017cenie, \u017ce w tej kwestii nasza bran\u017ca porusza si\u0119 mi\u0119dzy dwoma skrajno\u015bciami - projekty albo maj\u0105 bardzo \u015bcis\u0142e regu\u0142y typu \"starszyzna plemienna, kt\u00f3ra nie widzia\u0142a kodu \u017ar\u00f3d\u0142owego od dziesi\u0119ciu lat musi wyrazi\u0107 zgod\u0119 na podbicie minora Springa\" do \"left-pad? A po co to pisa\u0107 od zera, jak mo\u017cna u\u017cy\u0107 zewn\u0119trzenej biblioteki od randoma z internet\u00f3w maj\u0105cej 10 linijek\"<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"id":9660,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-36-1024x567.png\" alt=\"\" class=\"wp-image-9660\"\/><figcaption>I uwaga z mojej strony - u\u017cycie zale\u017cno\u015bci w formie API nie jest po\u017c\u0105danym rozwi\u0105zaniem problemu.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-36-1024x567.png\" alt=\"\" class=\"wp-image-9660\"\/><figcaption>I uwaga z mojej strony - u\u017cycie zale\u017cno\u015bci w formie API nie jest po\u017c\u0105danym rozwi\u0105zaniem problemu.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Na szcz\u0119\u015bcie istnieje r\u00f3wnie\u017c trzecia droga, czyli \u015bwiadome i rozs\u0105dne podej\u015bcie do tematu zale\u017cno\u015bci. Zdaje sobie spraw\u0119, \u017ce ka\u017cdy projekt b\u0119dzie musia\u0142 sobie gdzie\u015b stuningowa\u0107, jak bardzo \"na ostrzu \u017cyletki\" chce pozostawa\u0107. Je\u015bli jednak szukacie jakich\u015b dobrych praktyk, kt\u00f3re pomog\u0105 w uzyskaniu po\u017c\u0105danego balansu, polecam tekst <strong><a href=\"https:\/\/snyk.io\/blog\/best-practices-for-managing-java-dependencies\/\">Best practices for managing Java dependencies<\/a><\/strong> od <a class=\"autolink\" href=\"https:\/\/snyk.io\">snyk.io<\/a> w\u0142a\u015bnie w tym temacie. Snyk to szeroko znana platforma zapewniaj\u0105ca wsparcie bezpiecze\u0144stwa w buildach programistycznych (w tym w\u0142a\u015bnie min. Skanowanie zale\u017cno\u015bci). Rzeczona publikacja przedstawia za\u015b zesp\u00f3\u0142 sugestii, kt\u00f3re warto wdro\u017cy\u0107 w ka\u017cdym projekcie.<\/p>\n","innerContent":["\n<p>Na szcz\u0119\u015bcie istnieje r\u00f3wnie\u017c trzecia droga, czyli \u015bwiadome i rozs\u0105dne podej\u015bcie do tematu zale\u017cno\u015bci. Zdaje sobie spraw\u0119, \u017ce ka\u017cdy projekt b\u0119dzie musia\u0142 sobie gdzie\u015b stuningowa\u0107, jak bardzo \"na ostrzu \u017cyletki\" chce pozostawa\u0107. Je\u015bli jednak szukacie jakich\u015b dobrych praktyk, kt\u00f3re pomog\u0105 w uzyskaniu po\u017c\u0105danego balansu, polecam tekst <strong><a href=\"https:\/\/snyk.io\/blog\/best-practices-for-managing-java-dependencies\/\">Best practices for managing Java dependencies<\/a><\/strong> od <a class=\"autolink\" href=\"https:\/\/snyk.io\">snyk.io<\/a> w\u0142a\u015bnie w tym temacie. Snyk to szeroko znana platforma zapewniaj\u0105ca wsparcie bezpiecze\u0144stwa w buildach programistycznych (w tym w\u0142a\u015bnie min. Skanowanie zale\u017cno\u015bci). Rzeczona publikacja przedstawia za\u015b zesp\u00f3\u0142 sugestii, kt\u00f3re warto wdro\u017cy\u0107 w ka\u017cdym projekcie.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W tek\u015bcie znajdziecie sporo dobrych tip\u00f3w, w jaki spos\u00f3b \u0142atwo sprawdzi\u0107 poziom wsparcia u\u017cywanych przez was bibliotek, to czy Wasze pakiety nie wymagaj\u0105 aktualizacji, oraz kt\u00f3re pluginy do Mavena i Gradle, u\u0142atwiaj\u0105ce ten proces u\u017cy\u0107. Nie zabrak\u0142o oczywi\u015bcie odrobiny content marketingu, poniewa\u017c w\u015br\u00f3d narz\u0119dzi znajdziecie r\u00f3wnie\u017c Synka, ale nawet osoby nie zamierzaj\u0105ce dok\u0142ada\u0107 nowego narz\u0119dzia do swojego toolchaina znajd\u0105 dla siebie interesuj\u0105ce porady.<\/p>\n","innerContent":["\n<p>W tek\u015bcie znajdziecie sporo dobrych tip\u00f3w, w jaki spos\u00f3b \u0142atwo sprawdzi\u0107 poziom wsparcia u\u017cywanych przez was bibliotek, to czy Wasze pakiety nie wymagaj\u0105 aktualizacji, oraz kt\u00f3re pluginy do Mavena i Gradle, u\u0142atwiaj\u0105ce ten proces u\u017cy\u0107. Nie zabrak\u0142o oczywi\u015bcie odrobiny content marketingu, poniewa\u017c w\u015br\u00f3d narz\u0119dzi znajdziecie r\u00f3wnie\u017c Synka, ale nawet osoby nie zamierzaj\u0105ce dok\u0142ada\u0107 nowego narz\u0119dzia do swojego toolchaina znajd\u0105 dla siebie interesuj\u0105ce porady.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/snyk.io\/blog\/best-practices-for-managing-java-dependencies\/\">Best practices for managing Java dependencies<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/snyk.io\/blog\/best-practices-for-managing-java-dependencies\/\">Best practices for managing Java dependencies<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>3. Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? Dowiedzcie si\u0119 na przyk\u0142adzie Scali<\/h2>\n","innerContent":["\n<h2>3. Jak si\u0119 testuje kompilatory i projektuje cykl releasowy? Dowiedzcie si\u0119 na przyk\u0142adzie Scali<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A na koniec b\u0119dzie o Scali - w naprawd\u0119 unikalnym kontek\u015bcie. Mam bowiem dla Was dwa teksty, pozwalaj\u0105ce zajrze\u0107 pod mask\u0119 core teamu rozwijaj\u0105cego sam j\u0119zyk.<\/p>\n","innerContent":["\n<p>A na koniec b\u0119dzie o Scali - w naprawd\u0119 unikalnym kontek\u015bcie. Mam bowiem dla Was dwa teksty, pozwalaj\u0105ce zajrze\u0107 pod mask\u0119 core teamu rozwijaj\u0105cego sam j\u0119zyk.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":9666,"width":512,"height":306,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-37.png\" alt=\"\" class=\"wp-image-9666\" width=\"512\" height=\"306\"\/><figcaption>\u201cCome on, big guy. Let's go for a ride. Let's cruise.\u201d<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-37.png\" alt=\"\" class=\"wp-image-9666\" width=\"512\" height=\"306\"\/><figcaption>\u201cCome on, big guy. Let's go for a ride. Let's cruise.\u201d<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Czasem zapominamy o tym, ale kompilator to nie jest magiczna skrzynka zamieniaj\u0105ca kod w uruchamialn\u0105 aplikacj\u0119, ale r\u00f3wnie\u017c program sam w sobie. Oznacza to, \u017ce pracuj\u0105 nad nim zespo\u0142y programistyczne posiadaj\u0105ce swoje w\u0142asne Jiry, Sprinty i og\u00f3lnie u\u017cywaj\u0105ce normalnych metodologii wytwarzania oprogramowania. Dlatego te\u017c np. ka\u017cde nowe wydanie Javy posiada swoje konkretne <a href=\"https:\/\/openjdk.org\/projects\/jdk\/19\/\">kamienie milowe<\/a>, wymagane do stabilizacji ca\u0142o\u015bci wraz z odpowiednimi okresami testowania. Ca\u0142o\u015b\u0107 musi by\u0107 te\u017c gdzie\u015b budowana.<\/p>\n","innerContent":["\n<p>Czasem zapominamy o tym, ale kompilator to nie jest magiczna skrzynka zamieniaj\u0105ca kod w uruchamialn\u0105 aplikacj\u0119, ale r\u00f3wnie\u017c program sam w sobie. Oznacza to, \u017ce pracuj\u0105 nad nim zespo\u0142y programistyczne posiadaj\u0105ce swoje w\u0142asne Jiry, Sprinty i og\u00f3lnie u\u017cywaj\u0105ce normalnych metodologii wytwarzania oprogramowania. Dlatego te\u017c np. ka\u017cde nowe wydanie Javy posiada swoje konkretne <a href=\"https:\/\/openjdk.org\/projects\/jdk\/19\/\">kamienie milowe<\/a>, wymagane do stabilizacji ca\u0142o\u015bci wraz z odpowiednimi okresami testowania. Ca\u0142o\u015b\u0107 musi by\u0107 te\u017c gdzie\u015b budowana.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zacz\u0119li\u015bmy dzisiejsz\u0105 edycj\u0119 do Eclipse Temurina, kt\u00f3ry zapewnia (poza samym wariantem OpenJDK) r\u00f3wnie\u017c infrastruktur\u0119 do budowania takowego. Dla zaciekawionych, jak tego typu proces przebiega r\u00f3wnie\u017c w innych j\u0119zykach, pojawia si\u0119 dobra szansa aby poczyta\u0107 o ca\u0142ym procesie od kuchni. Zesp\u00f3\u0142 odpowiedzialny za kompilator Scali w VirtusLab podzieli\u0142 si\u0119 bowiem <a href=\"https:\/\/virtuslab.com\/blog\/prevent-scala3-compiler-regressions-community-build\/\">Case Study opisuj\u0105cym ich podej\u015bcie do test\u00f3w regresyjnych kompilatora<\/a>. O ile jednak Java skupia si\u0119 na spe\u0142nieniu formalnej specyfikacji i tak zwanego TCK (Technology Compatibility Kit), o tyle tw\u00f3rcy Scali id\u0105 o krok dalej, testuj\u0105c sw\u00f3j produkt ko\u0144cowy na realnych projektach open-source, dzi\u0119ki czemu nabieraj\u0105 pewno\u015bci, \u017ce wprowadzone przez ich zmiany nie popsuj\u0105 ekosystemu.<\/p>\n","innerContent":["\n<p>Zacz\u0119li\u015bmy dzisiejsz\u0105 edycj\u0119 do Eclipse Temurina, kt\u00f3ry zapewnia (poza samym wariantem OpenJDK) r\u00f3wnie\u017c infrastruktur\u0119 do budowania takowego. Dla zaciekawionych, jak tego typu proces przebiega r\u00f3wnie\u017c w innych j\u0119zykach, pojawia si\u0119 dobra szansa aby poczyta\u0107 o ca\u0142ym procesie od kuchni. Zesp\u00f3\u0142 odpowiedzialny za kompilator Scali w VirtusLab podzieli\u0142 si\u0119 bowiem <a href=\"https:\/\/virtuslab.com\/blog\/prevent-scala3-compiler-regressions-community-build\/\">Case Study opisuj\u0105cym ich podej\u015bcie do test\u00f3w regresyjnych kompilatora<\/a>. O ile jednak Java skupia si\u0119 na spe\u0142nieniu formalnej specyfikacji i tak zwanego TCK (Technology Compatibility Kit), o tyle tw\u00f3rcy Scali id\u0105 o krok dalej, testuj\u0105c sw\u00f3j produkt ko\u0144cowy na realnych projektach open-source, dzi\u0119ki czemu nabieraj\u0105 pewno\u015bci, \u017ce wprowadzone przez ich zmiany nie popsuj\u0105 ekosystemu.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":9669,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/cT24Xy.gif\" alt=\"\" class=\"wp-image-9669\"\/><figcaption>Klatka z \u017cycia tw\u00f3rcy kompilatora<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/cT24Xy.gif\" alt=\"\" class=\"wp-image-9669\"\/><figcaption>Klatka z \u017cycia tw\u00f3rcy kompilatora<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jednym z moich ulubionych \"praw\" wytwarzania oprogramowania jest tak zwane <a href=\"https:\/\/www.hyrumslaw.com\/\">Prawo Hyruma<\/a>, okre\u015blane r\u00f3wnie\u017c \"Prawem Murphy'ego dla API\". Brzmi ono nast\u0119puj\u0105co:<\/p>\n","innerContent":["\n<p>Jednym z moich ulubionych \"praw\" wytwarzania oprogramowania jest tak zwane <a href=\"https:\/\/www.hyrumslaw.com\/\">Prawo Hyruma<\/a>, okre\u015blane r\u00f3wnie\u017c \"Prawem Murphy'ego dla API\". Brzmi ono nast\u0119puj\u0105co:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/quote","attrs":[],"innerBlocks":[],"innerHTML":"\n<blockquote class=\"wp-block-quote\"><p>Przy odpowiedniej liczbie u\u017cytkownik\u00f3w API, nie ma znaczenia, co obiecujesz w kontrakcie: wszystkie obserwowalne zachowania twojego systemu b\u0119d\u0105 przez kogo\u015b zale\u017cne.<\/p><\/blockquote>\n","innerContent":["\n<blockquote class=\"wp-block-quote\"><p>Przy odpowiedniej liczbie u\u017cytkownik\u00f3w API, nie ma znaczenia, co obiecujesz w kontrakcie: wszystkie obserwowalne zachowania twojego systemu b\u0119d\u0105 przez kogo\u015b zale\u017cne.<\/p><\/blockquote>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Mam wra\u017cenie, \u017ce tw\u00f3rcy Scali wzi\u0119li sobie je mocno do serca i dzia\u0142aj\u0105 dok\u0142adnie w tym samym duchu. Wszystkim zainteresowanym internalami narz\u0119dzi developerskich bardzo polecam lektur\u0119 samego case study, bo stanowi do\u015b\u0107 jednak unikalny wgl\u0105d w proces testowania tak krytycznego elementu ekosystemu j\u0119zyka, jak kompilator.<\/p>\n","innerContent":["\n<p>Mam wra\u017cenie, \u017ce tw\u00f3rcy Scali wzi\u0119li sobie je mocno do serca i dzia\u0142aj\u0105 dok\u0142adnie w tym samym duchu. Wszystkim zainteresowanym internalami narz\u0119dzi developerskich bardzo polecam lektur\u0119 samego case study, bo stanowi do\u015b\u0107 jednak unikalny wgl\u0105d w proces testowania tak krytycznego elementu ekosystemu j\u0119zyka, jak kompilator.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A jak ju\u017c jeste\u015bmy w temacie Scali, to ostatnio ukaza\u0142y si\u0119 jej <a href=\"https:\/\/www.scala-lang.org\/blog\/2022\/08\/17\/long-term-compatibility-plans.html\">d\u0142ugookresowe plany wsparcia<\/a>. Mo\u017cna si\u0119 z nich dowiedzie\u0107, kt\u00f3re wydania dostan\u0105 d\u0142u\u017csze wsparcie, kt\u00f3re nie b\u0119d\u0105 ju\u017c rozwijane, kt\u00f3re powinny by\u0107 za\u015b porzucone. Tw\u00f3rcy Scali wprowadzaj\u0105 bowiem dwa typy build\u00f3w - Scala LTS (z trzyletnim wsparciem) i Scala Next, kt\u00f3re b\u0119d\u0105 od siebie do\u015b\u0107 mocno odseparowane, przy r\u00f3wnoczesnym umo\u017cliwieniu stosunkowo prostej migracji. Nawet je\u015bli nie u\u017cywacie Scali, to ponownie jest to kawa\u0142 ciekawej lektury - tekst mocno bowiem wchodzi w niuanse tego, co siedzi w g\u0142owie tw\u00f3rc\u00f3w j\u0119zyka, gdy my\u015bl\u0105 oni o d\u0142ugoterminowym wsparciu konkretnych wersji.<\/p>\n","innerContent":["\n<p>A jak ju\u017c jeste\u015bmy w temacie Scali, to ostatnio ukaza\u0142y si\u0119 jej <a href=\"https:\/\/www.scala-lang.org\/blog\/2022\/08\/17\/long-term-compatibility-plans.html\">d\u0142ugookresowe plany wsparcia<\/a>. Mo\u017cna si\u0119 z nich dowiedzie\u0107, kt\u00f3re wydania dostan\u0105 d\u0142u\u017csze wsparcie, kt\u00f3re nie b\u0119d\u0105 ju\u017c rozwijane, kt\u00f3re powinny by\u0107 za\u015b porzucone. Tw\u00f3rcy Scali wprowadzaj\u0105 bowiem dwa typy build\u00f3w - Scala LTS (z trzyletnim wsparciem) i Scala Next, kt\u00f3re b\u0119d\u0105 od siebie do\u015b\u0107 mocno odseparowane, przy r\u00f3wnoczesnym umo\u017cliwieniu stosunkowo prostej migracji. Nawet je\u015bli nie u\u017cywacie Scali, to ponownie jest to kawa\u0142 ciekawej lektury - tekst mocno bowiem wchodzi w niuanse tego, co siedzi w g\u0142owie tw\u00f3rc\u00f3w j\u0119zyka, gdy my\u015bl\u0105 oni o d\u0142ugoterminowym wsparciu konkretnych wersji.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":9664,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/pokemon-sadism.gif\" alt=\"\" class=\"wp-image-9664\"\/><figcaption>I uzmys\u0142awia, \u017ce po drugiej stronie wcale nie siedz\u0105 sady\u015bci, chc\u0105cy wymusi\u0107 na ca\u0142ym ekosystemie jak najwi\u0119cej przepalonych godzin na ci\u0105g\u0142y maintanance.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/pokemon-sadism.gif\" alt=\"\" class=\"wp-image-9664\"\/><figcaption>I uzmys\u0142awia, \u017ce po drugiej stronie wcale nie siedz\u0105 sady\u015bci, chc\u0105cy wymusi\u0107 na ca\u0142ym ekosystemie jak najwi\u0119cej przepalonych godzin na ci\u0105g\u0142y maintanance.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/www.scala-lang.org\/blog\/2022\/08\/17\/long-term-compatibility-plans.html\">Long-term compatibility plans for Scala 3<\/a><\/li><li><a href=\"https:\/\/www.hyrumslaw.com\/\">Prawo Hyruma<\/a><\/li><li><a href=\"https:\/\/virtuslab.com\/blog\/prevent-scala3-compiler-regressions-community-build\/\">How to prevent Scala 3 compiler regressions with Community Build<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/www.scala-lang.org\/blog\/2022\/08\/17\/long-term-compatibility-plans.html\">Long-term compatibility plans for Scala 3<\/a><\/li><li><a href=\"https:\/\/www.hyrumslaw.com\/\">Prawo Hyruma<\/a><\/li><li><a href=\"https:\/\/virtuslab.com\/blog\/prevent-scala3-compiler-regressions-community-build\/\">How to prevent Scala 3 compiler regressions with Community Build<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>PS: Za tydzie\u0144 nie ma JVM Weekly - urlop mam \ud83c\udfdd<\/p>\n","innerContent":["\n<p>PS: Za tydzie\u0144 nie ma JVM Weekly - urlop mam \ud83c\udfdd<\/p>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9648","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=9648"}],"version-history":[{"count":16,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9648\/revisions"}],"predecessor-version":[{"id":9687,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9648\/revisions\/9687"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/9677"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=9648"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=9648"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=9648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}