Rozmawialiśmy już o tym, co stało się z Javą w 2022 roku i czego można się spodziewać w 2023 roku. W tym artykule postaramy się wejść w temat nieco głębiej i opowiemy o ekosystemie Java oraz prognozach na najbliższą przyszłość. Skupimy się na dodatkowych narzędziach i ulepszeniach, które zwiększają produktywność, stabilność, bezpieczeństwo i wydajność Javy.
![Projekt Loom, Kontenery i Jakarta EE: Jakie są trendy Java w 2023 roku? - 1]()
![Projekt Loom, Kontenery i Jakarta EE: Jakie są trendy Java w 2023 roku? - 2]()

Projekt Loom i wątki wirtualne
Chcielibyśmy zacząć od długo oczekiwanych Wątków Wirtualnych (JEP 425) utworzonych w Projekcie Loom, które wreszcie pojawiły się w 2022 roku w wersji Java 19, obsługują one ograniczenia w tradycyjnym modelu współbieżności. Chociaż są one dostępne tylko w trybie podglądu, wierzymy, że zmieni się to wraz z następną wersją w 2023 roku. Czym jest Projekt Loom? Jest to nowy projekt firmy Oracle, którego głównym celem jest znaczne zmniejszenie nakładu pracy związanej z pisaniem, utrzymywaniem i obserwowaniem aplikacji współbieżnych o dużej przepustowości. Innymi słowy, Projekt Loom ma na celu wspieranie i rozwijanie wysokowydajnego, lekkiego modelu współbieżności w Javie, ponieważ tradycyjne wątki systemu operacyjnego (będące rdzeniem modelu współbieżności Javy) mają pewne wady i są dość kosztowne obliczeniowo. Wątki wirtualne to znacznie lżejsze wątki, które nie są połączone z wątkami systemu operacyjnego (zarządza nimi JVM). Oznacza to, że wątki wirtualne są idealne do programowania "wątek na żądanie" i mogą tworzyć mnóstwo wirtualnych wątków bez zmniejszania przepustowości. Dzięki temu widzimy, że wątki wirtualne wprowadzone w Javie 19 są dość łatwe w użyciu. Umożliwiają programistom szybkie diagnozowanie problemów, debugowanie i profilowanie aplikacji współbieżnych za pomocą istniejących narzędzi i technik JDK. Jak twierdzą eksperci, wprowadzenie Projektu Loom i Wątków Wirtualnych to prawdopodobnie jedno z najważniejszych wydarzeń w historii Javy i możemy obserwować obecnie dużą ekscytację tym tematem. Wielu programistów nie może się już doczekać przejścia Wątków Wirtualnych z etapu "podglądu" do "składnik Java 21 LTS" (to wydanie spodziewane jest we wrześniu 2023). Przewidujemy, że stosowanie wątków wirtualnych będzie rozwijane we frameworkach i znacznie ułatwi programistom Java pisanie skalowalnego oprogramowania wymagającego milionów jednoczesnych połączeń. Brzmi super, prawda?Jakarta EE
Jakarta EE to po prostu nowa nazwa Java EE (Java Enterprise Edition), która była przede wszystkim platformą do tworzenia oprogramowania biznesowego o znaczeniu krytycznym. Chociaż platforma otrzymała nową nazwę po przejściu projektu pod kontrolę Eclipse Foundation, nie zmieniło to istoty platformy. Jakarta EE sprawdza się, gdy budujesz duże aplikacje korporacyjne, która powinny być skalowalne, bezpieczne i obsługiwać mnóstwo informacji. Jakarta EE składa się z zestawu komponentów oprogramowania, interfejsów API, do tworzenia aplikacji Java klasy enterprise. Komponenty te są często określane jako "specyfikacje Jakarta EE", które rozszerzają wersje Java SE (standard editions, edycje standardowe). Specyfikacje te pomagają programistom, ponieważ zwalniają ich z konieczności samodzielnego kodowania wszystkich elementów. W rezultacie programiści mogą skupić się na logice biznesowej aplikacji, a nie na drobnych, infrastrukturalnych zadaniach. I chodzi tu nie tylko o oszczędność czasu i wysiłku. Chodzi również o stworzenie bardziej wydajnego systemu dla użytkowników. Co wydarzyło się w Jakarta EE w 2022 roku? Nowa wersja Jakarta EE 10 została udostępniona społeczności Java 22 września. Ta wersja może pochwalić się aktualizacjami 24 specyfikacji (12 specyfikacji z głównymi aktualizacjami i 12 specyfikacji z mniejszymi aktualizacjami) oraz nowym Core Profile. Core Profile 10 niewątpliwie zmienia reguły gry, ponieważ teraz kładzie nacisk na mikroserwisy i środowiska chmurowe. Niektóre dodatkowe zmiany dotyczyły komponentu EJB Entity Beans i wbudowanego kontenera EJB, które zostały usunięte z wymagań TCK. Chociaż są one nadal dostępne w ramach TCK, ich implementacja nie jest już wymagana do zapewnienia zgodności platformy. Jeśli chodzi o oczekiwania odnośnie Jakarta EE w 2023 roku, wierzymy, że stanie się ona podstawowym frameworkiem, umożliwiającym łatwe ulepszenie aplikacji biznesowych. Stanie się idealnym rozwiązaniem dla projektów obejmujących mikroserwisy i monolity. Należy jednak pamiętać, że do korzystania z frameworków takich jak Spring Boot 3 lub serwerów aplikacji zgodnych z Jakarta EE 10, konieczne będzie użycie Vaadin 24, którego premiera planowana jest na marzec 2023.Kontenery
Podczas konteneryzacji aplikacji Java należy zazwyczaj najpierw rozważyć, ile dostępnego czasu procesora będzie miał kontener. Następnie należy zaplanować, ile pamięci będzie dostępne (zarówno całkowita ilość pamięci, jak i rozmiar JVM, Java Virtual Machine). W środowiskach skonteneryzowanych aplikacje mogą mieć dostęp do wszystkich procesorów, a tym samym uruchamiać wiele wątków jednocześnie. Obecnie konteneryzacja aplikacji Java wciąż zyskuje na popularności i nie wydaje się, aby ta tendencja miała się zmienić w najbliższym czasie. A ponieważ coraz więcej zadań Java jest uruchamianych w kontenerach, możemy zaobserwować przejście od samego mówienia o tym, "jak" konteneryzować aplikację Java, do "jak najlepiej" ją konteneryzować. Widzimy też więcej informacji i wskazówek dotyczących najlepszych praktyk dotyczących uruchamiania aplikacji w kontenerze. Na przykład może zainteresuje Cię nowy artykuł Microsoftu z zaleceniami dotyczącymi alokacji i odśmiecania pamięci.