Java SE 17 නිකුතුව

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

Java SE 17 දිගු කාලීන සහය (LTS) නිකුතුවක් ලෙස වර්ගීකරණය කර ඇති අතර, එය 2029 දක්වා යාවත්කාලීන කිරීම් දිගටම ලැබෙනු ඇත. පෙර ජාවා 16 සන්ධිස්ථානය නිකුතුව සඳහා යාවත්කාලීන කිරීම නතර කර ඇත. Java 11 හි පෙර LTS ශාඛාව 2026 දක්වා සහය දක්වයි. මීළඟ LTS නිකුතුව 2024 සැප්තැම්බර් සඳහා සැලසුම් කර ඇත. Java 10 නිකුතුවෙන් පටන් ගෙන, ව්‍යාපෘතිය නව සංවර්ධන ක්‍රියාවලියකට මාරු වූ අතර, නව නිකුතු සෑදීම සඳහා කෙටි චක්‍රයක් ඇඟවුම් කර ඇති බව අපි ඔබට මතක් කරමු. නිරන්තරයෙන් යාවත්කාලීන කරන ලද එක් ප්‍රධාන ශාඛාවක නව ක්‍රියාකාරිත්වය දැන් සංවර්ධනය කර ඇති අතර, එයට සූදානම් කළ වෙනස්කම් ඇතුළත් වන අතර නව නිකුතු ස්ථාවර කිරීම සඳහා සෑම මාස හයකට වරක් ශාඛා ශාඛා බෙදනු ලැබේ.

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

  • “ස්විච්” ප්‍රකාශනවල රටා ගැලපීම පිළිබඳ පර්යේෂණාත්මක ක්‍රියාත්මක කිරීමක් යෝජනා කර ඇති අතර, එමඟින් “නඩු” ලේබලවල නිශ්චිත අගයන් භාවිතා කිරීමට ඉඩ නොදෙන නමුත් එකවර අගයන් මාලාවක් ආවරණය වන නම්‍යශීලී සැකිලි භාවිතා කිරීමට ඉඩ සලසයි, ඒ සඳහා මීට පෙර අපහසු ඒවා භාවිතා කිරීමට අවශ්‍ය විය. "if... else" ප්‍රකාශන දාම. මීට අමතරව, "ස්විචය" ට NULL අගයන් හැසිරවීමේ හැකියාව ඇත. වස්තුව o = 123L; String formatted = switch (o) {case Integer i -> String.format("int %d", i); නඩුව Long l -> String.format("දිගු %d", l); නඩුව ද්විත්ව d -> String.format("ද්විත්ව %f", d); case String s -> String.format("String %s", s); පෙරනිමිය -> o.toString(); };
  • ක්‍රියාත්මක කිරීම උරුම කර ගැනීමට, දිගු කිරීමට හෝ ප්‍රතික්ෂේප කිරීමට වෙනත් පන්ති සහ අතුරුමුහුණත්වලට භාවිතා කළ නොහැකි මුද්‍රා තැබූ පන්ති සහ අතුරුමුහුණත් සඳහා ස්ථාවර සහාය. දිගු කිරීම සඳහා අවසර දී ඇති උපපංති පැහැදිලිව ලැයිස්තුගත කිරීම මත පදනම්ව, ප්‍රවේශ විකරණකාරකවලට වඩා සුපිරි පන්තියක් භාවිතය සීමා කිරීමට මුද්‍රා තැබූ පන්ති වඩාත් ප්‍රකාශන ක්‍රමයක් සපයයි. පැකේජය com.example.geometry; පොදු මුද්‍රා තැබූ පන්තියේ හැඩය අවසර com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.square {…}
  • x86_64 සහ AArch64 ප්‍රොසෙසරවල දෛශික උපදෙස් භාවිතයෙන් ක්‍රියාත්මක වන දෛශික ගණනය කිරීම් සඳහා කාර්යයන් සපයන Vector API හි දෙවන පෙරදසුනක් යෝජනා කර ඇති අතර බහු අගයන් (SIMD) වෙත එකවර මෙහෙයුම් යෙදීමට ඉඩ සලසයි. අදිශ මෙහෙයුම් ස්වයංක්‍රීයව දෛශිකකරණය සඳහා HotSpot JIT සම්පාදකයෙහි සපයා ඇති හැකියාවන් මෙන් නොව, නව API මඟින් සමාන්තර දත්ත සැකසීම සඳහා දෛශිකකරණය පැහැදිලිව පාලනය කිරීමට හැකි වේ.
  • ජාවා ධාවන කාලයෙන් පිටත කේතය සහ දත්ත සමඟ අන්තර්ක්‍රියා කිරීමට යෙදුම්වලට ඉඩ සලසන විදේශීය ක්‍රියාකාරීත්වය සහ මතක API හි පෙරදසුනක් එක් කරන ලදී. නව API ඔබට JVM නොවන කාර්යයන් කාර්යක්ෂමව ඇමතීමට සහ JVM-කළමනාකරනය නොවන මතකයට ප්‍රවේශ වීමට ඉඩ සලසයි. උදාහරණයක් ලෙස, ඔබට JNI භාවිතා නොකර බාහිර බෙදාගත් පුස්තකාල වලින් කාර්යයන් ඇමතීමට සහ ක්‍රියාවලි දත්ත වෙත ප්‍රවේශ විය හැක.
  • ජාවා 2D API බලගන්වන macOS විදැහුම්කරණ එන්ජිම, අනෙක් අතට Swing API බලගන්වන, Metal graphics API භාවිතා කිරීමට අනුවර්තනය කර ඇත. macOS වේදිකාව පෙරනිමියෙන් OpenGL භාවිතා කරයි, සහ ලෝහ සහය සක්‍රීය කිරීමට "-Dsun.java2d.metal=true" සැකසීම සහ අවම වශයෙන් macOS 10.14.x ධාවනය කිරීම අවශ්‍ය වේ.
  • macOS/AArch64 වේදිකාව සඳහා වරායක් එක් කරන ලදී (නව Apple M1 චිප් මත පදනම් වූ Apple පරිගණක). වරායේ විශේෂ ලක්ෂණයක් වන්නේ W^X (Write XOR Execute) මතක ආරක්ෂණ යාන්ත්‍රණය සඳහා සහය දැක්වීමයි, මතක පිටු ලිවීමට සහ ක්‍රියාත්මක කිරීමට එකවර ප්‍රවේශ විය නොහැක. (කේතය ක්‍රියාත්මක කළ හැක්කේ ලිවීම අක්‍රිය කිරීමෙන් පසුව පමණක් වන අතර මතක පිටුවකට ලිවීම කළ හැක්කේ ක්‍රියාත්මක කිරීම අක්‍රිය කිරීමෙන් පසුව පමණි).
  • පාවෙන ලක්ෂ්‍ය ප්‍රකාශන සඳහා strictfp අර්ථකථන පමණක් භාවිතා කිරීමට ප්‍රතිවර්තනය කරන ලදී. Java 1.2 නිකුතුවේ සිට ලබා ගත හැකි "පෙරනිමි" අර්ථ ශාස්ත්‍ර සඳහා සහය නවත්වා ඇත, ඉතා පැරණි x87 ගණිත කොප්‍රොසෙසර සහිත පද්ධති මත වැඩ කිරීම සඳහා සරල කිරීම් ඇතුළුව (SSE2 උපදෙස් පැමිණීමෙන් පසු, අමතර අර්ථකථන අවශ්‍යතාවය අතුරුදහන් විය).
  • ව්‍යාජ සංඛ්‍යා උත්පාදක යන්ත්‍ර සඳහා නව ආකාරයේ අතුරුමුහුණත් ක්‍රියාත්මක කර ඇති අතර සසම්භාවී සංඛ්‍යා වඩා හොඳ උත්පාදනය සඳහා අතිරේක ඇල්ගොරිතම ක්‍රියාත්මක කර ඇත. ව්‍යාජ සංඛ්‍යා ජනනය කිරීම සඳහා ඇල්ගොරිතමයක් තෝරා ගැනීමට යෙදුම් වලට අවස්ථාව ලබා දී ඇත. සසම්භාවී වස්තු ප්‍රවාහ උත්පාදනය සඳහා වැඩිදියුණු කළ සහාය.
  • sun.misc.Unsafe වැනි තීරනාත්මක API හැර, සියලුම JDK අභ්‍යන්තරයන් දැඩි ලෙස ආවරණය කිරීම. දැඩි සංග්‍රහය මඟින් අභ්‍යන්තර පන්ති, ක්‍රම සහ ක්ෂේත්‍ර වෙත ප්‍රවේශ වීමට කේතයෙන් උත්සාහයන් අවහිර කරයි. මින් පෙර, "--illegal-access=permit" විකල්පය භාවිතයෙන් දැඩි encapsulation මාදිලිය අක්‍රිය කළ හැකි නමුත්, මෙය දැන් අවලංගු කර ඇත. අභ්‍යන්තර පන්ති, ක්‍රම සහ ක්ෂේත්‍ර වෙත ප්‍රවේශය අවශ්‍ය වන යෙදුම් --add-opens විකල්පය හෝ මැනිෆෙස්ට් ගොනුවේ ඇති Add-Opens ගුණාංගය භාවිතයෙන් ඒවා පැහැදිලිව නිර්වචනය කළ යුතුය.
  • යෙදුම් වලට දත්ත deserialization පෙරහන් නිර්වචනය කිරීමේ හැකියාව ලබා දී ඇත, එය සන්දර්භය-සංවේදී විය හැකි අතර විශේෂිත deserialization මෙහෙයුම් මත පදනම්ව ගතිකව තෝරා ගත හැක. නිශ්චිත පෙරහන් සමස්ත අථත්‍ය යන්ත්‍රයට (JVM-wide) අදාළ වේ, i.e. යෙදුම පමණක් නොව, යෙදුමේ භාවිතා කරන තෙවන පාර්ශවීය පුස්තකාල ද ආවරණය කරයි.
  • ඉහළ DPI තිරවල UI වැඩිදියුණු කිරීම සඳහා විශාල අයිකන පූරණය කිරීමට Swing විසින් javax.swing.filechooser.FileSystemView.getSystemIcon ක්‍රමය එක් කර ඇත.
  • java.net.DatagramSocket API වෙනම java.net.MulticastSocket API අවශ්‍යතාවයකින් තොරව Multicast කණ්ඩායම් වෙත සම්බන්ධ වීම සඳහා සහය සපයයි.
  • IGV (Ideal Graph Visualizer) උපයෝගීතාව වැඩිදියුණු කර ඇති අතර, HotSpot VM C2 JIT සම්පාදකයෙහි අතරමැදි කේත නිරූපණයේ අන්තර්ක්‍රියාකාරී දෘශ්‍යකරණය සපයයි.
  • JavaDoc වලදී, javac compiler සමඟ සාදෘශ්‍යයක් මගින්, දෝෂයක් ප්‍රතිදානය වන විට, මූලාශ්‍ර ගොනුවේ ඇති ගැටළුකාරී රේඛාවේ අංකය සහ දෝෂය ඇති ස්ථානය දැන් පෙන්වා ඇත.
  • පද්ධති අක්ෂර කේතනයේ නම පිළිබිඹු කරමින් (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 සක්‍රීය කිරීමේ යාන්ත්‍රණය ඉවත් කර ඇත, එය යල් පැන ගිය, Java 8 හි විකල්ප කාණ්ඩයට පහත හෙලන අතර නවීන භාවිතයේදී කිසි විටෙක පාහේ භාවිතා නොවේ.
  • HotSpot JVM සඳහා ජාවා කේතය ගතික සම්පාදනය සඳහා JIT (යන්තම් වේලාවට) සඳහා සහය දක්වන පර්යේෂණාත්මක සම්පාදකයක් මෙන්ම අතථ්‍ය යන්ත්‍රය ආරම්භ කිරීමට පෙර යන්ත්‍ර කේතයට පන්ති අපේක්ෂිත සම්පාදනය කිරීමේ ක්‍රමය (AOT, ඉදිරි කාලය) , SDK වෙතින් ඉවත් කර ඇත. සම්පාදකය ජාවා වලින් ලියා ඇති අතර එය ග්‍රැල් ව්‍යාපෘතියේ වැඩ මත පදනම් විය. සම්පාදක නඩත්තුව සඳහා විශාල ශ්‍රමයක් අවශ්‍ය වන බව සටහන් වේ, සංවර්ධකයින්ගෙන් ඉල්ලුමක් නොමැති විට එය යුක්ති සහගත නොවේ.

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

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