జావా SE 17 విడుదల

ఆరు నెలల అభివృద్ధి తర్వాత, ఒరాకిల్ జావా SE 17 (జావా ప్లాట్‌ఫారమ్, స్టాండర్డ్ ఎడిషన్ 17)ను విడుదల చేసింది, ఇది OpenJDK ఓపెన్ సోర్స్ ప్రాజెక్ట్‌ను సూచన అమలుగా ఉపయోగిస్తుంది. కొన్ని నిలిపివేయబడిన లక్షణాల తొలగింపు మినహా, Java SE 17 జావా ప్లాట్‌ఫారమ్ యొక్క మునుపటి విడుదలలతో వెనుకబడిన అనుకూలతను నిర్వహిస్తుంది-చాలా మునుపు వ్రాసిన జావా ప్రాజెక్ట్‌లు కొత్త వెర్షన్‌లో నడుస్తున్నప్పుడు మార్పు లేకుండా పని చేస్తాయి. Linux (x17_86, AArch64), Windows (x64_86), మరియు macOS (x64_86, AArch64) కోసం Java SE 64 (JDK, JRE మరియు సర్వర్ JRE) యొక్క ఇన్‌స్టాల్ చేయగల బిల్డ్‌లు సిద్ధం చేయబడ్డాయి. OpenJDK ప్రాజెక్ట్ ద్వారా అభివృద్ధి చేయబడింది, వాణిజ్య ఉత్పత్తులకు డైనమిక్ లింక్‌ను అనుమతించడానికి GNU క్లాస్‌పాత్ మినహాయింపులతో GPLv17 లైసెన్స్ క్రింద Java 2 సూచన అమలు పూర్తిగా తెరవబడింది.

Java SE 17 దీర్ఘకాలిక మద్దతు (LTS) విడుదలగా వర్గీకరించబడింది, ఇది 2029 వరకు నవీకరణలను అందుకోవడం కొనసాగుతుంది. మునుపటి జావా 16 మైలురాయి విడుదలకు సంబంధించిన నవీకరణలు నిలిపివేయబడ్డాయి. Java 11 యొక్క మునుపటి LTS శాఖకు 2026 వరకు మద్దతు ఉంటుంది. తదుపరి LTS విడుదల సెప్టెంబర్ 2024కి షెడ్యూల్ చేయబడింది. జావా 10 విడుదలతో ప్రారంభించి, ప్రాజెక్ట్ కొత్త డెవలప్‌మెంట్ ప్రాసెస్‌కి మారిందని, కొత్త విడుదలల ఏర్పాటుకు చిన్న సైకిల్‌ను సూచిస్తుందని మేము మీకు గుర్తు చేద్దాం. కొత్త కార్యాచరణ ఇప్పుడు నిరంతరం నవీకరించబడిన ఒక మాస్టర్ బ్రాంచ్‌లో అభివృద్ధి చేయబడింది, ఇందులో రెడీమేడ్ మార్పులు ఉంటాయి మరియు కొత్త విడుదలలను స్థిరీకరించడానికి ప్రతి ఆరు నెలలకు బ్రాంచ్‌లు ఉంటాయి.

