ఆరు నెలల అభివృద్ధి తర్వాత, ఒరాకిల్ జావా SE 23 ప్లాట్ఫారమ్ (జావా ప్లాట్ఫారమ్, స్టాండర్డ్ ఎడిషన్ 23)ను ప్రచురించింది, ఇది ఓపెన్-సోర్స్ OpenJDK ప్రాజెక్ట్ను సూచన అమలుగా ఉపయోగిస్తుంది. కొన్ని వాడుకలో లేని లక్షణాల తొలగింపు మినహా, Java SE 23 జావా ప్లాట్ఫారమ్ యొక్క మునుపటి విడుదలలతో వెనుకబడిన అనుకూలతను నిర్వహిస్తుంది - చాలా మునుపు వ్రాసిన జావా ప్రాజెక్ట్లు కొత్త సంస్కరణలో అమలు చేయబడినప్పుడు మార్పులు లేకుండా పని చేస్తాయి. Linux (x22_86, AArch64), Windows (x64_86) మరియు macOS (x64_86, AArch64) కోసం Java SE 64 (JDK, JRE మరియు సర్వర్ JRE) యొక్క సిద్ధంగా-ఇన్స్టాల్ బిల్డ్లు సిద్ధం చేయబడ్డాయి. OpenJDK ప్రాజెక్ట్ ద్వారా డెవలప్ చేయబడింది, జావా 23 రిఫరెన్స్ ఇంప్లిమెంటేషన్ GPLv2 లైసెన్స్ క్రింద పూర్తిగా ఓపెన్ సోర్స్, GNU క్లాస్పాత్ మినహాయింపులతో వాణిజ్య ఉత్పత్తులతో డైనమిక్ లింక్ను అనుమతిస్తుంది.
Java SE 23 సాధారణ మద్దతు విడుదలగా వర్గీకరించబడింది మరియు తదుపరి విడుదల వరకు నవీకరణలను అందుకోవడం కొనసాగుతుంది. లాంగ్ టర్మ్ సపోర్ట్ (LTS) బ్రాంచ్ జావా SE 21 లేదా Java SE 17 అయి ఉండాలి, ఇది వరుసగా 2031 మరియు 2029 వరకు అప్డేట్లను అందుకుంటుంది (సాధారణంగా 2028 మరియు 2026 వరకు అందుబాటులో ఉంటుంది). జావా SE 8 యొక్క LTS బ్రాంచ్కు విస్తరించిన మద్దతు 2030 వరకు మరియు జావా SE 11 2032 వరకు ఉంటుంది.
జావా SEలో ప్రతిపాదించబడిన 23 ఆవిష్కరణలలో:
- ZGC (జనరేషన్ Z గార్బేజ్ కలెక్టర్) చెత్త సేకరణ యొక్క ఉత్పాదక విధానం డిఫాల్ట్గా ప్రారంభించబడింది, "పాత" మరియు "యువ" వస్తువుల యొక్క ప్రత్యేక ప్రాసెసింగ్ను ఉపయోగించి, ఇది ఇటీవల సృష్టించబడిన వస్తువులను తక్కువ జీవితకాలంతో శుభ్రపరిచే సామర్థ్యాన్ని పెంచుతుంది. జెనరేషనల్ ZGCని ఉపయోగించడం వలన వనరుల కేటాయింపు సమయంలో స్టాల్స్ ప్రమాదాన్ని తగ్గిస్తుంది, చెత్త సేకరణ సమయంలో CPU లోడ్ మరియు మెమరీ వినియోగాన్ని తగ్గిస్తుంది. Apache Cassandra 4తో జెనరేషనల్ ZGCని పరీక్షించడం వలన స్థిరమైన కుప్ప పరిమాణంతో నిర్గమాంశలో 4x పెరుగుదల మరియు స్థిరమైన నిర్గమాంశతో హీప్ పరిమాణంలో పావు వంతు తగ్గింపు కనిపించింది.
- JavaDoc వ్యాఖ్యలలో డాక్యుమెంట్ కోడ్కు మార్క్డౌన్ను ఉపయోగించడం కోసం మద్దతును జోడించింది, ఇది HTML మరియు JavaDoc @ ట్యాగ్ల మిశ్రమానికి బదులుగా ఉపయోగించబడుతుంది.

