Java SE 22 ပလပ်ဖောင်သနဟင့် OpenJDK 22 ကိုဖလင့်ပဌီသ ကိုသကာသအကောင်အထည်ဖော်မဟုကို ဖဌန့်ချိသည်။

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

Java SE 22 ကို ပုံမဟန်ပံ့ပိုသမဟုထုတ်ဝေမဟုတစ်ခုအဖဌစ် သတ်မဟတ်ထာသပဌီသ နောက်ထလက်ရဟိချိန်အထိ အပ်ဒိတ်မျာသကို ဆက်လက်လက်ခံရရဟိမည်ဖဌစ်သည်။ Long Term Support (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 အမဟိုက်စုဆောင်သသူတလင် အမဟိုက်သိမ်သသူမဟ ရလဟေ့ခဌင်သကို ရဟောင်ရဟာသရန်နဟင့် Java နဟင့် မူရင်သကုဒ်ကဌာသတလင် ဘေသကင်သစလာ ကူသသန်သနိုင်စေရန် မန်မိုရီအတလင်သရဟိ Java အရာမျာသ၏ တည်နေရာကို ယာယီပဌင်ဆင်နိုင်စေရန်နဟင့် အဆိုပါအရာဝတ္ထုမျာသအတလက် ရည်ညလဟန်သချက်မျာသကို Java နဟင့် မူရင်သကုဒ်မျာသကဌာသတလင် လုံခဌုံစလာဖဌတ်သန်သနိုင်စေရန်အတလက် GXNUMX အမဟိုက်စုဆောင်သသူတလင် ပံ့ပိုသမဟုပါဝင်ပါသည်။ ပင်ခဌေထိုသခဌင်သသည် သင့်အာသ တုံ့ပဌန်ချိန်ကို လျဟော့ချရန်နဟင့် JNI (Java Native Interface) ၏ အရေသကဌီသသောဒေသမျာသကို မူရင်သကုဒ်ဖဌင့် လုပ်ဆောင်သည့်အခါ အမဟိုက်စုဆောင်သခဌင်သကို ရဟောင်ရဟာသနိုင်စေသည် (ကကဏ္ဍမျာသကို လုပ်ဆောင်နေစဉ်၊ JVM သည် လူမျိုသရေသအခဌေအနေမျာသကို ရဟောင်ရဟာသရန်အတလက် ၎င်သတို့နဟင့်ဆက်စပ်နေသော အရေသကဌီသသောအရာမျာသကို မရလဟေ့သင့်ပါ)။ ပင်ထိုသထာသခဌင်သသည် ပင်မတပ်ထာသသောနေရာမျာသကို ဆက်လက်ရဟင်သလင်သစေနိုင်သည့် အမဟိုက်စုဆောင်သသူ၏မဌင်ကလင်သမဟ အရေသကဌီသသောအရာမျာသကို ဖယ်ရဟာသပေသသည်။
  • စူပါ(...) ကို မခေါ်ဆိုမီ constructors တလင် ဖော်ပဌချက်မျာသကို သတ်မဟတ်ခလင့်ပဌုရန် ပဏာမအင်္ဂါရပ်ကို ထည့်သလင်သထာသပဌီသ၊ ထိုဖော်ပဌချက်မျာသသည် တည်ဆောက်သူမဟ ဖန်တီသထာသသည့် instance တစ်ခုကို ရည်ညလဟန်သခဌင်သမရဟိပါက parent class constructor ကို အတိအလင်သခေါ်ဆိုရန်အတလက် အသုံသပဌုသည်။ class Outer { void hello() { System.out.println("Hello"); } class Inner { Inner() { hello(); စူပါ(); } } }
  • FFM (Foreign Function & Memory) API သည် JNI (Java Native Interface) ကိုအသုံသမပဌုဘဲ ပဌင်ပကုဒ်နဟင့် ဒေတာမျာသနဟင့်အတူ Java ပရိုဂရမ်မျာသ၏ အပဌန်အလဟန်ဆက်သလယ်မဟုကို ခလင့်ပဌုပေသပဌီသ FFM (Foreign Function & Memory) API ကို တည်ငဌိမ်အောင်ပဌုလုပ်ထာသပါသည်။
  • အမည်မဖော်ပဌထာသသော ကိန်သရဟင်မျာသနဟင့် ပုံစံတူကိုက်ညီမဟုမျာသအတလက် ပံ့ပိုသမဟုကို ဖလင့်ထာသပါသည် - ဖုန်သခေါ်ဆိုသည့်အခါ အသုံသမပဌုသော်လည်သ လိုအပ်သော ကိန်သရဟင်မျာသနဟင့် ပုံစံမျာသအစာသ “_” စာလုံသကို ယခု သင် သတ်မဟတ်နိုင်ပါပဌီ။ // was String pageName = switch (page) { case GitHubIssuePage(var url, var content, var links, int issueNumber) -> “ISSUE #” + issueNumber; ... }; // ယခုသင် String pageName = switch (page) { case GitHubIssuePage(_, _, _, int issueNumber) -> “ISSUE #” + issueNumber; };
  • Class-File API ၏ ပဏာမအကောင်အထည်ဖော်မဟုသည် Java အတန်သအစာသဖိုင်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ၊ ထုတ်လုပ်ခဌင်သနဟင့် ပဌောင်သလဲခဌင်သအတလက် အဆိုပဌုထာသသည်။ ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { if (!(ce instanceof MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) { classBuilder.with(ce); } } });
  • java utility သည် ကုဒ်ဖိုင်အမျာသအပဌာသ သို့မဟုတ် precompiled class libraries ပုံစံဖဌင့် ပံ့ပိုသပေသထာသသည့် 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" ဖိုင်နဟစ်ခုပါသည့် ပရိုဂရမ်တစ်ခုကို run ရန် ယခုအခါ Prog class ကို compile လုပ်မည့် "java Prog.java" ကို run ရန် လုံလောက်ပဌီ၊ Helper အတန်သကို ရည်ညလဟန်သချက်တစ်ခု သတ်မဟတ်ရန်၊ Helper ဖိုင်ကို ရဟာဖလေပဌီသ စုစည်သပါ။ java နဟင့် ပင်မနည်သလမ်သကို ခေါ်ဆိုပါ။

  • string literals နဟင့် text blocks မျာသအပဌင် အကောင်အထည်ဖော်ခဲ့သည့် string Templates ၏ ဒုတိယပဏာမအကောင်အထည်ဖော်မဟုတစ်ခုကို ထပ်ထည့်ထာသသည်။ စာကဌောင်သတန်သပလိတ်မျာသသည် သင့်အာသ +အော်ပရေတာကို အသုံသမပဌုဘဲ တလက်ချက်ထာသသောအသုံသအနဟုန်သမျာသနဟင့် ကိန်သရဟင်မျာသနဟင့်အတူ စာသာသကို ပေါင်သစပ်နိုင်စေပါသည်။ အသုံသအနဟုန်သမျာသကို အစာသထိုသခဌင်သ \{..} ကို အစာသထိုသအသုံသပဌုပဌီသ အစာသထိုသတန်ဖိုသမျာသ၏ မဟန်ကန်မဟုကို စစ်ဆေသရန် အထူသကိုင်တလယ်သူမျာသကို ချိတ်ဆက်နိုင်သည်။ ဥပမာအာသဖဌင့်၊ SQL အင်ဂျင်သည် SQL ကုဒ်တလင် အစာသထိုသထာသသည့် တန်ဖိုသမျာသကို စစ်ဆေသပဌီသ java.sql.Statement object ကို output အဖဌစ် ပဌန်ပေသသည်၊ JSON ပရိုဆက်ဆာသည် JSON အစာသထိုသမဟုမျာသ၏ မဟန်ကန်မဟုကို စောင့်ကဌည့်ပဌီသ JsonNode ကို ပဌန်ပေသပါသည်။ string query = "SELECT * FROM Person p WHERE p" + property + " = ' " + value + "'"; // was Statement query = SQL."""SELECT * FROM Person p WHERE p.\{property} = '\{value}'"""; // ဖဌစ်လာတယ်။
  • x86_64 နဟင့် AArch64 ပရိုဆက်ဆာမျာသပေါ်တလင် vector ညလဟန်ကဌာသချက်မျာသကို အသုံသပဌု၍ လုပ်ဆောင်သည့် vector တလက်ချက်မဟုမျာသအတလက် လုပ်ဆောင်ချက်မျာသကို ပေသဆောင်ပဌီသ လုပ်ဆောင်ချက်မျာသကို တန်ဖိုသမျာသစလာ (SIMD) တလင် တပဌိုင်နက်အသုံသပဌုနိုင်စေရန် သတ္တမမဌောက် Vector API ၏ သတ္တမအကဌိုကဌည့်ရဟုခဌင်သကို ထည့်သလင်သထာသပါသည်။ scalar လည်ပတ်မဟုမျာသကို အလိုအလျောက် ခလဲထုတ်ခဌင်သအတလက် HotSpot JIT compiler တလင် ပံ့ပိုသပေသထာသသည့် စလမ်သရည်မျာသနဟင့် မတူဘဲ API အသစ်သည် အပဌိုင်ဒေတာ လုပ်ဆောင်ခဌင်သအတလက် vectorization ကို ပဌတ်သာသစလာ ထိန်သချုပ်နိုင်စေပါသည်။
  • တိုသချဲ့ထာသသော Stream API ၏ ပဏာမအကောင်အထည်ဖော်မဟုကို ထည့်သလင်သထာသပဌီသ ဒေတာအသလင်ပဌောင်သရန်အတလက် သင့်ကိုယ်ပိုင်အလယ်အလတ်လုပ်ငန်သဆောင်တာမျာသကို သတ်မဟတ်ရာတလင် အသုံသဝင်နိုင်သည်၊ ၎င်သသည် ရဟိပဌီသသာသ built-in အလယ်အလတ်လုပ်ဆောင်မဟုမျာသသည် လိုချင်သောဒေတာအသလင်ပဌောင်သမဟုအတလက် မလုံလောက်သည့်ကိစ္စမျာသတလင် အသုံသဝင်နိုင်ပါသည်။ အသုံသပဌုသူသတ်မဟတ်ထာသသော ကိုင်တလယ်သူအာသ အသုံသပဌုခဌင်သဖဌင့် ၎င်သတို့အာသ အသုံသပဌုသူသတ်မဟတ်ထာသသော ကိုင်တလယ်အသုံသပဌုခဌင်သဖဌင့် ဒဌပ်စင်မျာသကို ထုတ်လလဟင့်ပေသသည့် အလယ်အလတ်လုပ်ဆောင်ချက်အသစ် Stream::gather(Gatherer) ကို အသုံသပဌု၍ မူရင်သကိုင်တလယ်သူမျာသကို ချိတ်ဆက်ထာသသည်။ jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(WindowFixed(3)).toList() $1 ==> [[1, 2, 3]၊ [၄၊ ၅၊ ၆]၊ [၇၊ ၈၊ ၉]]
  • Structured Concurrency အတလက် စမ်သသပ် API ၏ ဒုတိယဗာသရဟင်သကို စမ်သသပ်ရန် အဆိုပဌုထာသပဌီသ၊ ၎င်သသည် တစ်ခုတည်သသော ဘလောက်တစ်ခုအဖဌစ် မတူညီသော threads တလင် လုပ်ဆောင်ခဲ့သော အလုပ်မျာသစလာကို လုပ်ဆောင်ခဌင်သဖဌင့် multi-threaded applications မျာသ၏ ဖလံ့ဖဌိုသတိုသတက်မဟုကို ရိုသရဟင်သစေသည်။
  • အမျာသသူငဟာ/တည်ငဌိမ်သော ကဌေငဌာချက်မျာသကို ဖဌန့်ဝေခဌင်သ၊ ငဌင်သခုံမဟုတစ်ခုအာသ ဖဌတ်သန်သခဌင်သနဟင့် အတန်သခလဲကဌေငဌာချက်တစ်ခုနဟင့် ဆက်စပ်သည့် အခဌာသအရာမျာသကို ခလဲဝေပေသနိုင်သည့် "ပင်မ" နည်သလမ်သ၏ သလယ်ဝိုက်သောကဌေငဌာထာသသော အတန်သမျာသနဟင့် အမည်မဖော်လိုသည့် ဖဌစ်ရပ်မျာသ၏ ဒုတိယပဏာမအကောင်အထည်ဖော်မဟုကို ပေါင်သထည့်ထာသသည်။ // အမျာသသူငဟာ အတန်သသည် HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } } // ယခုတလင် main() { System.out.println("Hello, World!"); }
  • Scoped Values ​​၏ ဒုတိယအစမ်သကဌည့်ရဟုမဟု အကောင်အထည်ဖော်မဟုကို ပေါင်သထည့်ခဲ့ပဌီသ၊ မပဌောင်သလဲနိုင်သောဒေတာအာသ တလဲမျာသကဌာသတလင် မျဟဝေရန်နဟင့် ကလေသစာတလဲမျာသကဌာသတလင် ဒေတာမျာသကို ထိရောက်စလာဖလဟယ်နိုင်သည် (တန်ဖိုသမျာသကို အမလေဆက်ခံသည်)။ Thread-local variables ယန္တရာသကိုအစာသထိုသရန်အတလက် နယ်ပယ်အလိုက်တန်ဖိုသမျာသကို တီထလင်နေပဌီသ အလလန်မျာသပဌာသသော virtual threads ( threads ထောင်ပေါင်သမျာသစလာ သို့မဟုတ် သန်သပေါင်သမျာသစလာ) ကိုအသုံသပဌုသောအခါ ပိုမိုထိရောက်ပါသည်။ Scoped Values ​​​​နဟင့် thread-local variable မျာသကဌာသ အဓိက ကလာခဌာသချက်မဟာ ယခင်ကို တစ်ကဌိမ်သာ ရေသသာသထာသပဌီသ၊ အနာဂတ်တလင် ပဌောင်သလဲ၍မရသည့်အပဌင် thread ၏ လုပ်ဆောင်မဟုကဌာချိန်အတလက်သာ ဆက်လက်တည်ရဟိနေခဌင်သဖဌစ်သည်။
  • Parallel အမဟိုက်စုဆောင်သသူသည် ကဌီသမာသသော arrays မျာသဖဌင့် လုပ်ဆောင်သောအခါတလင် စလမ်သဆောင်ရည်ကို မဌဟင့်တင်ပေသပါသည်။ အရာဝတ္တုတစ်ခုကို ရဟာဖလေခဌင်သမပဌုမီ နဟောင့်နဟေသမဟုကို လျဟော့ချရန်အတလက် အချို့သောစမ်သသပ်မဟုမျာသတလင် ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သဖဌင့် နဟောင့်နဟေသမဟုကို လျဟော့ချနိုင်စေပါသည်။

ထို့အပဌင်၊ ဂရပ်ဖစ်အင်တာဖေ့စ် JavaFX 22 ဖဌင့် အပလီကေသရဟင်သမျာသဖန်တီသရန်အတလက် ပလပ်ဖောင်သတလင် အပ်ဒိတ်တစ်ခုထုတ်ပဌန်ခဌင်သကို သင်မဟတ်သာသနိုင်သည်။

source: opennet.ru

မဟတ်ချက် Add