මාස හයක සංවර්ධනයෙන් පසුව, Oracle විසින් Java SE 20 (Java Platform, Standard Edition 20) නිකුත් කර ඇත, එය OpenJDK විවෘත මූලාශ්ර ව්යාපෘතිය යොමු ක්රියාත්මක කිරීමක් ලෙස භාවිතා කරයි. සමහර අවලංගු වූ විශේෂාංග ඉවත් කිරීම හැර, Java SE 20 ජාවා වේදිකාවේ පෙර නිකුතු සමඟ පසුගාමී අනුකූලතාවයක් පවත්වා ගෙන යයි - බොහෝ කලින් ලියා ඇති ජාවා ව්යාපෘති නව අනුවාදය යටතේ ක්රියාත්මක වන විට වෙනස් කිරීමකින් තොරව ක්රියා කරයි. Linux (x20_86, AArch64), Windows (x64_86) සහ macOS (x64_86, AArch64) සඳහා Java SE 64 (JDK, JRE, සහ Server JRE) ස්ථාපනය කළ හැකි ගොඩනැගීම් සූදානම් කර ඇත. OpenJDK ව්යාපෘතිය මගින් වැඩි දියුණු කරන ලද, Java 20 යොමු ක්රියාත්මක කිරීම GPLv2 බලපත්රය යටතේ GNU ClassPath ව්යතිරේක සමඟින් වාණිජ නිෂ්පාදනවලට ගතික සම්බන්ධ කිරීමට ඉඩ දීම සඳහා සම්පූර්ණයෙන්ම විවෘත වේ.
Java SE 20 නිත්ය ආධාරක නිකුතුවක් ලෙස වර්ගීකරණය කර ඇති අතර, ඊළඟ නිකුතුවට පෙර යාවත්කාලීන කිරීම් නිකුත් කිරීමට නියමිතය. දිගු කාලීන ආධාරක (LTS) ශාඛාව Java SE 17 විය යුතු අතර, එය 2029 දක්වා යාවත්කාලීන ලැබෙනු ඇත. Java 10 නිකුතුවෙන් පටන් ගෙන, ව්යාපෘතිය නව සංවර්ධන ක්රියාවලියකට මාරු වූ බව මතක තබා ගන්න, එය නව නිකුතු සෑදීම සඳහා කෙටි චක්රයක් ඇඟවුම් කරයි. නිරන්තරයෙන් යාවත්කාලීන කරන ලද එක් ප්රධාන ශාඛාවක් තුළ නව ක්රියාකාරීත්වය දැන් සංවර්ධනය වෙමින් පවතින අතර, දැනටමත් සම්පූර්ණ කර ඇති වෙනස්කම් ඇතුළත් වන අතර නව නිකුතු ස්ථාවර කිරීම සඳහා සෑම මාස හයකට වරක් ශාඛා බෙදනු ලැබේ.
Java 20 හි නව විශේෂාංග ඇතුළත් වේ:
- Scoped Values සඳහා මූලික සහාය යෝජනා කර ඇති අතර, නූල් හරහා වෙනස් කළ නොහැකි දත්ත බෙදා ගැනීමට සහ ළමා නූල් අතර කාර්යක්ෂම දත්ත හුවමාරුවකට ඉඩ සලසයි (අගය උරුම වේ). Scoped Values නූල්-දේශීය විචල්ය යාන්ත්රණය ප්රතිස්ථාපනය කිරීමට අදහස් කරන අතර ඉතා විශාල අථත්ය නූල් (දහස් සහ මිලියන ගණනක් නූල්) භාවිතා කරන විට වඩාත් කාර්යක්ෂම වේ. Scoped Values සහ thread-local විචල්ය අතර ප්රධාන වෙනස නම්, පළමු ඒවා එක් වරක් ලියා ඇති අතර, පසුව වෙනස් කළ නොහැකි අතර, නූල් ක්රියාත්මක කිරීමේ කාලය සඳහා පමණක් ලබා ගත හැකි වීමයි. class Server { final static ScopedValue CURRENT_USER = new ScopedValue(); void serve(Request request, Response response) { var level = (request. isAuthorized()? ADMIN : GUEST); var user = new User(level); ScopedValue.where(CURRENT_USER, user) .run(() -> Application.handle(request, response)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); if (!user.canOpen()) throw new InvalidUserException(); return new DBConnection(...); } }
- වාර්තා රටා සඳහා දෙවන මූලික ක්රියාත්මක කිරීමක් එකතු කර ඇති අතර, ජාවා 16 හි හඳුන්වා දී ඇති රටා ගැලපීමේ විශේෂාංගය වාර්තා පන්තිවල අගයන් විග්රහ කිරීම සඳහා දීර්ඝ කරයි. උදාහරණයක් ලෙස: record Point(int x, int y) {} static void printSum(Object obj) { if (obj instance of Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
- ස්විච් ප්රකාශනවල රටා ගැලපීම පිළිබඳ සිව්වන පෙරදසුන ක්රියාත්මක කිරීමක් එකතු කර ඇති අතර, කේස් ලේබල් වලට නිරවද්ය අගයන් වෙනුවට අගයන් මාලාවක් විහිදුවන නම්යශීලී රටා භාවිතා කිරීමට ඉඩ සලසයි, ඒ සඳහා කලින් if-else ප්රකාශනවල අපහසු දාමයන් අවශ්ය විය. static String formatterPatternSwitch(Object obj) { return switch (obj) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); }; }
- FFM (Foreign Function & Memory) API හි දෙවන ප්රාථමික ක්රියාත්මක කිරීමක් එකතු කර ඇති අතර, එමඟින් ජාවා වැඩසටහන් වලට බාහිර පුස්තකාල වලින් ශ්රිත ඇමතීමෙන් සහ JVM වලින් පිටත මතකයට ප්රවේශ වීමෙන් බාහිර කේත සහ දත්ත සමඟ අන්තර් ක්රියා කිරීමට ඉඩ සලසයි.
- ඉහළ කාර්යසාධනයක් සහිත බහු නූල් යෙදුම් ලිවීම සහ නඩත්තු කිරීම බෙහෙවින් සරල කරන සැහැල්ලු නූල් වන අතථ්ය නූල්වල දෙවන මූලික ක්රියාත්මක කිරීමක් එකතු කර ඇත.
- ව්යුහගත සමාන්තරකරණය සඳහා වන පර්යේෂණාත්මක API හි දෙවන අනුවාදයක් එකතු කර ඇති අතර, විවිධ නූල් මත ක්රියාත්මක වන බහු කාර්යයන් තනි ඒකකයක් ලෙස සැලකීමෙන් බහු නූල් යෙදුම් සංවර්ධනය සරල කරයි.
- දෛශික API හි පස්වන මූලික ක්රියාත්මක කිරීමක් එකතු කර ඇත. මෙම API x86_64 සහ AArch64 ප්රොසෙසර දෛශික උපදෙස් භාවිතයෙන් සිදු කරන ලද දෛශික ගණනය කිරීම් සඳහා කාර්යයන් සපයන අතර බහු අගයන් (SIMD) මත එකවර ක්රියාත්මක වීමට ඉඩ සලසයි. HotSpot JIT සම්පාදකයේ අදිශ මෙහෙයුම් ස්වයංක්රීයව දෛශිකකරණය කිරීම මෙන් නොව, නව API සමාන්තර දත්ත සැකසීම සඳහා දෛශිකකරණය පිළිබඳ පැහැදිලි පාලනයක් ලබා දෙයි.
මූලාශ්රය: opennet.ru