జావా 17లో కొత్త ఫీచర్లు ఉన్నాయి:

  • “స్విచ్” వ్యక్తీకరణలలో నమూనా సరిపోలిక యొక్క ప్రయోగాత్మక అమలు ప్రతిపాదించబడింది, ఇది “కేస్” లేబుల్‌లలో ఖచ్చితమైన విలువలను ఉపయోగించకుండా అనుమతిస్తుంది, కానీ ఒకేసారి విలువల శ్రేణిని కవర్ చేసే సౌకర్యవంతమైన టెంప్లేట్‌లు, దీని కోసం గతంలో గజిబిజిగా ఉపయోగించడం అవసరం. "if... else" వ్యక్తీకరణల గొలుసులు. అదనంగా, "స్విచ్" NULL విలువలను నిర్వహించగల సామర్థ్యాన్ని కలిగి ఉంటుంది. ఆబ్జెక్ట్ o = 123L; స్ట్రింగ్ ఫార్మాట్ చేయబడింది = స్విచ్ (o) {కేస్ పూర్ణాంకం i -> String.format("int %d", i); కేస్ లాంగ్ l -> String.format("పొడవైన %d", l); కేసు డబుల్ d -> String.format("డబుల్ %f", d); కేస్ స్ట్రింగ్ s -> String.format("String %s", s); డిఫాల్ట్ -> o.toString(); };
  • సీల్డ్ క్లాస్‌లు మరియు ఇంటర్‌ఫేస్‌లకు స్థిరమైన మద్దతు, ఇతర తరగతులు మరియు ఇంటర్‌ఫేస్‌లు అమలును వారసత్వంగా, పొడిగించడానికి లేదా భర్తీ చేయడానికి ఉపయోగించలేవు. పొడిగింపు కోసం అనుమతించబడిన సబ్‌క్లాస్‌లను స్పష్టంగా జాబితా చేయడం ఆధారంగా, యాక్సెస్ మాడిఫైయర్‌ల కంటే సూపర్‌క్లాస్ వినియోగాన్ని పరిమితం చేయడానికి సీల్డ్ క్లాస్‌లు మరింత డిక్లరేటివ్ మార్గాన్ని అందిస్తాయి. ప్యాకేజీ com.example.geometry; పబ్లిక్ సీల్డ్ క్లాస్ షేప్ పర్మిట్‌లు com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.స్క్వేర్ {…}
  • వెక్టర్ API యొక్క రెండవ పరిదృశ్యం ప్రతిపాదించబడింది, ఇది x86_64 మరియు AArch64 ప్రాసెసర్‌లపై వెక్టార్ సూచనలను ఉపయోగించి అమలు చేయబడిన వెక్టార్ లెక్కల కోసం ఫంక్షన్‌లను అందిస్తుంది మరియు బహుళ విలువలకు (SIMD) ఏకకాలంలో ఆపరేషన్‌లను వర్తింపజేయడానికి అనుమతిస్తుంది. స్కేలార్ కార్యకలాపాల యొక్క ఆటో-వెక్టరైజేషన్ కోసం హాట్‌స్పాట్ JIT కంపైలర్‌లో అందించబడిన సామర్థ్యాల వలె కాకుండా, కొత్త API సమాంతర డేటా ప్రాసెసింగ్ కోసం వెక్టరైజేషన్‌ను స్పష్టంగా నియంత్రించడాన్ని సాధ్యం చేస్తుంది.
  • జావా రన్‌టైమ్ వెలుపల కోడ్ మరియు డేటాతో పరస్పర చర్య చేయడానికి అప్లికేషన్‌లను అనుమతించే ఫారిన్ ఫంక్షన్ & మెమరీ API యొక్క ప్రివ్యూ జోడించబడింది. కొత్త API మిమ్మల్ని JVM కాని ఫంక్షన్‌లకు సమర్థవంతంగా కాల్ చేయడానికి మరియు JVM-నిర్వహించని మెమరీని యాక్సెస్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉదాహరణకు, మీరు JNIని ఉపయోగించకుండానే బాహ్య భాగస్వామ్య లైబ్రరీల నుండి ఫంక్షన్‌లకు కాల్ చేయవచ్చు మరియు ప్రాసెస్ డేటాను యాక్సెస్ చేయవచ్చు.
  • జావా 2D APIకి శక్తినిచ్చే MacOS రెండరింగ్ ఇంజిన్, స్వింగ్ APIకి శక్తినిస్తుంది, ఇది మెటల్ గ్రాఫిక్స్ APIని ఉపయోగించడానికి స్వీకరించబడింది. MacOS ప్లాట్‌ఫారమ్ డిఫాల్ట్‌గా OpenGLని ఉపయోగించడం కొనసాగిస్తుంది మరియు మెటల్ మద్దతును ఎనేబుల్ చేయడానికి "-Dsun.java2d.metal=true"ని సెట్ చేయడం మరియు కనీసం macOS 10.14.xని అమలు చేయడం అవసరం.
  • macOS/AArch64 ప్లాట్‌ఫారమ్ కోసం పోర్ట్ జోడించబడింది (కొత్త Apple M1 చిప్‌ల ఆధారంగా Apple కంప్యూటర్లు). పోర్ట్ యొక్క ప్రత్యేక లక్షణం W^X (రైట్ XOR ఎగ్జిక్యూట్) మెమరీ రక్షణ యంత్రాంగానికి మద్దతు, దీనిలో మెమరీ పేజీలను వ్రాయడం మరియు అమలు చేయడం కోసం ఏకకాలంలో యాక్సెస్ చేయబడదు. (కోడ్ రాయడం డిసేబుల్ చేసిన తర్వాత మాత్రమే అమలు చేయబడుతుంది మరియు మెమరీ పేజీకి రాయడం అనేది ఎగ్జిక్యూషన్ డిసేబుల్ చేసిన తర్వాత మాత్రమే సాధ్యమవుతుంది).
  • ఫ్లోటింగ్ పాయింట్ ఎక్స్‌ప్రెషన్‌ల కోసం కేవలం స్ట్రిక్ట్‌ఎఫ్‌పి సెమాంటిక్స్‌ను మాత్రమే ఉపయోగించేందుకు తిరిగి మార్చబడింది. జావా 1.2 విడుదలైనప్పటి నుండి అందుబాటులో ఉన్న “డిఫాల్ట్” సెమాంటిక్స్‌కు మద్దతు నిలిపివేయబడింది, చాలా పాత x87 గణిత కోప్రాసెసర్‌లతో సిస్టమ్‌లపై పని చేయడానికి సరళీకరణలతో సహా (SSE2 సూచనల ఆగమనం తర్వాత, అదనపు సెమాంటిక్స్ అవసరం అదృశ్యమైంది).
  • సూడోరాండమ్ నంబర్ జనరేటర్‌లకు కొత్త రకాల ఇంటర్‌ఫేస్‌లు అమలు చేయబడ్డాయి మరియు యాదృచ్ఛిక సంఖ్యల మెరుగైన తరం కోసం అదనపు అల్గారిథమ్‌లు అమలు చేయబడ్డాయి. సూడోరాండమ్ నంబర్‌లను రూపొందించడానికి ఒక అల్గారిథమ్‌ను ఎంచుకోవడానికి అప్లికేషన్‌లకు అవకాశం ఇవ్వబడింది. యాదృచ్ఛిక ఆబ్జెక్ట్ స్ట్రీమ్‌లను రూపొందించడానికి మెరుగైన మద్దతు.
  • sun.misc.Unsafe వంటి క్లిష్టమైన APIలను మినహాయించి, అన్ని JDK ఇంటర్నల్‌ల యొక్క కఠినమైన ఎన్‌క్యాప్సులేషన్ అమలు చేయబడింది. అంతర్గత తరగతులు, పద్ధతులు మరియు ఫీల్డ్‌లను యాక్సెస్ చేయడానికి కోడ్ నుండి ప్రయత్నాలను కఠినమైన ఎన్‌క్యాప్సులేషన్ బ్లాక్ చేస్తుంది. గతంలో, "--illegal-access=permit" ఎంపికను ఉపయోగించి కఠినమైన ఎన్‌క్యాప్సులేషన్ మోడ్‌ని నిలిపివేయవచ్చు, కానీ ఇది ఇప్పుడు నిలిపివేయబడింది. అంతర్గత తరగతులు, పద్ధతులు మరియు ఫీల్డ్‌లకు యాక్సెస్ అవసరమయ్యే అప్లికేషన్‌లు మానిఫెస్ట్ ఫైల్‌లోని --add-opens ఎంపిక లేదా Add-Opens లక్షణాన్ని ఉపయోగించి వాటిని స్పష్టంగా నిర్వచించాలి.
  • అప్లికేషన్‌లకు డేటా డీరియలైజేషన్ ఫిల్టర్‌లను నిర్వచించే సామర్థ్యం ఇవ్వబడుతుంది, ఇది సందర్భోచితంగా ఉంటుంది మరియు నిర్దిష్ట డీరియలైజేషన్ ఆపరేషన్‌ల ఆధారంగా డైనమిక్‌గా ఎంపిక చేయబడుతుంది. పేర్కొన్న ఫిల్టర్‌లు మొత్తం వర్చువల్ మెషీన్‌కు (JVM-వైడ్) వర్తిస్తాయి, అనగా. అప్లికేషన్‌ను మాత్రమే కాకుండా, అప్లికేషన్‌లో ఉపయోగించే థర్డ్-పార్టీ లైబ్రరీలను కూడా కవర్ చేస్తుంది.
  • హై DPI స్క్రీన్‌లలో UIని మెరుగుపరచడానికి పెద్ద చిహ్నాలను లోడ్ చేయడానికి స్వింగ్ javax.swing.filechooser.FileSystemView.getSystemIcon పద్ధతిని జోడించింది.
  • java.net.DatagramSocket API ప్రత్యేక java.net.MulticastSocket API అవసరం లేకుండా మల్టీకాస్ట్ సమూహాలకు కనెక్ట్ చేయడానికి మద్దతును అందిస్తుంది.
  • IGV (ఐడియల్ గ్రాఫ్ విజువలైజర్) యుటిలిటీ మెరుగుపరచబడింది, హాట్‌స్పాట్ VM C2 JIT కంపైలర్‌లో ఇంటర్మీడియట్ కోడ్ ప్రాతినిధ్యం యొక్క ఇంటరాక్టివ్ విజువలైజేషన్‌ను అందిస్తుంది.
  • JavaDocలో, javac కంపైలర్‌తో సారూప్యతతో, లోపం అవుట్‌పుట్ అయినప్పుడు, సోర్స్ ఫైల్‌లోని సమస్యాత్మక పంక్తి సంఖ్య మరియు లోపం యొక్క స్థానం ఇప్పుడు సూచించబడతాయి.
  • సిస్టమ్ క్యారెక్టర్ ఎన్‌కోడింగ్ (UTF-8, koi8-r, cp1251, మొదలైనవి) పేరును ప్రతిబింబించే స్థానిక.ఎన్‌కోడింగ్ ప్రాపర్టీ జోడించబడింది.
  • java.time.InstantSource ఇంటర్‌ఫేస్ జోడించబడింది, ఇది టైమ్ జోన్‌ను సూచించకుండా టైమ్ మానిప్యులేషన్‌ను అనుమతిస్తుంది.
  • హెక్సాడెసిమల్ ప్రాతినిధ్యానికి మార్చడానికి java.util.HexFormat API జోడించబడింది మరియు వైస్ వెర్సా.
  • కంపైలర్‌కు బ్లాక్‌హోల్ మోడ్ జోడించబడింది, ఇది డెడ్-కోడ్ ఎలిమినేషన్ ఆపరేషన్‌లను నిలిపివేస్తుంది, ఇది పనితీరు పరీక్షలను నిర్వహించేటప్పుడు ఉపయోగించబడుతుంది.
  • అసమకాలిక మోడ్‌లో లాగ్‌లను రికార్డ్ చేయడానికి రన్‌టైమ్‌కు “-Xlog:async” ఎంపిక జోడించబడింది.
  • సురక్షిత కనెక్షన్‌లను ఏర్పాటు చేస్తున్నప్పుడు, TLS 1.3 డిఫాల్ట్‌గా ప్రారంభించబడుతుంది (గతంలో TLS 1.2 ఉపయోగించబడింది).
  • బ్రౌజర్‌లో జావా అప్లికేషన్‌లను రన్ చేయడానికి ఉపయోగించే మునుపు వాడుకలో లేని Applet API (java.applet.Applet*, javax.swing.JApplet) తీసివేయడానికి స్లేట్ చేయబడిన వర్గానికి తరలించబడింది (మద్దతు ముగిసిన తర్వాత ఔచిత్యం కోల్పోయింది బ్రౌజర్‌ల కోసం జావా ప్లగ్ఇన్ కోసం).
  • చాలా కాలంగా దాని ఔచిత్యాన్ని కోల్పోయిన సెక్యూరిటీ మేనేజర్, బ్రౌజర్ ప్లగిన్‌కు మద్దతు ముగిసిన తర్వాత క్లెయిమ్ చేయనిదిగా మారింది, ఇది తీసివేయడానికి షెడ్యూల్ చేయబడిన వారి వర్గానికి తరలించబడింది.
  • RMI యాక్టివేషన్ మెకానిజం తీసివేయబడింది, ఇది పాతది, జావా 8లో ఎంపిక యొక్క వర్గానికి పంపబడింది మరియు ఆధునిక ఆచరణలో దాదాపుగా ఉపయోగించబడదు.
  • హాట్‌స్పాట్ JVM కోసం జావా కోడ్ యొక్క డైనమిక్ కంపైలేషన్ కోసం JIT (సమయంలోనే) మద్దతిచ్చే ప్రయోగాత్మక కంపైలర్, అలాగే వర్చువల్ మెషీన్‌ను ప్రారంభించే ముందు మెషీన్ కోడ్‌లోకి క్లాస్‌ల యాంటిసిపేటరీ కంపైలేషన్ (AOT, ముందుగానే-సమయం) మోడ్ , SDK నుండి తీసివేయబడింది. కంపైలర్ జావాలో వ్రాయబడింది మరియు గ్రాల్ ప్రాజెక్ట్ యొక్క పని ఆధారంగా రూపొందించబడింది. కంపైలర్ నిర్వహణకు చాలా శ్రమ అవసరం అని గుర్తించబడింది, డెవలపర్ల నుండి డిమాండ్ లేనప్పుడు ఇది సమర్థించబడదు.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి