Przyszedł luty i widać, że branża powoli budzi się z poświątecznego zastoju. Mamy dzisiaj bowiem dla Was aż trzy duże releasy. Czy warto rzucać się do upgradu projektów? Tego dowiecie się z dzisiejszego przeglądu 😁
1. GraalVM 22.0 wydany
Zacznijmy od jednego z najciekawszych projektów w ramach JVM. W zeszłym tygodniu ukazał się nowy GraalVM – początkowo w wersji korporacyjnej, a następnie również w edycji Community. Co przynosi nowa edycja i czy ktoś, kto nie używał do tej pory GraalVM powinien się na to zdecydować wraz z premierą wersji 22.0?
Fani statystyk wszelakich z pewnością ukontentowani będą rozbudowanymi logami podczas budowania natywnych obrazów. Biorąc pod uwagę, że GraalVM używany jest głównie w środowiskach, w ramach których moc obliczeniowa i ogólnie pojęte zasoby są mocno limitowane, jest to zdecydowanie przydatny dodatek, ale raczej nie jest czymś co może spowodować szybszą palpitację serca. Z tej perspektywy znacznie ciekawszą zmianą jest wypuszczenie oficjalnej GitHub Action dla GraalVM, która to pozwala używać GraalVM Community Edition, Native Image i toolingu związanego z Truffle w ramach githubowych buildów.
Dodatki trafiły też do wsparcia innych języków. Jeżeli ktoś używa GraalVM do kompilacji JavaScripta, w ramach platformy pojawiło się wsparcie dla ECMAScript 2022. Użytkownicy Ruby’ego od wersji 22 mogą zaś zacząć używać edycji 3.0 tego języka. Usprawnieniu też uległo wsparcie dla WebAssembly, ale również Javy odpalanej w ramach środowiska uruchomieniowego Truffle, które to również może pochwalić się kilkoma drobnymi dodatkami.
Tak naprawdę najciekawsze zmiany dotarły chyba do wersji GraalVM Enterprise. Edycja przeznaczona dla dużych graczy to spore wydajnościowe zmiany pod maską, mocno pogrzebano bowiem z we wsparciu zarówno kompilacji Just-in-Time, jak i Ahead-of-Time. Twórcy chwalą się z przyspieszenia niektórych operacji o 25%, i choć takie syntetyczne benchmarki nie są czymś co pewnie odmienia życie, to jednak różnice między wydaniami GraalVM są zaskakująco duże i wychodzą daleko poza dodatkowe licencje czy też dodatkowe wsparcie.
Źródła
GraalVM 22.0 is here!. Today we are releasing GraalVM 22.0!
Zainstaluj teraz i czytaj tylko dobre teksty!
2. AWS SDK dla Kotlina ze wsparciem Korutyn
Dawno nie mieliśmy dla Was ogłoszeń ze świata Kotlina, ale zgodnie z zasadą “ilość, nie jakość” mamy dla Was szczególnie interesujące i z potencjałem na naprawdę mocne ułatwienie życia niektórych z Was.
AWS SDK to biblioteka, która znana jest pewnie większości programistów JVM, którzy mieli przyjemność korzystać z chmury Amazonu (zarówno w kodzie produkcyjnym, jak i np. w skryptach. Sam od lat śledzę jej ewolucję, i pamiętam jak trudna w integracji z systemami reaktywnymi była jej oryginalna, synchroniczna wersja. Wersja 2.0 okazała się już naprawdę sporym skokiem jakościowym, wprowadzając wsparcie do sensownej asynchroniczności (aczkolwiek do tej pory pamiętam problemy z jego pierwszym wydaniem, który straszliwie napsuł mi krwi).
I to właśnie ponownie temat asynchroniczności jest dobrym powodem, dla którego warto spróbować edycji Kotlinowej. Wspiera ona bowiem korutyny, co jest o tyle kluczowe, że AWS SDK składa się w zasadzie z samych operacji I/O. Miło ze strony AWS, że zdecydował się na specjalną edycję Kotlinową – o ile kompatybilność tego języka z Javą pozwala poradzić sobie w większości sytuacji, o tyle dobrze, żeby w 2022 nie trzeba było się do tego za często uciekać – w końcu stabilne korutyny mają już kilka dobrych lat.
Źródła
Zainstaluj teraz i czytaj tylko dobre teksty!
3. Groovy 4.0 wydane i tak smutne, że #nikogo
Jak dowiedzieć się, jaką datę w metryce urodzenia ma programista Javy bez pytania go bezpośrednio? Należy wysondować, czy miał w karierze przyjemność używać Groovy’ego. Rocznik 90-ty (🙋♂️) i wcześniejsze prawdopodobnie miały w życiu okres, gdy używały języka na porządku dziennym – do skryptów bazodanowych, skomplikowanych buildów Gradle |(gdzie obecnie jest wypierany przez Kotlina) czy też pisania całych aplikacji – czy to w Grailsach (które to miały być przecież zabójcą Springa) czy w… Javie EE. i jeżeli ktoś mnie po czasie zapytał dlaczego… no cóż, bo się dało 🤷♂️. Aktualnie Groovy, tak potężny dzięki swojemu metaprogramingowi i wsparciu do tworzenia eleganckich DSLi jeszcze czasem przewija się przez foldery /test w projektach, a to dzięki Spockowi 🖖🏻.
Pewnie dlatego wszelkie zapowiedzi ze strony Groovy’ego tak słabo rezonują ze społecznością. Sam muszę przyznać, że pomimo tego że regularnie śledzę świat technologii, to wydanego parę lat temu Groovy’ego 3.0 przegapiłem i dowiedziałem się o nim grubo po oficjalnej premierze. Na wersję 4.0 byłem już trochę przygotowany, ale ona też zdecydowanie nie wybrzmiała wśród programistów – jej zeszłotygodniowa premiera przeszła maksymalnie bez echa, w porównaniu do nowej Javy czy Kotlina.
Powodem może być to, jak bardzo Groovy wydaje się pozostawać w mocnym “trybie utrzymania”. Większość funkcji przychodzących z nową edycją języka to “dociąganie” do Javy. I fakt, bardzo podobnie bywało ostatnio z Kotlinem, ale język od JetBrainsów ma kilka unikalnych atutów jak korutyny (o których już dzisiaj wspominaliśmy) albo multiplatformowość. Groovy zawsze wyróżniał się zaś swoją “jazdą po krawędzi” jeśli chodzi o dokładane featury (w końcu inspirowany jest legendarnym ze swojej “magiczności” Rubym), a “czwórka” to jednak taka “ciepła woda w kranie” jak Switch expressions, Sealed types, JavaShell czy Rekordy.
Co prawda można w niej znaleźć parę ciekawszych perełek, ale większość z nich (jak choćby GINQ – Groovy-Integrated Query) czy intrygujące Groovy Contracts na razie znajdują się w inkubacji. Iskierką nadziei jest jednak to, że Groovy 5.0 zapowiada się dzięki nim całkiem smakowicie. Możliwe, że aby zrobić duży krok do przodu, twórcy musieli najpierw ulepszyć kompatybilność z Javą. I co prawda nie wierzę, że Groovy kiedykolwiek odzyska pozycję, którą miał jeszcze kilka lat temu, ale wierzę, że jeden z ciekawszych języków JVMa jeszcze nas nie raz zaskoczy.