Java ပလက်ဖောင်း

**Javaပလက်ဖောင်း** ()သည် Java ဖြင့် ရေးသားထားသော ပရိုဂရမ်များကို ရေးသားရာတွင်လည်းကောင်း၊ အလုပ်လုပ်စေရာတွင်လည်းကောင်း အသုံးပြုနိုင်သော ဆော့ဖ်ဝဲအစုအဝေးကို ခေါ်ဆိုသော အမည်တစ်မျိုးဖြစ်၏။

## အကျဉ်းချုပ် 
Java ပရိုဂရမ်များသည်၊ Operating Systemနှင့် Hardwareများအပေါ်တွင် မမှီခိုသောByte Code ဟု အမည်ရသော ကြားခံ ကုဒ်များအနေဖြင့် ရေးသားထားကြ၏။ ထို့အတွက် Java ပရိုဂရမ်ကို အလုပ်လုပ်နိုင်စေရန် လိုအပ်သော ဒြပ်မဲ့စက်（）နှင့်၊ လိုအပ်သော အခြေခံ လိုင်ဘရီများနှင့်ကွန်ပိုင်းလာများကို ပတ်ဝန်းကျင်အသီးအသီးအပေါ်တွင် ပြင်ဆင်ထားပါက၊ Java ပရိုဂရမ်များကို ထိုပတ်ဝန်းကျင် အသီးသီးတွင် တူညီစွာ အလုပ်လုပ်နိုင်စေမည် ဖြစ်သည်။ Java ပလက်ဖောင်းဆိုသည်မှာ ဤကဲ့သို့သော အလုပ်လုပ်ပတ်ဝင်းကျင် နှင့် ရေးသားနိုင်သော ပတ်ဝင်းကျင်ကို ဆိုလိုသည်။

Java ပလက်ဖောင်းအားJava၊ Java Applet၊ Java Runtime Environment၊ JVM၊ မိုဘိုင်းနှင့်Embeddedကိရိယာသုံး Java(Java ME)၊ Java Web Start၊ Javaဖြင့်ရေးသားထားသော Applicationများအားလုံးကို  **Java** ဟု ခေါ်ဆိုလေ့ရှိ၏။

Java ပလက်ဖောင်းတွင် ဗားရှင်းအမျိုးမျိုးရှိပြီး၊ အခြေခံအားဖြင့်Desktop Machine သုံး Java Standard Edition (Java SE)၊ Web ဆာဗာ များအတွက် Java Enterprise Edition (Java EE), Smart Phone များကဲ့သို့သော မိုဘိုင်းလျှပ်စစ်ပစ္စည်းသုံး Java Micro Edition (Java ME) တို့သည် ထင်ရှားကြ၏။ ၂၀၁၁ခု ၈လပိုင်း လက်ရှိအခြေအနေတွင်၊ Java ၏ ဗားရှင်းမှာ 1.7.0 ဖြစ်၏။ ဤဖော်ပြပုံမှာ Developing Version ၏ ဖော်ပြပုံဖြစ်ပြီး၊ ပြင်ပတွင်တော့ ဗားရှင်း 7 ဟု ဖော်ပြလေ့ရှိ၏။

Java ပလက်ဖောင်းသည် အမျိုးမျိုးသော ပရိုဂရမ်များဖြင့် ဖွဲ့စည်းထားပြီး၊ ထိုပရိုဂရမ်များမှ ဖန်ရှင်များအပေါ်တွင်မှုတည်၍ အသီးသီးသော အစိတ်အပိုင်း(ကွန်ပိုးနန့်)များအနေဖြင့် ပံ့ပိုးပေးလျက် ရှိ၏။ ဥပမာအားဖြင့်၊ JavaSrc ကုဒ် ကို JavaByte ကုဒ် အဖြစ်ပြောင်းလဲပေးနိုင်သည်မှာ Java ကွန်ပိုင်းလာ ဖြစ်ပြီး၊ ၎င်းသည် Java Development Kit (JDK) ၏ အစိတ်အပိုင်းတစ်ခု အနေဖြင့် ပါဝင်သည်။ အလုပ်လုပ်ပတ်ဝင်းကျင် ဖြစ်သောJava Runtime Environment (JRE) သည် ပုံမှန်အားဖြင့်၊ အလုပ်လုပ်နေစဉ် Byte ကုဒ်များကို သဘာဝကုဒ်အဖြစ် ပြောင်းလည်းပေးနိုင်သောJust In Time ကွန်ပိုင်းလာအဖြစ် လုပ်ဆောင်လျက် ရှိ၏။ တဖန် Java Byte ကုဒ်များတွင် အသင့်ကွန်းပိုင်းလုပ်ပြီးသား အထောက်အကူပြု ပရိုဂရမ် (လိုင်ဘရီ) များလည်းပါဝင်ကြ၏။ အပလီကေးရှင်းကို ဖြန့်ဝေရာတွင်လည်း Java Applet အဖြစ် Web Page တွင် ထည့်သွင်းခြင်း အပြင် နည်းအမျိုးမျိုးရှိကြ၏။ ထို့အပြင် JDK 6 Documentation တွင် ဖော်ပြထားသကဲ့သို့ နည်းအမျိုးမျိုးကိုလည်း အသုံးပြုနိုင်သည်။

