Java SE 20 ထွက်ရှိသည်။

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

Java SE 20 ကို နောက်ထွက်မွမ်းမံမှုများမတိုင်မီ ထုတ်ပြန်ရမည့် အဆင့်မြှင့်တင်မှုများနှင့်အတူ ပုံမှန်ပံ့ပိုးမှုထုတ်ဝေမှုအဖြစ် အမျိုးအစားခွဲခြားထားသည်။ Long Term Support (LTS) ဌာနခွဲသည် 17 ခုနှစ်အထိ အပ်ဒိတ်များကို လက်ခံရရှိမည့် Java SE 2029 ဖြစ်သင့်သည်။ Java 10 ထုတ်ဝေမှုမှစတင်ပြီး ပရောဂျက်သည် အသစ်ထွက်ရှိမှုအတွက် ပိုမိုတိုတောင်းသော စက်ဝန်းကို ဆိုလိုသည့် ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်အသစ်သို့ ပြောင်းသွားသည်ကို သတိရပါ။ လုပ်ဆောင်ချက်အသစ်များကို ယခု ပြီးစီးနေပြီဖြစ်သော ပြောင်းလဲမှုများနှင့် ထုတ်ဝေမှုများကို တည်ငြိမ်စေရန် ခြောက်လတစ်ကြိမ် အကိုင်းအခက်များ ပေါင်းစပ်ထားသည့် အဆက်မပြတ် မွမ်းမံထားသော မာစတာဌာနခွဲတစ်ခုတွင် လုပ်ဆောင်ချက်အသစ်များကို တီထွင်လျက်ရှိသည်။

