April 14, 2014

Java SE 8

၂၀၁၃ခု ၄လပိုင်းလောက်ကတည်းက Java SE 8 အကြောင်းကို ရေးသားခဲ့ဘူးပါသည်။ ထိုစဉ်က Java 8 မှာတရားဝင် Release မလုပ်သေး။ တခြားအလုပ်တွေ ရေးချင်တာတွေများနေတဲ့အတွက် ဆက်ပြီး မရေးဖြစ်ခဲ့ပါ။ ၂၀၁၄ ခု ၃လပိုင်း ၁၈ရက်၊ Java 8 ကို တရားဝင် Release လုပ်ခဲ့ကြ၏။ Java SE အကြောင်း စာအုပ်ရေးနေသောကြောင့် မစဖြစ်သေးပါ။ အခုတော့ ရေးနေတဲ့ စာအုပ်ကလည်း Java API အကြောင်းကို တဝက်ခန့်ရောက်လာခဲ့ပြီ။ Concurrency နဲ့ IO အကြောင်းရေးပြီးလျှင် ပြီးပြီ။ အရင်ရေးနေတုန်းကတော့ Java SE 7 ကို အခြေခံပြီး ထုတ်မလို့ပါပဲ။ ဒါပေမယ့် ပြီးခါနီးကျမှ လောဘတက်လာပြီး၊ Java 8 ကိုအခြေခံရန် ဆုံးဖြတ်လိုက်ပါသည်။

Java SE 8 တွင်ပါဝင်သော အကြောင်းအရာများမှာ အောက်ပါအတိုင်း ဖြစ်ကြပါသည်။

  • Project Lambda
  • Date & Time API
  • HotSpot နှင့် JRokit VM တို့အား ပူးပေါင်းစေခြင်း
  • Type Annotation
  • Compact Profile
  • Java FX 8
  • Nashorn

Project Lambda


Java SE 8 တွင် အာရုံအစိုက်ခံရဆုံး Function ဟု ပြောပါက Project Lambda ဖြစ်သည်။

Lambda Expression အား ထည့်သွင်းခဲ့ရုံသာမက၊ Interface ၏ Default Function အစရှိသည့် Language ပိုင်းဆိုင်ရာပြောင်းလည်းမှု့နှင့် Stream API အစရှိသည်တို့သည် အတော်လေးအပြောများခဲ့သော အစိတ်အပိုင်းများ ဖြစ်ခဲ့ကြ၏။

Project Lambda ဖြင့် သတ်မှတ်ခဲ့သော JEP တို့မှာ အောက်ပါအတိုင်း ဖြစ်ကြပါသည်။



Date & Time API


Date & Time API သည် java.util.Date နှင့် java.util.Calender တို့အား အစားထိုးရန် ရည်ရွယ်ထားသော နေ့ရက်၊ အချိန်တို့အား အသုံးပြုနိုင်သည့် API အသစ် ဖြစ်ပါသည်။ Date & Time API ၏ အသုံးပြုပုံနှင့် လုပ်ဆောင်ချက်တို့အား JSR 310 ဖြင့် သတ်မှတ်ခဲ့ကြပါသည်။

ယနေ့တိုင်အသုံးပြုခဲ့သော Date နှင့် Calender တို့သည် ဖန်ရှင်မှာလည်း မလုံလောက်ခဲ့သလို အသုံးပြုရလည်း ခက်ခဲခဲ့ပါသည်။ အဲ့ဒီအားနည်းချက်များအတွက် Date & Time API တွင် ဖန်ရှင် အသစ်များအား ပံ့ပိုးလာခဲ့ပါသည်။ အဲ့ဒီအတွက် Class ဖွဲ့စည်းပုံမှာ အနည်းငယ် ရှုပ်ထွေးပါသည်။



HotSpot နှင့် JRokit VM တို့အား ပူးပေါင်းစေခြင်း


Sunmicro System မှ ရေးသားခဲ့သော HotSpot VM နှင့် Oracle ၏ JRockit တို့၏ ပူးပေါင်းမှု့အား Java SE 7 ကတည်းက လုပ်ဆောင်ခဲ့သလို Java SE 8 တွင်လည်း ဆက်လက်၍ လုပ်ဆောင်ခဲ့ကြပါသည်။ ပူးပေါင်းရာတွင် VM အား ရေးသားသည့် အပိုင်းနှင့်၊ Tool တို့အား ရေးသားသည့် အပိုင်းတို့ပါဝင်ကြပါသည်။

VM အား ရေးသားသည့် အပိုင်းကို Open JDK ဖြင့် ဆောင်ရွက်ခဲ့၏။ သို့ရာတွင် Tool ၏ အစိတ်အပိုင်းအချို့သည် Open JDK တွင် မပါဝင်ပဲ Oracle ၏ JDK ၌သာပါဝင်ပါသည်။ ဥပမာအားဖြစ် Flight Recorder သည် Open JDK တွင်မပါဝင်ပဲ Oracle ၏ JDK ၌သာ ပါဝင်၏။

