1. JVM Ecosystem Report 2021 zawiera masę ciekawego info 📊

Bardzo często pisząc nasze przeglądy, potrzebuje kontekstu. Śledząc branżowe newsy łatwo wpaść w banieczkę, w której każdy używa Kotlina i najnowszej Javy, ale zdaje sobie sprawę, że realny świat tak nie wygląda.

Jak zwykle w wypadku tego typu raportów, warto rzucić okiem na badaną grupę.

Ankieta została przeprowadzona w okresie sześciu tygodni do lutego i marca 2021 roku, gromadząc odpowiedzi od ponad 2000 programistów Java. Ankieta jest wynikiem współpracy między Snyk (platforma będąca zestawem narzędzi, zapewniających “bezpieczeństwo dla systemów o dużej skali”) i Azul (twórcy rozwijający swoje własne JDK), a przy jej przygotowaniu pomagał również portal Foojay.io, Wirtualne JUGi oraz Joshem Longiem, rzecznikiem programistów Springa. W tym miejscu pozwolę sobie wrzucić bardzo ładne graficzne podsumowanie, jakiego dokonali Twórcy raportu:

A teraz szczegóły:

Zacznijmy od podstaw i klasycznie przyglądnijmy się, jak wygląda użycie poszczególnych wersji JDK według Snyk. Tutaj dane są niezwykle zaskakujące - według raportu Snyk, ~60% programistów używa JDK 11 na produkcji, co jest wynikiem zbliżonym do pokrycia rynku, jakie w raporcie zdobyła JDK 8. Ostatnie dane, z jakimi miałem okazję się zapoznać (State of Developer Ecosystem od JetBrains) wskazywały na odpowiednio 32% i 75% dla JDK 11 i 8. Dane od Snyk mogą mieć nieco inną demografię, ale w ciągu roku, jaki minął od publikacji raportu twórców Intellij, najnowszy LTS zdaje się zyskiwać na popularności.

Jeżeli chodzi o Frameworki, to z pewnością bryluje Spring Boot. Jednocześnie jednak wersja “enterprajsowa” Javy też sprawdza się całkiem nieźle - jeżeli zsumować Javę EE, Jakartę EE i Quarkusa, dostaniemy całkiem solidny procent - aczkolwiek podejrzewam że standardów tych używają wzajemnie ci sami programiści. Mimo wszystko 24% Javy EE robi wrażenie, podobnie jak 7% MicroProfile - zwłaszcza jak zestawi się to z mizernymi 5% Micronauta, do niedawna uznanego jako króla lekkich frameworków javowych, który zdaje się nieco tracić impet. Zaskakujący jest brak Helidona - biorąc pod uwagę jak bardzo niszowe rozwiązania (Wicket? Grails?) zostały ujęte, podejrzewam, że Helidon może jednak zawierać całkiem sporą część 7% opisanych jako Other.

Jednak raport Snyk ma też statystykę, której nigdy dotąd nie byłem w stanie znaleźć - jak wygląda proporcja używania konkretnych narzędzi do budowania. Za każdym razem, gdy opisuje, jak coraz popularniejszy staje się Gradle zastanawiam się, czy jego miażdżąca przewaga nad Mavenem w mojej głowie to nie właśnie odprysk tej banieczki. Okazuje się, że po raz kolejny złapałem się na własnym błędzie poznawczym. Maven jest używane przez solidne 76% programistów i choć 38% Gradle robi wrażenie, to jednak do “króla” trochę mu jeszcze brakuje.

Ogólnie fajnie, że posiadamy kolejne interesujące źródło statystyk. Mam nadzieje, że Snyk będzie kontynuował inicjatywę w następnych latach.

2. Twórcy Kotlina zrobili AMA i odpowiadają na pytania o przyszłość języka 🙋‍♂️🍅

Rozwój Kotlina (według powyższego raportu Snyk, drugiego co do popularności języka JVMowego) bardzo interesująco się obserwuje. JetBrainsi są bardzo otwarci. Roman Elizarov, lead projektu, w fantastyczny sposób dzieli się decyzjami projektowymi stojącymi za poszczególnymi featurami (szczególnie jego talki na temat korutyn i structured concurrency należą do moich ulubionych w temacie języków programowania). Jak bardzo otwarty jest to zespół niech świadczy fakt, że wraz z premierą wersji 1.5 języka pojawiło się na Redditcie Kotlinowe AMA, którego opracowanie dostaliśmy właśnie w łapki. Rzućmy zatem okiem, co wypłynęło po wzięciu kotlinowego zespołu na spytki.

