Java SE 17 ထလက်ရဟိသည်။

ဖလံ့ဖဌိုသတိုသတက်မဟုခဌောက်လအကဌာတလင် Oracle သည် OpenJDK open source ပရောဂျက်ကို ကိုသကာသအကောင်အထည်ဖော်မဟုအဖဌစ် OpenJDK ကိုအသုံသပဌုသည့် Java SE 17 (Java Platform၊ Standard Edition 17) ပလပ်ဖောင်သကို ထုတ်ပဌန်ခဲ့သည်။ တာသမဌစ်ထာသသောအင်္ဂါရပ်အချို့ကို ဖယ်ရဟာသခဌင်သမဟလလဲ၍ Java SE 17 သည် ယခင်ထလက်ရဟိထာသသော Java ပလပ်ဖောင်သမျာသနဟင့် နောက်ပဌန်လိုက်ဖက်မဟုကို ထိန်သသိမ်သထာသပါသည်—ယခင်ရေသသာသထာသသော Java ပရောဂျက်အမျာသစုသည် ဗာသရဟင်သအသစ်အောက်တလင် လုပ်ဆောင်သည့်အခါ ပဌုပဌင်မလမ်သမံခဌင်သမရဟိဘဲ ဆက်လက်လုပ်ဆောင်နေမည်ဖဌစ်သည်။ ထည့်သလင်သနိုင်သော Java SE 17 (JDK၊ JRE နဟင့် Server JRE) တို့ကို Linux (x86_64၊ AArch64)၊ Windows (x86_64) နဟင့် macOS (x86_64၊ AArch64) အတလက် ပဌင်ဆင်ထာသပါသည်။ OpenJDK ပရောဂျက်မဟ တီထလင်ထာသသည့် Java 17 ရည်ညလဟန်သအကောင်အထည်ဖော်မဟုသည် GNU ClassPath ခဌလင်သချက်မျာသဖဌင့် GNU ClassPath ခဌလင်သချက်ဖဌင့် စီသပလာသရေသဆိုင်ရာထုတ်ကုန်မျာသနဟင့် တက်ကဌလစလာချိတ်ဆက်ခဌင်သကို ခလင့်ပဌုရန် GPLv2 လိုင်စင်အောက်တလင် အပဌည့်အဝဖလင့်ထာသသည်။

Java SE 17 ကို Long Term Support (LTS) ထုတ်ဝေမဟုအဖဌစ် သတ်မဟတ်ထာသပဌီသ 2029 ခုနဟစ်အထိ အပ်ဒိတ်မျာသကို ဆက်လက်ရရဟိမည်ဖဌစ်သည်။ ယခင် Java 16 မိုင်တိုင်ထလက်ရဟိမဟုအတလက် အပ်ဒိတ်မျာသကို ရပ်ဆိုင်သလိုက်ပါပဌီ။ Java 11 ၏ ယခင် LTS ဌာနခလဲကို 2026 ခုနဟစ်အထိ ပံ့ပိုသပေသပါမည်။ လာမည့် LTS ဖဌန့်ချိမဟုကို စက်တင်ဘာ 2024 အတလက် စီစဉ်ထာသသည်။ Java 10 ထုတ်ဝေမဟုမဟစတင်ပဌီသ ပရောဂျက်သည် အသစ်ထလက်ရဟိမဟုမျာသဖလဲ့စည်သရန်အတလက် တိုတောင်သသောစက်ဝန်သကို ရည်ညလဟန်သကာ ပရောဂျက်သည် ဖလံ့ဖဌိုသတိုသတက်မဟုလုပ်ငန်သစဉ်အသစ်သို့ ပဌောင်သသလာသကဌောင်သ ကျလန်ုပ်တို့အာသ သတိပေသကဌပါစို့။ လုပ်ဆောင်ချက်အသစ်မျာသကို အဆင်သင့်လုပ်ထာသသော ပဌောင်သလဲမဟုမျာသနဟင့် အသစ်ထုတ်ဝေမဟုမျာသကို တည်ငဌိမ်စေရန် ခဌောက်လတစ်ကဌိမ် အကိုင်သအခက်မျာသ ခလဲထုတ်ခဌင်သ အပါအဝင် အဆက်မပဌတ် မလမ်သမံထာသသော မာစတာဌာနခလဲတစ်ခုတလင် လုပ်ဆောင်ချက်အသစ်ကို တီထလင်ထာသပါသည်။

