September 4, 2020

About Project Jigsaw

Java 8 ကို Release လုပ်ပြီးတဲ့နောက် Java Programming Language ကို ကြည့်မယ်ဆိုရင် နှစ်လွှာကွဲနေမယ်လို့ ခံစားရပါတယ်။ ဒါကတော့ ကျွန်တော်တစ်ယောက်ထဲရဲ့ ခံစားချက်ဖြစ်ပါတယ်။ Android ကို ရေးနေပြီး Java ကို အသုံးပြုနေသူတွေက Java 8 မတိုင်ခင်က Java ကို အသုံးပြုနေကြပြီး၊ Java ကိုယ်တိုင်ကတော့ Version တွေ အမျိုးမျိုးပြောင်းလဲ လာခဲ့ပါပြီ။

Android ကို ရေးသားသူတွေက Java 8 နောက်ပိုင်း New Feature တွေကို Kotlin Language ကို ပြောင်းသုံးပြီး ရေးလာနိုင်ခဲ့ပါတယ်။ ဒါပေမဲ့ Java ရဲ့ အဓိကပြောင်းလဲမှုဟာ Project Lambda တစ်ခုထဲမဟုတ် ပါဘူး။ Java သမိုင်းမှာ အကြီးမားဆုံးပြောင်းလဲမှုလို့ ပြောလို့ရတဲ့ ပြောင်းလဲမှုတစ်ခုဟာ Java 9 မှာလဲ ဖြစ်ပေါ်ခဲ့ပါတယ်။ အဲ့ဒါကတော့ Modular Java ပဲ ဖြစ်ပါတယ်။

Raise of Modular Java

Java 9 မှာ စတင် Release လုပ်ခဲ့တာကာ Java Platform Module System ဖြစ်ပါတယ်။ Java 9 ရောက်မှ Release လုပ်နိုင်ခဲ့တာဖြစ်ပေမဲ့ တကယ်တမ်း Java Platform မှာ Module System ကို အသုံးပြု နိုင်ရေး အတွက် ကြိုးစားလာခဲ့သည်မှာ ကြာခဲ့ပြီဖြစ်ပါတယ်။ ဘယ်လောက်ကြာသလဲ ဆိုတော့ လက်ရှိအနေအထားအရ Java သမိုင်းမှာ အချိန်အကြာဆုံး ကြိုးပမ်းမှုလို့တောင် ပြောလို့ရပါတယ်။

Java Platform မှာ Modular System ကို ထည့်သွင်းဖို့ကြိုးစားခဲ့သည့်မှာ Java 7 ကထဲက ဖြစ်ပါသည်။ ပြောရမည်ဆိုရင် ၂၀၀၉ ခုနှစ်ကထဲက ဒီကြိုးစားမှုကြီးစတင်ခဲ့ပါသည်။ ဒါဟာလဲ Project Jigsaw ရဲ့ အစ မူလဘူတ လို့ ပြောရမည်ဖြစ်ပါသည်။

တကယ်တော့ Java SE 5 Release လုပ်ခဲ့တဲ့ ၂၀၀၅ ခု မှာကျင်းပခဲ့တဲ့ Java One မှာ စခဲ့တယ်လို့ ပြောရင်လဲ ရနိုင်ပါသည်။ Java SE 5 ကို Release လုပ်တဲ့ Java One Session တစ်ခုမှာ C++ ရဲ့ friend Feature လိုဟာမျိုး Java မှာ ရှိသင့်တယ်မဟုတ်ဘူးလားလို့ မေးခွန်းတစ်ခုတက်လာခဲ့ပါသည်။ အဲ့ဒီအချိန်ကထဲက Java ပတ်ဝန်းကျင်မှာ Modular System ကို ရေးသားနိုင်ဖို့ လိုအပ်တယ်ဆိုတဲ့ အတွေးဟာ သန္ဓေတည်ခဲ့တယ်လို့ ပြောလို့ ရမှာ ဖြစ်ပါတယ်။ ပြောရမယ်ဆိုရင် အဲဒီအချိန်တုန်းက Java 9 မပြောနဲ့ Java 6 တွေ Java 7 တွေမှာ ဘာတွေပါမယ်ဆိုတာကို ဘယ်သူမှ မသိသေးတဲ့ အချိန်ဖြစ်ပါတယ်။


