JavaRush /Blog Java /Random-PL /Trendy Java w 2022 r.: JDK 18 i 19, Project Loom i Data m...

Trendy Java w 2022 r.: JDK 18 i 19, Project Loom i Data mesh

Opublikowano w grupie Random-PL
No i zaczął się rok 2022. Podczas gdy większość ludzi spędza jeszcze wakacje sylwestrowe przy szampanie i Olivierze, my porozmawiamy o trendach w świecie Javy. Być może pomoże Ci to przeanalizować swoją karierę, poznać nową technologię lub opracować plan rozwoju na nadchodzący rok. Trendy Java w 2022 roku: JDK 18 i 19, Project Loom i Data mesh - 1Specjalista i wykładowca języka Java Andrey Rodionov, a także architekt rozwiązań w EPAM i szef komitetu programowego Devoxx Ukraine Oleg Tsal-Tsalko opowiedzieli o tym, co czeka Javę w 2022 roku i najbliższej przyszłości.

Jakie są perspektywy Javy w 2022 roku?

Trendy w Javie w 2022 roku: JDK 18 i 19, Project Loom i Data mesh - 2W tym roku spodziewamy się premiery dwóch kolejnych wersji: JDK 18 (w marcu) i JDK 19 (we wrześniu). Potencjalnie interesujące dla większości programistów Java w JDK 18 może być:
  • Wbudowany prosty serwer WWW, bez obsługi kontenera serwletów, który można wykorzystać do szybkiego prototypowania i testowania, podobnie jak podobne mini serwery WWW w Pythonie, Ruby, PHP.
  • Dopasowywanie wzorców stale się poprawia.
Jeśli chodzi o JDK 19, istnieje już kompilacja wczesnego dostępu, ale nadal nie ma oficjalnej listy tego, co ma się w niej znaleźć. Chciałbym wierzyć, że JDK 19 będzie zawierał przynajmniej pierwszy stabilny prototyp Project Loom, dla którego niedawno pojawił się projekt specyfikacji i którego najnowsza kompilacja opiera się na JDK 19. O Project Loom porozmawiamy szerzej poniżej.

W jakich obszarach Java pozostaje jedynym rozwiązaniem i gdzie jest preferowana?

Andriej Rodionow:

Na szczęście nie można powiedzieć, że w żadnym z obszarów nie ma alternatywy dla Java, ale można mówić o Javie jako o swego rodzaju złotym środku przy tworzeniu aplikacji korporacyjnych, backendów i mikroserwisów. Warto również zauważyć rosnącą liczbę różnych dystrybucji JDK od różnych dostawców (z wyjątkiem Oracle): Amazon, Microsoft, Alibaba, Red Hat, Bellsoft (założony przez ludzi z Oracle Development Center w St. Petersburgu) i innych. Pełny zestaw dystrybucji jest dostępny tutaj . Trendy w Javie w 2022 roku: JDK 18 i 19, Project Loom i Data mesh - 3Zawsze istnieją alternatywy, ale Java znajduje największe zastosowanie jako backend w rozwoju przedsiębiorstw. Większość dużych firm wybiera Javę do swoich dużych i złożonych systemów. Powody są te same: liczba programistów i wiedza na rynku, ogromny ekosystem i potężna platforma JVM.

Jakie są perspektywy dla innych języków jvm, w szczególności Kotlina, w porównaniu z Javą?

Andriej Rodionow:

Aby zrozumieć, które języki JVM są popularne, wystarczy otworzyć dokumentację Spring, Micronaut, Vert.x i zobaczyć, w jakich językach podane są przykłady kodu - Java i Kotlin będą powszechne. Nie można powiedzieć, że następuje masowe przenoszenie projektów do Kotlina, ale jego popularność jako backendu stale rośnie i wiele frameworków próbuje włączyć go do swojego ekosystemu. Jeśli chodzi o Scalę, wydawane są nowe wersje, które są dalej aktywnie wykorzystywane w ML, przetwarzaniu danych i tam, gdzie paradygmat programowania funkcjonalnego jest wygodniejszy.

