1. Docker przejmuje AtomicJar
W świecie Javowych bibliotek/usług rzadko kiedy dochodzi w dzisiejszych czasach do spektakularnych przejęć (a jak już to są to raczej duże przejęcia korporacyjne, jak ostatnio w wypadku VMWare), dlatego też każde odbija się mocnym echem. Nawet jednak w bardziej pod tym względem dynamicznym ekosystemie to, od którego zaczniemy dzisiejszą edycję nie pozostałoby niezauważone. Mamy bowiem do czynienia z sytuacją, w której oba podmioty są wyjątkowo dobrze znane w szerokiej społeczności.
Docker nabył bowiem AtomicJar, twórcę Testcontainers, co jest znaczącym ruchem w sektorze technologii kontenerowych, zwłaszcza dla programistów JVM. Założony w 2015 roku przez Richarda Northa, Testcontainers to biblioteka open-source, która upraszcza proces testowania w środowiskach Docker. Umożliwia łatwe ustawianie i usuwanie skonteneryzowanych instancji baz danych i innych usług, co doprowadziło do jego szerokiego przyjęcia w społeczności deweloperów.
AtomicJar, utworzony w 2021 roku przez oryginalnych twórców Testcontainers, miał na celu rozszerzenie możliwości narzędzia, co zaowocowało uruchomieniem Testcontainers Cloud. To rozszerzenie biblioteki Testcontainers zaprojektowane zostało do wykorzystywania mocy infrastruktury chmurowej dla środowisk testowych – żebyśmy testując nasze Mikroserwisy nie musieli wszystkiego lokalnie. Pozwala bowiem deweloperom na wykorzystanie zasobów chmury do tworzenia i zarządzania jednorazowymi instancjami kontenerów Docker, na potrzeby zarówno lokalnego developmentu jak i systemów CI/CD. Pasują do siebie jak ulał.
Nabycie przez Docker oznacza strategiczny ruch w celu bezpośredniej integracji możliwości Testcontainers, potencjalnie rozszerzając jego bazę użytkowników i pozwoli wejść na rynek Cloud Developer Environments. Docker od dawna postawił na zarabianie na developer productivity (w końcu zarabiają teraz na pobieraniu opłat za Docker Desktop), więc wydaje się to być naturalne rozwinięcie tego kierunku. Konkurencja jest zaciekła – Cloud Developer Environments z pewnością były jednym z istotniejszych trendów w 2023 i pojawiła się olbrzymia ilość nowych narzędzi, ale szersza adopcja dopiero przed nami. Ciekawą publikacje i przegląd istniejących rozwiązań możecie przeczytać na blogu George Orosza.
Zainstaluj teraz i czytaj tylko dobre teksty!
2. Nowy IntelliJ Idea – AI Assistant, Java 21 i więcej
Zeszły tydzień to też nowy IntelliJ. Jest to prawdopodobnie obok Springa najczęściej używane przez Was narzędzie, dlatego rozłożymy nowości nowe wydanie – przychodzi z nim bowiem sporo ciekawych nowości, w tym jedna długo oczekiwania nowość.
Wydanie IntelliJ IDEA 2023.3 przynosi bowiem dostępnego dla wszystkich zainteresowanych Asystent AI, który opuścił fazę testową. Oferuje on ulepszoną generację kodu bezpośrednio w edytorze, kontekstową czat AI do zapytań związanych z projektem oraz akcje AI świadome projektu, wykorzystujące rozszerzony kontekst do uzyskania bardziej kompleksowych wyników. Wyobraźcie sobie taki ChatGPT wbudowany w Wasze IDE, z kilkoma dodatkowymi usprawniaczami dzięki byciu mocno zintegrowanym z samym IDE – tak zwanymi AI Actions.
Bawiłem się całością w oparciu o początkowe zadania z tegorocznego Advent of Code, i na pewno jest to bardzo przydatne narzędzie, z którym osobiście mam tylko jeden problem – pricing. 10$ jako dodatek do już istniejących opłat licencyjnych to z jednej strony nie jest dużo (zwłaszcza że asystenci AI naprawdę potrafią zwiększyć produktywność przy wielu charakterach zadań), z drugiej jednak za dodatkową dychę mamy już ChataGPT Premium, który ma znacznie szersze możliwości użycia. Muszę też przyznać, że gdzie AI Assistant rzeczywiście jest bardzo wygodnie pointegrowany i kod który wypluwa rzeczywiście przypomina mój własny (co nie zawsze jest znowu taką zaletą…), to ChatGPT-4 był w stanie nieco zajść nieco dalej w zadaniach (choć tegoroczne są ). Trzeba jednak pamiętać, że to właśnie szeroki kontekst naszego codebase i spójność podpowiedzi z nim, a także samo zintegrowanie w narzędzie są tutaj największymi zaletami, a pod tym kątem nawet obecna pierwsza wersja sprawdza się interesująco.
Przy czym to raczej OpenAI należałoby oskarżyć o dumpingowe ceny – dalej uważam, że w stosunku do możliwości jakie daje ChatGPT jest po prostu śmiesznie tani. Jako że według FAQ rozwiązanie używa właśnie OpenAI (choć twórcy odgrażają się, że tworzą też własne modele) to musi kosztować, żeby nie zbankrutować firmy matki.
A, i pamiętajcie żeby rzucić okiem na to, jakie Wasze dane są wysyłane. JetBrains jest pod tym kątem dość transparentne.
Nie tylko AI jednak człowiek żyje. Dlatego deweloperzy Java z pewnością docenią pełne wsparcie dla Java 21. Ta aktualizacja obejmuje główne rozszerzenia z tej wersji, takie jak wirtualne wątki, Record Patterns i Pattern Matching w Switchach wyrażeń switch. Wsparcie dostały nawet feature z Preview, takie jak choćby Spring Templates.
Kilka nowości też pojawiło się w świecie Kotlinowym. Aktualizacja zawiera porady na start w przykładowych projektach dla osób nowych w Kotlinie, auto-konfigurację Kotlina w projektach Java Gradle (chwała za to, ułatwi to gradulaną migracje!) oraz i jeszcze mocniejsze “zbundlowanie” plugin Kotlina z IntelliJ – sami stwierdźcie, czy jest to dla Was zaleta. Mnie zaś najbardziej cieszy chyba fakt, pełnego wsparcia dla wersji Bety kompilatora K2. Pojawia się coraz więcej “lessons learned” z procesów migracji popularnych projektów, i myślę, że w którejś z nadchodzących edycji dotknę tego tematu.
Poza AI, Java i Kotlin, IntelliJ IDEA 2023.3 to też kilka innych dodatków. Obejmuje to lepsze wsparcie dla Scali, ulepszone narzędzia baz danych oraz usprawnioną integrację z Kubernetes i Terraform. Skupiono się również na ulepszeniach interfejsu użytkownika i wydajności, takich jak nowa opcja ukrywania głównego paska narzędzi oraz automatyczne pobieranie współdzielonych indeksów JDK. Zaś dodanie funkcji takich jak pływający pasek narzędzi, opcja Run to Cursor inlay w debuggerze i wszechstronny diff viewer to rzeczy na pierwszy rzut oka małe, ale są to dodatki z rodzaju takich, które z pewnością docenimy, gdy tylko będą nam potrzebne.
Zainstaluj teraz i czytaj tylko dobre teksty!
3. Release Radar
A na koniec kilka nowych wydań więc i ostatni w tym roku Release Radar. Mimo, że wydaje się, że wszyscy żyjemy już świętami, to jednak niektórzy wyraźnie bronią się przed Code Freeze.
TornadoVM 1.0
TornadoVM to projekt, który poprawia wydajność Javy, poprzez struktury do modelowania danych i automatyczne przyspieszenie operacji na wielordzeniowych procesorach, rozwiązując problem tak zwanego heterogenicznego przetwarzania w rozwoju oprogramowania. Daje nam więc abstrakcje zarówno na potrzeby CPU, jak i GPU czy FPGA, będąc kompatybilny z takimi rozwiązaniami jak OpenCL czy Nvidia PTX.
Nareszcie doczekaliśmy się zaś wersji TornadoVM 1.0 (choć tą wersją 1.0 jakoś się mocno nie chwalą). Do kluczowych funkcji należą nowe API dla alokacji obiektów i tablic poza stertą za pomocą MemorySegments
z projektu Panama, wsparcie dla operacji cospi
i sinpi
, rozszerzone typy danych wektorowych oraz ulepszona domyślna kolejność urządzeń. Nowa wersja potrafi zintegrować się z JDK 21 oraz Graal 23.1.0 (w tym wszystkimi językami opartymi o Truffle). Wydanie to adresuje także wiele błędów, w tym problemy z urządzeniami SPIR-V, a także lepszą kompilację FPGA oraz wsparcia batchowego przetwarzania danych.
Gradle 8.6
Zdecydowanie najbardziej kluczowa nowość przychodząca z Gradle 8.5 to pełne wsparcie dla Java 21, umożliwiając użytkownikom budowanie, testowanie i uruchamianie aplikacji z wykorzystaniem najnowszej wersji Java. Wydanie to skupia się również na poprawie Kotlina DSL (w tym aspekcie pracy chyba nigdy nie zabraknie), a także na wsparciu katalogów wersji w skryptach prekompilowanych. Dodatkowo przynosi ulepszenia w komunikatach błędów, aktualizacje Javadoc oraz bardziej kompaktowy i klarowniejszy rozmiar pliku Gradle Wrapper.
Jednak motywem przewodnim Gradle 8.5 to koncentracja na tworzeniu buildów i weryfikacji zależności. Nowe Build Features API oferuje większą elastyczność i kontrolę, a także jest według twórców znacznie wygodniejsze dla użytkownika końcowego.
Hibernate Search 7.0
Hibernate Search to biblioteka do integracji Hibernate ORM z Apache Lucene lub Elasticsearch. Niedawno została wydana jej wersja 7.0, która aktualizuje do JDK 11 i Hibernate ORM 6.4, zwiększając kompatybilność z Elasticsearch 8.10/8.11 i OpenSearch 2.10/2.11, oraz aktualizując do Lucene 9.8. Nowe funkcje obejmują Hibernate Search Bin-Of-Material dla łatwiejszego zarządzania zależnościami, eksperymentalną kompatybilność z Amazon OpenSearch Serverless i wsparcie dla ulepszonego wsparcia do Multi-Tenancy wprowadzonego w Hibernate ORM 6.4. Wydanie oznacza również przejście na Jakarta EE, wraz z pełną repakietyzacją projektu.
Quarkus 3.6
Ostatnia nowość będzie naprawdę szybka.
Quarkus 3.6.0 przynosi kilka ulepszeń, koncentrując się na poprawach obsługi zdarzeń wysyłanych przez serwer (SSE) w kliencie REST, oraz licznych ulepszeniach OpenID Connect i ogólnego bezpieczeństwa framework. Wydanie to obejmuje również przeniesienie quarkus-jaeger
i quarkus-smallrye-opentracing
do Quarkiverse.
Quarkiverse to ekosystem rozszerzeń dla Quarkus, platformy open-source do tworzenia i wdrażania aplikacji mikroserwisowych w Javie. Quarkus został zaprojektowany, aby być lekki i szybki, co czyni go odpowiednim dla środowisk chmurowych i kontenerowych, przy równoczesnej możliwości rozbudowy. Quarkiverse działa jako rodzaj „hubu” dla rozszerzeń społeczności, które nie są bezpośrednio częścią głównego projektu Quarkus.