ပလတ်ဖေါင်းများထဲတွင် အဓိကကြသော အစိတ်အပိုင်းများမှာ  Java ကွန်ပိုင်းလာ၊ အခြေခံလိုင်ဘရီများ နှင့် Java Byte ကုဒ်များကို အလုပ်လုပ်စေနိုင်သော Java ဒြပ်မဲ့စက် တို့ပဲ ဖြစ်ကြ၏။

## Java Virtual Machine (JVM) 
Java ပလက်ဖောင်: ၏ အဓိကနေရာကို တာဝန်ယူထားသည်မှာ Java ဘိုက်ကုဒ်များကို အလုပ်လုပ်စေနိုင်သော「ဒြပ်မဲ့စက်ပစ္စည်း('**)」ပင် ဖြစ်၏။ Java ဘိုက်ကုဒ်များသည် မည်သည့်ပလက်ဖောင်းမျိုးမှာမဆို တူညီစွာအလုပ်လုပ်နိုင်ပေသည်။ JIT ကွန်ပိုင်းလာသည် Java ဒြပ်မဲ့စက်(Java virtual machine) ထဲတွင် အလုပ်လုပ်နေပါသည်။ JIT ကွန်ပိုင်းလာသည် ပရိုဂရမ်ကို အလုပ်လုပ်စေရာတွင် Java ဘိုက်ကုဒ်များကို ပရိုဆက်ဆာအမိန့်ပေး သဘာဝ စာသားများအဖြစ် ဘာသာပြန်ပေးပြီး၊ ပရိုဂရမ် အလုပ်လုပ်နေစဉ် မမ်မိုရီအပေါ်တွင် သဘာဝကုဒ်များကို ထိမ်းသိမ်းပေးထားနိုင်သည်။

ကြားခံဘာသာရပ်တစ်ခုအနေဖြင့် ဘိုက်ကုဒ်ကို အသုံးပြုခြင်းသည်၊ ဒြပ်မဲ့စက်ကို ပြင်ဆင်ထားသော မည်သည့်စက်မျိုးပေါ်မှာမဆို Java ပရိုဂရမ်များကို အလုပ်လုပ်စေနိုင်မည် ဖြစ်သည်။  JIT ကွန်ပိုင်းလာကို အသုံးပြုခြင်းသည်၊ စတင်အလုပ်လုပ်စေသည့်အခါတွင် အနည်းငယ်ကြန့်ကြာမှုကို ဖြစ်ပွားစေသော်လည်း၊ တစ်ကြိမ် အလုပ်လုပ်ပြီးပါက JIT ကွန်ပိုင်းလုပ်ပြီး ဖြစ်ပါသဖြင့်၊ Java အပလီကေးရှင်းများကို သဘာဝ ကုဒ်များကိုအသုံးပြုသော တခြားပရိုဂရမ်စကားသုံးများကဲ့သို့ လျင်မြန်စွာ အသုံးပြုနိုင်မည် ဖြစ်သည်။ 

JREဗားရှင်း 1.1 နောက်ပိုင်း၊ Sun ၏ Java VM ဖွဲ့စည်းပုံသည်အင်တာပရက်တာ သက်သက်သာမဟုတ်ပဲ၊JIT ကွန်ပိုင်းလာ ကိုလည်း ထည့်သွင်းအသုံးပြုလာကြသည်။

## ကလပ်စ်လိုင်ဘရီများ 
ယနေ့ ခေတ်မှီ OS များတွင်၊ ပြန်လည်အသုံးပြုနိုင်သော ကုဒ်များကို စုဝေးပြင်ဆင်ထားခြင်းအားဖြင့် ပရိုဂရမ်များကို လွယ်ကူစွာရေးသားနိုင်ရန် ပံ့ပိုးထား၏။ ထိုကုဒ်များအား ပုံမှန်အားဖြင့် အပလီကေးရှင်းက အလုပ်လုပ်စဉ် ခေါ်ယူအသုံးချနိုင်သော လိုင်ဘရီများအနေဖြင့် ပံ့ပိုးထား၏။ Java ပလက်ဖောင်းသည် သီးခြား OS များအပေါ်တွင် မှီခိုခြင်းမရှိပါသဖြင့်၊ Java အပလီကေးရှင်းများသည် အထက်ပါ OS မှပံ့ပိုးထားသော လိုင်ဘရီများကို တိုက်ရိုက်အသုံးပြုနိုင်ခြင်း မရှိပေ။  ထို့အတွက် Java ပလက်ဖောင်းသည် ကိုယ်ပိုင် ကလပ်စ်လိုင်ဘရီများကို သီးသန့်ပြင်ဆင်ထားပြီး၊ ယနေ့ ခေတ်မှီ OS များတွင် ပုံမှန် အသုံးပြုနိုင်သော ဖန်ရှင်များကို ထပ်တူအသုံးပြုနိုင်စေသည်။

လက်ရှိအချိန်တွင် JRE တွင်ပါဝင်သော အခြေခံ လိုင်ဘရီများသည် ယခင်ကကဲ့သို့ပင် အခမဲ့ ဆော့ဖ်ဝဲစစ်စစ်ကြီးများ မဟုတ်သေးပေ။ Free Software Foundation ဖြစ်မြောက်ရေးအတွက် ကြိုးပမ်းမှု့များကို လည်းတွေ့နေရသည်။ ထိုပရိုဂျက်ကို GNU Classpath ဟု ခေါ်ဆိုသည်။ ၂၀၀၆ခု ၁၁လ ၁၃ရက်နေ့တွင်၊ Sun သည် Java ၏ မှုရင်းကုဒ်အားလုံးကို ၂၀၀၇ခု ၃လပိုင်းတွင်GNU General Public License အောက်တွင် ထုတ်ပြန်သွားမည် ဖြစ်ကြောင်း ထုတ်ပြန်ခဲ့လေ၏။

## ဘာသာစကား 
Java ဟုအမည်ရသော စကားလုံးသည် ပုံမှန်အားဖြင့် Java ပလက်ဖောင်းအပေါ်တွင် ရေးသားထားသော Java ပရိုဂရမ်မင်းဘာသာရပ်ကို ညွှန်းဆိုသည်။ ပရိုဂရမ်မင်းဘာသာရပ်တွင် များသောအားဖြင့် ပလက်ဖောင်းဟုခေါ်သော စကားလုံးနှင့် သိပ်ပြီး မပတ်သက်တတ်ကြသော်လည်း၊ Java ပရိုဂရမ်မင်းဘာသာရပ်သည် Java ပလက်ဖောင်းအား အဓိကအဖြစ် သတ်မှတ်ထားသည်ကို တွေ့မြင်ရ၏။ 

ဤသို့ဖြစ်ရခြင်းအကြောင်းအရင်းမှာ၊ Third Party များသည် Java ပလက်ဖောင်းကို အခြေပြုသောကွန်ပိုင်းလာနှင့်အင်တာပရက်တာများကို ထုတ်လုပ်ခဲ့သောကြောင့် ဖြစ်၏။ အချို့သည် ပုံစံသစ် ပရိုဂရမ်မင်းဘာသာများအဖြစ်လည်းကောင်း၊ အချို့သည် Java ပုံစံပွားများအဖြစ်လည်းကောင်း ပြောင်းလဲ ခဲ့ကြ၏။

### ပုံစံပွားများ 
* AspectJ, Aspect Oriented Programming ကို အသုံးပြုနိုင်သော Java
* Generic Java (GJ)၊ တို့ သည် Java SE 5.0 တွင် တရားဝင် Java ၌ ပါဝင်လာခဲ့၏။
### ဘာသာရပ် 
* Groovy
* BeanShell
* Jython, Python Python-Java Byte Code ကွန်ပိုင်းလာ jythonc အပါအဝင်ဖြစ်သော အင်တာပရက်တာ
* NetREXX
* Nice
* Pizza
* Scala
* Clojure
* SISC
* Kawa
* Armed Bear Common Lisp
* JRuby, Ruby အင်တာပရက်တာ
* Sleep, Perl, Objective-C နှင့် အားသာချက်များကို အသုံးပြုထားသော အင်တာပရက်တာ
* Rhino, JavaScript  အင်တာပရက်တာ
* Noop

## ပုံစံတူ ပလက်ဖောင်းများ 
Java ၏ အောင်မြင်မှု့နှင့် ခံယူချက်ဖြစ်သော write once, run anywhereသည်၊ 2002ခုနှစ်တွင် စတင်ပေါ်ပေါက်လာခဲ့ပြီးနောက်၊ Microsoft .NET ပလက်ဖောင်း အစရှိသော ပုံစံတူ ပလတ်ဖေါင်းများကို ဖြစ်ပေါ်လာစေပြီး၊ ထိုပလက်ဖောင်းများသည်လည်း Java ကဲ့သို့ပင် အောင်မြင်မှု့များကို ရရှိခဲ့ကြ၏။ သို့ရာတွင်.NET အားအပြည့်အဝ အသုံးပြုနိုင်ရန်မှာMicrosoft Windows ကို အသုံးပြုမှရရှိနိုင်မည် ဖြစ်သည်။ Java သည် အတော်များများသော ပလတ်ဖေါင်းများအပေါ်တွင် ပြည့်စုံစွာအလုပ်လုပ် နိုင်မည် ဖြစ်သည်။ သို့ရာတွင် .NET သည် ပရိုဂရမ်မင်းဘာသာရပ် အတော်များများကို ကြားခံဘာသာအဖြစ် ပြောင်းလည်းပေးနိုင်သော ဘာသာရပ်အပေါ်တွင် မှီခိုခြင်းမရှိသော အသုံးချ ပရိုဂရမ်အစုအဝေး အပေါ်တွင် အဓိကထား အားစိုက်ထားလေ၏။ .NET သည် ဘာသာရပ်အကြားတွင် အပြန်အလှန်အသုံးပြုနိုင်မှု့အပေါ်၌ Java ထက် အောင်မြင်နေသည်ကို တွေ့ရ၏။ သို့ရာတွင် Java တွင်လည်းJython、Groovy、JRuby အစရှိသော Java ဒြပ်မဲ့စက် ပေါ်တွင်အလုပ်လုပ်နိုင်သော ဘာသာရပ်များ များစွာထွက်ပေါ်လာပြီဖြစ်၏။

.NET တွင်လည်းVisual J#အစရှိသော Java ကို အသုံးပြုနိုင်သော ဘာသာရပ်များ ကိုပြင်ဆင်ထားသော်လည်း၊ ၎င်းအရာများသည် တရားဝင် Java နှင့် အပြည့်အဝ တူညီခြင်းမရှိပဲ၊ ပြင်ဆင်ထားသော လိုင်ဘရီများမှာလည်း၊ ဟောင်းနွမ်းပြီဖြစ်သော ဗားရှင်း**JDK 1.1''' အပေါ်တွင် အခြေခံထား၏။ အကြောင်းမှာ Visual J# သည် .NET အပေါ်တွင် အဓိကနေရာကျသော ဘာသာရပ်တစ်မျိုးမဟုတ်သောကြောင့်ဖြစ်၏။ Java မှတဆင့် .NET ပလက်ဖောင်းအပေါ် ပြောင်းရွှေ့ပြီး အသုံးပြုရန်သက်သက် ပြင်ဆင်ထားသော ဘာသာရပ်တစ်မျိုးဖြစ်သောကြောင့် ဖြစ်၏။

အခြားတစ်ဘက်တွင် Open Source Community မှ ရေးသားထားသောIKVM.NETဟု အမည်ရသောကြားခံ ပတ်ဝင်းကျင်အပေါ်တွင် အလုပ်လုပ်နိုင်သော Java ဒြပ်မဲ့စက် တစ်မျိုးက ပေါ်ပေါက်လာပြီး၊ အပြန်အလှန်အသုံးချနိုင်မှု့များဘက်တွင် လွန်စွာတိုးတက်လာသည်ကို တွေ့ရသည်။

## ကိုးကား