Java SE 22 වේදිකාව මුදා හැරීම සහ OpenJDK 22 විවෘත යොමු ක්‍රියාත්මක කිරීම

මාස හයක සංවර්ධනයෙන් පසුව, Oracle විසින් Java SE 22 (Java Platform, Standard Edition 22) නිකුත් කර ඇත, එය OpenJDK විවෘත මූලාශ්‍ර ව්‍යාපෘතිය යොමු ක්‍රියාත්මක කිරීමක් ලෙස භාවිතා කරයි. සමහර අවලංගු වූ විශේෂාංග ඉවත් කිරීම හැර, Java SE 22 ජාවා වේදිකාවේ පෙර නිකුතු සමඟ පසුගාමී අනුකූලතාවයක් පවත්වා ගෙන යයි - බොහෝ කලින් ලියා ඇති ජාවා ව්‍යාපෘති නව අනුවාදය යටතේ ක්‍රියාත්මක වන විට වෙනස් කිරීමකින් තොරව ක්‍රියා කරයි. Linux (x22_86, AArch64), Windows (x64_86) සහ macOS (x64_86, AArch64) සඳහා Java SE 64 (JDK, JRE, සහ Server JRE) ස්ථාපනය කළ හැකි ගොඩනැගීම් සූදානම් කර ඇත. OpenJDK ව්‍යාපෘතිය මගින් වැඩි දියුණු කරන ලද, Java 22 යොමු ක්‍රියාත්මක කිරීම GPLv2 බලපත්‍රය යටතේ GNU ClassPath ව්‍යතිරේක සමඟින් වාණිජ නිෂ්පාදනවලට ගතික සම්බන්ධ කිරීමට ඉඩ දීම සඳහා සම්පූර්ණයෙන්ම විවෘත වේ.

Java SE 22 නිත්‍ය ආධාරක නිකුතුවක් ලෙස වර්ග කර ඇති අතර මීළඟ නිකුතුව තෙක් යාවත්කාලීන කිරීම් දිගටම ලැබෙනු ඇත. දිගු කාලීන ආධාරක (LTS) ශාඛාව Java SE 21 හෝ Java SE 17 විය යුතුය, එය පිළිවෙලින් 2031 සහ 2029 දක්වා යාවත්කාලීන ලැබෙනු ඇත (සාමාන්‍යයෙන් 2028 සහ 2026 දක්වා පවතී). Java SE 11 හි LTS ශාඛාව සඳහා මහජන සහයෝගය පසුගිය සැප්තැම්බරයේ අවසන් වූ නමුත් 2032 දක්වා දීර්ඝ කරන ලද සහය පවතිනු ඇත. Java SE 8 හි LTS ශාඛාව සඳහා විස්තීරණ සහය 2030 දක්වා පවතිනු ඇත.

Java 10 නිකුතුවෙන් පටන් ගෙන, ව්‍යාපෘතිය නව සංවර්ධන ක්‍රියාවලියකට මාරු වූ අතර, නව නිකුතු සෑදීම සඳහා කෙටි චක්‍රයක් ඇඟවුම් කර ඇති බව අපි ඔබට මතක් කරමු. නිරන්තරයෙන් යාවත්කාලීන කරන ලද එක් ප්‍රධාන ශාඛාවක නව ක්‍රියාකාරිත්වය දැන් සංවර්ධනය කර ඇති අතර, එයට සූදානම් කළ වෙනස්කම් ඇතුළත් වන අතර නව නිකුතු ස්ථාවර කිරීම සඳහා සෑම මාස හයකට වරක් ශාඛා ශාඛා බෙදනු ලැබේ.

