Efter sex mÄnaders utveckling har företaget Oracle plattformen (Java Platform, Standard Edition 14), vars som referensimplementering anvÀnder det öppna projektet OpenJDK. Java SE 14 behÄller bakÄtkompatibilitet med tidigare versioner av Java-plattformen, alla tidigare skrivna Java-projekt fungerar utan förÀndringar nÀr de körs under den nya versionen. Klara installationspaket för Java SE 14 (JDK, JRE och Server JRE) för Linux (x86_64), Windows och macOS. Den referensimplementation som utvecklats inom ramen för OpenJDK Àr helt öppen under GPLv2-licensen med undantag för GNU ClassPath, som tillÄter dynamisk lÀnkning med kommersiella produkter.
Java SE 14 klassas som en release med normalt supportintervall, uppdateringar kommer att slÀppas fram till nÀsta release. För en version med lÄngsiktig support (LTS) bör Java SE 11 anvÀndas, vars uppdateringar kommer att slÀppas fram till 2026. Den föregÄende LTS-versionen Java 8 kommer att stödjas fram till december 2020. Den nÀsta LTS-releasen Àr planerad till september 2021. Observera att med Java 10 inleddes ett nytt utvecklingsprocess, vilket innebÀr en kortare cykel för nya releaser. Ny funktionalitet utvecklas nu i en stÀndigt uppdaterad huvudgren, som inkluderar fÀrdiga Àndringar och frÄn vilken nya stabiliseringsgrenar skapas var sjÀtte mÄnad.
Av :
- Experimentellt stöd har lagts till i "instanceof"-operatorn, vilket gör det möjligt att direkt definiera en lokal variabel för att referera till det kontrollerade vÀrdet. Till exempel kan man direkt skriva "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" utan att explicit definiera "String s = (String) obj".
Förut:
if (obj instanceof Group) {
Group group = (Group) obj;
var entries = group.getEntries();
}Nu kan man klara sig utan att definiera "Group group = (Group) obj":
if (obj instanceof Group group) {
var entries = group.getEntries();
} - Experimentellt stöd för det nya nyckelordet "double amount,
String description) {}
Denna deklaration kommer att leda till automatisk tillÀgg av implementationer av metoderna equals(), hashCode() och toString() samt konstruktorn och metoder som kontrollerar datamodifiering (getter).
String description) {}Denna deklaration kommer att leda till automatisk tillÀgg av implementationerna av metoderna equals(), hashCode() och toString() utöver konstruktorn och metoderna som kontrollerar dataÀndringar (getter).
- och standard aktiverad stöd för den nya formen av "switch"-uttryck, som inte krÀver angivande av "break"-operatorn, vilket gör det möjligt att kombinera upprepande etiketter och tillÄter anvÀndning inte bara i form av en operator, utan ocksÄ som ett uttryck.
var log = switch (event) {
fall PLAY -> "AnvÀndaren har utlösts play-knappen";
fall STOP, PAUSE -> "AnvÀndaren behöver en paus";
standard -> {
String message = event.toString();
LocalDateTime now = LocalDateTime.now();
yield "OkÀnt event " + message +
" loggat pÄ " + now;
}
}; - Utökat experimentellt stöd â nya former av strĂ€ngliteral som möjliggör inkludering av flerbokstextdata i kĂ€llkoden utan att anvĂ€nda teckenkodning och bevara den ursprungliga formateringen av texten i blocket. Inramning av blocket görs med tre dubbla citat. I Java 14 har textblock stöd för escape-sekvensen «\s» för att indikera ett mellanslag och «\» för att sammanfoga med nĂ€sta rad (ignorera radbrytningen nĂ€r du behöver skriva ut en vĂ€ldigt lĂ„ng rad). Till exempel, istĂ€llet för koden
String html = "" +
"\n\t" + "" +
«\n\t\t» + «\"Java 14 is here!\"
» +
"\n\t" + "" +
"\n" + "";kan man ange:
String html = """
<HTML>
<BODY>"Java 14\"
Àr hÀr!"
<\/BODY>
"""; - Utökat informationsinnehÄll vid diagnos av undantag . Tidigare hÀnvisade felmeddelandet bara till radnumret, men nu detaljbeskriver det vilken metod som orsakade undantaget. Den utvidgade diagnostik aktiveras för nÀrvarande bara nÀr den startas med flaggan «-XX:+ShowCodeDetailsInExceptionMessages». Till exempel, nÀr denna flagga anges, kommer undantaget pÄ raden
var name = user.getLocation().getCity().getName();
att ge följande meddelande
Exception in thread «main» java.lang.NullPointerException: Kan inte anropa «Location.getCity()»
eftersom returvÀrdet av «User.getLocation()» Àr null
vid NullPointerExample.main(NullPointerExample.java:5):5)vilket gör det möjligt att förstÄ att metoden Location.getCity() inte har anropats och att User.getLocation() returnerade vÀrdet null.
- en preliminÀr version av verktyget jpackage, som möjliggör skapandet av paket för sjÀlvstÀndiga (self-contained) Java-applikationer. Verktyget Àr grundat pÄ javapackager frÄn JavaFX och gör det möjligt att skapa paket i format som Àr inhemska för olika plattformar (msi och exe för Windows, pkg och dmg för macOS, deb och rpm för Linux). Paketet inkluderar alla nödvÀndiga beroenden.
- I skrÀpsamlaren G1 en ny minnesfördelningsmekanism som tar hÀnsyn till arbetsmetoder pÄ stora system som anvÀnder arkitekturen . Den nya minnesfördelaren aktiveras med flaggan «+XX:+UseNUMA» och möjliggör en betydande ökning av prestandan pÄ NUMA-system.
- API för att spÄra hÀndelser i realtid JFR (JDK Flight Recorder), till exempel för att organisera kontinuerlig övervakning.
- modulen jdk.nio.mapmode, som erbjuder nya lÀgen (READ_ONLY_SYNC, WRITE_ONLY_SYNC) för att skapa avbildade bytebuffrar (MappedByteBuffer) som refererar till icke-flyktig minne (NVM).
- Ett preliminÀrt API för Foreign-Memory Access som möjliggör för Java-applikationer att pÄ ett sÀkert och effektivt sÀtt fÄ tillgÄng till minnesomrÄden utanför Java-högen, genom att manipulera de nya abstraktionerna MemorySegment, MemoryAddress och MemoryLayout.
- utgÄngna portar för operativsystemet Solaris och SPARC-processorer (Solaris/SPARC, Solaris/x64 och Linux/SPARC) med avsikt att ta bort dessa portar i framtiden. Att klassificera de angivna portarna som utgÄngna möjliggör för gemenskapen att pÄskynda utvecklingen av nya funktioner i OpenJDK, utan att behöva slösa tid pÄ att upprÀtthÄlla Solaris- och SPARC-specifika funktioner.
- CMS (Concurrent Mark Sweep) skrĂ€psamlare, som för tvĂ„ Ă„r sedan markerades som utgĂ„ngen och har inte lĂ€ngre underhĂ„llits (CMS har lĂ€nge blivit ersatt av G1-skrĂ€psamlaren). Dessutom, utgĂ„ngen anvĂ€ndning av en kombination av skrĂ€psamlingsalgoritmerna ParallelScavenge och SerialOld (som körs med alternativen â-XX:+UseParallelGC -XX:-UseParallelOldGCâ).
- Experimentellt stöd för ZGC (Z Garbage Collector) har införts pÄ plattformarna macOS och Windows (tidigare stöddes endast pÄ Linux). ZGC arbetar i passivt lÀge och minimerar i möjligaste mÄn förseningar pÄ grund av skrÀpsamling (upphÄllstiden vid anvÀndning av ZGC överstiger inte 10 ms.) och kan fungera med bÄde smÄ och enorma högar, frÄn nÄgra hundra megabyte till flera terabyte.
- verktyg och API för komprimering av JAR-filer med hjÀlp av Pack200-algoritmen.
KĂ€lla: opennet.ru
