W dniu dzisiejszym nie mamy dla Was żadnych rewolucji, ale mimo wszystko to był ciekawy tydzień z godnym przedyskutowania JEPem i kilkoma Releasami. Dodatkowo: sporo informacji o nowym kompilatorze Kotlina.
1. Minimalistyczny Web Server trafi do Javy 18 🧸
Coraz więcej kart odkrywa się przed nami w kontekście nadchodzącej Javy 18. Jako, że będzie to pierwsze wydanie rozwojowo po niedawno opublikowanym LTSie, wiele osób spodziewa się po nim naprawdę wiele. Po ostatnich informacjach mówiących, że Project Loom jest w stanie umożliwiającym jego przeportowanie na inne języki, niektórzy oczekują, że to właśnie w JDK 18 dostaniemy jego pierwsze Preview. Tymczasem kolejną (po zeszłotygodniowym wprowadzeniu UTF-8 jako domyślnego kodowania) zapowiedzią związaną z nową wersją jest wbudowany w Javę minimalny Web Server (JEP 408).
Narzędzie uruchamiane ma być z wiersza polecenia i potrafić serwować statyczne pliki w bieżącym katalogu.
java -m jdk.httpserver
Narzędzie ma być przydatne do tworzenia prototypów, i ad hocowego kodowania oraz testowania, zwłaszcza w kontekście edukacyjnym.
Wersja CLI posiadać będzie podstawowe opcje konfiguracyjne, jak wybór portu czy adresu do zbindowania. Dla tych, którzy chcą trochę bardziej pokonfigurować swoje rozwiązanie, dostępna będzie też możliwość odpalenia całości z poziomu kodu javowego.
package com.sun.net.httpserver;
public final class SimpleFileServer {
public static HttpServer createFileServer(InetSocketAddress addr,
Path rootDirectory,
OutputLevel outputLevel) {...}
public static HttpHandler createFileHandler(Path rootDirectory) {...}
public static Filter createOutputFilter(OutputStream out,
OutputLevel outputLevel) {...}
...
}
Pozwolę sobie tutaj na końcu na prywatną opinięe. Myślałem, że jestem JDK-owym maksymalistą, ale jednak dokładanie Web Serwera (tak jak kiedyś klienta HTTP) do Javy SE wydaje mi się być jednak czymś deczko nadmiarowym. Rozumiem, że presja ze strony innych języków na zmniejszanie progu wejścia jest duża, ale w świecie, w którym w prosty sposób można odpalić statyczny server takim np. Pythonem nie widzę sensu robienia tego JVMem. To nie jest tak, że wszystkie języki muszą mieć dokładnie to samo.
Zainstaluj teraz i czytaj tylko dobre teksty!
2. Droga do nowego kompilatora Kotlina 🗺
Kotlin dojrzewa i próbuje znaleźć dla siebie własną tożsamość. Od początku mocno kojarzony z Androidem, potem zaatakował świat backendu, by ostatecznie próbować wbić się w łaski programistów JS, iOS czy też aplikacji natywnych. Strategia wchodzenia na poszczególne platformy nie była zbyt spójna, każde z wydań posiadało trochę inny zestaw narzędzi, przez co kKotlinowy zespół musiał walczyć ze sporą duplikacją, mającą wpływ zarówno na tempo wdrażania nowych funkcjonalności, jak i koszt utrzymania poszczególnych elementów. Jednak od pewnego czasu zespół tworzący język zabrał się za porządki i sytuacja powolipowli się zmienia.
To co piękne w Kotlinie, to to, że w zasadzie z każdą decyzją projektową dotyczącą internalów są otwarci i transparentni. To jednak nie wszystko – chyba żadna inna technologia nie dba tak mocno o to, żeby społeczność rozumiała, co dzieje się pod maską. Tym razem opublikowali wideo dokładnie opisujące, jakie zmiany pojawiły się w nowej iteracji kotlinowego kompilatora (ochrzczonego jako wersja K2). Co więcej, całość podana jest w formie, która zainteresuje nie tylko miłośników WhitePaperów, ale w zasadzie każdego, kto posiada jakieś tam doświadczenie jako programista. Jest to chyba najprzystępniejsze wprowadzenie do teorii kompilatorów, z jakim się spotkałem.
A jak już jesteśmy przy Kotlinie, to ukazało się też ankietowe badanie użytkowników jego Multiplatformowej odmiany, głównie w kontekście mobilnym. Można się z niego dowiedzieć całkiem sporo, ale dla mnie najbardziej chyba interesującym faktem było to, że prawie 50% projektów, które dziś używają Kotlin Multiplatform zdecydowały się na przejście na tą technologię gdy ich aplikacje już istniały (spodziewałem się znacznie większej ilości GreenFieldów).
Takich smaczków jest sporo, dlatego jeśli interesuje Was choć trochę rynek mobilny i szukacie rozwojowych alternatyw dla istniejących rozwiązań – zapraszam do lektury.
Zainstaluj teraz i czytaj tylko dobre teksty!
3. Release Radar: WildFly, Quarkus, Mockito 📡
A na koniec – zestaw ciekawych nowych wydań. Żadne z nich nie zasłużyło, żeby zostać pojedynczą gwiazdą sekcji, za to każdy z nich na pewno znajdzie swoich amatorów.
Dopiero co tydzień temu rozpisywaliśmy się o planach twórców WildFly na przyszłe edycje, a Ci już zaskoczyli nas wydaniem WildFly 25.0.0, które to trafiło w ręce pasjonatów serwerów aplikacyjnych w zeszłym tygodniu. To właśnie to wydanie ostatecznie pozbywa się wsparcia Security Managera oraz wprowadza nową warstwę bezpieczeństwa. Cechuje się ono również wsparciem dla JDK 17, a także wsparcie OpenTelemetry. Oprócz tego aktualizację otrzymały co poniektóre specyfikacje MicroProfile, jak Health czy Reactive Messaging.
Drugim ważnym nowym wydaniem z zeszłego tygodnia jest Quarkus 2.3.0. Kolejny minor tego obecnie znajdującego się na ścieżce wznoszącej frameworku w dalszym ciągu inwestuje w zewnętrzne integracje. Nowe wydanie wprowadza prosto-z-pudełkowe wsparcie dla Neo4J, a także wsparcie migracji MongoDB z użyciem Liquibase. Pojawiło się również wsparcie dla Interceptorów Hibernate. Testowanie aplikacji ułatwić mają zaś dwie nowe adnotacje – @QuarkusMainTest oraz @QuarkusMainIntegrationTest, ułatwiające testowanie napisanych w Quarkusie aplikacji CLI.
Ostatnią ciekawostką jest z pewnością duże wydanie Mockito. Po edycji 4.0 można by spodziewać czegoś dużego… ale nie tym razem. “Czwóreczka” sprowadza się bowiem w zasadzie do czyszczenia pierwotnie “zdepracowanych” funkcjonalności. Na pewno ułatwi to twórcom biblioteki dalszy rozwój, ale na nowości użytkownicy muszą czekać do kolejnych wydań.