Oleg Tsal-Tsalko:

Inne języki JVM są dość atrakcyjne i obecnie całkiem normalne jest, że w projekcie wykorzystuje się kilka języków programowania. Wydaje mi się, że powody, dla których nowomodne języki JVM nie mogą wyprzeć Javy, są następujące:
  • Nie są na tyle fajne, żeby każdy je po prostu wziął i się na nie przerzucił.
  • Są używane w tym samym segmencie co Java.
  • Java stopniowo czerpie to, co najlepsze z innych języków i staje się lepsza.

Czy nastąpi spadek jakości Java ze względu na krótsze odstępy między wydaniami?

Oleg Tsal-Tsalko:

Myśle że nie. Przynajmniej teraz mogę zidentyfikować więcej pozytywnych rzeczy z częstych wydań. Widzimy, że nowe fajne funkcje pojawiają się znacznie częściej. Teraz nie musisz czekać 5 lat, aż w języku pojawi się coś nowego. Oczywiście nie należy się teraz spodziewać tak imponujących wydań jak Java 8, ponieważ funkcje pojawiają się teraz w małych iteracjach.

Czy w nowych wersjach Java są jakieś funkcje szczególnie ważne dla programistów?

Oleg Tsal-Tsalko:

Najnowsze wersje Java wprowadziły kilka interesujących funkcji, takich jak dopasowywanie wzorców, zapieczętowane klasy i rekordy. Radziłbym przyjrzeć się ich możliwościom. Oczywiście najpoważniejsze i najbardziej oczekiwane funkcje planowane są w ramach Project Loom i Project Valhalla, ale myślę, że funkcje w ramach tych projektów również będą udostępniane stopniowo.

Ramy wiosenne: czy będzie nadal rozwijać swój ekosystem, aby odpowiadał różnorodnym potrzebom?

Andriej Rodionow:

Jeśli chodzi o Spring Framework, jego rozwój skupił się na wsparciu różnych funkcji Spring Cloud i możliwości kompilacji Spring Boot do natywnych plików binarnych - projekt Spring Native, który w przyszłości ma być częścią Spring Core. Pod tym względem Spring pozostawał w tyle za Micronautem i Quarkusem ze względu na aktywne wykorzystanie refleksji i dynamiczne generowanie kodu. Jeśli chodzi o Spring Framework 6, radzę obejrzeć raport Spring 6 i później. Co nowego w Spring Framework 6? z konferencji Jokera (od Olega Dokuki i Aleksieja Niestierowa). Kluczowe to przejście na JDK 17, rezygnacja z XML Configuration i Autowire poprzez settery, dalszy rozwój obsługi Kotlina oraz projekt Spring Fu.

Oleg Tsal-Tsalko:

Spring, jako najpopularniejszy obecnie Java FW, nie chce rezygnować z dłoni. Jestem pewien, że zespół programistów dołoży wszelkich starań, aby przygotować się na wiosnę. Wiosna wypełnia coraz więcej nisz. Na przykład Spring zrobił wiele w obszarze strumieni reaktywnych/programowania reaktywnego za pomocą swojego Project Reactor. Teraz promują protokół RSoket, który również wygląda obiecująco.

Opowiedz nam o projekcie Loom: do czego służy, jakie problemy rozwiązuje?

Andriej Rodionow:

