ఆరు నెలల అభివృద్ధి తర్వాత, ఒరాకిల్ విడుదల వేదిక జావా SE 14 (జావా ప్లాట్ఫారమ్, స్టాండర్డ్ ఎడిషన్ 14), ఓపెన్-సోర్స్ OpenJDK ప్రాజెక్ట్ సూచన అమలుగా ఉపయోగించబడుతుంది. Java SE 14 జావా ప్లాట్ఫారమ్ యొక్క మునుపటి విడుదలలతో వెనుకబడిన అనుకూలతను నిర్వహిస్తుంది; కొత్త వెర్షన్ క్రింద ప్రారంభించబడినప్పుడు గతంలో వ్రాసిన అన్ని జావా ప్రాజెక్ట్లు మార్పులు లేకుండా పని చేస్తాయి. Java SE 14 బిల్డ్లను ఇన్స్టాల్ చేయడానికి సిద్ధంగా ఉంది (JDK, JRE మరియు సర్వర్ JRE) సిద్ధం Linux (x86_64), Windows మరియు macOS కోసం. OpenJDK ప్రాజెక్ట్ ద్వారా అభివృద్ధి చేయబడిన సూచన అమలు జావా 14 GPLv2 లైసెన్స్ క్రింద పూర్తిగా ఓపెన్ సోర్స్, GNU క్లాస్పాత్ మినహాయింపులతో వాణిజ్య ఉత్పత్తులతో డైనమిక్ లింక్ను అనుమతిస్తుంది.
Java SE 14 సాధారణ మద్దతు విడుదలగా వర్గీకరించబడింది మరియు తదుపరి విడుదల వరకు నవీకరణలను అందుకోవడం కొనసాగుతుంది. లాంగ్ టర్మ్ సపోర్ట్ (LTS) బ్రాంచ్ జావా SE 11 అయి ఉండాలి, ఇది 2026 వరకు అప్డేట్లను అందుకోవడం కొనసాగుతుంది. Java 8 యొక్క మునుపటి LTS శాఖకు డిసెంబర్ 2020 వరకు మద్దతు ఉంటుంది. తదుపరి LTS విడుదల సెప్టెంబర్ 2021కి షెడ్యూల్ చేయబడింది. జావా 10 విడుదలతో ప్రారంభించి, ప్రాజెక్ట్ కొత్త అభివృద్ధి ప్రక్రియకు మారిందని, కొత్త విడుదలల ఏర్పాటుకు తక్కువ చక్రాన్ని సూచిస్తుందని మేము మీకు గుర్తు చేద్దాం. కొత్త కార్యాచరణ ఇప్పుడు నిరంతరం నవీకరించబడిన ఒక మాస్టర్ బ్రాంచ్లో అభివృద్ధి చేయబడింది, ఇందులో రెడీమేడ్ మార్పులు ఉంటాయి మరియు కొత్త విడుదలలను స్థిరీకరించడానికి ప్రతి ఆరు నెలలకు బ్రాంచ్లు ఉంటాయి.
ప్రయోగాత్మక మద్దతు జోడించబడింది నమూనా సరిపోలిక "instanceof" ఆపరేటర్లో, తనిఖీ చేయబడిన విలువను యాక్సెస్ చేయడానికి స్థానిక వేరియబుల్ను వెంటనే నిర్వచించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉదాహరణకు, మీరు వెంటనే “if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}” అని స్పష్టంగా “String s = (String) obj” అని నిర్వచించకుండా వ్రాయవచ్చు.
ఉంది:
అయితే (సమూహం యొక్క వస్తువు) {
సమూహం సమూహం = (సమూహం)obj;
var ఎంట్రీలు = group.getEntries();
}
ఇప్పుడు మీరు "గ్రూప్ గ్రూప్ = (గ్రూప్) obj" నిర్వచనం లేకుండా చేయవచ్చు:
అయితే (సమూహ సమూహం యొక్క obj ఉదాహరణ) {
var ఎంట్రీలు = group.getEntries();
}
కొత్త కీవర్డ్ కోసం ప్రయోగాత్మక మద్దతు జోడించబడింది "రికార్డు", ఇది తరగతులను నిర్వచించడానికి ఒక కాంపాక్ట్ ఫారమ్ను అందిస్తుంది, ప్రవర్తన మారని ఫీల్డ్లలో మాత్రమే డేటా నిల్వ చేయబడిన సందర్భాలలో సమానం(), hashCode() మరియు toString() వంటి వివిధ తక్కువ-స్థాయి పద్ధతులను స్పష్టంగా నిర్వచించకుండా మిమ్మల్ని అనుమతిస్తుంది. ఈక్వల్స్(), హాష్కోడ్() మరియు టోస్ట్రింగ్() పద్ధతుల యొక్క ప్రామాణిక అమలులను తరగతి ఉపయోగించినప్పుడు, అది వాటి స్పష్టమైన నిర్వచనం లేకుండా చేయగలదు:
పబ్లిక్ రికార్డ్ బ్యాంక్ లావాదేవీ (స్థానిక తేదీ తేదీ,
రెట్టింపు మొత్తం
స్ట్రింగ్ వివరణ) {}
ఈ డిక్లరేషన్ స్వయంచాలకంగా ఈక్వల్స్(), హ్యాష్కోడ్() మరియు టోస్ట్రింగ్() పద్ధతులను కన్స్ట్రక్టర్ మరియు గెటర్ పద్ధతులకు అదనంగా జోడిస్తుంది.
ప్రమాణీకరించబడింది మరియు "స్విచ్" వ్యక్తీకరణల యొక్క కొత్త రూపానికి మద్దతు డిఫాల్ట్గా ప్రారంభించబడుతుంది, దీనికి "బ్రేక్" ఆపరేటర్ను పేర్కొనడం అవసరం లేదు, మీరు పునరావృత లేబుల్లను కలపడానికి అనుమతిస్తుంది మరియు ఆపరేటర్ రూపంలో మాత్రమే కాకుండా, ఒక వ్యక్తీకరణ.
var లాగ్ = స్విచ్ (ఈవెంట్) {
కేస్ ప్లే -> “యూజర్ ప్లే బటన్ను ట్రిగ్గర్ చేసారు”;
కేసు STOP, PAUSE -> “యూజర్కి విరామం కావాలి”;
డిఫాల్ట్ -> {
స్ట్రింగ్ సందేశం = event.toString();
LocalDateTime now = LocalDateTime.now();
"తెలియని ఈవెంట్" + సందేశం + ఇవ్వండి
» లాగిన్ చేయబడింది » + ఇప్పుడు;
}
};
విస్తరించిన ప్రయోగాత్మక మద్దతు టెక్స్ట్ బ్లాక్స్ — స్ట్రింగ్ లిటరల్స్ యొక్క కొత్త రూపం, ఇది క్యారెక్టర్ ఎస్కేపింగ్ మరియు బ్లాక్లోని టెక్స్ట్ యొక్క అసలైన ఫార్మాటింగ్ను భద్రపరచకుండా సోర్స్ కోడ్లో బహుళ-లైన్ టెక్స్ట్ డేటాను చేర్చడానికి మిమ్మల్ని అనుమతిస్తుంది. బ్లాక్ మూడు డబుల్ కోట్లతో రూపొందించబడింది. జావా 14లో, టెక్స్ట్ బ్లాక్లు ఇప్పుడు ఎస్కేప్ సీక్వెన్స్ "\s"కి ఒకే స్పేస్ను నిర్వచించడానికి మరియు "\"ని తదుపరి లైన్తో కలపడానికి మద్దతు ఇస్తాయి (మీరు చాలా పొడవైన పంక్తిని ప్రింట్ చేయవలసి వచ్చినప్పుడు కొత్త లైన్లను విస్మరించడం). ఉదాహరణకు, కోడ్కు బదులుగా
మినహాయింపులు సంభవించినప్పుడు డయాగ్నస్టిక్స్ యొక్క సమాచార కంటెంట్ విస్తరించబడింది NullPointerException. ఇంతకుముందు దోష సందేశం లైన్ నంబర్కు మాత్రమే సూచించబడుతుంది, ఇప్పుడు అది మినహాయింపుకు కారణమైన పద్ధతిని వివరిస్తుంది. "-XX:+ShowCodeDetailsInExceptionMessages" ఫ్లాగ్తో ప్రారంభించినప్పుడు మాత్రమే అధునాతన విశ్లేషణలు ప్రస్తుతం ప్రారంభించబడతాయి. ఉదాహరణకు, ఈ ఫ్లాగ్ను పేర్కొనేటప్పుడు, లైన్లో మినహాయింపు
var పేరు = user.getLocation().getCity().getName();
సందేశం వస్తుంది
థ్రెడ్ "ప్రధాన" java.langలో మినహాయింపు.NullPointerException: "Location.getCity()"ని అమలు చేయలేరు
ఎందుకంటే "User.getLocation()" రిటర్న్ విలువ శూన్యం
NullPointerExample.main వద్ద(NullPointerExample.java:5):5)
Location.getCity() పద్ధతిని పిలవలేదని మరియు User.getLocation() శూన్యాన్ని అందించిందని ఇది స్పష్టం చేస్తుంది.
అమలు చేశారు jpackage యుటిలిటీ యొక్క ప్రివ్యూ, ఇది స్వీయ-నియంత్రణ Java అప్లికేషన్ల కోసం ప్యాకేజీలను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది. యుటిలిటీ JavaFX నుండి javapackagerపై ఆధారపడి ఉంటుంది మరియు వివిధ ప్లాట్ఫారమ్లకు చెందిన ఫార్మాట్లలో ప్యాకేజీలను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది (Windows కోసం msi మరియు exe, macOS కోసం pkg మరియు dmg, Linux కోసం deb మరియు rpm). ప్యాకేజీలు అవసరమైన అన్ని డిపెండెన్సీలను కలిగి ఉంటాయి.
G1 చెత్త సేకరించేవారికి జోడించబడింది ఆర్కిటెక్చర్ని ఉపయోగించి పెద్ద సిస్టమ్లపై పని చేసే ప్రత్యేకతలను పరిగణనలోకి తీసుకునే కొత్త మెమరీ కేటాయింపు విధానం నుమా. కొత్త మెమరీ కేటాయింపుదారు "+XX:+UseNUMA" ఫ్లాగ్ని ఉపయోగించి ప్రారంభించబడింది మరియు NUMA సిస్టమ్లలో పనితీరును గణనీయంగా మెరుగుపరుస్తుంది.
చేర్చబడింది JFR (JDK ఫ్లైట్ రికార్డర్) ఈవెంట్ల ఆన్-ది-ఫ్లై పర్యవేక్షణ కోసం API, ఉదాహరణకు నిరంతర పర్యవేక్షణను నిర్వహించడం కోసం.
చేర్చబడింది jdk.nio.mapmode మాడ్యూల్, ఇది కొత్త మోడ్లను (READ_ONLY_SYNC, WRITE_ONLY_SYNC) అందిస్తుంది మ్యాప్డ్ బైట్ బఫర్లను (MappedByteBuffer) రెఫరెన్సింగ్ నాన్-వోలటైల్ మెమరీ (NVM).
అమలు చేశారు విదేశీ-మెమొరీ యాక్సెస్ API యొక్క ప్రివ్యూ, కొత్త MemorySegment, MemoryAddress మరియు MemoryLayout అబ్స్ట్రాక్షన్లను మార్చడం ద్వారా జావా హీప్ వెలుపల మెమరీ ప్రాంతాలను సురక్షితంగా మరియు సమర్ధవంతంగా యాక్సెస్ చేయడానికి జావా అప్లికేషన్లను అనుమతిస్తుంది.
ప్రకటించారు భవిష్యత్తులో ఈ పోర్ట్లను తీసివేయాలనే ఉద్దేశ్యంతో Solaris OS మరియు SPARC ప్రాసెసర్ల (Solaris/SPARC, Solaris/x64 మరియు Linux/SPARC) కోసం పోర్ట్లు నిలిపివేయబడ్డాయి. ఈ పోర్ట్లను తిరస్కరించడం వలన సోలారిస్- మరియు SPARC-నిర్దిష్ట ఫీచర్లను నిర్వహించడానికి సమయాన్ని వృథా చేయకుండా కొత్త OpenJDK ఫీచర్ల అభివృద్ధిని వేగవంతం చేయడానికి సంఘం అనుమతిస్తుంది.
తొలగించబడింది CMS (కంకరెంట్ మార్క్ స్వీప్) చెత్త కలెక్టర్, ఇది రెండు సంవత్సరాల క్రితం వాడుకలో లేనిదిగా గుర్తించబడింది మరియు నిర్వహించబడలేదు (CMS చాలా కాలం క్రితం G1 చెత్త కలెక్టర్ ద్వారా భర్తీ చేయబడింది). అంతేకాకుండా, ప్రకటించారు ParallelScavenge మరియు SerialOld చెత్త సేకరణ అల్గారిథమ్ల కలయిక వినియోగాన్ని తిరస్కరించింది (“-XX:+UseParallelGC -XX:-UseParallelOldGC” ఎంపికలతో అమలు చేయబడుతుంది).
ZGC (Z గార్బేజ్ కలెక్టర్) చెత్త సేకరణ కోసం ప్రయోగాత్మక మద్దతు macOS మరియు Windows ప్లాట్ఫారమ్లలో అందించబడింది (గతంలో Linuxలో మాత్రమే మద్దతు ఉంది). ZGC నిష్క్రియ మోడ్లో పని చేస్తుంది, చెత్త సేకరణ కారణంగా జాప్యాన్ని వీలైనంత వరకు తగ్గిస్తుంది (ZGCని ఉపయోగించినప్పుడు స్టాల్ సమయం 10 ms కంటే ఎక్కువ ఉండదు.) మరియు అనేక వందల మెగాబైట్ల నుండి అనేక టెరాబైట్ల వరకు పరిమాణంలో చిన్న మరియు భారీ కుప్పలతో పని చేయవచ్చు.
తీసివేయబడింది Pack200 అల్గారిథమ్ని ఉపయోగించి JAR ఫైల్లను కంప్రెస్ చేయడానికి టూల్కిట్ మరియు API.