Nowa wersja zawiera 12 propozycji ulepszeń JDK mających na celu ulepszenie języka Java i zwiększenie wydajności, stabilności i bezpieczeństwa platformy programistycznej. JavaOne powraca do obszaru Zatoki San Francisco w 2025 roku
Firma Oracle ogłosiła dziś dostępność Java 22 , najnowszej wersji najpopularniejszego na świecie języka programowania i platformy programistycznej. Java 22 (Oracle JDK 22) zapewnia tysiące ulepszeń w zakresie wydajności, stabilności i bezpieczeństwa, aby pomóc programistom zwiększyć produktywność, stymulować innowacje i przyspieszać rozwój ich organizacji. Obejmują one ulepszenia języka Java, jego interfejsów API i wydajności, a także narzędzia zawarte w zestawie Java Development Kit (JDK).
„Nowe ulepszenia Java 22 umożliwiają większej liczbie programistów szybkie i łatwe tworzenie i dostarczanie bogatych w funkcje, skalowalnych i bezpiecznych aplikacji, aby pomóc organizacjom na całym świecie rozwijać działalność” – powiedział Georges Saab, starszy wiceprezes Oracle Java Platform i przewodniczący , rada zarządzająca OpenJDK. „Dostarczając ulepszenia, które usprawniają tworzenie aplikacji i rozszerzają zasięg języka Java, aby była dostępna dla programistów na wszystkich poziomach zaawansowania, Java 22 pomoże w tworzeniu szerokiej gamy nowych aplikacji i usług zarówno dla organizacji, jak i programistów”.
Najnowszy pakiet JDK zapewnia aktualizacje i ulepszenia w postaci 12 propozycji ulepszeń JDK (JEP). JDK 22 zawiera ulepszenia językowe z OpenJDK Project Amber (instrukcje przed super[…], nienazwane zmienne i wzorce, szablony ciągów oraz niejawnie zadeklarowane klasy i główne metody instancji); ulepszenia z Project Panama (API funkcji obcych i pamięci oraz API wektorów); funkcje związane z Project Loom (współbieżność strukturalna i wartości o określonym zakresie); podstawowe biblioteki i możliwości narzędzi (API Class-File, uruchamianie wieloplikowych programów z kodem źródłowym i moduły zbierające strumienie); i aktualizacje wydajności (Przypinanie regionu dla G1).
„Po prawie trzech dekadach zdolność Java do obsługi złożonych zadań programistycznych, obejmujących szeroki zakres przypadków użycia, sprawia, że platforma jest tak samo użyteczna, jak nigdy dotąd” – powiedział Arnal Dayaratna, wiceprezes ds. badań ds. rozwoju oprogramowania w IDC. „Wszechstronność i kompleksowy zestaw narzędzi Java umożliwia jej wspieranie tworzenia na dużą skalę aplikacji o znaczeniu krytycznym do zastosowań produkcyjnych, co plasuje ją jako kluczową technologię wspomagającą innowacyjne zastosowania, takie jak generatywna sztuczna inteligencja”.
Istotne aktualizacje dostarczone w Javie 22 to:
Funkcje projektu Amber
- JEP 447 : Instrukcje przed super(…): Daje programistom swobodę wyrażania zachowań konstruktorów. Zezwalając na występowanie instrukcji, które nie odwołują się do tworzonej instancji, przed jawnym wywołaniem konstruktora, funkcja ta umożliwia bardziej naturalne rozmieszczenie logiki, która musi zostać uwzględniona w pomocniczych metodach statycznych, pomocniczych konstruktorach pośrednich lub argumentach konstruktora. Zachowuje także istniejącą pewność, że konstruktory działają w kolejności od góry do dołu podczas tworzenia instancji klasy, pomagając zapewnić, że kod w konstruktorze podklasy nie będzie zakłócał tworzenia instancji nadklasy. Ponadto ta funkcja nie wymaga żadnych zmian w wirtualnej maszynie Java (JVM) i opiera się wyłącznie na bieżącej zdolności maszyny JVM do weryfikowania i wykonywania kodu, który pojawia się przed jawnym wywołaniem konstruktora w konstruktorach.
- JEP 456 : Nienazwane zmienne i wzorce: Pomaga zwiększyć produktywność programistów poprzez wzbogacenie języka Java o nienazwane zmienne i wzorce, których można użyć, gdy wymagane są deklaracje zmiennych lub wzorce zagnieżdżone, ale nigdy nie są używane. Zmniejsza to możliwość wystąpienia błędu, poprawia czytelność wzorców rekordów i zwiększa łatwość konserwacji całego kodu.
- JEP 459 : Szablony ciągów (druga wersja zapoznawcza): Upraszcza tworzenie programów w języku Java, ułatwiając wyrażanie ciągów zawierających wartości obliczone w czasie wykonywania, a jednocześnie poprawiając bezpieczeństwo programów, które tworzą ciągi znaków z wartości dostarczonych przez użytkownika i przekazują je do inne systemy. Dodatkowo zwiększono czytelność wyrażeń zmieszanych z tekstem, a wartości niebędące ciągami znaków obliczone na podstawie tekstu dosłownego i wyrażeń osadzonych można tworzyć bez konieczności przechodzenia przez pośrednią reprezentację w postaci ciągu znaków.
- JEP 463 : Niejawnie deklarowane klasy i główne metody instancji (druga wersja zapoznawcza): Pomaga przyspieszyć naukę, oferując płynne przejście do programowania w języku Java, aby umożliwić uczniom pisanie pierwszych programów bez konieczności rozumienia funkcji językowych przeznaczonych dla dużych programów. Dzięki tej funkcji nauczyciele mogą wprowadzać koncepcje stopniowo, a uczniowie mogą pisać uproszczone deklaracje dla programów pojedynczych zajęć i płynnie rozszerzać swoje programy, aby w miarę wzrostu swoich umiejętności korzystać z bardziej zaawansowanych funkcji.
Funkcje projektu Loom
- JEP 462 : Współbieżność strukturalna (druga wersja zapoznawcza): pomaga programistom usprawnić obsługę i anulowanie błędów oraz zwiększyć obserwowalność poprzez wprowadzenie interfejsu API do współbieżności strukturalnej. Pomaga to promować styl programowania współbieżnego, który może wyeliminować typowe zagrożenia wynikające z anulowania i zamknięcia — takie jak wycieki wątków i opóźnienia w anulowaniu — oraz poprawia obserwowalność współbieżnego kodu.
- JEP 464 : Wartości o określonym zakresie (druga wersja zapoznawcza): pomaga zwiększyć łatwość użycia, zrozumiałość, wydajność i niezawodność projektów programistów, umożliwiając udostępnianie niezmiennych danych w obrębie wątków i między nimi.
Funkcje projektu Panama
- JEP 454 : API funkcji zagranicznych i pamięci: Zwiększa łatwość użycia, elastyczność, bezpieczeństwo i wydajność dla programistów poprzez wprowadzenie interfejsu API umożliwiającego programom Java współpracę z kodem i danymi poza środowiskiem wykonawczym Java. Dzięki efektywnemu wywoływaniu obcych funkcji, takich jak kod poza wirtualną maszyną Java, oraz bezpiecznemu dostępowi do pamięci obcej (tzn. pamięci niezarządzanej przez maszynę JVM), nowe API umożliwia programom Java wywoływanie natywnych bibliotek i przetwarzanie natywnych danych bez konieczności używania Java Native Interfejs.
- JEP 460 : Vector API (Siódmy Inkubator): Umożliwia programistom osiągnięcie wydajności wyższej niż równoważne obliczenia skalarne poprzez wprowadzenie interfejsu API do wyrażania obliczeń wektorowych, które niezawodnie kompilują się w czasie wykonywania do instrukcji wektorowych na obsługiwanych architekturach procesorów.
Funkcje podstawowych bibliotek i narzędzi
- JEP 457 : Class-File API (wersja zapoznawcza): Pomaga programistom zwiększyć produktywność, udostępniając standardowy interfejs API do analizowania, generowania i przekształcania plików klas Java.
- JEP 458 : Uruchamianie programów z wieloplikowym kodem źródłowym: umożliwia programistom wybór, czy i kiedy skonfigurować narzędzie do kompilacji, ulepszając program uruchamiający aplikacje Java, aby umożliwić mu uruchamianie programu dostarczonego w postaci wielu plików kodu źródłowego Java.
- JEP 461 : Moduły zbierające strumienie (wersja zapoznawcza): Pomaga programistom zwiększyć produktywność poprzez ulepszenie interfejsu API Stream w celu obsługi niestandardowych operacji pośrednich, co umożliwi potokom strumieniowym przekształcanie danych w sposób, który nie jest łatwo osiągalny przy użyciu istniejących wbudowanych operacji pośrednich. Dzięki uelastycznieniu i wyrazistości potoków strumieni oraz umożliwieniu niestandardowym operacjom pośrednim manipulowania strumieniami o nieskończonym rozmiarze, funkcja ta umożliwia programistom zwiększenie wydajności w czytaniu, pisaniu i utrzymywaniu kodu Java.
Aktualizacje wydajności
- JEP 423 : Przypinanie regionu dla G1: Pomaga zmniejszyć opóźnienia, umożliwiając pewne wyrzucanie elementów bezużytecznych podczas niektórych natywnych wywołań bibliotek, które w innym przypadku wymagałyby wstrzymania modułu zbierającego. Osiąga się to poprzez śledzenie, które obiekty muszą być blokowane podczas natywnych wywołań bibliotek i „przypinanie” tylko regionów zawierających te obiekty. Dzięki temu zbieranie elementów bezużytecznych może być kontynuowane normalnie w nieprzypiętych regionach, nawet podczas działania, które w przeciwnym razie byłoby blokującym wywołaniem biblioteki natywnej.
Wersja Java 22 jest wynikiem ciągłej współpracy firmy Oracle z innymi członkami światowej społeczności programistów Java za pośrednictwem OpenJDK i Java Community Process (JCP). Oprócz nowych ulepszeń i funkcji środowisko Java 22 jest obsługiwane przez usługę Java Management Service (JMS) — natywną usługę Oracle Cloud Infrastructure (OCI), która oferuje ujednoliconą konsolę i pulpit nawigacyjny, pomagające organizacjom zarządzać środowiskami wykonawczymi i aplikacjami Java lokalnie lub w dowolnej chmurze. Więcej szczegółów na temat funkcji Java 22 można znaleźć w technicznym poście na blogu dotyczącym Java 22 .
Wspieranie globalnego ekosystemu Java innowacjami w chmurze
Java zapewnia większą wydajność, efektywność, innowacyjność i oszczędność kosztów po wdrożeniu w chmurze w OCI, która jest jedną z pierwszych chmur hiperskalowych obsługujących Java 22. Dostarczając Oracle Java SE, Oracle GraalVM i pakiet Java SE Subscription Enterprise Performance Pack bezpłatna platforma OCI Java 22 umożliwia programistom tworzenie i wdrażanie aplikacji, które działają szybciej, lepiej i charakteryzują się zoptymalizowaną wydajnością kosztową.
Subskrypcja Oracle Java Universal SE to oferta płatna zgodnie z rzeczywistym użyciem, która zapewnia klientom najlepsze w swojej klasie wsparcie. Obejmuje wsparcie selekcji całego portfolio Java, uprawnienia do GraalVM, pakiet Java SE Subscription Enterprise Performance Pack, dostęp do zaawansowanych funkcji usługi Java Management Service oraz elastyczność aktualizacji w zależności od tempa rozwoju firmy. Pomaga to organizacjom IT zarządzać złożonością, ograniczać koszty i ograniczać zagrożenia bezpieczeństwa.
JavaOne powróci w 2025 roku
Flagowe wydarzenie globalnej społeczności Java, JavaOne, powróci do obszaru Zatoki San Francisco w 2025 r. Odbywające się w dniach 17–20 marca 2025 r. w Redwood Shores w Kalifornii wydarzenie JavaOne 2025 zapewni uczestnikom możliwość usłyszenia o najnowszej technologii Java rozwoju i współdziałania z ekspertami Oracle Java i luminarzami branży. Przeczytaj więcej w poście na blogu Inside Java tutaj .
Cytaty pomocnicze
„W dynamicznym ekosystemie Türkiye Java Community (TJC) trwałe wsparcie Oracle napędza naszą dynamikę” – powiedział Evren Tan, lider społeczności w TJC. „W miarę rozwoju Java 22 wprowadzamy szereg współczesnych funkcji, które jeszcze bardziej zwiększają wydajność programistów, wzmacniając nasze zaangażowanie w rozwój technologii Java w Turcji. Zapraszamy także programistów Java na całym świecie do przyłączenia się do nas w działaniach TJC, demonstrując przyjaznego ducha społeczności, który sprawia, że Java tętni życiem”.
„Popularność Java jako języka programowania, platformy i społeczności programistów stale rośnie w Maroku i regionie Afryki” – powiedział Badr El Hourari, założyciel i CIO, xHub. „Jestem podekscytowany, że w przypadku Java 22 zespół Oracle skupił się na innowacjach, które pomogą nowym programistom szybciej wdrożyć język Java, na przykład w przypadku JEP 463. Dzięki uproszczeniu języka przejście do języka Java staje się łatwiejsze dla zupełnie nowego pokolenie programistów. Ponadto tutaj, w Maroku, w dalszym ciągu podkreślamy znaczenie języka Java podczas corocznej konferencji Devoxx Maroko i zapraszamy wszystkich programistów do wzięcia udziału w tegorocznym wydarzeniu w dniach 2–4 października, aby wysłuchać najbardziej wpływowych głosów społeczności Java na całym świecie. ”
„Zadziwia mnie, że funkcje pakietu Java 22 są dostępne dla wszystkich – od studentów po starszych programistów, od żądnych przygód entuzjastów Java po organizacje poszukujące stabilności połączonej z wydajnością” – powiedziała Mala Gupta, rzeczniczka programistów Java w JetBrains. „Java przyjmuje podejście minimalistyczne, w dalszym ciągu ograniczając ceremonie związane z pisaniem początkowych kroków kodu, za pomocą głównej metody instancji i ukrytych klas, co ułatwia ludziom rozpoczęcie nauki języka Java. Dzięki przeróbce konstruktora (instrukcje przed super[…]) Java ponownie udowodniła, że wspiera odpowiedzialne innowacje, a rozluźnienie ograniczeń językowych, które istniały od wersji Java 1.0, bez łamania istniejącego kodu, jest bardzo ekscytujące. IntelliJ IDEA 2024.1 jest gotowy i obsługuje funkcje Java 22, dzięki czemu programiści Java mogą z nich łatwo korzystać.”
„Zespół firmy Helidon docenił wartość wirtualnych wątków od razu po ich ogłoszeniu. W przypadku Helidon 4 zespół przepisał serwer WWW Helidon, aby natywnie korzystać z wątków wirtualnych, co zaowocowało znacznie lepszą wydajnością i zwiększoną produktywnością programistów” – powiedział Tom Snyder, wiceprezes ds. inżynierii, Java natywna dla chmur korporacyjnych w Oracle. „Teraz dzięki Java 22 widzimy kolejny wzrost wydajności wątków wirtualnych, a te znaczące ulepszenia przyniosą korzyści wszystkim użytkownikom Helidon”.
„Bezproblemowa integracja z najnowszymi innowacjami Java pomaga Oracle Database dostarczać najbardziej zaawansowane na świecie technologie baz danych do tworzenia i uruchamiania nowoczesnych aplikacji” – powiedział Kuassi Mensah, dyrektor ds. zarządzania produktami w Oracle. „Sterowniki Oracle Java Database Connectivity (JDBC) zostały przepisane, aby bezproblemowo obsługiwać wirtualne wątki Java. Połączenie wirtualnych wątków Java i nowych, potokowych operacji na bazach danych w Oracle Database 23c pomaga poprawić kompleksową skalowalność aplikacji Java”.
Aby dowiedzieć się więcej o Javie i jej globalnym ekosystemie, odwiedź:
- Dev.java : Oficjalny portal do nauki języka Java
- Inside.java : Wiadomości i opinie członków zespołu Java w firmie Oracle
- Java YouTube : oficjalny kanał YouTube poświęcony Javie, zawierający filmy poświęcone nauce języka Java