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í.
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){
-li (Ó instanceof Pozice p) {
System.out.printf("o je pozice: %d/%d%n", p.x(), p.y());
} jiný-li (Ó instanceof Ř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ý-li (Ó instanceof Ř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.