JSR 277 And JSR 294

Java One နောက်ပိုင်းဖြစ်တည်လာခဲ့တာကတော့ Modular System နဲ့ ပတ်သက်ပြီး JSR ၂ ခု ပေါ်ထွက် လာခဲ့ရပါတယ်။

  • JSR 227
    Java Module System
  • JSR 249
    Improved Modularity Support in the Java Programming Language

JSR 277 ရဲ့ Speac Lead ကတော့ Stanley Ho ဖြစ်ပြီး၊ jar file အစား အခြား Packaging System တစ်ခုကို အစားထိုးဖို့ ကြိုးစားခဲ့ကြတာ ဖြစ်ပါတယ်။ JAva Module File ဆိုပြီး jam ကို အသုံးပြုမလားဆိုပြီး ကြိုးစားခဲ့ကြတာဖြစ်ပါတယ်။ ဒါပေမဲ့ ကန့်ကွက်သူ အများရှိခဲ့တာကြောင့် အကောင်အထည်ဖေါ်လို့ မရခဲ့ပါဘူး။ ဒါ့ကြောင့် JSR 277 ကို 2008 ခု အရာက်မှာ Cancel လုပ်တော့မယ်လို့ သတ်မှတ်ခဲ့ကြပါတယ်။ တကယ်တမ်း တရားဝင် Cancel ဖြစ်ခဲ့တာကတော့ ၂၀၁၆ ခုကျမှ ဖြစ်ပါတယ်။

JSR 249 ကတော့ Alex Buckley က ဦီးဆောင်ခဲ့တာဖြစ်ပြီး package အထက်မှာရှိတဲ့ namespace ကို အသုံးပြုကြရအောင် ဆိုပြီး အဆိုပြုခဲ့ကြတာဖြစ်ပါတယ်။ အစကတော့ Super Package ဆိုတာကို အသုံးပြု ကြရအောင် ဆိုပြီးနောက်ပိုင်းမှာ Module အဖြစ် ပြောင်းလဲ လာခဲ့ကြတာ ဖြစ်ပါတယ်။

နောက်ဆုံး JSR 249 တစ်ခုသာ ကျန်ခဲ့ပြီး Packaging ကိုပါ ဘယ်လိုလုပ်မယ်ဆိုတာကို ထည့်သွင်း စဉ်းစားပြီး Project Jigsaw ကို စတင်ဖြစ်ခဲ့ကြတာဖြစ်ပါတယ်။


Project Jigsaw

Open JDK မှာ Project Jigsaw စပြီး ပါဝင်ခဲ့တာကတော့ ၂၀၀၉ ခုကျမှ ဖြစ်ပါတယ်။ JSR 277 နဲ့ JSR 294 က တော်ရုံနဲ့ သတ်မှတ်နိုင်ခြင်း မရှိတဲ့ အတွက် Java SE ရဲ့ Chief Architect ဖြစ်တဲ့ Mark Reihold က Specification သတ်မှတ်နိုင်ရေးနဲ့ Implementation ရေးသားနိုင်ရေးအတွက် Project Jigsaw ကို စတင် ဖွဲ့စည်းခဲ့ရတာ ဖြစ်ပါတယ်။