- అన్ని రకాల టెంప్లేట్లలో, "instanceof" స్టేట్మెంట్లో మరియు "switch" బ్లాక్లలో ఆదిమ రకాల (int, byte, char మరియు ఇతర నాన్-ఆబ్జెక్ట్ ప్రాథమిక రకాలు) ఉపయోగం కోసం ప్రాథమిక మద్దతుతో నమూనా సరిపోలిక మెకానిజమ్లు మెరుగుపరచబడ్డాయి. స్విచ్ (x.getStatus()) {కేసు 0 -> “సరే”; కేసు 1 -> “హెచ్చరిక”; కేసు 2 -> “లోపం”; case int i -> “తెలియని స్థితి: ” + i; } అయితే (నేను బైట్ బి ఉదాహరణ) {… బి …}
- పేర్కొన్న మాడ్యూల్ ద్వారా ఎగుమతి చేయబడిన అన్ని ప్యాకేజీలను ఒకేసారి దిగుమతి చేయడానికి ఒకే "దిగుమతి మాడ్యూల్ M" స్టేట్మెంట్ను ఉపయోగించడం కోసం ప్రాథమిక మద్దతు జోడించబడింది. ఈ మార్పు మాడ్యులర్ లైబ్రరీల పునర్వినియోగాన్ని గణనీయంగా సులభతరం చేస్తుంది, ప్యాకేజీ సోపానక్రమంలో వాటి స్థానాన్ని నిర్ణయించకుండా లైబ్రరీలు మరియు తరగతులను చేర్చడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉదాహరణకు, "దిగుమతి మాడ్యూల్ java.base"ని పేర్కొనడం వలన java.base మాడ్యూల్లో చేర్చబడిన మొత్తం 54 ప్యాకేజీలు దిగుమతి చేయబడతాయి, వీటిని గతంలో విడిగా పేర్కొనవలసి ఉంటుంది ("దిగుమతి java.io.*", "java.util దిగుమతి చేయండి.* ”మొదలైనవి).
జావా క్లాస్ ఫైల్లను అన్వయించడం, రూపొందించడం మరియు మార్చడం కోసం Class-File API యొక్క రెండవ ప్రాథమిక అమలు ప్రతిపాదించబడింది. ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); బైట్[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { if (!(ce instanceof MethodModel mm && mm.methodName().stringValue(). startsWith("డీబగ్"))) { classBuilder.with(ce);
- వెక్టర్ API యొక్క ఎనిమిదవ పరిదృశ్యం వెక్టార్ గణనల కోసం ఫంక్షన్లను అందిస్తుంది, ఇవి x86_64 మరియు AArch64 ప్రాసెసర్లపై వెక్టర్ సూచనలను ఉపయోగించి అమలు చేయబడతాయి మరియు ఆపరేషన్లను బహుళ విలువలకు (SIMD) ఏకకాలంలో వర్తింపజేయడానికి అనుమతిస్తాయి. స్కేలార్ కార్యకలాపాల యొక్క ఆటో-వెక్టరైజేషన్ కోసం హాట్స్పాట్ JIT కంపైలర్లో అందించబడిన సామర్థ్యాల వలె కాకుండా, కొత్త API సమాంతర డేటా ప్రాసెసింగ్ కోసం వెక్టరైజేషన్ను స్పష్టంగా నియంత్రించడాన్ని సాధ్యం చేస్తుంది.
- ఎంచుకున్న లొకేల్ ఆధారంగా టెక్స్ట్ను ఫార్మాట్ చేయడానికి, ప్రదర్శించడానికి మరియు చదవడానికి java.io.Console తరగతికి ఫార్మాట్, printf, readPassword మరియు readLine పద్ధతులు జోడించబడ్డాయి. System.console().printf(Locale.FRANCE, "%1$tY-%1$tB-%1$te %1$tA", కొత్త తేదీ()) 2024-mai-16 jeudi
- విస్తరించిన స్ట్రీమ్ API యొక్క రెండవ ప్రివ్యూ అమలు జోడించబడింది, ఇది మీ స్వంత ఇంటర్మీడియట్ కార్యకలాపాలను నిర్వచించడానికి మద్దతు ఇస్తుంది, ఇది ఇప్పటికే ఉన్న అంతర్నిర్మిత ఇంటర్మీడియట్ ఆపరేషన్లు కావలసిన డేటా రూపాంతరం కోసం సరిపోని సందర్భాల్లో ఉపయోగకరంగా ఉండవచ్చు. స్థానిక హ్యాండ్లర్లు కొత్త ఇంటర్మీడియట్ ఆపరేషన్ స్ట్రీమ్::gather(Gatherer)ని ఉపయోగించి కనెక్ట్ చేయబడ్డారు, ఇది వారికి వినియోగదారు-నిర్దిష్ట హ్యాండ్లర్ను వర్తింపజేయడం ద్వారా స్ట్రీమ్ ఎలిమెంట్లను ప్రాసెస్ చేస్తుంది. jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(new WindowFixed(3)).toList() $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
- పబ్లిక్/స్టాటిక్ డిక్లరేషన్లు, ఆర్గ్యుమెంట్ల శ్రేణిని ఆమోదించడం మరియు క్లాస్ డిక్లరేషన్తో అనుబంధించబడిన ఇతర ఎంటిటీలను తొలగించగల "ప్రధాన" పద్ధతి యొక్క పరోక్షంగా ప్రకటించబడిన తరగతులు మరియు పేరులేని ఉదాహరణల యొక్క మూడవ ప్రాథమిక అమలు జోడించబడింది. // పబ్లిక్ క్లాస్ HelloWorld {పబ్లిక్ స్టాటిక్ వాయిడ్ మెయిన్(స్ట్రింగ్[] ఆర్గ్స్) {System.out.println("Hello world!"); } } // ఇప్పుడు మీరు ప్రధాన() { System.out.println("హలో, వరల్డ్!"); }
- సూపర్(...)కి కాల్ చేసే ముందు ఎక్స్ప్రెషన్లను పేర్కొనడానికి కన్స్ట్రక్టర్లను అనుమతించే ఫీచర్ యొక్క రెండవ ప్రివ్యూ జోడించబడింది, ఆ ఎక్స్ప్రెషన్లు కన్స్ట్రక్టర్ సృష్టించిన దృష్టాంతాన్ని సూచించకపోతే, వారసత్వంగా వచ్చిన క్లాస్ కన్స్ట్రక్టర్ నుండి పేరెంట్ క్లాస్ కన్స్ట్రక్టర్ని స్పష్టంగా కాల్ చేయడానికి ఉపయోగిస్తారు. క్లాస్ ఔటర్ {శూన్యం హలో() {System.out.println("హలో"); } క్లాస్ ఇన్నర్ { ఇన్నర్ () { హలో (); సూపర్ (); } } }
- స్కోప్డ్ విలువల యొక్క మూడవ ప్రివ్యూ అమలు జోడించబడింది, ఇది మార్పులేని డేటాను థ్రెడ్ల అంతటా భాగస్వామ్యం చేయడానికి మరియు చైల్డ్ థ్రెడ్ల మధ్య డేటాను సమర్థవంతంగా మార్పిడి చేయడానికి అనుమతిస్తుంది (విలువలు వారసత్వంగా పొందబడతాయి). థ్రెడ్-లోకల్ వేరియబుల్స్ మెకానిజంను భర్తీ చేయడానికి స్కోప్డ్ విలువలు అభివృద్ధి చేయబడుతున్నాయి మరియు చాలా పెద్ద సంఖ్యలో వర్చువల్ థ్రెడ్లను (వేల లేదా మిలియన్ల థ్రెడ్లు) ఉపయోగిస్తున్నప్పుడు మరింత సమర్థవంతంగా ఉంటాయి. స్కోప్డ్ విలువలు మరియు థ్రెడ్-లోకల్ వేరియబుల్స్ మధ్య ప్రధాన వ్యత్యాసం ఏమిటంటే, మునుపటివి ఒకసారి వ్రాయబడతాయి, భవిష్యత్తులో మార్చబడవు మరియు థ్రెడ్ అమలు వ్యవధి వరకు మాత్రమే అందుబాటులో ఉంటాయి.
- స్ట్రక్చర్డ్ కాన్కరెన్సీ API యొక్క మూడవ ప్రివ్యూ టెస్టింగ్ కోసం ప్రతిపాదించబడింది, వివిధ థ్రెడ్లలో నడుస్తున్న బహుళ టాస్క్లను ఒకే బ్లాక్గా ప్రాసెస్ చేయడం ద్వారా బహుళ-థ్రెడ్ అప్లికేషన్ల అభివృద్ధిని సులభతరం చేస్తుంది.
- sun.misc.Unsafe class అందించిన బాహ్య మెమరీ యాక్సెస్ పద్ధతులు (JVM వెలుపల) తీసివేయబడ్డాయి మరియు తీసివేయడానికి షెడ్యూల్ చేయబడ్డాయి. ఆఫ్-హీప్ మెమరీని యాక్సెస్ చేయడానికి మరియు బాహ్య కోడ్తో పరస్పర చర్య చేయడానికి, VarHandle API మరియు FFM (ఫారిన్ ఫంక్షన్ & మెమరీ) APIని ఉపయోగించమని సిఫార్సు చేయబడింది.
అదనంగా, JavaFX 23 గ్రాఫికల్ ఇంటర్ఫేస్తో అప్లికేషన్లను సృష్టించడం కోసం ప్లాట్ఫారమ్కు నవీకరణ యొక్క ప్రచురణను మరియు ప్రధాన Oracle JDK 23లో GraalVM JIT కంపైలర్ను చేర్చడాన్ని మేము గమనించవచ్చు.
జావాస్క్రిప్ట్ (Node.js), పైథాన్, రూబీ, R, JVM (జావా, స్కాలా, క్లోజుర్, కోట్లిన్) మరియు లాంగ్వేజ్ల కోసం ఏదైనా భాషలలో అమలులో ఉన్న అప్లికేషన్లకు మద్దతు ఇచ్చే యూనివర్సల్ వర్చువల్ మిషన్ GraalVM యొక్క కొత్త విడుదల కూడా అందించబడింది. దీని కోసం LLVM బిట్కోడ్ను రూపొందించవచ్చు (C , C++, Rust). JDK 23కి మద్దతివ్వడంతో పాటు, కొత్త వెర్షన్ మెమరీ వినియోగం మరియు ఎక్జిక్యూటబుల్ కోడ్ పరిమాణాన్ని ఆప్టిమైజ్ చేస్తుంది మరియు JIT కంపైలేషన్ని ఉపయోగించి Java కోడ్లో పైథాన్ మరియు WebAssemblyని పొందుపరచడానికి సాధనాలకు పూర్తి మద్దతును అందిస్తుంది.
మూలం: opennet.ru

