የJava SE 22 መድረክ መልቀቅ እና OpenJDK 22 ክፍት የማጣቀሻ ትግበራ

ከስድስት ወራት እድገት በኋላ፣ Oracle የOpenJDK ክፍት ምንጭ ፕሮጀክትን እንደ ማጣቀሻ ትግበራ የሚጠቀመውን Java SE 22 (Java Platform፣ Standard Edition 22) መድረክን አውጥቷል። አንዳንድ የተቋረጡ ባህሪያትን ከማስወገድ በስተቀር፣ Java SE 22 ከቀደምት የጃቫ ፕላትፎርም ልቀቶች ጋር ወደ ኋላ ተኳሃኝነትን ያቆያል—በጣም ቀደም ሲል የተፃፉ የጃቫ ፕሮጄክቶች በአዲሱ ስሪት ሲሰሩ ምንም ለውጥ ሳይደረግባቸው ይሰራሉ። ለመጫን ዝግጁ የሆኑ የJava SE 22 (JDK፣ JRE እና Server JRE) ግንባታዎች ለሊኑክስ (x86_64፣ AArch64)፣ ዊንዶውስ (x86_64) እና ማክሮስ (x86_64፣ AArch64) ተዘጋጅተዋል። በOpenJDK ፕሮጄክት የተገነባው የJava 22 ማጣቀሻ ትግበራ በGPLv2 ፍቃድ ከጂኤንዩ ክላስፓዝ ልዩ የንግድ ምርቶች ጋር ተለዋዋጭ ግንኙነትን ለመፍቀድ ሙሉ በሙሉ ክፍት ነው።

Java SE 22 እንደ መደበኛ የድጋፍ ልቀት የተከፋፈለ ሲሆን እስከሚቀጥለው ልቀት ድረስ ዝማኔዎችን ማግኘቱን ይቀጥላል። የረጅም ጊዜ ድጋፍ (LTS) ቅርንጫፍ Java SE 21 ወይም Java SE 17 መሆን አለበት ይህም እስከ 2031 እና 2029 ድረስ ማሻሻያዎችን ይቀበላል (በአጠቃላይ እስከ 2028 እና 2026 ድረስ ይገኛል)። ለ LTS የጃቫ SE 11 ቅርንጫፍ የህዝብ ድጋፍ ባለፈው መስከረም አብቅቷል፣ የተራዘመ ድጋፍ ግን እስከ 2032 ድረስ ይቀጥላል። ለጃቫ SE 8 LTS ቅርንጫፍ የተራዘመ ድጋፍ እስከ 2030 ድረስ ይቀጥላል።

ከጃቫ 10 መለቀቅ ጀምሮ ፕሮጀክቱ ወደ አዲስ የእድገት ሂደት መቀየሩን እናስታውስዎታለን ይህም ለአዳዲስ ልቀቶች ምስረታ አጠር ያለ ዑደትን ያሳያል። አዲስ ተግባር አሁን በየጊዜው በዘመነ ዋና ቅርንጫፍ ውስጥ ተዘጋጅቷል፣ እሱም ዝግጁ የተደረጉ ለውጦችን ያካተተ እና አዳዲስ የተለቀቁትን ለማረጋጋት በየስድስት ወሩ ቅርንጫፎች የሚከፈቱት።