ဒါပေမဲ့ Project Jigsaw ဟာ ထင်ထားတဲ့ အတိုင်း ဖြစ်မလာခဲ့ပါဘူး။ Java SE 7 ထွက်လာတဲ့ အခါမှာလဲ Project Jigsaw ဟာ Sleep ဖြစ်ခဲ့သလို့ Java SE 8 ထွက်တဲ့ အခါမှာလဲ ပါမလာခဲ့ပါဘူး။ အဓိက အကြောင်းလို့ ပြောကြတာက ဘယ်အတိုင်းအတာအထိ Module System ကို သတ်မှတ်ကြမလဲ ဆိုတာကို ဆုံးဖြတ်လို့ မရနိုင်ခဲ့တဲ့ အတွက်လို့ ဆိုကြပါတယ်။

ဒီလိုနဲ့ JSR 249 ဟာလဲ Cancel ဖြစ်ခဲ့ပြီး JSR 376 Java Platform Modular System အဖြစ် Specification တွေကို အသစ်ပြန်လည် သတ်မှတ်ခဲ့ကြပါတယ်။ တော်ရုံနဲ့ Project Jigsaw ကို Release မလုပ်နိုင်တဲ့ အကြောင်းအရင်းအနေနဲ့ အပြောများကြတာကတော့ ဘယ်အတိုင်းအတာအထိ Modular System အဖြစ်ပြောင်းကြမှာလဲ ဆိုတာကို သတ်မှတ်လို့ မရနိုင်ခဲ့ကြလို့ဆိုပြီး အပြောများကြပါတယ်။

လက်ရှိအသုံးပြုနေတဲ့ Component Framework တစ်ခုဖြစ်တဲ့ OSGi နဲ့ ပတ်သက်ပြီး ဘယ်လို လုပ်ကြမလဲ၊ Module Repository နဲ့ Version Management ကိုကောဘယ်လိုလုပ်ကြမလဲ၊ ပြီတော့ လုပ်ကြပြီဆိုရင်တောင် ဘယ်အတိုင်းအတာအထိလုပ်ကြမလဲ ဆိုတာကို ဆုံးဖြတ်လို့ မရခဲ့လို့ဖြစ်ပါတယ်။

၂၀၁၄ ခု Java SE 8 ကို Release လုပ်တဲ့ အခါ Project Jigsaw ဟာ Sleep ဖြစ်ခဲ့ရပြန်တဲ့ အတွက် Project Jigsaw နဲ့ပတ်သက်ပြီး တောင်းဆိုမှုတွေဟာ ပိုပြီးများပျားလာပြီး Project Jigsaw ရဲ့ Draft Plan ကို သတ်မှတ်ခဲ့ကြပါတယ်။ ဒါ့ကြောင့်လဲ Project Jigsaw မှာလုပ်မယ်လို့ ရည်မှန်းထားတဲ့ Function တွေထဲက အနဲဆုံးအနေအထားကိုပဲ Release လုပ်တော့မယ်လို့ သတ်မှတ်ခဲ့ကြပုံရပါတယ်။ ဒီလိုနဲ့ Project Jigsaw ဟာ Java 9 နှင့်အတူ ၂၀၁၇ ခု စက်တင်ဘာလ ၂၁ ရက်နေ့မှာ Release လုပ်လာခဲ့ပါတော့တယ်။


Goals for Project Jigsaw

Project Jigsaw ကို စတင်ခဲ့တဲ့ အဓိက ရည်ရွယ်ချက်တွေကတော့ အောက်ပါအတိုင်းဖြစ်ပါတယ်။

  • Make it easier for developers to construct and maintain libraries and large applications
  • Improve the security and maintainability of Java SE Platform Implementations in general, and the JDK in particular
  • Enable improved application performance;
  • Enable the Java SE Platform, and the JDK, to scale down for use in small computing devices and dense cloud deployments
  • Project Jigsaw ရဲ့ Official Page မှာလဲ အသေးစိတ်လေ့လာနိုင်ပါတယ်။
    Open JDK Project Jigsaw Project

    ဆက်ပါဦးမည်။
    မင်းလွင်

    No comments:

    Post a Comment