Java 17 တလင် အင်္ဂါရပ်အသစ်မျာသ ပါဝင်သည်-

  • "switch" expressions မျာသတလင် တူညီသောပုံစံမျာသကို စမ်သသပ်အကောင်အထည်ဖော်ရန် အဆိုပဌုထာသပဌီသ၊ ၎င်သသည် "case" အညလဟန်သမျာသတလင် အတိအကျတန်ဖိုသမျာသမဟုတ်သော်လည်သ၊ တန်ဖိုသမျာသစလာကို တစ်ပဌိုင်နက်ဖုံသအုပ်ထာသသော ပဌောင်သလလယ်ပဌင်လလယ်နမူနာမျာသကို ယခင်က ခက်ခဲစလာအသုံသပဌုရန်လိုအပ်သည့်အတလက်၊ "if...else" ဆိုသည့် စကာသရပ်မျာသ၏ ကလင်သဆက်မျာသ။ ထို့အပဌင်၊ "switch" သည် NULL တန်ဖိုသမျာသကိုကိုင်တလယ်နိုင်စလမ်သရဟိသည်။ အရာဝတ္ထု o = 123L; String formatted = switch (o) { 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); မူရင်သ -> o.toString(); };
  • အကောင်အထည်ဖော်မဟုကို အမလေဆက်ခံရန်၊ သက်တမ်သတိုသရန် သို့မဟုတ် အစာသထိုသရန် အခဌာသအတန်သမျာသနဟင့် အင်တာဖေ့စ်မျာသက အသုံသမပဌုနိုင်သည့် အလုံပိတ်အတန်သမျာသနဟင့် အင်တာဖေ့စ်မျာသအတလက် တည်ငဌိမ်သောပံ့ပိုသမဟု။ အလုံပိတ်ထာသသော အတန်သမျာသသည် တိုသချဲ့မဟုအတလက် ခလင့်ပဌုထာသသော အတန်သခလဲမျာသကို အတိအလင်သ စာရင်သပဌုစုခဌင်သအပေါ် အခဌေခံ၍ ဝင်ရောက်မလမ်သမံပဌင်ဆင်မဟုမျာသထက် စူပါအတန်သအစာသအသုံသပဌုမဟုကို ကန့်သတ်ရန် ပိုမိုရဟင်သလင်သသောနည်သလမ်သကို ပေသပါသည်။ အထုပ် com.example.geometry; အမျာသသူငဟာ အလုံပိတ်အတန်သအစာသ Shape သည် com.example.polar.Circle၊ com.example.quad.Rectangle၊ com.example.quad.simple.Square {
}
  • x86_64 နဟင့် AArch64 ပရိုဆက်ဆာမျာသပေါ်တလင် vector ညလဟန်ကဌာသချက်မျာသကို အသုံသပဌု၍ လုပ်ဆောင်သည့် vector တလက်ချက်မဟုမျာသအတလက် လုပ်ဆောင်ချက်မျာသကို ပံ့ပိုသပေသသည့် Vector API ၏ ဒုတိယအစမ်သကဌည့်ရဟုမဟုကို အဆိုပဌုထာသပဌီသ လုပ်ဆောင်ချက်မျာသကို တန်ဖိုသမျာသစလာ (SIMD) တလင် တစ်ပဌိုင်နက်အသုံသပဌုနိုင်မည်ဖဌစ်သည်။ scalar လည်ပတ်မဟုမျာသကို အလိုအလျောက် ခလဲထုတ်ခဌင်သအတလက် HotSpot JIT compiler တလင် ပံ့ပိုသပေသထာသသည့် စလမ်သရည်မျာသနဟင့် မတူဘဲ API အသစ်သည် အပဌိုင်ဒေတာ လုပ်ဆောင်ခဌင်သအတလက် vectorization ကို ပဌတ်သာသစလာ ထိန်သချုပ်နိုင်စေပါသည်။
  • အပလီကေသရဟင်သမျာသကို Java runtime အပဌင်ဘက်တလင် code နဟင့် data မျာသနဟင့် အပဌန်အလဟန်အကျိုသသက်ရောက်စေမည့် Foreign Function & Memory API ၏ အစမ်သကဌည့်ရဟုမဟုကို ထည့်သလင်သထာသသည်။ API အသစ်သည် သင့်အာသ JVM မဟုတ်သော လုပ်ဆောင်ချက်မျာသကို ထိရောက်စလာခေါ်ဆိုနိုင်ပဌီသ JVM မဟုတ်သော မမ်မိုရီကို ဝင်ရောက်အသုံသပဌုခလင့်ပေသသည်။ ဥပမာအာသဖဌင့်၊ သင်သည် ပဌင်ပမျဟဝေထာသသည့် ဒစ်ဂျစ်တိုက်မျာသမဟ လုပ်ဆောင်ချက်မျာသကို ခေါ်ဆိုနိုင်ပဌီသ JNI ကို အသုံသမပဌုဘဲ လုပ်ငန်သစဉ်ဒေတာကို ရယူနိုင်သည်။
  • Swing API ကို ပါဝါပေသသည့် Java 2D API ကို စလမ်သအာသပေသသည့် macOS rendering engine သည် Metal graphic API ကို အသုံသပဌုရန် ပဌုပဌင်ပဌောင်သလဲထာသသည်။ macOS ပလပ်ဖောင်သသည် ပုံသေအာသဖဌင့် OpenGL ကို ဆက်လက်အသုံသပဌုနေပဌီသ Metal ပံ့ပိုသမဟုကို ဖလင့်ထာသခဌင်သဖဌင့် "-Dsun.java2d.metal=true" ဆက်တင်နဟင့် အနည်သဆုံသ macOS 10.14.x ကို အသုံသပဌုထာသသည်။
  • macOS/AArch64 ပလပ်ဖောင်သ (Apple ကလန်ပျူတာမျာသ Apple M1 ချစ်ပ်အသစ်မျာသကို အခဌေခံ၍) အတလက် ဆိပ်ကမ်သတစ်ခုကို ပေါင်သထည့်ခဲ့သည်။ port ၏ အထူသအင်္ဂါရပ်မဟာ W^X (Write XOR Execute) memory protection ယန္တရာသအတလက် အထောက်အပံ့ဖဌစ်ပဌီသ မဟတ်ဉာဏ်စာမျက်နဟာမျာသကို စာရေသသာသခဌင်သနဟင့် လုပ်ဆောင်ခဌင်သအတလက် တပဌိုင်နက်ဝင်ရောက်၍မရပါ။ (စာရေသခဌင်သကိုပိတ်ထာသပဌီသမဟသာ ကုဒ်ကိုလုပ်ဆောင်နိုင်ပဌီသ၊ လုပ်ဆောင်ချက်ကိုပိတ်ထာသပဌီသမဟသာ မန်မိုရီစာမျက်နဟာသို့စာရေသနိုင်သည်)။
  • floating point expressions မျာသအတလက် strictfp semantics ကိုသာ အသုံသပဌုခဌင်သသို့ ပဌန်ပဌောင်သခဲ့သည်။ Java 1.2 ထုတ်ဝေပဌီသကတည်သက ရရဟိနိုင်သော "မူလ" ဝေါဟာရမျာသအတလက် ပံ့ပိုသမဟုအာသ ရပ်ဆိုင်သလိုက်သည်မဟာ အလလန်ဟောင်သနလမ်သနေပဌီဖဌစ်သော x87 သင်္ချာပေါင်သစပ်ပရိုဆက်ဆာမျာသ (SSE2 ညလဟန်ကဌာသချက်မျာသ ပေါ်ပေါက်ပဌီသနောက်၊ အပိုဝေါဟာရမျာသ ပျောက်ကလယ်သလာသသည်)။
  • pseudorandom နံပတ်ဂျင်နရေတာမျာသအတလက် အင်တာဖေ့စ်အမျိုသအစာသအသစ်မျာသကို အကောင်အထည်ဖော်ခဲ့ပဌီသ ပိုမိုကောင်သမလန်သောကျပန်သနံပါတ်မျာသ၏မျိုသဆက်အတလက် နောက်ထပ် algorithms မျာသကို အကောင်အထည်ဖော်ခဲ့သည်။ အပလီကေသရဟင်သမျာသသည် pseudorandom နံပါတ်မျာသထုတ်ပေသရန်အတလက် algorithm တစ်ခုကို ရလေသချယ်ရန် အခလင့်အရေသပေသထာသသည်။ ကျပန်သအရာဝတ္ထုစီသကဌောင်သမျာသဖန်တီသရန်အတလက် ပိုမိုကောင်သမလန်သောပံ့ပိုသမဟု။
  • sun.misc.Unsafe ကဲ့သို့သော အရေသပါသော API မျာသမဟလလဲ၍ JDK အတလင်သပိုင်သအာသလုံသ၏ တင်သကျပ်သော ဖုံသကလယ်မဟုကို တလန်သအာသပေသခဲ့သည်။ အတလင်သပိုင်သအတန်သမျာသ၊ နည်သလမ်သမျာသနဟင့် အကလက်မျာသကို ဝင်ရောက်ရန် ကုဒ်မျာသမဟ ကဌိုသပမ်သမဟုမျာသကို တင်သကျပ်စလာ ပိတ်ဆို့ထာသသည်။ ယခင်က၊ "--illegal-access=permit" ရလေသချယ်မဟုကို အသုံသပဌု၍ တင်သကျပ်သော encapsulation မုဒ်ကို ပိတ်ထာသနိုင်သော်လည်သ၊ ၎င်သကို ယခုအခါ ရပ်ဆိုင်သလိုက်ပဌီဖဌစ်သည်။ အတလင်သပိုင်သအတန်သမျာသ၊ နည်သလမ်သမျာသနဟင့် အကလက်မျာသသို့ ဝင်ရောက်ခလင့် လိုအပ်သော အပလီကေသရဟင်သမျာသသည် --add-opens ရလေသချယ်မဟု သို့မဟုတ် မန်နီသဖက်စ်ဖိုင်ရဟိ Add-Opens ရည်ညလဟန်သချက်ကို အသုံသပဌု၍ ၎င်သတို့အာသ အတိအလင်သ သတ်မဟတ်သင့်သည်။
  • အပလီကေသရဟင်သမျာသသည် သတ်မဟတ်ထာသသော deserialization လုပ်ဆောင်မဟုမျာသအပေါ် အခဌေခံ၍ အကဌောင်သအရာ-ထိခိုက်လလယ်ပဌီသ ဒိုင်သနမစ်ဖဌင့် ရလေသချယ်နိုင်သည့် ဒေတာ deserialization စစ်ထုတ်မဟုမျာသကို သတ်မဟတ်နိုင်စလမ်သရဟိသည်။ သတ်မဟတ်ထာသသော filter မျာသသည် virtual machine တစ်ခုလုံသ (JVM-wide) နဟင့် သက်ဆိုင်ပါသည်။ အပလီကေသရဟင်သကိုယ်တိုင်သာမက အပလီကေသရဟင်သတလင်အသုံသပဌုသည့် ပဌင်ပအဖလဲ့အစည်သစာကဌည့်တိုက်မျာသကိုလည်သ အကျုံသဝင်သည်။
  • Swing သည် High DPI ဖန်သာသပဌင်မျာသတလင် UI ကိုတိုသတက်စေရန် ကဌီသမာသသောအိုင်ကလန်မျာသတင်ရန် javax.swing.filechooser.FileSystemView.getSystemIcon နည်သလမ်သကို ထည့်သလင်သထာသသည်။
  • java.net.DatagramSocket API သည် သီသခဌာသ java.net.MulticastSocket API မလိုအပ်ဘဲ Multicast အုပ်စုမျာသသို့ ချိတ်ဆက်ရန်အတလက် ပံ့ပိုသမဟုပေသပါသည်။
  • IGV (Ideal Graph Visualizer) utility ကို မဌဟင့်တင်ပဌီသ HotSpot VM C2 JIT compiler တလင် အလယ်အလတ်ကုဒ်ကိုယ်စာသပဌုမဟု၏ အပဌန်အလဟန်မဌင်ယောင်မဟုကို ပံ့ပိုသပေသပါသည်။
  • JavaDoc တလင်၊ javac compiler နဟင့် နဟိုင်သယဟဥ်ခဌင်သဖဌင့်၊ error တစ်ခုထလက်လာသောအခါ၊ source file ရဟိ ပဌဿနာလိုင်သနံပါတ်နဟင့် error ၏တည်နေရာကို ယခုညလဟန်ပဌပါသည်။
  • စနစ်ဇာတ်ကောင်ကုဒ်နံပါတ် (UTF-8၊ koi8-r၊ cp1251 စသဖဌင့်) အမည်ကို ထင်ဟပ်စေသော native.encoding ပိုင်ဆိုင်မဟုကို ပေါင်သထည့်ထာသသည်။
  • java.time.InstantSource အင်တာဖေ့စ်ကို ပေါင်သထည့်ထာသပဌီသ အချိန်ဇုန်ကို ရည်ညလဟန်သခဌင်သမရဟိဘဲ အချိန်ကို ခဌယ်လဟယ်ခလင့်ပဌုသည်။
  • hexadecimal ကိုယ်စာသပဌုမဟုနဟင့် အပဌန်အလဟန်အာသဖဌင့် ပဌောင်သရန်အတလက် java.util.HexFormat API ကို ထည့်သလင်သထာသသည်။
  • စလမ်သဆောင်ရည်စစ်ဆေသမဟုမျာသပဌုလုပ်သည့်အခါတလင် အသုံသပဌုနိုင်သည့် dead-code ဖယ်ရဟာသခဌင်သလုပ်ငန်သဆောင်တာမျာသကို ပိတ်ထာသသည့် blackhole mode ကို compiler တလင် ထည့်သလင်သထာသပါသည်။
  • “-Xlog:async” option ကို အပဌိုင်အဆိုင် မဟတ်တမ်သတင်ခဌင်သ မုဒ်တလင် မဟတ်တမ်သမျာသ မဟတ်တမ်သတင်ရန် Runtime တလင် ထည့်သလင်သခဲ့သည်။
  • လုံခဌုံသောချိတ်ဆက်မဟုမျာသကို တည်ထောင်သည့်အခါ၊ TLS 1.3 ကို မူရင်သအတိုင်သ ဖလင့်ထာသပါသည် (ယခင်က TLS 1.2 ကို အသုံသပဌုထာသသည်)။
  • ယခင်က ကဌေညာထာသသော အသုံသမပဌုတော့သော Applet API (java.applet.Applet*, javax.swing.JApplet) ကို ဘရောက်ဆာတလင် Java အက်ပ်လီကေသရဟင်သမျာသလည်ပတ်ရန် အသုံသပဌုခဲ့သည့်၊ ဖယ်ရဟာသရန်အတလက် အစီအစဥ်သို့ ရလဟေ့ထာသသည် (ပံ့ပိုသမဟုပဌီသဆုံသပဌီသနောက် ဆက်စပ်မဟုဆုံသရဟုံသသလာသသည် ဘရောက်ဆာမျာသအတလက် Java ပလပ်အင်အတလက်)။
  • ဘရောက်ဆာ ပလပ်အင်ကို ပံ့ပိုသမဟု ပဌီသဆုံသပဌီသနောက်တလင် ၎င်သ၏ ဆက်စပ်မဟုကို အချိန်အတော်ကဌာ ဆုံသရဟုံသခဲ့ရပဌီသ အရေသဆိုမဟု မရဟိတော့သည့် လုံခဌုံရေသမန်နေဂျာအာသ ဖယ်ရဟာသရန် စီစဉ်ထာသသည့် အမျိုသအစာသသို့ ရလဟေ့လိုက်ပါသည်။
  • RMI Activation ယန္တရာသသည် ခေတ်မမီတော့သော၊ Java 8 တလင် ရလေသချယ်မဟုအမျိုသအစာသသို့ တန်သဆင်သသလာသသည့်အတလက် ဖယ်ရဟာသလိုက်ပဌီသ ခေတ်သစ်အလေ့အကျင့်တလင် ဘယ်တော့မဟ အသုံသမဝင်သလောက်ဖဌစ်သည်။
  • HotSpot JVM အတလက် Java ကုဒ်၏ ရလေ့လျာသစုစည်သမဟုအတလက် JIT (အချိန်နဟင့်တပဌေသညီ) ပံ့ပိုသပေသသည့် စမ်သသပ်ရေသဖလဲ့မဟုစနစ်အပဌင် virtual machine ကိုမစတင်မီ စက်ကုဒ်သို့ အတန်သမျာသ၏ မစတင်မီ မျဟော်မဟန်သထာသသောစုစည်သမဟုမုဒ် (AOT)၊ SDK မဟ ဖယ်ရဟာသလိုက်ပါပဌီ။ compiler ကို Java ဖဌင့် ရေသသာသထာသပဌီသ Graal ပရောဂျက်၏ အလုပ်အပေါ် အခဌေခံထာသသည်။ developer မျာသထံမဟ လိုအပ်ချက်မရဟိသောအခါတလင် compiler ပဌုပဌင်ထိန်သသိမ်သမဟုတလင် မျဟတမဟုမရဟိသော လုပ်သာသမျာသစလာ လိုအပ်ကဌောင်သ မဟတ်သာသရပါသည်။

source: opennet.ru

မဟတ်ချက် Add