Najnowsza wersja Javy wprowadza, oprócz innych ulepszeń, przydatną składnię dla Records.
Świat programowania Java stale ewoluuje, co wymaga od Ciebie bycia na bieżąco, aby osiągać doskonałe wyniki w swoim fachu.
Java 21 przynosi falę ekscytujących ulepszeń, które rewolucjonizują podejście do współbieżności, operacji gromadzenia danych i pracy z rekordami.
Przedstawiamy wirtualne wątki
Skalowanie aplikacji serwerowych zawsze stanowiło wyzwanie, a wątki często stawały się wąskimi gardłami. Ograniczona liczba wątków w połączeniu z częstym oczekiwaniem na odblokowanie zdarzeń lub blokad utrudnia ogólną wydajność.
W przeszłości rozwiązanie tego problemu wymagało użycia konstrukcji takich jak Ukończona przyszłość Lub ramy reaktywne, co skutkowało zawiłym kodem, który był trudny do zrozumienia i utrzymania.
Na szczęście Java 19 wprowadziła wirtualne wątki jako funkcję podglądu, którą Java 21 udoskonaliła i utrwaliła za pomocą JDK Enhancement Proposal 444.
Wirtualne wątki stanowią wysoce obiecującą alternatywę, pozwalającą skuteczniej radzić sobie z wyzwaniami związanymi ze skalowalnością. Prowadzi to do poprawy wydajności i zwiększonej responsywności aplikacji serwerowych.
Zsekwencjonowane kolekcje są bardziej użyteczne
Tradycyjnie, używając połączonych list w programowaniu Java wymaga dość rozwlekłego kodu. Na przykład, aby pobrać ostatni element, musisz użyć tego kłopotliwego podejścia:
rozm last = list.get (list.size() - 1);
Jednak Java 21 wprowadza zwięzłą i elegancką alternatywę:
rozm ostatni = lista.pobierzOstatni();
Podobnie dostęp do pierwszego elementu LinkedHashSet wymaga trasy okrężnej:
rozm pierwszy = powiązanyHashSet.iterator().następny();
Ale w Javie 21 to zadanie staje się znacznie prostsze:
rozm pierwszy = powiązanyHashSet.getFirst();
Możesz także uzyskać dostęp do ostatniego elementu LinkedHashSet za pomocą metody new getLast metoda, która pozwala uniknąć iteracji przez cały zestaw.
Te ulepszenia w sekwencjonowanych kolekcjach nie tylko poprawiają czytelność kodu, ale także usprawniają wyszukiwanie elementów, dzięki czemu programowanie w Javie jest bardziej wydajne i przyjazne dla programistów.
Nagrywaj wzorce dla wygody
Wzorce rekordów, wprowadzone jako funkcja podglądu w Javie 19, oferują wygodny mechanizm dostępu do pól rekordu w Javie bez potrzeby jawnych rzutowań lub metod dostępu.
Działają synergicznie z Dopasowanie do wzorca dla instanceof I Dopasowanie wzorca dla przełącznika, znacznie upraszczając kod i poprawiając ogólną czytelność.
Oto ilustracja tej koncepcji z prostym rekordem o nazwie Pozycja:
publiczny nagrywać Pozycja(int X, int y){}
Wcześniej wykonywanie różnych akcji w zależności od klasy obiektu wymagało użycia Dopasowanie do wzorca dla instanceof, jak pokazano w poniższym fragmencie kodu:
publicznypróżniawydrukować(Obiekt o){
Jeśli (o wystąpienie pozycja p) {
System.out.printf(„o to pozycja: %d/%d%n”, p.x(), p.y());
} w przeciwnym razieJeśli (o wystąpienie ciąg s) {
System.out.printf(„o jest łańcuchem znaków: %s%n”, S);
} w przeciwnym razie {
System.out.printf(„o to coś innego: %s%n”, o);
}
}
Z Rekordowe wzorce, możesz teraz bezpośrednio dopasować wzorzec rekordu, np Pozycja (int x, int y) zamiast korzystać z Pozycja str wzór. Umożliwia to dostęp do zmiennych X I y bezpośrednio w kodzie, eliminując potrzebę p.x() I p.y():
publicznypróżniawydrukować(Obiekt o){
Jeśli (o wystąpieniePozycja(int X, int y)) {
System.out.printf(„o to pozycja: %d/%d%n”, x, y);
} w przeciwnym razieJeśli (o wystąpienie ciąg s) {
System.out.printf(„o jest łańcuchem znaków: %s%n”, S);
} w przeciwnym razie {
System.out.printf(„o to coś innego: %s%n”, o);
}
}
Co więcej, możesz użyć Rekordowe wzorce w połączeniu z Dopasowanie wzorca dla przełącznika, aby jeszcze bardziej uprościć kod:
publicznypróżniawydrukować(Obiekt o){
przełącznik (o) {
sprawaPozycja(int X, int y) -> System.out.drukujf(„o to pozycja: %d/%d%n”, x, y);
sprawa String s -> System.out.printf(„o jest łańcuchem znaków: %s%n”, S);
domyślny -> System.out.printf(„o to coś innego: %s%n”, o);
}
}
Zagnieżdżone wzorce rekordów umożliwiają dopasowywanie rekordów, których pola same są rekordami. Rozważmy na przykład rekord o nazwie Ścieżka który obejmuje a z I Do pozycja:
publiczny nagrywać Ścieżka(Pozycja od, Pozycja do){}
Wykorzystując wzorce rekordów, drukowanie a Ścieżka obiekt staje się bardziej zwięzły:
publicznypróżniawydrukować(Obiekt o){
przełącznik (o) {
sprawaŚcieżka(Pozycja od, Pozycja do) -> System.out.drukujf(„o to ścieżka: %d/%d -> %d/%d%n”, od.x(), z.y(), Do.X(), Do.y());
// inne przypadki
}
}
Z pomocą Rekordowe wzorce, obsługa rekordów z polami różnego typu staje się bardziej oczywista i czytelna. Załóżmy, że zmodyfikowałeś rekordy, Pozycja2D I Pozycja3D, Gdzie Pozycjajest interfejsem Java które oba realizują:
publiczny zapieczętowany interfejsPozycjapozwoleniaPozycja2D, Pozycja3D{}
publiczny nagrywać Pozycja2D(int X, int y) wdraża Stanowisko {}
publiczny nagrywać Pozycja3D(int X, int tak, int z) wdraża Stanowisko {}
publiczny rekord Ścieżka < P rozszerza Pozycja > (P od, P do) {}
Aby rozróżnić zachowanie drukowania dla ścieżek 2D i 3D, możesz użyć wzorców rekordów:
publicznypróżniawydrukować(Obiekt o){
przełącznik (o) {
sprawaŚcieżka(Pozycja2D od, Pozycja2D do) -> System.out.drukujf(„o jest ścieżką 2D: %d/%d -> %d/%d%n”, od.x(), z.y(), Do.X(), Do.y());
sprawaŚcieżka(Pozycja3D od, Pozycja3D do) -> System.out.drukujf(„o to ścieżka 3D: %d/%d/%d -> %d/%d/%d%n”, od.x(), z.y(), z.z(), Do.X(), Do.y(), Do.z());
// inne przypadki
}
}
Wzorce rekordów znacznie zmniejszają gadatliwość i poprawiają czytelność kodu w przypadku rekordów zawierających pola różnych typów.
Odblokuj nowe możliwości dzięki Javie 21
Java 21 wprowadza wiele zaawansowanych funkcji, które zwiększają możliwości języka programowania Java. Korzystając z tych ulepszeń, możesz usprawnić procesy programistyczne i odblokować nowe możliwości dla swoich aplikacji.
Bycie na bieżąco z najnowszymi funkcjami językowymi i frameworkami Java umożliwia utrzymywanie wydajnego i łatwego w utrzymaniu kodu, dzięki czemu pozostajesz w awangardzie programowania Java.