VM အား ရေးသားသည့်အပိုင်းတွင်လည်း HotSpot VM တွင်အသုံးပြုခဲ့သော Permanent Generation Memory သည် နောက်ပိုင်းတွင်မပါဝင်တော့ပါ။ Permanent Generation Memory ဖြင့် ထိမ်းသိမ်းခဲ့သော Class Information တို့အား Heap Memory နဲ့ Native Memory တို့ဖြင့် ထိမ်းသိမ်းပေးပါသည်။



Type Annotation


Type Annotation အား အသုံးပြုလာနိုင်သောကြောင့် ယနေ့တိုင်ရေးသား၍မရခဲ့သော Generics ၏ Type Parameter တို့တွင် Annotation အား ရေးသားလာနိုင်ပါသည်။ Type Annotation အား အဓိကအားဖြင့် Code များ၏ Static Analysis တွင် အသုံးပြုပါသည်။

တဖန် Annotation တစ်ခုအား အကြိမ်ကြိမ် အသုံးပြုနိုင်သော Repeating Annotation ကိုလည်း အသစ်ဖြည့်စွက်ခဲ့ပါသည်။


တစ်ဘက်တွင် Annotation အား Analysis လုပ်ရာတွင် အသုံးပြုခဲ့သော apt အား ရပ်နားခဲ့ပါသည်။



Compact Profile


Java 8 တွင် Java SE အပြင် Java ME ကိုလည်း အကြီးအကျယ်ပြောင်းလည်းစေခဲ့ပါသည်။ Java ME တွင် Resource အား များစွာအသုံးပြုနိုင်သော စက်ကရိယာများဖြစ်သော အားရည်ရွယ်သော CDC နှင့်၊ Resource နည်းသောစက်များဖြစ်သော CLDC ဟု နှစ်ပိုင်းရှိပါသည်။

Java 8 တွင် CDC နှင့် Java ME Embedded တို့အားပူးပေါင်းစေခဲ့ပါသည်။ Java ME Embedded အသစ်သည် Rasberry Pi နှင့် Smart Phone တို့အား ရည်ရွယ်၍ ရေးသားခဲ့ပါသည်။

Java SE ၏ ဖန်ရှင်များအားလုံးကို အသုံးပြုနိုင်ရန် Memory အတော်များများ လိုအပ်ပါသည်။ ထို့အတွက် Java SE 8 တွင် အသုံးပြုနိုင်သော API အား ကန့်သတ်နိုင်သည့် Compact Profile အား ဖန်တီးလာခဲ့ကြ၏။ အသေးငယ်ဆုံး Compact 1 တွင်အသုံးပြုသော Library Jar ၏ပမာဏသည် 14 M သာရှိပါသည်။

အမှန်အတိုင်းဆိုလျှင် Compact Profile သည် Project Jigsaw ၏ အစိတ်အပိုင်းတစ်ခုဖြစ်သော်လည်း၊ Project Jigsaw ထက်အရင် Compact Profile အား Java SE 8 တွင် Release လုပ်လာခဲ့ခြင်း ဖြစ်ပါသည်။



Java FX 8


Swing ၏ အစားထိုး API တစ်ခုဖြစ်သော Java FX သည် Java SE 8 မှစ၍ Open JDK ၏ အစိတ်အပိုင်းတစ်ခု ဖြစ်လာပါသည်။ Java FX 8 တွင် 3D နှင့် Print Function များအပြင် Swing တွင်မပါဝင်သော Date Picker တို့ကိုလည်း အသစ်ဖြည့်စွက်လာခဲ့ပါသည်။



Nashorn


Nashorn သည် Rhino အား အစားထိုးရန်ရေးသားထားသော Javascript Engine တစ်ခုဖြစ်ပါသည်။ Invoke Dynamic အား နေရာအတော်များများတွင် အသုံးပြုထားပြီး Performance ပိုင်းဆိုင်ရာတွင် တိုးတက်မှု့ရှိစေရန် ဆောင်ရွက်ထားပါသည်။



ဤတစ်ခေါက်တွင် Java SE 8 တွင်ပါဝင်သော အစိတ်အပိုင်းများအား အကြမ်းဖျဉ်းဖော်ပြခဲ့၏။ နောက်ဘလောဂ်များဖြင့် Project Lambda ၏ အသုံးပြုပုံများအား ဆက်လက်ဖော်ပြသွားပါဦးမည်။


ကိုးကား
http://itpro.nikkeibp.co.jp/article/COLUMN/20140212/536246/?ST=develop&P=1

ဆက်ပါဦးမည်
လေးစားစွာဖြင့်
မင်းလွင်

No comments:

Post a Comment