Miał być Loom, ale jednak nazbierało się sporo ciekawych informacji. W dzisiejszej edycji min. nowe IDE od JetBrains. Stwierdziliśmy, że jest to też odpowiedni czas, żeby poinformować o kolejnych JEP które trafiły do JDK 18. Całość zamykają zaś nowości w Micronaucie i Quarkusie.
1. Fleet – nowe IDE od JetBrains 🛳️
Wprawdzie tydzień temu przewidywałem, że jeśli będziemy mieli “spokojniejszy” tydzień, to zrobimy sobie dzisiaj szersze opracowanie Projektu Loom. Ale dzięki JetBrains, tydzień wcale nie należy do spokojnych.
Nie ulega tajemnicy, że to właśnie IDE od tej firmy należy do najpopularniejszych wśród programistów JVM – w zasadzie każda statystyka mocno to potwierdza. Dlatego też nie mogliśmy nie przekazać Wam informacji o chyba największej rewolucji w produktach JetBrains od długiego czasu. Pokazano bowiem JetBrains Fleet – narzędzie szumnie nazywane IDE nowej generacji.
Fleet ma być lekki, ale równie potężny jeśli chodzi o wsparcie użytkownika jak jego starszy brat, oferując najlepszej klasy podpowiadanie kodu i sugestie zmian. Główną cechą nowego rozwiązania ma być jednak jego “zdalnie-natywność”. Zamiast uruchamiać edytor po prostu jako aplikacje, można dystrybuować go również jako dockerowy kontener, a także uruchomić w ramach chmury lub Space – zintegrowanej usługi do wytwarzania oprogramowania od paru lat rozwijanej przez JetBrains, zawierającej możliwość komunikacji, code-review czy zarządzania zadaniami. Firma chwali się, że to właśnie zdalna kolaboracja jest sercem Fleeta, dzięki czemu nie zabraknie w nim również funkcjonalności wspierających np. zdalny pair-programming.
Oczywiście, nie oznacza to, że JetBrains kończy prace nad Intellij Idea. Na dniach powinniśmy się spodziewać wydania 2021.3, które aktualnie znajduje się w publicznym preview. Nowe wydanie przyniesie dalsze wsparcie Kotlina (min. ulepszony debugger), ale również obsługę Groovy’ego w wersji czwartej, a także sporo nowości dla użytkowników Dockera. Głównym daniem jednak – podobnie jak ma to miejsce w wypadku Fleeta – jest współpraca zdalna. Nowa wersja IDE to więc dalsza integracja ze Space i wspomnianą już możliwość tworzenia środowisk programistycznych w chmurze.
Widać, że wyścig ekosystemów do pracy zdalnej nie zwalnia, a śmiem powiedzieć, że nawet coraz śmielej przyspiesza. Myślę, że rok 2022 jeszcze nas w tym aspekcie sporo zaskoczy.
Źródła
- JetBrains Fleet: The Next-Generation IDE by JetBrains
- Introducing Remote Development for JetBrains IDEs | JetBrains News
- An all-in-one solution for software projects and teams
- IntelliJ IDEA 2021.3 RC2 is out! | The IntelliJ IDEA Blog
Zainstaluj teraz i czytaj tylko dobre teksty!
2. Dwa nowe JEPy grzebiące w internalach trafią do JDK 18 👷
Tak jak już wspominałem w poprzedniej edycji, dochodzi do nas coraz więcej ciekawych informacji dotyczących nowości, których możemy spodziewać się po JDK 18. Kilka z zapowiedzi to po prostu kolejne iteracje nad już pokazanymi funkcjonalnościami (JEP 419: Foreign Function & Memory API (Second Incubator) oraz JEP 420: Pattern Matching for switch (Second Preview) – na Was się patrzę), ale ostatnie tygodnie to też zapowiedź dwóch bardzo interesujących zmian “pod maską”, które zobaczymy w kolejnej wersji Javy.
Pierwszy z nich to JEP 416 – Reimplement Core Reflection with Method Handles. Mieliśmy już okazję pisać o nim przy okazji jednej z naszych poprzednich edycji, ale nie spodziewałem się, że tak szybko zobaczymy go w JDK. JEP ten przynosi bowiem unifikacje sposobu, w jaki działa refleksja w Javie. W jego ramach dochodzi do reimplementacji java.lang.reflect.Method, java.lang.reflect.Constructor, and java.lang.reflect.Field na mechanizm invoke, wprowadzony w JDK 1.7. Jest to rodzaj spłaty długu technicznego przez zespół pracujący nad językiem i maszyną wirtualną, jako użytkownicy nie zauważymy więc jakichś znaczących zmian. Myślę jednak, że wszyscy programiści rozumieją, jakie znaczenie ma regularne czyszczenie kodu tak złożonego i skomplikowanego jak runtime Javy. Na dłuższą metę tego typu sprzątanie wszystkim nam wyjdzie na dobre.
Nieco bardziej afektującą przeciętnego programistę zmianą jest deprekacja mechanizmu finalizatorów (JEP 421: Deprecate Finalization for Removal) – aczkolwiek wydaje mi się, że w 2021 większość z nas również przejdzie nad tym do porządku dziennego. Dla tych, którzy z finalizatorami nigdy nie mieli do czynienia, mówimy o formie hooka, odpalanego bezpośrednio przed zniszczeniami obiektu przez garbage collector. To, co w teorii brzmi jak dość przydatna możliwość, w praktyce było funkcją mocno nieprzewidywalną (istniał szereg sytuacji, gdzie finalizer z różnych powodów nie był odpalany) i dlatego również bardzo rzadko używaną.
Dodatkowo, JDK 1.7 wprowadził dużo lepiej zaprojektowany mechanizm try-with-resources, który zastąpił finalizacje w najpopularniejszych przypadkach użycia, takich jak np. zamykanie połączeń do pliku. Dlatego pozostaje przy twierdzeniu, że dla większości ludzi usunięcie finalizatorów pozostaje ciekawostką, podobną do nieco zbliżonej sytuacji z Security Managerem. Jeśli jednak czujecie, że zmiana Was afektuje, radzę zapoznać się z oryginalnym JEPem albo z piętnastym odcinkiem Inside Java Newscast od Oracle. Oba źródła dość szczegółowo prezentują zarówno zakres zmian, jak i potencjalne alternatywy.
Źródła
- JEP 421: Deprecate Finalization for Removal
- JEP 416: Reimplement Core Reflection with Method Handles
- What Happens to Finalization in JDK 18? – Inside Java Newscast #15
Zainstaluj teraz i czytaj tylko dobre teksty!
3. Release Radar: Micronaut i Quarkus 📡
A na koniec – mała edycja Release Radaru, ponieważ dwa istotne Frameworki dostały swoje nowe edycje. Obie nie są na tyle duże, żeby otrzymać osobne punkty, ale na pewno należy się im choćby wzmianka.
Pierwszym z nich jest Micronaut, który jeśli chodzi o zmiany jest nieco bogatszy. Ten wraz z wydaniem 3.2 wprowadza podbicie sporej ilości zależności – wspierana jest teraz wersja Kotlina 1.6, GraalVM 21.3.0 a także nowa wersja pluginu do Groovy’ego. Jeżeli chodzi o nowe funkcje, to też jest ich sporo, aczkolwiek nie możemy tu raczej mówić o jakichś zmianach wywracających doświadczenia programisty. Dodane zostało wsparcie anotacji @JsonView, a także ulepszono mechanizmy server pushy oraz websocketów. Użytkownicy JPA z pewnością ucieszą się też ze wsparcia Jakarta Criteria API w wersji trzeciej. Większe i mniejsze zmiany dotknęły np. Micronaut Security czy modułu Reactive Libraries, ale tu już po szczegóły odsyłam do oryginalnych release notes.
Quarkus 2.5.0 to również nowy GraalVM w wersji 21.3.0, ale to nie on jest głównym punktem tego wydania. Twórcy chwalą się głównie zmianami w module Security, który pozwala teraz używać niektórych dostawców tożsamości OAuth2 również jako providerów OpenID. Oprócz tego z większych zmian można wymienić ulepszone wsparcie nagłówków HTTP, które teraz mogą być dostarczane również z poziomu plików konfiguracyjnych oraz wsparcie JPA entity listeners nie tylko w trybie JVM, ale również GraalVM.