Java 22 හි නව විශේෂාංග ඇතුළත් වේ:

  • G1 කසළ එකතු කරන්නාට කලාප ඇමිණීම සඳහා සහය ඇතුළත් වන අතර, එමඟින් ඔබට මතකයේ ඇති ජාවා වස්තූන් කසළ එකතු කරන්නා විසින් ගෙනයාම වැළැක්වීමට සහ මෙම වස්තූන් වෙත යොමු කිරීම් ජාවා සහ ස්වදේශීය කේතය අතර ආරක්ෂිතව යැවීමට ඉඩ සලසයි. Pinning මඟින් ඔබට JNI (Java Native Interface) හි තීරණාත්මක ප්‍රදේශ ස්වදේශීය කේතය සමඟ ක්‍රියාත්මක කිරීමේදී ප්‍රමාදය අඩු කිරීමට සහ කසළ එකතු කිරීම අක්‍රිය කිරීමෙන් වළක්වා ගැනීමට ඉඩ සලසයි (මෙම කොටස් ක්‍රියාත්මක කරන විට, JVM තරඟ තත්වයන් මඟහරවා ගැනීම සඳහා ඒවාට සම්බන්ධ තීරණාත්මක වස්තු චලනය නොකළ යුතුය). ඇමිණීම කුණු එකතු කරන්නාගේ දර්ශනයෙන් තීරණාත්මක වස්තු ඉවත් කරයි, එමඟින් නොඇදුණු ප්‍රදේශ පිරිසිදු කිරීම දිගටම කරගෙන යා හැක.
  • super(...) ලෙස ඇමතීමට පෙර කන්ස්ට්‍රක්ටර් වල ප්‍රකාශන නියම කිරීමට මූලික අංගයක් එක් කර ඇත, එම ප්‍රකාශන ස්ට්‍රැක්ටර් විසින් නිර්මාණය කරන ලද අවස්ථාවක් වෙත යොමු නොවන්නේ නම්, උරුම වූ පන්ති නිර්මාපකයෙකුගෙන් මාපිය පන්ති නිර්මාපකයෙකු පැහැදිලිව ඇමතීමට භාවිතා කරයි. class Outer {void hello() { System.out.println("Hello"); } class Inner {Inner () { hello(); සුපිරි (); } } }
  • FFM (Foreign Function & Memory) API ස්ථාවර කර ඇති අතර, JNI (Java Native Interface) භාවිතයෙන් තොරව බාහිර පුස්තකාල වලින් කාර්යයන් ඇමතීමෙන් සහ JVM වලින් පිටත මතකයට ප්‍රවේශ වීමෙන් බාහිර කේත සහ දත්ත සමඟ ජාවා වැඩසටහන් අන්තර්ක්‍රියා කිරීමට ඉඩ සලසයි.
  • නම් නොකළ විචල්‍යයන් සහ රටා ගැලපීම සඳහා සහය සක්‍රීය කර ඇත - භාවිතා නොකළ නමුත් අවශ්‍ය විචල්‍ය සහ රටා ඇමතීමේ දී ඔබට දැන් “_” අක්ෂරය නියම කළ හැක. // was String pageName = මාරු කරන්න (පිටුව) {case GitHubIssuePage(var url, var content, var links, int issueNumber) -> “ISSUE #” + issueNumber; ...}; // දැන් ඔබට String pageName = මාරු (පිටුව) {case GitHubIssuePage(_, _, _, int issueNumber) -> “ISSUE #” + issueNumber; };
  • ජාවා පන්තියේ ගොනු විග්‍රහ කිරීම, ජනනය කිරීම සහ පරිවර්තනය කිරීම සඳහා Class-File API හි මූලික ක්‍රියාත්මක කිරීමක් යෝජනා කෙරේ. ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { සඳහා (ClassElement ce : classModel) { if (!(ce instanceof MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) { classBuilder.with(ce);} });
  • මෙම ගොනු වෙන වෙනම සම්පාදනය නොකර සහ ගොඩනැගීමේ පද්ධතිය වින්‍යාස කිරීමකින් තොරව කේත ලිපිගොනු කිහිපයක හෝ පෙර සම්පාදනය කරන ලද පන්ති පුස්තකාල ආකාරයෙන් සපයන ජාවා වැඩසටහන් ක්‍රියාත්මක කිරීමේ හැකියාව java උපයෝගීතාව සපයයි. නව විශේෂාංගය විවිධ පන්තිවල කේතය වෙනම ගොනු වලට වෙන් කර ඇති වැඩසටහන් ධාවනය කිරීම පහසු කරයි. Prog.java: class Prog { public static void main(String[] args) {Helper.run(); } } Helper.java: class Helper {static void run() { System.out.println("Hello!"); }}

    උදාහරණයක් ලෙස, "Prog.java" සහ "Helper.java" ගොනු දෙකකින් සමන්විත වැඩසටහනක් ක්‍රියාත්මක කිරීම සඳහා දැන් "java Prog.java" ධාවනය කිරීම ප්‍රමාණවත් වේ, එය Prog පන්තිය සම්පාදනය කරනු ඇත, උපකාරක පන්තියට යොමුවක් අර්ථ දක්වන්න, උපකාරක ගොනුව සොයාගෙන සම්පාදනය කරන්න java සහ ප්‍රධාන ක්‍රමය ඇමතීම.

  • String Literals සහ text blocks වලට අමතරව ක්‍රියාත්මක කරන ලද String Templates හි දෙවන මූලික ක්‍රියාත්මක කිරීමක් එක් කරන ලදී. + ක්‍රියාකරු භාවිතා නොකර ගණනය කළ ප්‍රකාශන සහ විචල්‍ය සමඟ පෙළ ඒකාබද්ධ කිරීමට String සැකිලි ඔබට ඉඩ සලසයි. ප්‍රකාශන ආදේශ කිරීම සිදු කරනු ලබන්නේ ආදේශන \{..} භාවිතයෙන් වන අතර, ආදේශක අගයන්හි නිවැරදි භාවය පරීක්ෂා කිරීමට විශේෂ හසුරුවන්නන් සම්බන්ධ කළ හැක. උදාහරණයක් ලෙස, SQL එන්ජිම SQL කේතයට ආදේශ කර ඇති අගයන් පරීක්ෂා කර java.sql.Statement වස්තුවක් ප්‍රතිදානය ලෙස ලබා දෙයි, JSON ප්‍රොසෙසරය JSON ආදේශකවල නිවැරදි බව නිරීක්ෂණය කර JsonNode එකක් ලබා දෙයි. තන්තු විමසුම = "තෝරන්න * පුද්ගලයාගෙන් p කොහිද p." + දේපල + " = '" + අගය + "'"; // was Statement query = SQL."""තෝරන්න * පුද්ගලයාගෙන් p කොතැනද p.\{property} = '\{value}'"""; // බවට පත් විය
  • x86_64 සහ AArch64 ප්‍රොසෙසරවල දෛශික උපදෙස් භාවිතයෙන් සිදු කෙරෙන දෛශික ගණනය කිරීම් සඳහා කාර්යයන් සපයන Vector API හි හත්වන පෙරදසුනක් එක් කර ඇති අතර බහු අගයන් (SIMD) වෙත එකවර මෙහෙයුම් යෙදීමට ඉඩ සලසයි. අදිශ මෙහෙයුම් ස්වයංක්‍රීයව දෛශිකකරණය සඳහා HotSpot JIT සම්පාදකයෙහි සපයා ඇති හැකියාවන් මෙන් නොව, නව API මඟින් සමාන්තර දත්ත සැකසීම සඳහා දෛශිකකරණය පැහැදිලිව පාලනය කිරීමට හැකි වේ.
  • ඔබගේම අතරමැදි මෙහෙයුම් නිර්වචනය කිරීමට සහය වන විස්තීරණ ප්‍රවාහ API හි මූලික ක්‍රියාත්මක කිරීමක් එක් කර ඇත, එය අපේක්ෂිත දත්ත පරිවර්තනය සඳහා පවතින අතරමැදි මෙහෙයුම් ප්‍රමාණවත් නොවන අවස්ථා වලදී ප්‍රයෝජනවත් විය හැක. ස්වදේශික හසුරුවන්නන් සම්බන්ධ වන්නේ නව අතරමැදි මෙහෙයුම් Stream ::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]]
  • ව්‍යුහගත සමමුහුර්තතාව සඳහා වූ පර්යේෂණාත්මක API හි දෙවන අනුවාදයක් පරීක්ෂා කිරීම සඳහා යෝජනා කර ඇත, එය විවිධ නූල්වල ක්‍රියාත්මක කරන ලද කාර්යයන් කිහිපයක් තනි බ්ලොක් එකක් ලෙස සැකසීමෙන් බහු-නූල් යෙදුම් සංවර්ධනය කිරීම සරල කරයි.
  • ප්‍රසිද්ධ/ස්ථිතික ප්‍රකාශන, තර්ක මාලාවක් සම්මත කිරීම සහ පන්ති ප්‍රකාශයක් හා සම්බන්ධ අනෙකුත් ආයතනවලින් බැහැර කළ හැකි ව්‍යංග ප්‍රකාශිත පන්ති සහ "ප්‍රධාන" ක්‍රමයේ නම් නොකළ අවස්ථා වල දෙවන මූලික ක්‍රියාත්මක කිරීමක් එක් කරන ලදී. // පොදු පන්තිය HelloWorld විය { public static void main(String[] args) { System.out.println("Hello world!"); } } // දැන් ඔබට ප්‍රධාන() { System.out.println("Hello, World!") අවලංගු කළ හැක; }
  • Scoped Values ​​හි දෙවන පෙරදසුන ක්‍රියාත්මක කිරීමක් එක් කරන ලද අතර, නූල් හරහා වෙනස් කළ නොහැකි දත්ත බෙදා ගැනීමට සහ ළමා නූල් අතර දත්ත කාර්යක්ෂමව හුවමාරු කිරීමට ඉඩ සලසයි (වටිනාකම් උරුම වේ). නූල්-දේශීය විචල්‍ය යාන්ත්‍රණය ප්‍රතිස්ථාපනය කිරීම සඳහා විෂයානුගත අගයන් සංවර්ධනය වෙමින් පවතින අතර ඉතා විශාල අතථ්‍ය නූල් (දහස් හෝ මිලියන ගණනක් නූල්) භාවිතා කරන විට වඩාත් කාර්යක්ෂම වේ. Scoped Values ​​සහ නූල්-දේශීය විචල්‍යයන් අතර ඇති ප්‍රධාන වෙනස නම්, පළමුවැන්න එක් වරක් ලියා තිබීම, අනාගතයේදී වෙනස් කළ නොහැකි අතර, නූල් ක්‍රියාත්මක වන කාලය සඳහා පමණක් පවතිනු ඇත.
  • සමාන්තර කසළ එකතු කරන්නා විශාල වස්තු සමඟ වැඩ කිරීමේදී කාර්ය සාධනය වැඩි දියුණු කර ඇත. ප්‍රශස්තකරණය මඟින් වස්තුවක් සෙවීමට පටන් ගැනීමට පෙර ප්‍රමාදය 20% කින් අඩු කිරීමට විශාල වස්තු අරා සහිත සමහර පරීක්ෂණ වලදී හැකි විය.

මීට අමතරව, ඔබට චිත්‍රක අතුරුමුහුණත JavaFX 22 සමඟ යෙදුම් නිර්මාණය කිරීම සඳහා වේදිකාවට යාවත්කාලීන කිරීමක් ප්‍රකාශනය කළ හැකිය.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න