በጃቫ 22 ውስጥ አዲስ ባህሪያት የሚከተሉትን ያካትታሉ:

  • የጂ 1 ቆሻሻ ሰብሳቢው በክልል መሰካት ድጋፍን ያካትታል፣ ይህም የጃቫ እቃዎች በቆሻሻ ሰብሳቢው እንዳይንቀሳቀሱ ለጊዜው እንዲያስተካክሉ እና የእነዚህ ነገሮች ማጣቀሻዎች በጃቫ እና በአፍ መፍቻ ኮድ መካከል እንዲተላለፉ ለማድረግ ያስችላል። መሰካት መዘግየትን እንዲቀንሱ እና የቆሻሻ አሰባሰብን እንዳያሰናክሉ ይፈቅድልዎታል ወሳኝ የጄኤንአይ (የጃቫ ተወላጅ በይነገጽ) ክልሎችን በአፍ መፍቻ ኮድ (እነዚህን ክፍሎች በሚፈጽሙበት ጊዜ, JVM የዘር ሁኔታዎችን ለማስወገድ ከነሱ ጋር የተያያዙ ወሳኝ ነገሮችን ማንቀሳቀስ የለበትም). መሰካት ወሳኝ የሆኑ ነገሮችን ከቆሻሻ ሰብሳቢው እይታ ያስወግዳል, ያልተሰካ ቦታዎችን ማጽዳት ሊቀጥል ይችላል.
  • ሱፐር(...) ከመደወል በፊት አገላለጾችን በግንባታ ሰሪዎች ውስጥ እንዲገለጹ ለማስቻል የመጀመሪያ ባህሪ ታክሏል። ክፍል ውጫዊ { ባዶ ሰላም () {System.out.println ("ሄሎ"); } ክፍል ውስጣዊ {ውስጣዊ () {ሠላም (); ሱፐር (); } }
  • የ FFM (የውጭ ተግባር እና ማህደረ ትውስታ) ኤፒአይ ተረጋግቷል፣ የጃቫ ፕሮግራሞችን ከውጫዊ ኮድ እና ዳታ ጋር መስተጋብር ለመፍጠር ከውጭ ቤተ-መጻህፍት ተግባራትን በመጥራት እና ከJVM ውጭ ማህደረ ትውስታን በመድረስ JNI (Java Native Interface) ሳይጠቀም።
  • ስማቸው ላልተጠቀሱ ተለዋዋጮች እና ስርዓተ-ጥለት ማዛመድ ድጋፍ ነቅቷል - ጥቅም ላይ ያልዋሉ ነገር ግን አስፈላጊ በሆኑ ተለዋዋጮች እና ሲደወሉ ፋንታ አሁን የ"_" ቁምፊን መግለጽ ይችላሉ። // ሕብረቁምፊ (ገጽ) (ገጽ) ...}; // አሁን የሕብረቁምፊ ገጽ ስም = መቀየር (ገጽ) ይችላሉ { case GitHubIssuePage (_, _, _, int issueNumber) -> "ISSUE #" + እትም ቁጥር; };
  • የክፍል-ፋይል ኤፒአይ የመጀመሪያ ደረጃ ትግበራ የጃቫ ክፍል ፋይሎችን ለመተንተን፣ ለማምረት እና ለመለወጥ ታቅዷል። ClassFile cf = ClassFile.of (); ClassModel classModel = cf.parse (ባይት); ባይት[] newBytes = cf.build (classModel.thisClass () .asSymbol (), classBuilder -> { ለ (ClassElement ce : classModel) { ከሆነ (!(የ MethodModel mm && mm.methodName ())።stringValue()። startsWith("ማረሚያ"))) {classBuilder.with(ce);
  • የጃቫ መገልገያ እነዚህን ፋይሎች ለየብቻ ሳያጠናቅር እና የግንባታ ስርዓቱን ሳያዋቅር በበርካታ የኮድ ፋይሎች ወይም ቀድሞ በተዘጋጁ ክፍል ቤተ-መጽሐፍት መልክ የቀረቡ የጃቫ ፕሮግራሞችን የማሄድ ችሎታ ይሰጣል። አዲሱ ባህሪ የተለያዩ ክፍሎች ኮድ ወደ ተለያዩ ፋይሎች የሚከፈልባቸውን ፕሮግራሞችን ለማሄድ ቀላል ያደርገዋል። Prog.java፡ ክፍል ፕሮግ {ህዝባዊ የማይንቀሳቀስ ባዶ ዋና (ሕብረቁምፊ[] args) { Helper.run (); } } Helper.java: ክፍል አጋዥ {static void run() {System.out.println("ሄሎ!"); }

    ለምሳሌ, ሁለት ፋይሎችን "Prog.java" እና "Helper.java" ያካተተ ፕሮግራም ለማሄድ አሁን "java Prog.java" ን ማስኬድ በቂ ነው, ይህም የፕሮግ ክፍልን ያጠናቅራል, የረዳት ክፍልን ይገልፃል. የ Helper ፋይልን ያግኙ እና ያጠናቅቁ እና ዋናውን ዘዴ ይደውሉ።

  • ከሕብረቁምፊ ቃል በቃል እና ከጽሑፍ ብሎኮች በተጨማሪ የተተገበረ የ String Templates ሁለተኛ የመጀመሪያ ደረጃ ትግበራ ታክሏል። የሕብረቁምፊ አብነቶች + ኦፕሬተርን ሳይጠቀሙ ጽሑፍን ከተሰሉ መግለጫዎች እና ተለዋዋጮች ጋር እንዲያዋህዱ ያስችሉዎታል። የገለጻዎችን መተካት የሚከናወነው ተለዋጮች \{...}ን በመጠቀም ነው፣ እና የተተኩትን እሴቶች ትክክለኛነት ለማረጋገጥ ልዩ ተቆጣጣሪዎች ሊገናኙ ይችላሉ። ለምሳሌ፣ የSQL ሞተር በSQL ኮድ ውስጥ እየተተኩ ያሉትን እሴቶች ይፈትሻል እና የ java.sql.Statement ነገርን እንደ ውፅዓት ይመልሳል፣ የJSON ፕሮሰሰር የJSON ተተኪዎችን ትክክለኛነት ይከታተላል እና JsonNode ይመልሳል። የሕብረቁምፊ ጥያቄ = "ምረጥ * ከሰው p WHERE p." + ንብረት + " = '" + እሴት + "'"; // was Statement query = SQL."""ከሰው ምረጥ p WHERE p.\{property} = '\{value}'"""; // ሆነ
  • በ x86_64 እና AArch64 ፕሮሰሰሮች ላይ የቬክተር መመሪያዎችን በመጠቀም ለሚከናወኑ የቬክተር ስሌቶች ተግባራትን የሚያቀርብ የቬክተር ኤፒአይ ሰባተኛ ቅድመ እይታ ታክሏል እና ክዋኔዎች ለብዙ እሴቶች (ሲኤምዲ) በአንድ ጊዜ እንዲተገበሩ ያስችላል። የስክላር ኦፕሬሽኖችን በራስ ሰር ቬክተራይዜሽን ለማድረግ በሆትስፖት ጂአይቲ ኮምፕሌተር ውስጥ ከሚቀርቡት ችሎታዎች በተለየ፣ አዲሱ ኤፒአይ ለትይዩ መረጃ ሂደት ቬክተራይዜሽንን በግልፅ ለመቆጣጠር ያስችላል።
  • የተራዘመው ዥረት ኤፒአይ የመጀመሪያ ደረጃ ትግበራ ታክሏል የእራስዎን መካከለኛ ኦፕሬሽኖች መግለፅን የሚደግፍ፣ ይህም አሁን ያለው አብሮገነብ መካከለኛ ክዋኔዎች ለሚፈለገው የውሂብ ለውጥ በቂ በማይሆኑበት ጊዜ ጠቃሚ ሊሆን ይችላል። ቤተኛ ተቆጣጣሪዎች የተገናኙት በተጠቃሚ የተገለጸ ተቆጣጣሪን ለእነሱ በመተግበር የዥረት ክፍሎችን የሚያስኬድ አዲሱን መካከለኛ ኦፕሬሽን Stream::gather( ሰብሳቢ) በመጠቀም ነው። jshell> ፍሰት [1,2,3,4,5,6,7,8,9, 3, 1], [1, 2, 3]
  • የሙከራ ኤፒአይ ለ Structured Concurrency ሁለተኛ እትም ለሙከራ ቀርቧል፣ ይህም በተለያዩ ክሮች ውስጥ የተከናወኑ በርካታ ተግባራትን እንደ አንድ ብሎክ በማስኬድ ባለብዙ-ክር ትግበራዎችን ቀላል ያደርገዋል።
  • በተዘዋዋሪ የታወጁ ክፍሎች እና ስማቸው ያልተጠቀሰ የ"ዋና" ዘዴ ሁለተኛ የመጀመሪያ ደረጃ ትግበራ ታክሏል፣ ይህም በህዝባዊ/ቋሚ መግለጫዎች፣ የክርክር ድርድር እና ሌሎች ከክፍል መግለጫ ጋር የተያያዙ አካላትን ሊሰጥ ይችላል። // የሕዝብ ክፍል ሄሎዎርድ ነበር { public static void main (ሕብረቁምፊ[] args) {System.out.println("ሄሎ አለም!"); } } // አሁን ዋናውን () {System.out.println ("ሄሎ፣ አለም!") ሊሰርዙት ይችላሉ። }
  • የማይለዋወጥ ውሂብ በክሮች ላይ እንዲጋራ እና በልጅ ክሮች መካከል በብቃት እንዲለዋወጡ የሚያስችል የ Scoped Values ​​ሁለተኛ ቅድመ እይታ ትግበራ ታክሏል (እሴቶች በዘር የሚተላለፍ)። ስፒድ እሴቶች ክር-አካባቢያዊ ተለዋዋጮች ዘዴን ለመተካት እየተዘጋጁ ናቸው እና በጣም ብዙ ቁጥር ያላቸውን ምናባዊ ክሮች (በሺዎች ወይም በሚሊዮኖች የሚቆጠሩ ክሮች) ሲጠቀሙ የበለጠ ቀልጣፋ ናቸው። በ Scoped Values ​​እና በክር-አካባቢያዊ ተለዋዋጮች መካከል ያለው ዋና ልዩነት የቀደሙት አንድ ጊዜ የተፃፉ ፣ወደፊት ሊለወጡ የማይችሉ እና የሚቆዩት ለክርክሩ አፈፃፀም ጊዜ ብቻ መሆኑ ነው።
  • ትይዩ የቆሻሻ አሰባሳቢው ከትላልቅ ዕቃዎች ጋር ሲሰራ አፈጻጸሙን አሻሽሏል። ማመቻቸት በአንዳንድ ሙከራዎች አንድን ነገር በ20% መፈለግ ከመጀመራቸው በፊት መዘግየቱን ለመቀነስ በትላልቅ የነገሮች ድርድር አስችሏል።

በተጨማሪም፣ JavaFX 22 በግራፊክ በይነገጽ አፕሊኬሽኖችን ለመፍጠር የመድረክ ማሻሻያ ህትመት መታተም ትችላለህ።

ምንጭ: opennet.ru

አስተያየት ያክሉ