Nejnovější revize Java zavádí mimo jiné vylepšení některé užitečné syntaxe pro Records.

Svět programování v jazyce Java se neustále vyvíjí a vyžaduje, abyste zůstali v obraze, abyste mohli vynikat ve svém řemesle.

Java 21 přináší vlnu vzrušujících vylepšení, která převratně mění způsob, jakým přistupujete k souběžnosti, operacím sběru dat a práci se záznamy.

Představujeme virtuální vlákna

Škálování serverových aplikací vždy představovalo problémy a vlákna se často stávala úzkými hrdly. Omezený počet vláken v kombinaci s častým čekáním na odblokování událostí nebo zámků brání celkovému výkonu.

V minulosti řešení tohoto problému zahrnovalo použití konstruktů jako CompletableFuture nebo reaktivní rámce, což vedlo ke spletitému kódu, který bylo obtížné pochopit a udržovat.

Naštěstí Java 19 zavedla virtuální vlákna jako funkci náhledu, kterou Java 21 vylepšila a upevnila prostřednictvím návrhu vylepšení JDK 444.

Virtuální vlákna nabízejí velmi slibnou alternativu, která vám umožní efektivněji řešit problémy se škálovatelností. To vede ke zlepšení výkonu a lepší odezvy serverových aplikací.

instagram viewer

Sekvenované kolekce jsou použitelnější

Tradičně, pomocí propojených seznamů ve vašem programování Java vyžaduje poměrně podrobný kód. Chcete-li například načíst poslední prvek, musíte použít tento těžkopádný přístup:

var last = list.get (list.size() - 1);

Java 21 však představuje stručnou a elegantní alternativu:

var last = list.getLast();

Podobně přístup k prvnímu prvku LinkedHashSet vyžaduje kruhový objezd:

var first = linkedHashSet.iterator().next();

Ale s Java 21 je tento úkol mnohem jednodušší:

var first = linkedHashSet.getFirst();

Můžete také přistupovat k poslednímu prvku LinkedHashSet pomocí nového getLast metoda, která se vyhýbá opakování celé sady.

Tato vylepšení v sekvenovaných kolekcích nejen zlepšují čitelnost kódu, ale také zefektivňují načítání prvků, takže programování v Javě je efektivnější a přívětivější pro vývojáře.

Zaznamenávejte vzory pro pohodlí

Záznamové vzory, představené jako funkce náhledu v Javě 19, nabízejí pohodlný mechanismus pro přístup k polím záznamu v Javě bez potřeby explicitních přetypování nebo přístupových metod.

Synergizují s Pattern Matching for instanceof a Pattern Matching pro spínač, což výrazně zjednodušuje kód a zlepšuje celkovou čitelnost.

Zde je ilustrace tohoto konceptu s jednoduchým názvem Pozice:

veřejnost záznam Pozice(int X, int y){}

Dříve bylo vyžadováno provádění různých akcí na základě třídy objektu Pattern Matching for instanceof, jak je ukázáno v následujícím fragmentu kódu:

veřejnostprázdnotatisk(Objekt o){
-liinstanceof Pozice p) {
System.out.printf("o je pozice: %d/%d%n", p.x(), p.y());
} jiný-liinstanceof Řetězec s) {
System.out.printf("o je řetězec: %s%n", s);
} jiný {
System.out.printf("o je něco jiného: %s%n", o);
}
}

S Záznamové vzory, nyní můžete přímo porovnat vzor záznamu, jako je např Pozice (int x, int y) místo použití Pozice p vzor. To vám umožní přístup k proměnným X a y přímo v kódu, což eliminuje potřebu p.x() a p.y():

veřejnostprázdnotatisk(Objekt o){
-li (Ó instanceofPozice(int X, int y)) {
System.out.printf("o je pozice: %d/%d%n", x, y);
} jiný-liinstanceof Řetězec s) {
System.out.printf("o je řetězec: %s%n", s);
} jiný {
System.out.printf("o je něco jiného: %s%n", o);
}
}

Navíc můžete použít Záznamové vzory ve spojení s Pattern Matching pro spínač, pro další zjednodušení kódu:

veřejnostprázdnotatisk(Objekt o){
přepínač (o) {
pouzdroPozice(int X, int y) - > System.out.printf("o je pozice: %d/%d%n", x, y);
pouzdro Řetězec s - > System.out.printf("o je řetězec: %s%n", s);
výchozí - > System.out.printf("o je něco jiného: %s%n", o);
}
}

Vnořené vzory záznamů umožňují porovnat záznamy, jejichž pole jsou sama záznamy. Zvažte například záznam s názvem Cesta který zahrnuje a z a na pozice:

veřejnost záznam Cesta(Pozice od, Pozice do){}

Pomocí záznamových vzorů lze tisknout a Cesta objekt se stává stručnějším:

veřejnostprázdnotatisk(Objekt o){
přepínač (o) {
pouzdroCesta(Pozice od, Pozice do) - > System.out.printf("o je cesta: %d/%d -> %d/%d%n", from.x(), z.y(), do.X(), do.y());
// další případy
}
}

S pomocí Záznamové vzory, manipulace se záznamy s poli různých typů se stává evidentnější a čitelnější. Předpokládejme, že jste upravili záznamy, Poloha 2D a Poloha 3D, kde Poziceje rozhraní Java které oba implementují:

veřejnost zapečetěno rozhraníPozicepovoleníPoloha 2D, Poloha 3D{}
veřejnost záznam Poloha 2D(int X, int y) implementuje pozici {}
veřejnost záznam Poloha 3D(int X, int y, int z) implementuje pozici {}
veřejnost cesta záznamu < P rozšiřuje pozici > (P od, P do) {}

Chcete-li odlišit chování tisku pro 2D a 3D cesty, můžete použít vzory záznamu:

veřejnostprázdnotatisk(Objekt o){
přepínač (o) {
pouzdroCesta(Pozice2D od, Pozice2D do) - > System.out.printf("o je 2D cesta: %d/%d -> %d/%d%n", from.x(), z.y(), do.X(), do.y());
pouzdroCesta(Pozice 3D od, Pozice 3D do) - > System.out.printf("o je 3D cesta: %d/%d/%d -> %d/%d/%d%n", from.x(), z.y(), z.z(), do.X(), do.y(), do.z());
// další případy
}
}

Vzory záznamů výrazně snižují výřečnost a zlepšují čitelnost kódu při práci se záznamy obsahujícími pole různých typů.

Odemkněte nové možnosti s Java 21

Java 21 představuje řadu výkonných funkcí, které rozšiřují možnosti programovacího jazyka Java. Přijetím těchto vylepšení můžete zefektivnit své vývojové procesy a odemknout nové možnosti pro vaše aplikace.

Zůstat aktualizován pomocí nejnovějších jazykových funkcí a rámců Java vám umožňuje udržovat efektivní a udržovatelný kód, což vám zajistí, že zůstanete v čele programování Java.