Java 20 တွင် အင်္ဂါရပ်အသစ်များ ပါဝင်သည်-

  • Scoped Values ​​အတွက် ပဏာမပံ့ပိုးမှုအား အဆိုပြုထားပြီး၊ ၎င်းသည် threads များတွင် မပြောင်းလဲနိုင်သော data များကို မျှဝေနိုင်ပြီး child threads များအကြား ဒေတာကို ထိထိရောက်ရောက် ဖလှယ်နိုင်သည် (တန်ဖိုးများကို အမွေဆက်ခံသည်)။ Thread-local variables ယန္တရားကိုအစားထိုးရန်အတွက် နယ်ပယ်အလိုက်တန်ဖိုးများကို တီထွင်နေပြီး အလွန်များပြားသော virtual threads (ချည်ပေါင်းထောင်ပေါင်းများစွာနှင့် သန်းပေါင်းများစွာ) ကိုအသုံးပြုသောအခါ ပိုမိုထိရောက်သည်။ Scoped Values ​​​​နှင့် thread-local variable များအကြား အဓိကကွာခြားချက်မှာ ပထမအရာများကို တစ်ကြိမ်ရေးပြီး ၊ နောက်ပိုင်းတွင် ပြောင်းလဲ၍မရသည့်အပြင် thread execution ၏ကြာချိန်အတွက်သာ ကျန်ရှိနေခြင်းဖြစ်သည်။ class Server { နောက်ဆုံး static ScopedValue CURRENT_USER = new ScopedValue(); ဝန်ဆောင်မှုပျက်ပြယ်သည်(တောင်းဆိုချက်၊ တုံ့ပြန်မှုတုံ့ပြန်ချက်) { var အဆင့် = (တောင်းဆိုချက်။ isAuthorized()? ADMIN : GUEST); var အသုံးပြုသူ = အသစ်အသုံးပြုသူ(အဆင့်); ScopedValue.where(CURRENT_USER၊ အသုံးပြုသူ) .run(() -> Application.handle(တောင်းဆိုမှု၊ တုံ့ပြန်မှု)); } } အတန်းအစား DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); အကယ်၍ (!user.canOpen()) InvalidUserException(); DBConnection(…); } }
  • မှတ်တမ်းပုံစံများ ၏ ဒုတိယ ယာယီ အကောင်အထည်ဖော်မှုကို ထည့်သွင်းပြီး အမျိုးအစား မှတ်တမ်း၏ အတန်းများ၏ တန်ဖိုးများကို ခွဲခြမ်းစိတ်ဖြာရန် Java 16 ပုံစံ ကိုက်ညီသည့် စွမ်းရည်ကို တိုးချဲ့ထားသည်။ ဥပမာ- record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
  • ခလုတ်အသုံးအနှုန်းများတွင် တူညီသောပုံစံစတုတ္ထပဏာမအကောင်အထည်ဖော်မှုကို ထည့်သွင်းထားပြီး၊ အညွှန်းများသည် အတိအကျတန်ဖိုးများမဟုတ်သော်လည်း၊ တန်ဖိုးများစွာကို တစ်ပြိုင်နက်ဖုံးအုပ်နိုင်သော လိုက်လျောညီထွေရှိသော ပုံစံများကို အညွှန်းများထည့်သွင်းထားသည်။ အသုံးပြုခဲ့သည်။ 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); မူရင်း -> o.toString(); }; }
  • FFM (Foreign Function & Memory) API ၏ ဒုတိယပဏာမ အကောင်အထည်ဖော်မှုကို ထည့်သွင်းထားပြီး၊ ၎င်းသည် ပြင်ပကုဒ်များနှင့် ဒေတာများကို ပြင်ပစာကြည့်တိုက်များမှ လုပ်ဆောင်ချက်များကို ခေါ်ဆိုခြင်းနှင့် JVM ပြင်ပမှတ်ဉာဏ်အား ဝင်ရောက်ခြင်းမှတစ်ဆင့် Java ပရိုဂရမ်များ၏ အပြန်အလှန်ဆက်သွယ်မှုကို စုစည်းခွင့်ပြုထားသည်။
  • စာအရေးအသားကို အလွန်ရိုးရှင်းလွယ်ကူစေပြီး စွမ်းဆောင်ရည်မြင့်မားသော အပ်ချည်ကြိုးမျိုးစုံအပလီကေးရှင်းများကို ထိန်းသိမ်းထားနိုင်သည့် ပေါ့ပါးသော ကြိုးများဖြစ်သည့် virtual thread ၏ ဒုတိယပဏာမအကောင်အထည်ဖော်မှုကို ထည့်သွင်းထားပါသည်။
  • စမ်းသပ်ဆဲ Structured Parallelism API ၏ ဒုတိယမူကွဲကို ယူနစ်တစ်ခုတည်းအဖြစ် လုပ်ဆောင်နေသော အလုပ်များစွာကို ကုသခြင်းဖြင့် multithreaded အပလီကေးရှင်းများ၏ ဖွံ့ဖြိုးတိုးတက်မှုကို ရိုးရှင်းစေရန် ထည့်သွင်းထားပါသည်။
  • x86_64 နှင့် AArch64 ပရိုဆက်ဆာများ၏ vector ညွှန်ကြားချက်များကို အသုံးပြု၍ လုပ်ဆောင်သည့် Vector API ၏ ပဉ္စမအကြိုအကောင်အထည်ဖော်မှုကို ပေါင်းထည့်ပြီး တန်ဖိုးများစွာအတွက် လုပ်ဆောင်ချက်များကို တစ်ပြိုင်နက်အသုံးပြုခွင့်ပြုထားသည်။ scalar လုပ်ဆောင်ချက်များကို autovectorization အတွက် HotSpot JIT compiler တွင် ပံ့ပိုးပေးထားသည့် စွမ်းရည်များနှင့် မတူဘဲ API အသစ်သည် အပြိုင်ဒေတာ လုပ်ဆောင်ခြင်းအတွက် vectorization ကို ပြတ်သားစွာ ထိန်းချုပ်နိုင်စေပါသည်။

source: opennet.ru

မှတ်ချက် Add