Lista zawiera kilka ciekawych punktów, aczkolwiek brakuje na niej jakichś olbrzymich zaskoczeń. Przykładowo, już niedługo możemy spodziewać się zupełnie nowego społecznościowego głosowania na nowe funkcjonalności. Sam Roman Elizarov przyznaje też, że nie widzi problemów w nadążaniu za bardzo dynamicznym rozwojem samego JDKa (co nie powinno dziwić, biorąc pod uwagę ogrom inwestycji, jakie poczyniono w związku z nowym formatem pośrednim). Nikogo (kto czyta nasze przeglądy 😉) nie zaskoczy też raczej fakt, że wspomniany nowy format pośredni ma przyczynić się do szybszej kompilacji źródeł.

Nowy format pośredni trochę zbliża do siebie oba języki.

Dla niektórych rozczarowującym może być fakt, że nie należy raczej w najbliższym czasie spodziewać się realnej implementacji Pattern Matchingu. Kotlin wybrał tutaj półśrodki, podobnie jak w wypadku Javy. Nie należy też spodziewać natywnego wsparcia dla Dependency Injection, to ma pozostać domeną bibliotek.

Najciekawsze są z pewnością fragmenty, gdzie zamiast prostych odpowiedzi, goście AMA postanawiają rozbudować nieco swoje wypowiedzi. Możemy dowiedzieć się np. że twórców kusi cross-kompilacja z TypeScriptem, ale na drodze stoją różnice w systemach typów obu języków. Jeszcze ciekawsze wydają się być zakusy dotyczące Springa - rozważane są bardzo różne, nieco wariackie kierunki, jak np. mariaż Kotlina Native i Spring Native, czy użycie Kotlin/JS do generowania kodu frontendowego dla frameworku Pivotala. Planowane jest też wsparcie rozwoju biblioteki rsocket-kotlin, rozwijanej przez zespół springowy alternatywy to gRPC. A także w planach jest  wsparcie metaprogramingu m.in. pod postacią pluginów do kompilatora.

Ogólnie polecam zerknąć do samego artykułu, gdyż jest on dość zwięzły i prowadzi do oryginalnych wątków Redditowych, gdzie przeprowadzane było AMA.

3. Najpopularniejszy serwer aplikacyjny Jakarty EE z nowym wydaniem 🦋

A na koniec, coś dla fanów Jakarty EE. Jak wiemy z raportu Snyka z pierwszej sekcji, Java/Jakarta EE ciągle jeszcze żyje i kopie, a z ankiety społeczności (tak, dzisiaj jest dzień raportów) opublikowanej w lutym dowiedzieliśmy się, że najpopularniejszym serwerem aplikacyjnym jest WildFly. Czy zatem mogliśmy przegapić jego nową, dwudziestą czwartą już wersje?

Po prawdzie… zastanawiałem się.

Tak naprawdę ciężko się było spodziewać jakichś większych ruchów, biorąc pod uwagę że dopiero, co świat obiegła informacja o wydaniu wersji 23. Co prawda opisywana dzisiaj edycja jest pierwszym stabilnym wydaniem przynoszącym certyfikacje Jakarta EE 9.1, jednak prawdę mówiąc jest to zaledwie spijanie śmietanki po zmianach dostarczonych przez kolejne wersje preview “dwudziestki trójki”. Jeśli patrzeć od strony programistycznej, nowa wersja “ważki” przynosi zaledwie wsparcie dla Reactive Streams Operators API w wersji 2.0, które samo w sobie też jakimś wielkim “apdejtem” nie jest. Oprócz tego zmiany to drobnica, aczkolwiek co poniektórych może zainteresować to, że serwer aplikacyjny usuwa wsparcie dla Jacksona w wersji v1.

Było to kolejnym całkiem interesującym faktem na kupce wiedzy niepotrzebnej i przechowywanej w głowie.

Więcej ciekawego tak naprawdę zawiera sekcja Preview. O ile sugerowaną wersją JDK dla WildFly wciąż jest już troszkę leciwa wersja 11 LTS, to powoli testowana jest również wersja 16 oraz 17 - takowa podobno sprawuje się bardzo dobrze, także możliwe że już niedługo (WildFly 25? 26?) doczekamy się wsparcia dla nowego LTSa.

Źródło


I pamiętajcie, żeby spróbować Vived, jeśli chcesz otrzymywać tego typu treści spersonalizowane pod Ciebie!