Project Loom to prawdopodobnie najciekawsza innowacja, która może stać się nowym przesunięciem tektonicznym dla całej platformy JVM i wszystkich języków znajdujących się na JVM. Project Loom może nie wpłynie tak bardzo na zwykłych programistów, ale z pewnością wpłynie na cały ekosystem, biblioteki, frameworki i inne języki JVM korzystające z wielowątkowości. Project Loom wprowadza nową abstrakcję wątków - wątki wirtualne (analogicznie do współprogramów). Jeśli wcześniej wątek Java był bezpośrednio powiązany z wątkiem systemu operacyjnego (OS), a utworzenie nowego wątku w Javie doprowadziło do utworzenia nowego wątku systemu operacyjnego, to w przypadku wątków wirtualnych ta relacja jeden do jednego zostaje zerwana. Podczas tworzenia nowego wątku wirtualnego nie zostanie utworzony nowy wątek systemu operacyjnego, a jeden z tak zwanych wątków nośnych (coś w rodzaju analogu puli wątków systemu operacyjnego) zostanie ponownie wykorzystany do wykonania bezpośrednich obliczeń. W ten sposób kilka wątków wirtualnych może działać na jednym wątku systemu operacyjnego. W przypadku zadań obliczeniowych ten model wątków wirtualnych nie zapewnia żadnych korzyści, a raczej spowalnia prędkość obliczeń, natomiast w przypadku operacji blokujących, takich jak przetwarzanie żądań HTTP, oczekiwanie na odpowiedzi z bazy danych lub z mikroserwisów, model ten będzie rozwiązaniem znacząca zaleta. Faktem jest, że przy obecnym modelu wątków blokowanie/oczekiwanie na wątek Java prowadziło do bezczynnych wątków systemu operacyjnego - było to marnowanie zasobów i wymagało tworzenia większej liczby wątków systemu operacyjnego. W modelu wątku wirtualnego zablokowanie/oczekiwanie na wątek wirtualny spowoduje zwolnienie wątku nośnego, na którym działał wątek wirtualny, i uruchomienie na nim innego wątku wirtualnego. W ten sposób wątki systemu operacyjnego zostaną wykorzystane bardziej optymalnie, a do wykonania podobnych zadań będzie potrzebna mniejsza ich liczba. W związku z tym producenci bibliotek, frameworków i języków JVM będą musieli dostosować swój kod do wątków wirtualnych. W związku z tym szykuje się dla nich duże przepisanie :) Oprócz modelu wątków wirtualnych planowane jest także wprowadzenie nowego API upraszczającego orkiestrację wątków - tzw. współbieżności strukturalnej. Teraz na przykład współbieżność strukturalna jest aktywnie wykorzystywana w współprogramach Kotlin i Scala ZIO. Niestety wersja JDK, a nawet rok premiery Project Loom są nadal nieznane. Na pytanie o datę premiery główny architekt platformy Java, Brian Goetz, odpowiada filozoficznym zwrotem: „Będzie gotowe, kiedy będzie gotowe”. Czekamy więc i możemy wypróbować eksperymentalne wersje Project Loom .

Oleg Tsal-Tsalko:

Loom to duży projekt parasolowy, w ramach którego zespół OpenJDK i Oracle pracuje nad innowacjami współbieżności w Javie i JVM: wirtualnymi wątkami, włóknami i kontynuacjami. Najprawdopodobniej udostępnianie tych funkcji będzie następować stopniowo. W tej chwili dostępne są tylko wersje wczesnego dostępu obsługujące wątki wirtualne. Mówiąc konkretnie o wątkach wirtualnych, jego głównym celem jest uproszczenie wielowątkowego modelu programowania w Javie poprzez użycie milionów lekkich wątków o tej samej semantyce, co zwykłe wątki platformy. W skrócie te wątki będą zarządzane w ForkJoinPool i ponownie wykorzystywane przez wątki platformy.

Jakie są prognozy rozwoju Java w świecie światowych trendów – mikroserwisy, architektura chmurowa, blockchain, AI?

Andriej Rodionow:

Jeśli mówimy o trendach światowych, to niewiele się one zmieniły. Tak jak poprzednio, głównym trendem pozostaje Kubernetes i infrastruktura wokół niego w postaci Service mesh . Siatka danych zyskuje również na popularności jako rodzaj abstrakcji do zarządzania rozproszonymi źródłami danych i magazynami.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION