Javas seneste revision introducerer nogle nyttige syntaks til Records, blandt andre forbedringer.
Verden af Java-programmering udvikler sig konstant, hvilket kræver, at du holder dig opdateret for at udmærke dig i dit håndværk.
Java 21 bringer en bølge af spændende forbedringer, der revolutionerer den måde, du nærmer dig samtidighed, indsamlingsoperationer og arbejde med poster.
Introduktion af virtuelle tråde
Skalering af serverapplikationer har altid givet udfordringer, hvor tråde ofte er blevet flaskehalse. Det begrænsede antal tråde, kombineret med hyppig ventetid på begivenheder eller låse for at fjerne blokeringen, hindrer den samlede ydeevne.
Tidligere involverede løsningen af dette problem brug af konstruktioner som CompletableFuture eller reaktive rammer, hvilket resulterede i indviklet kode, der var svær at forstå og vedligeholde.
Heldigvis introducerede Java 19 virtuelle tråde som en preview-funktion, som Java 21 har forfinet og størknet via JDK Enhancement Proposal 444.
Virtuelle tråde tilbyder et meget lovende alternativ, der lader dig tackle skalerbarhedsudfordringer mere effektivt. Dette fører til forbedret ydeevne og forbedret reaktionsevne af serverapplikationer.
Sekventerede samlinger er mere brugbare
Traditionelt, ved hjælp af linkede lister i din Java-programmering har krævet en ganske udførlig kode. For at hente det sidste element skal du for eksempel bruge denne besværlige tilgang:
var sidste = liste.get (liste.størrelse() - 1);
Java 21 introducerer dog et kortfattet og elegant alternativ:
var sidste = liste.getLast();
På samme måde kræver adgang til det første element i et LinkedHashSet en rundkørselsrute:
var first = linkedHashSet.iterator().next();
Men med Java 21 bliver denne opgave meget enklere:
var first = linkedHashSet.getFirst();
Du kan også få adgang til det sidste element i et LinkedHashSet ved at bruge det nye getLast metode, der undgår at gentage hele sættet.
Disse forbedringer i sekvenserede samlinger forbedrer ikke kun kodelæsbarheden, men strømliner også elementhentning, hvilket gør Java-programmering mere effektiv og udviklervenlig.
Optag mønstre for nemheds skyld
Record Patterns, introduceret som en preview-funktion i Java 19, tilbyder en bekvem mekanisme til at få adgang til felterne i en post i Java uden behov for eksplicitte casts eller adgangsmetoder.
De synergerer med Pattern Matching for eksempel og Mønstertilpasning til switch, hvilket væsentligt forenkler kode og forbedrer den overordnede læsbarhed.
Her er en illustration af dette koncept, med en simpel optegnelse navngivet Position:
offentlig optage Position(int x, int y){}
Tidligere var det nødvendigt at udføre forskellige handlinger baseret på et objekts klasse ved at bruge Pattern Matching for eksempel, som eksemplificeret i følgende kodestykke:
offentligugyldigPrint(Objekt o){
hvis (o forekomst af Position p) {
System.out.printf("o er en position: %d/%d%n", p.x(), p.y());
} andethvis (o forekomst af String s) {
System.out.printf("o er en streng: %s%n"s);
} andet {
System.out.printf("o er noget andet: %s%n", o);
}
}
Med Optag mønstre, kan du nu direkte matche et optagelsesmønster som f.eks Position (int x, int y) i stedet for at bruge Stilling s mønster. Dette giver dig adgang til variablerne x og y direkte i koden, hvilket eliminerer behovet for p.x() og p.y():
offentligugyldigPrint(Objekt o){
hvis (o forekomst afPosition(int x, int y)) {
System.out.printf("o er en position: %d/%d%n", x, y);
} andethvis (o forekomst af String s) {
System.out.printf("o er en streng: %s%n"s);
} andet {
System.out.printf("o er noget andet: %s%n", o);
}
}
Desuden kan du bruge Optag mønstre i forbindelse med Mønstertilpasning til switch, for yderligere at forenkle din kode:
offentligugyldigPrint(Objekt o){
kontakt (o) {
sagPosition(int x, int y) - > System.ud.printf("o er en position: %d/%d%n", x, y);
sag String s - > System.out.printf("o er en streng: %s%n"s);
Standard - > System.out.printf("o er noget andet: %s%n", o);
}
}
Indlejrede plademønstre giver dig mulighed for at matche på poster, hvis felter selv er poster. Overvej f.eks. en post ved navn Sti der omfatter en fra og til position:
offentlig optage Sti(Position fra, Position til){}
Ved at anvende registreringsmønstre, udskrivning af en Sti objekt bliver mere kortfattet:
offentligugyldigPrint(Objekt o){
kontakt (o) {
sagSti(Position fra, Position til) - > System.ud.printf("o er en sti: %d/%d -> %d/%d%n", fra.x(), fra.y(), til.x(), til.y());
// andre sager
}
}
Ved hjælp af Optag mønstre, bliver håndtering af poster med felter af forskellige typer mere tydelig og læsbar. Antag, at du har ændret optegnelser, Position 2D og Position 3D, hvor Positioner en Java-grænseflade at begge implementerer:
offentlig forseglet interfacePositiontilladelserPosition 2D, Position 3D{}
offentlig optage Position 2D(int x, int y) implementerer Position {}
offentlig optage Position 3D(int x, int y, int z) implementerer Position {}
offentlig record Sti < P udvider Position > (P fra, P til) {}
For at skelne udskrivningsadfærden for 2D- og 3D-stier kan du bruge optagemønstre:
offentligugyldigPrint(Objekt o){
kontakt (o) {
sagSti(Position2D fra, Position2D til) - > System.ud.printf("o er en 2D-sti: %d/%d -> %d/%d%n", fra.x(), fra.y(), til.x(), til.y());
sagSti(Position3D fra, Position3D til) - > System.ud.printf("o er en 3D-sti: %d/%d/%d -> %d/%d/%d%n", fra.x(), fra.y(), fra.z(), til.x(), til.y(), til.z());
// andre sager
}
}
Optagelsesmønstre reducerer omfanget betydeligt og forbedrer kodelæsbarheden, når der arbejdes med poster, der indeholder felter af forskellige typer.
Lås op for nye muligheder med Java 21
Java 21 introducerer et væld af kraftfulde funktioner, der øger funktionerne i Java-programmeringssproget. Ved at omfavne disse forbedringer kan du strømline dine udviklingsprocesser og låse op for nye muligheder for dine applikationer.
At holde sig opdateret med de nyeste sprogfunktioner og Java-rammer giver dig mulighed for at vedligeholde effektiv og vedligeholdelig kode, hvilket sikrer, at du forbliver på forkant med Java-programmering.