ဂျာဗား (ပရိုဂရမ်မင်းဘာသာစကား)
Java(ဂျာဗား)အား အကျဉ်းချုပ်အဓိပ္ပာယ်ဖွင့်ဆိုရမည်ဆိုလျှင် Object Orientedကို အခြေခံသော ပရိုဂရမ်မင်း ဘာသာရပ်တစ်ခုဖြစ်ပြီး၊ Java ဘာသာရပ်ဖြင့် ရေးသားထားသော ပရိုဂရမ်များကို အလုပ်လုပ်စေနိုင်သည့် ပတ်ဝန်းကျင် ကိုလည်း Java ဟုခေါ်ဆိုလေ့ရှိသည်။ ဤရှင်းလင်းချက်တွင် ပရိုဂရမ်မင်း ဘာသာရပ် တစ်ခုဖြစ်သော Java မှအစပြု၍ ၎င်းနှင့်ပတ်သက်သော နည်းပညာရပ်များ၊ ဒီဇိုင်းရေးသားပုံ၊ ခံယူချက်ဝါဒများနှင့် Java ပရိုဂရမ်များကို အလုပ်လုပ်စေသော Java ပလက်ဖောင်း စသည့် ထိုအကြောင်းအရာများနှင့်ပတ်သက်ပြီး ဖော်ပြသွားမည်ဖြစ်သည်။ အကျဉ်းချုပ်Java သည် ရှိပြီးသား ပရိုဂရမ်မင်း ဘာသာရပ်များ၏ ကောင်းကွက်များကို လက်ခံရယူပြီး၊ အားနည်းချက်များကို ပြင်ဆင်ဖြည့်စွက်ခြင်းအားဖြင့် ဖြစ်တည်လာခဲ့သော ပရိုဂရမ်မင်းဘာသာရပ် တစ်မျိုးဖြစ်သည်။ Java ၏ ထူးခြားချက်များမှာ အောက်ပါအတိုင်း ဖြစ်၏။
လက်ရှိ Java ၏ နည်းပညာများသည် ကွန်ပျူတာနည်းပညာ၏ အခြေခံအဆင့်များမှ အစပြု၍၊ အဆင့်မြင့်နေရာများအထိ ကျယ်ပြန့်စွာ အသုံးပြု နေသည်ကို တွေ့ရ၏။ လျှပ်စစ်ပစ္စည်းသုံး အသေးစားစစ္စတမ်များနှင့် လက်ဆောင် ကိရိယာများ(လက်ဆောင်ဖုန်း・PHSနှင့်PDA・Smart Phone)အစရှိသော စစ္စတမ်များမှအစ၊ လုပ်ငန်းကြီးများ၏အိုင်တီစစ္စတမ်များကို ပံ့ပိုးပေးနေသော ဆာဗာများနှင့် စူပါ ကွန်ပျူတာများ အထိ အလွန်ကျယ်ပြန့်သော နေရာများတွင် Java ကို အသုံးပြုထားကြသည်။ ရှင်းလင်းချက်ပရိုဂရမ်မင်းဘာသာရပ် Java နှင့် Java ပလက်ဖောင်းအား 1990ခုနှစ်အစပိုင်းတွင် Sun Microsystems တွင် James Gosling အမှူးပြုသော ပညာရှင်များက တီထွင်ရေးသားခဲ့ကြသည်။ လက်ရှိတွင် Java နည်းပညာ၏ အခြေခံပြုခြင်းလုပ်ငန်းများသည် Java Community Process (JCP) ဟုအမည်ရသော အဆင့်များဖြင့် ပြုပြင်ရေးသားနေကြ၏။ Java နှင့် ပတ်သက်သော အမည်နှင့် အဓိပ္ပာယ်မှာ အသုံးပြုပုံ အပေါ်တွင်မှုတည်ပြီး အမျိုးမျိုး ကွဲပြားခြားနား၏။ Sun Microsystemsသည်၊ Java နည်းပညာ(Java နည်းပညာ、Java technology)ဟု ခေါ်ဆိုအသုံးပြုပြီး၊ တဘက်တွင် Java ၏ အမျိုးမျိုးသော နည်းပညာများ၏ အမည်အဖြစ်လည်း Java ဟုခေါ်ဆိုအသုံးပြုလေ့ရှိ၏။ ပရိုဂရမ်မာ အများစုသည်၊ ပရိုဂရမ်မင်းဘာသာရပ် ဟူသော အဓိပ္ပာယ် အဖြစ် Java ကို အသုံးပြုလေ့ရှိ၏။ Java ၏ ပတ်ဝင်းကျင်သည်၊ Java ပလက်ဖောင်း (Java Runtime Environment; JRE) ဟု ခေါ်ဆိုလေ့ရှိ၏။ Java ၏ အခြေခံ ရေးသားနိုင်သော ပတ်ဝင်းကျင်ကိုJava Development Kit (Java Development Kit; JDK) ဟု ခေါ်ဆို၏။ Java သည် ကလပ်စ်ကို အခြေခံသော Object Oriented ပရိုဂရမ်မင်းဘာသာရပ် တစ်ခု ဖြစ်၏။ Java ၏ ပရိုဂရမ်သည်၊ ကလပ်စ်များဖြင့် ဖွဲ့စည်းထားပြီး၊ ပရိုဂရမ်ကို အလုပ်လုပ်စေသောအခါ၊ ထို ကလပ်စ်များကို အခြေခံပြီး ပြုလုပ်ထားသော ရုပ်ဝတ္တု(Object) များက အပြန်အလှန်ဆက်သွယ်ခြင်း အားဖြင့် အလုပ်လုပ်စေသည်။ Java သည် အမွေဆက်ခံခြင်း သဘောတရားကို အသုံးပြုနိုင်ပြီး ကလပ်စ် တစ်ခုမှ အခြားသော ကလပ်စ် ၏ အချက်အလက်နှင့် လုပ်ဆောင်ချက်များကို အမွေဆက်ခံခြင်းဖြင့် ပြန်လည်အသုံးပြုနိုင်၏။ အမွေဆက်ခံရာတွင် တစ်ခုတည်းမှသာ အမွေဆက်ခံနိုင်မည် ဖြစ်၏။ သို့ရာတွင် ကလပ်စ်(Object)တစ်ခုမှ၊ တစ်ခုထက်မကသောအင်တာဖေစ်(Interface)များကို ပံ့ပိုးပေးနိုင်သည်။ Java တွင်အသုံးပြုသော အချက်အလက်/Object ပုံစံ(Data Type)သည် ခိုင်မာသောStrong Type ပုံစံကို အသုံးပြုထား၏။ ဤကဲ့သို့ Java ၏ကွန်ပိုင်းလာ နှင့် အသုံးချ ပတ်ဝင်းကျင်သည်၊ အချက်အလက်ပုံစံများ၏ စစ်မှန်ချက်ကို စစ်ဆေးခြင်းအားဖြင့်၊ ပရိုဂရမ်က မှန်ကန်စွာအလုပ်လုပ်နိုင်ခြင်းနှင့် လုံခြုံစွာ အလုပ်လုပ်နိုင်ခြင်းတို့ အပေါ်တွင် အာမခံပေးနိုင်သည်။ Java သည် ခြွင်းချက်လုပ်ဆောင်ချက်စနစ်ကို ပြင်ဆင်ထားပြီး ပရိုဂရမ် အလုပ်လုပ်နေစဉ် ဖြစ်ပွားတက်သော မျှော်လင့်မထားတတ်သော အမှားများကို၊ လုံခြုံစိတ်ချသောနည်းလမ်းဖြင့် လုပ်ဆောင်စေနိုင်ပြီး၊ ပရိုဂရမ်တစ်ခုကိုလည်း ရှင်းလင်းစွာ ရေးသားနိုင်သည်။ Java မှာတော့ သန့်ရှင်းသော မန်မိုရီမော်ဒယ်ကို အသုံးပြုထားသောကြောင့်၊ ပရိုဂရမ်မာက မန်မိုရီထိမ်းသိမ်းမှု့ အပေါ်တွင် သက်သာစေပေသည်။ Java Object များသည် မန်မိုရီအတွင်းရှိHeap Memory နေရာကို အသုံးပြုကြ၏။ မန်မိုရီထိမ်းသိမ်းခြင်းသည်Java ဒြပ်မဲ့စက်(JVM)တွင် ပူးတွဲပါဝင်သော အမှိုက်သိမ်းစနစ်ဖြင့် ထိန်းသိမ်းထားနိုင်၏။ C++ မှာတော့ Heap Memory အပေါ်တွင် နေရာချထားသော Object များကို အသုံးမလိုသည့်အခါ ဖျက်စီးပစ်ရန် ပရိုဂရမ်မာက တာဝန်ယူ၍ လုပ်ဆောင်ရန် လိုအပ်ခဲ့ပေသည်။ ဤအချက်သည် C++ ပရိုဂရမ်မာအတွက် ဝန်ထုပ်တစ်ခုအနေနဲ့ ဖြစ်ခဲ့ပြီး၊ ရှုပ်ထွေးပြီး မှားယွင်းလွယ်တတ်ပေသည်။ Java မှာတော့ အမှိုက်သိမ်းစနစ် ကို ပိုင်ဆိုင်သောကြောင့် မန်မိုရီကို ထိနိးသိမ်းရန်ဝန်ထုပ် မရှိပါသဖြင့် ပရိုဂရမ်မာအတွက် လွန်စွာမှအဆင်ပြေစေခဲ့သည်။ Java၏ ရေးသားပုံသည်၊ Cနှင့်C++ မှ အတော်များများကို အတုယူခဲ့၏။ တဖန် C/C++ တွင် အသုံးပြုသော အခြေခံနေရာများကို ထိန်းသိမ်းအသုံးပြုနိုင်သောPointerကို အသုံးမပြုပါဟုဆိုသော်လည်း၊ လက်တွေ့မှာတော့ C/C++ ၏ Pointer Model နှင့်မတူသော၊ Pointer Model ကို Java တွင်လည်း အသုံးပြုထားသည်။ ဥပမာအားဖြင့် Class Instance နှင့် Array များတွင် Pointer ကို အသုံးပြုထားသည်။ "ClassName a = new ClassName();"နှင့် "ClassName b;"ပြန်လည် သတ်မှတ်ပြီး "b = a" အစားထိုးခြင်းအားဖြင့် b သည် a ၏ ပိုင်ဆိုင်မှု့များ ကို အသုံးချနိုင်မည် ဖြစ်သည်။ ဆိုလိုသည်မှာ a,b တွင် လိပ်စာများကို သတ်မှတ်ထားခြင်း ဖြစ်၏။ ဖော်ပြပါအတိုင်း Instance ၏ အမည်တွင် ဗားရှင်း1.2 နှင့် မတိုင်မှီက Object Handle(pointer ၏ pointer)၊ ဗားရှင်း1.3 ၏ နောက်ပိုင်းတွင် pointer ကို အသုံးပြုထားသည်။ ထို့ကြောင့် Java သည် ယနေ့တိုင် Pointer နှင့် ဖြတ်ချင်သော်လည်း မပြတ်နိုင်သော အနေအထား တစ်ခုဖြစ်နေရသည်။[၄] Java သည်ပလက်ဖောင်းအပေါ်တွင် မှီခိုခြင်း မရှိစေရ ဟူသည်ကို ဦးတည်ချက်ထားပြီး၊ ဗားရှင်း တစ်ခုနှင့်တစ်ခု ကြားတွင်လည်း အပြန်အလှန်အသုံးချနိုင်မှု့အပေါ် သတိပြု၍ တီထွင်ဖန်တီးမှု့များ ပြုလုပ်လျက် ရှိ၏။ Java နည်းပညာကို အသုံးပြုခြင်းအားဖြင့်၊ ပလက်ဖေါင်းအပေါ်တွင် မှီခိုခြင်းမရှိသော အပလီကေးရှင်း ဆော့ဖ်ဝဲ ကို ရေးသား၊ အသုံးပြုနိုင်မည် ဖြစ်သည်။ ယနေ့ပရိုဂရမ်မင်းဘာသာရပ်အတော်များများသိ ပလက်ဖေါင်း (CPU) အပေါ်တွင် မှီခိုခြင်းရှိသော သဘာဝကုဒ်များ အဖြစ်ကွန်ပိုင်းလုပ်ခြင်းကို ပုံစံဖြင့် ဒီဇိုင်းရေးသားထားကြ၏။ သို့ရာတွင် Java သည် အထက်ပါ ဘာသာရပ်များနှင့် မတူပဲ ကြားခံဘာသာ(Byte Code)အဖြစ် ကွန်ပိုင်းလုပ်ပြီး၊Java VMတွင် အလုပ်လုပ်နိုင်စေရန် ဒီဇိုင်းရေးသားထား၏။ အတော်များများသည် Just In Time ကွန်ပိုင်းပုံစံ ကို အသုံးပြုထားကြသည်။ ပလက်ဖေါင်းအပေါ်တွင် မမှီခိုခြင်းနှင့် ဗားရှင်းကြားတွင် အပြန်အလှန်အသုံးပြုနိုင်ခြင်း တို့သည်၊ လက်ရှိအနေအထားအရ အပြည့်အဝ အကောင်ထည်ဖော်နိုင်ခြင်း မရှိသေးပဲ ပြဿနာများလည်း အနည်းငယ်ရှိနေပါသေးသည်။ Java တွင်Thread ကို ဘာသာရပ်၏ အခြေခံအသုံးပြုပုံအနေဖြင့် သတ်မှတ်ထားပြီး၊ Multi Thread ဖြင့်Parallel Computing ကို အခြားသော ကွန်ပျူတာဘာသာရပ်များနှင့် စာလျှင် လွန်စွာလွယ်ကူစွာ အသုံးပြုနိုင်မည် ဖြစ်သည်။ Parallel Computingသည်၊ လုပ်ဆောင်ချက်များကို တစ်ကြိမ်တည်းတွင် လုပ်ဆောင်နိုင်သည့် ပုံစံဖြစ်၏။ တဖန်Thread သည်၊Process ထက် ပေါ့ပါးသေးငယ်၏။ Java သည် ပြည့်စုံသော လိုင်ဘရီ များကို အသုံးပြု၍၊ကွန်ပျူတာ ကွန်ယက်ကို အသုံးပြုနိုင်သော ဆော့ဖ်ဝဲကို၊ အချိုးကျကျ ဖန်တီး နိုင်မည်ဖြစ်သည်။ Java သည် ဦးဆုံးဗားရှင်းကတည်းက၊ TCP/IP၏ Library ကို ပြင်ဆင်ထားခဲ့၏။ Distributed Object ပတ်ဝင်းကျင်အတွက်လည်း (Java RMI, CORBA) အပေါ်တွင် အခြေခံသော ဆော့ဖ်ဝဲများကိုလည်း အချိန်အတော်စောစောကတည်းက ဖန်တီးရေးသားနိုင်ခဲ့၏။ ယနေ့အခါတွင် အမျိုးမျိုးသောNetwork Protocol များ၏ အဆင့်မြင့် လိုင်ဘရီများကို ပြင်ဆင်ထားပြီးဖြစ်၏။ ပြီးပြည့်စုံသော Network ဖန်ရှင်များနှင့် အောက်ဖော်ပြပါ XML ကို တွဲဖက် အသုံးပြုခြင်းအားဖြင့်၊ အဆင့်မြင့် System များကို တည်ဆောက်နိုင်သော ပရိုဂရမ်မင်းဘာသာရပ် တစ်ခုဖြစ်၏။ XML ကို အသုံးပြုနိုင်သော function များကိုလည်း အချိန်စောစောကတည်းက ပြင်ဆင်ခဲ့၏။ XML သည် ယနေ့နယ်ပယ်အတော်များများတွင် အသုံးပြုနိုင်သော အချိုးကျ စာရေးစနစ် နည်းပညာတစ်ခုဖြစ်၏။ ယနေ့ အချိန်အခါတွင် XML Processor နှင့်XSLT Processor များသည် Java အခြေခံ Library တွင် ထည့်သွင်းထားပြီး ဖြစ်၏။ Java သည်လုံခြုံရေး ကို အဓိကထားပြီး ဒီဇိုင်းရေးထားသောSand Box မော်ဒယ်တွင် အခြေခံသော လုံခြုံရေးစနစ်ကို ပြင်ဆင်ထား၏။ လုံခြုံရေးစနစ်ကို မှန်ကန်စွာအသုံးပြုထားသော Java အသုံးချ ပတ်ဝင်းကျင်ကို အသုံးပြုခြင်းအားဖြင့်၊ အဝေးတစ်နေရာတွင် ရှိသော Java အသုံးချကုဒ်များကို လုံခြုံစွာအသုံးပြုနိုင်မည် ဖြစ်သည်။(Java Applet) တဖန်Namespace စနစ်ကို အသုံးပြုထားသော ဘာသာရပ်တစ်ခုဖြစ်ပြီး၊ Library နှင့် အပလီကေးရှင်း တွင်ပါဝင်သော Java များ(ကလပ်စ် နှင့် အင်တာဖေ့စ်)သည်၊ Package (Java) ဟု ခေါ်သော အဆင့်ဆင့်ခွဲခြား ထိန်းသိမ်းမှု့စနစ်ဖြစ် ခွဲခြားအသုံးပြုနိုင်မည်ဖြစ်သည်။ ယနေ့ခေတ်တွင် Java နှင့် ပတ်သက်ပြီး ဝေဖန်ချက်များလည်း မနည်းပေ။ အချို့သော ဝေဖန် ရှုတ်ချမှု့များနှင့်ပတ်သက်ပြီး၊ Sun နှင့် JCP တွင်ပါဝင်ခဲ့သော အဖွဲ့ဝင်များ၏ အားထုတ်မှု့များကြောင့်၊ Java ၏ ပြုပြင်ပြောင်းလည်းမှု့များကို ပြုလုပ်လျက် ရှိသည်။ တပြိုင်နက်တည်းမှာပင် ဆော့ဖ်ဝဲ ရေးသားသူအတော်များများက Java နှင့် ပတ်သက်ပြီး ကျယ်ကျယ်ပြန့်ပြန့် အသုံးပြုနိုင်သော ထူးချွန်သော ပရိုဂရမ်မင်းဘာသာရပ်တစ်ခု အဖြစ် အသိအမှတ်ပြုထားကြသည်။ JavaScript (ECMAScript) သည် Java နှင့် တိုက်ရိုက်ပတ်သက်ခြင်းမရှိသော်လည်း၊ Java နှင့်ဆင်တူသော အမည်နှင့် ရေးသားပုံကို အသုံးပြုထားသည်။ ရေးသားပုံမှာ ဦးဆုံး J စာလုံးတစ်လုံးတည်းသာ စာလုံးကြီး [Java] သည် အမှန်ဖြစ်၏။ [JAVA] သည်မှန်ကန်သော ဖော်ပြပုံမဟုတ်။ သမိုင်းဤနေရာတွင် အောက်ပါ အစီအစဉ်အတိုင်း Java ၏ သမိုင်းကြောင်းနှင့် လက်ရှိကို ဖော်ပြသွားပါမည်။
စတင်ခဲ့ပုံ![]() Duke သည်2006ခုနှစ် Java အား Open Source အဖြစ် ထုတ်ပြန်ခဲ့သည်နှင့် အတူBSDလိုင်စဉ်သတ်မှတ်၍ Open Source အဖြစ် ပြောင်းလည်းခဲ့ပါ၍၊ ဝိကိပီဒီယတွင် ဖော်ပြခွင့်ရှိသည် Javaပလက်ဖေါင်း နှင့် ပရိုဂရမ်မင်းဘာသာရပ် Javaသည်၊ 1990ခုနှစ် 12လပိုင်းတွင် Sun Microsystems မှ ကိုယ်ပိုင်ပရိုဂျက်တစ်ခုအဖြစ် စတင်ခဲ့သည်။ ထိုပရိုဂျက်သည် C++/C၏ အစားထိုး ပရိုဂရမ်မင်းဘာသာရပ် တစ်ခုအနေဖြင့် တီထွင်ရေးသားခဲ့ကြ၏။ ထိုဘာသာရပ်သည်၊ ပရိုဂျက်အတွင်း၌ Green Operating System (Green OS) နှင့်အတူ၊ Green OS ၏ အခြေခံဘာသာရပ်အနေဖြင့် တီထွင်ခဲ့ခြင်းဖြစ်၏။ ထိုဘာသာရပ်အား 1992 ခုနှစ် လောက်တွင် ပရိုဂျက်အတွင်း၌ Oak ဟု အမည်တွင်ခဲ့သော်လည်း၊ နောက်ပိုင်းတွင် Java ဟု ပြောင်းလည်း ခေါ်ဝေါ်ခဲ့ကြခြင်း ဖြစ်၏။ ပြောင်းလည်းခေါ်ဝေါ်ခဲ့ကြခြင်း အကြောင်းအရင်းမှာ Oak သည် အခြားသော ကုမ္ပဏီတစ်ခုမှ စီးပွားဖြစ်အမည် တစ်ခုအနေဖြင့် တရားဝင် အသုံးပြုလျက် ရှိသောကြောင့် ဖြစ်၏။ 1990 ခုနှစ် ပိုင်းတွင် Sun ၏ ပညာရှင် တစ်ယောက်ဖြစ်သော Patrick Naughton သည်၊ ကုမ္ပဏီပိုင် ပရိုဂရမ်မင်းဘာသာရပ် C++ နှင့် C တို့၏ API နှင့် ပရိုဂရမ်မင်း အထောက်အကူပြု ကရိယာ အားမလို အားမရဖြစ်နေခဲ့၏။ ထိုအချိန်တွင် အိုင်တီနည်းပညာလောက၌၊ NeXTမှ တီထွင်လိုက်သော နည်းပညာအား အားလုံး၏အာရုံစိုက်မှု့ကို ရရှိခဲ့သည်ကို အစပြု၍၊ Naughton သည် Sun ၏နည်းပညာအသစ်များကို ဖန်တီးရန် အကြောင်းဖန်လာခဲ့၏။ NeXT မှ တီထွင်ခဲ့သော NeXTWorkstation နှင့် NEXTSTEPOSတွင်၊ အခြေခံ ပရိုဂရမ်မင်းဘာသာရပ် အနေဖြင့်Object Oriented ပရိုဂရမ်မင်း ဘာသာရပ် Objective-C ကို အသုံးပြုထားခဲ့၏။ ဤကဲ့သို့သော အကြောင်းကြောင်းဖြင့် နောက်လိုက်ပရိုဂျက်တစ်ခု အနေဖြင့် စတင်ခဲ့၏။ ဤကဲ့သို့စတင်ခဲ့သော နောက်လိုက်ပရိုဂျက်သည်၊ စတင်သည်ဆိုသည်နှင့် James Gosling နှင့် Mike Sheridan တို့သည် ပါဝင်ခဲ့ကြပြီး၊ ပရိုဂျက်၏အမည်ကိုလည်း [အစိမ်းရောင်ပရိုဂျက်] ဟု ပြောင်းလဲခေါ်ဆိုခဲ့ကြ၏။ ဤအစိမ်းရောင်ပရိုဂျက်တွင် အခြားသော နည်းပညာရှင်များလည်း ပါဝင်ခဲ့ကြပြီး၊ အမေရိကပြည်ထောင်စု ကာလီဖိုးနီးယား ပြည်နယ် ရှိ သေးငယ်သော ရုံးခန်းလေးတစ်ခုမှ စတင်ခဲ့ကြသည်။ အစိမ်းရောင်ပရိုဂျက်၏ ရည်ရွယ်ချက်မှာ၊ နောင်တစ်ခေတ်၏ အိမ်သုံးလျှပ်စစ် ပစ္စည်းများအတွက် ပရိုဂရမ်မင်းနည်းပညာ အသစ်တစ်ခုကို တီထွင်ရန် ဖြစ်၏။ Sun သည် ထိုစဉ်ကတည်းက ဤနယ်ပယ်တွင် အဓိကကျသော ဈေးကွက်တစ်ခု ဖြစ်ပေါ်လာမည့်အကြောင်း ကြိုတင်မှန်းဆခဲ့ ကြခြင်းဖြစ်၏။ အစိမ်းရောင်ပရိုဂျက်သည် စတင်ခါစတွင် ပရိုဂရမ်မင်းဘာသာရပ်အနေဖြင့် Object Oriented ပရိုဂရမ်မင်း ဘာသာရပ်တစ်ခုဖြစ်သော C++ ကို အသုံးပြုရန် စဉ်းစားခဲ့ကြသော်လည်း၊ အကြောင်းအမျိုးမျိုးကြောင့် C++ အားလက်လျှော့ခဲ့ကြ၏။ သူတို့၏ ရည်ရွယ်ချက်မှာ အိမ်သုံးလျှပ်စစ်ပစ္စည်းများ၏ နည်းပညာကို တီထွင်ရန်ဖြစ်၏။ ထည့်သွင်းစနစ် (Embedded System) များတွင် အသုံးပြုနိုင်သော အလွန်နည်းပါးသည်ဟုဆိုသော ကန့်သတ်ချက်များရှိခဲ့ကြ၏။ သူတို့သည် C++ အား စက်ပစ္စည်း၏ လျှပ်စစ်အရင်းအမြစ်ကို သုံးလွန်းသည်ဟု သတ်မှတ်ခဲ့ကြ၏။ တဖန် C++ သည် ခက်ခဲသော ဘာသာရပ် တစ်ခု ဖြစ်သောကြောင့်၊ C++ ကို အသုံးပြုသော ပရိုဂရမ်မာများသည် ဘယ်လောက်ပင် ဂရုစိုက်သော်လည်း တစ်ကြိမ်ကြိမ်တွင် အမှားများကို ကျူးလွန်မိမြဲ ဖြစ်၏။ C++ တွင် အမှိုက်သိမ်းစနစ်မရှိခဲ့ပေ။ အမှိုက်သိမ်းစနစ် မရှိခြင်းဆိုသည်မှာ၊ ပရိုဂရမ်မာကိုယ်တိုင်က မန်မိုရီကို ထိမ်းသိမ်းရမည် ဆိုသည်ကို ဆိုလိုသည်။ ပရိုဂရမ်မာကိုယ်တိုင်က မန်မိုရီကို ထိမ်းသိမ်းခြင်းသည် လွန်စွာ စွန့်စားရသောအလုပ်တစ်ခုဖြစ်ပြီး၊ မှားယွင်းလွယ်သော လုပ်ရပ်တစ်ခုလည်း ဖြစ်၏။ အစိမ်းရောင်ပရိုဂျက်၏ အဖွဲ့ဝင်များသည်၊ အဓိကလုပ်ဆောင်ချက်အချို့တွင် C++ ၏ အပြောင်းအရွှေ့ မလွယ်ကူခြင်းကို ပြဿနာတစ်ခုအဖြစ် ကြည့်မြင်ခဲ့ကြ၏။ ထို အဓိက လုပ်ဆောင်ချက်များမှာ လုံခြုံရေးစနစ်၊ နေရာခြားကွန်ပျူတာစနစ်(Distributed Computing) နှင့်၊ စလက်များ(Multi Thread)ဖြစ်ကြ၏။ ထိုလုပ်ဆောင်ချက်များသည် ပလတ်ဖောင်းအပေါ်တွင် မှီခိုခြင်းမရှိပဲ အသုံးချနိုင်ရန် လိုအပ်ပေသည်။ အထက်ပါအကြောင်းများကြောင့် သူတို့သည်၊ လျှပ်စစ်ပစ္စည်း အမျိုးမျိုးတွင် လွယ်ကူစွာပြောင်းရွှေ့နိုင်သော ပလတ်ဖေါင်း၏ လိုအပ်ချက်ကို သိမြင်ခဲ့ကြ၏။ တဘက်တွင် Sun ၏ နည်းပညာရှင် တစ်ယောက်ဖြစ်သောBill Joy သည်၊ Xerox Corporation ၏ Palo Alto Research Center တွင် Altoဟု အမည်ရသော Workstation စမ်းသပ်စက် အတွက် တီထွင်ခဲ့သော ပရိုဂရမ်မင်း ဘာသာရပ် Mesa ဖြင့် C ဘာသာရပ်၏ ကောင်းသောနေရာများကို လက်ခံရယူပြီး ပရိုဂရမ်မင်းဘာသာရပ် အသစ်တစ်ခုကို ပုံဖော်နေခဲ့၏။ Joy သည် Further ဟု အမည်ရသော စာတမ်းတစ်စောင်ကို ရေးသားခဲ့ပြီး၊ C++ ကိုအခြေခံသော Object Oriented ပတ်ဝင်းကျင်ကို တီထွင်ရန် အားထုတ်နေခဲ့၏။ ဦးစွာ James Arthur Gosling သည် C++ ကို ပြုပြင်ပြောင်းလဲပြီးအသုံးပြုရန် စမ်းသပ်ခဲ့၏။ Gosling သည် ဤ ပြုပြင်ထားသော C++အား "C++ ++ --" ဟု အမည်ပေးခဲ့၏။ သို့ရာတွင် Gosling သည် ချက်ချင်းဆိုသလို C++ အားပြုပြင်ပြောင်းလည်းခြင်းကို ရပ်တန့်ခဲ့ပြီး၊ ပရိုဂရမ်မင်းဘာသာရပ် အသစ်တစ်ခုကို တီထွင်ရန် စတင်ခဲ့၏။ Gosling သည် ထို ပရိုဂရမ်မင်းဘာသာရပ် အသစ်အား Oak ဟုခေါ်ဆိုခဲ့၏။ ထိုအမည်ကို ရယူခဲ့ခြင်းမှာ James Arthur Gosling ၏ ရုံးခန်းအနီးအနားတွင် ဝက်သစ်ချပင်များ ပေါက်ရောက်နေသောကြောင့် ဖြစ်သည် ဟုဆိုသည်။ အစိမ်းရောင်ပရိုဂျက် အဖွဲ့ဝင်များသည် အချိန်ပိုကို လုပ်ရသည့်အထိ ကြိုးစား၍၊1992ခုနှစ်နွေရာသီ အရောက်တွင် အသစ်ရေးသားထားသောပလတ်ဖေါင်းအား၊ Green OS၊ Oak ဘာသာရပ်၊ Library၊ စက်ပစ္စည်းများနှင့် တွဲဖက်ပြီး အစမ်းပြသနိုင်ခဲ့ကြ၏။ ၁၉၉၂ခု၊ ၉လ၊ ၃ရက် ပထမဆုံး ပြပွဲတွင် Star7 ဟုအမည်ရသောPDA ကို တီထွင်ရာတွင် အားစိုက်ခဲ့ကြ၏။ Star7 ၏ အမည်မှာ ခလုပ်*7 ကို နှိပ်ခြင်းအားဖြင့် ဖုန်းအဖြစ်အသုံးပြုနိုင်သောကြောင့် ဖြစ်၏။ ထို Star7 သည် ထိုခေတ်က လွန်စွာဆန်းသစ်သော GUI ကို ပြင်ဆင်ထားပြီး၊ "Duke" ဟု အမည်ရသော လက်ထောက်ကလေးက အသုံးပြုသူကို အကူအညီပေးပါသည်။ ထိုနှစ် ၁၁လပိုင်းတွင်၊ Sun သည် အစိမ်းရောင်ပရိုဂျက်ကို ခွဲထုတ်ခဲ့ပြီး လက်အောက်ခံ ကုမ္ပဏီ FirstPerson, Inc စတင်ခဲ့၏။ FirstPerson အဖွဲ့ဝင်များသည်၊ အဆင့်မြင့် အပြန်အလှန်အသုံးပြု ကရိယာများ အပေါ်တွင် စိတ်ဝင်စားမှု့ကို ပြသခဲ့၏။ ထိုအချိန်တွင် ime Warner Inc.သည် ကေဘယ် တီဗွီသုံးSet Top Box၏ RFP (Request For Proposal) ကို ထုတ်ပြန်ခဲ့၏။ ထိုအခါ FirstPerson သည် မိမိတို့၏ ရည်ရွယ်ချက်ကို ပြောင်းလည်းခဲ့ပြီး ime Warner Inc.၏ RFP ကို လက်ခံပြီး အကြံပြုချက်များ ကို တင်သွင်းခဲ့ကြ၏။ သို့ရာတွင်FirstPerson သည် အပြိုင်အဆိုင် ၌Silicon Graphics, Inc. (SGI)ကို ရှုံးနိမ့်ခဲ့၏။ ထို့နောက်တွင်3DO၏Set Top Box လုပ်ငန်းရှိခဲ့သော်လည်း၊ စာချုပ်ချုပ်နိုင်သည့်အဆင့်ကို မရောက်ခဲ့ပေ။ FirstPersonသည်တီဗွီနယ်ပယ်တွင် အမြတ်ကို မပြသနိုင်ခဲ့ပါသဖြင့်၊ Sun သည် FirstPerson ကို ဖျက်သိမ်းခဲ့ပြီး အဖွဲ့ဝင်များကို ပြန်လည်ခေါ်ယူခဲ့၏။ အင်တာနက်နယ်ပယ်ဆီသို့၁၉၉၄ခု ၆လ မှ ၇လပိုင်းအထိ John Gage၊ James Gosling၊Bill Joy၊Patrick Naughton [၁]၊Wayne Rosin၊ Eric Emerson Schmidtတို့ကြားတွင်၊ ၃ရက်တိုင်တိုင် ဆွေးနွေးပွဲ ပြုလုပ်ခဲ့ပြီး၊ Web လောက ဘက်ကို ဦးတည်ချက်ပြောင်းရန် ချမှတ်ခဲ့ကြ၏။ သူတို့သည် ခေတ်ရှေ့ပြေးသော Web Browserတစ်ခုဖြစ်သည့် NCSA Mosaic ကို တွေ့မြင်ပြီး Web ကို အစပြုသည့် အင်တာနက် ၏ နယ်မြေသည် ကေဘယ်တီဗွီထက် မနိမ့်ကျသော အပြန်အလှန် အသုံးပြုနိုင်သော အဆင့်မြင် ကြားခံနယ်တစ်ခုဖြစ်လာနိုင်ကြောင်းကို လက်ခံခဲ့ကြ၏။ Oak ကို အသုံးပြု၍ Prototype အနေနှင့် Naughton သည် WebRunner ဟုအမည်ရသည့် ဘရောက်ဇာ အသေးစားလေးတစ်ခုကို တီထွင်ခဲ့၏။ ထို ဘရောက်ဇာ၏ အမည်သည် နောက်ပိုင်းတွင် HotJava ဟု ပြောင်းလဲခဲ့၏။ Web စာမျက်နှာ တွင် Java အပလက် ဟု အမည်ရသော Java ပရိုဂရမ် အသေးစားများကို ထည့်သွင်းပြီး၊ HotJava ဖြင့် စာမျက်နှာကို ဖွင့်ကြည့်သောအခါ HotJava အပေါ်တွင် ကာတွန်းကားများနှင့် မောက်စ်၏ လှုပ်ရှားမှု့ အားပြန်လည်ပြီး တုံ့ပြန်နိုင်သည့် ပရိုဂရမ်များကို အသုံးချလာနိုင်ခဲ့ကြ၏။ ထိုနှစ်ထဲမှာပင် Oak ၏ အမည်အား Java ဟု ပြောင်းလဲခေါ်ဆိုခဲ့ကြ၏။ အကြောင်းမှာ အမည် မှတ်ပုံတင်ရန် လေ့လာကြည့်သောအခါ "Oak" သည် ဗွီဒီယို ကတ်ထုတ်လုပ်ရေး ကုမ္ပဏီ (Oak Technology) က လက်ရှိ အသုံးပြုနေသောကြောင့်ဖြစ်၏။ Java ဟူသော အမည်မှာ ထိုစဉ်က အဖွဲ့ဝင်များ အသွားများခဲ့သော ကော်ဖီဆိုင်တစ်ဆိုင်၏ အမည်ဟုလည်း အပြောများကြ၏။ အချို့မှာမူ အခြား စကားလုံးတစ်ခု၏ အတိုကောက်အမည်ဟုလည်း ပြောကြ၏။
၁၉၉၄ခု ၁၀လပိုင်းတွင် HotJava နှင့်Java ပလတ်ဖေါင်း သည် Sun Microsystem ၏ အရေးပါဝန်ထမ်းများ၏ရှေ့တွင် စမ်းသပ်ပြသနိုင်ခဲ့၏။ ထိုမှတဆင့် ၁၉၉၄ခုနှစ် အတွင်းမှာပင် Java 1.0a (Alpha Version)ကို ဒေါင်းလုဒ်လုပ်နိုင်ခဲ့၏။ Java နှင့် HotJava ၏ ပထမဦးဆုံး တရားဝင်ထုတ်ပြန်ခဲ့ကြသည်မှာ ၁၉၉၅ခု ၅လပိုင်း ၂၃ရက်နေ့တွင် ကျင်းပခဲ့သော SunWorld တွေ့ဆုံပွဲတွင် ဖြစ်၏။ Sun သည် Java ဖြင့်ရေးသားထားသော Web ဘရောင်ဇာ HotJava ကိုအသုံးပြု၍ Java နှင့်Java အပလက် နည်းပညာဖြင့်ဝက်စာမျက်နှာအပေါ်တွင် ကာတွန်းလှုပ်ရှားမှု့ များ၊ မောက်စ်၏ လှုပ်ရှားမှု့အားတုံ့ပြန်နိုင်မှု့များအား ပြသခဲ့၏။ ထိုတွေ့ဆုံပွဲတွင် ထုတ်ပြန်ကျော်ညာခဲ့သည်မှာ Sun ၏နည်းပညာ ဌာနမှူးတစ်ဦးဖြစ်သော John Gage ပင် ဖြစ်၏။ ထို တွေ့ဆုံပွဲမှာပင် John Gage ၏ထုတ်ပြန်ချက်နှင့်ပတ်သက်ပြီး Netscape Communications ၏ ဒုတိယ ဥက္ကဋ္ဌ Marc Andreessen ၏ ထုတ်ပြန်ချက်က တက်ရောက်လာသူများအား အံ့အားသင့်စေခဲ့၏။ တဖန် Netscape ကုမ္ပဏီမှ ၎င်း၏ဘရောင်ဇာဖြစ်သော Netscape Navigator တွင် Java အား ထည့်သွင်းရန် စီစဉ်နေကြောင်းကို ထုတ်ပြန်ခဲ့၏။ ဤထုတ်ပြန်ချက်ကြောင့် Java နည်းပညာသည် အိုင်တီနည်းပညာလောတွင် အသိများစေခဲ့သည်။ လတ်တလော လှုပ်ရှားမှု့များJava ၏ တရားဝင် ထုတ်ပြန်ပြီးချိန်မှ ယနေ့အချိန်အထိ ပြောင်းလည်းလာခဲ့ပုံကို အဘက်ဘက်မှ သုံးသပ်သွားပါမည်။ Web(Client ဘက်မှအမြင်)Web ဘရောင်ဇာဖြင့် Java အပလက်ကို အသုံးပြုသည့်နည်းပညာမှာ အတော်ကျယ်ကျယ်ပြန့်ပြန့်ကို အသုံးပြုလာခဲ့ကြ၏။ ဘရောက်ဇာ(World Wide Web၏Clientဘက်ခြမ်း)သည်Web စာမျက်နှာ အတွင်း Animation များကို ဖော်ပြရာတွင်လည်းကောင်း၊ Mouse Event အပေါ်တွင် Interactive လှုပ်ရှားမှု့များကို တုံ့ပြန်ရာတွင်လည်းကောင်း Java ကို အသုံးပြုခဲ့ကြ၏။ သို့ရာတွင် ယခုနောက်ပိုင်းတွင် အင်အားကြီးသော အပြိုင်အဆိုင် များလည်း ထွက်ပေါ်လာခဲ့၏။ ယနေ့ နှစ်များတွင် Yahoo! Games နှင့် ဗွီဒီယိုပြစက် အစရှိသည့် အပလီကေးရှင်းများတွင် Java အပလက်ကို အသုံးပြုများသည်ကို တွေ့ရ၏။ ယခင် အချိန်များတွင် Java အပလက်ကို အသုံးပြုထားသည့် ဆိုဒ်များကို ကြည့်လိုသည့်အခါ စက္ကန့်အတန်ကြာ ကြာမြင့်သည့် ဘရောက်ဇာများလည်းရှိတတ်၏။ Java နှင့် Java အပလက် ၏ နည်းပညာတိုးတက်လာမှု့ကြောင့် ပတ်ဝင်းကျင်ကြောင့်ကြာမြင့်မှု့များ၊ စာမျက်နှာကို ဖော်ပြရာတွင် ကြံ့ကြာမှု့ အစရှိသည့် အခက်အခဲများလည်း ဖြေရှင်းလာနိုင်ခဲ့၏။ လွယ်ကူသော Animation များကို အသုံးပြုရာတွင် Java အပလက်ထက်စာလျှင် GIF89a နှင့် Adobe Flash ကို အသုံးပြုကြသည်က များ၏။ ယနေ့ခေတ် Web Client နယ်ပယ်တွင် Ajax သည်လည်း ခေတ်စားလာခဲ့၏။ Web(ဆာဗာ ဘက်မှအမြင်)ယနေ့ခေတ် World Wide Web၏ဆာဗာ ဘက်ပိုင်းတွင် Java နည်းပညာ(Java EE) အား အတော်များများ အသုံးပြုနေကြသည်ကို တွေ့ရ၏။ ဝက်ဘ်ဆိုက် အတော်များများသည်၊ Java ဆာဗလက် (Java Servlet) နှင့် JSP(JavaServer Pages)အစရှိသည့် Java EE နည်းပညာများကို အသုံးပြု၍ ဝက်စာမျက်နှာများကို အလိုအလျှောက်ထုတ်လုပ်ပေးနိုင်သော ဆိုက်များကို တည်ဆောက်လာကြသည်ကို တွေ့ရ၏။ Java ဆာဗလက် သည် သက္ကရစ် ၂၀၀၀ခုနှစ်နောက်ပိုင်းတွင် အကျယ်တဝင့် အသုံးပြုလာကြပြီး ယနေ့အချိန်အခါတွင်ဝက်ဘ်အပလီကေးရှင်းအတော်များများသည် ဆာဗလက်များအပေါ်တွင် တည်ဆောက်ထားကြသည်ကို တွေ့ရပါ၏။ Sun Microsystems မှရေသားခဲ့သော Java ဆာဗလက်၏ အလုပ်လုပ်ဆောင်ပုံကို အကျဉ်းချုံးဖော်ပြပါမည်။
Sun က Java ဆာဗလက် နည်းပညာကို တီထွင်ခဲ့ကြသည့် ၁၉၉၀ခုနှစ်ပိုင်းများတွင်၊ ဝက်ဘ်အပလီကေးရှင်းများကို ရေးသားကြရာတွင် အောက်ပါအခက်အခဲများကို ကြုံတွေ့ရလေ့ရှိခဲ့၏။
Java ဆာဗလက်သည် အထက်ပါပြဿနာများကို ဖြေရှင်းနိူင်ရန် ရည်ရွယ်ပြီး ရေးသားခဲ့သော နည်းပညာဖြစ်သည်။ Desktop ဘက်ကို ပြောင်းလည်းလာပုံDesktop ပတ်ဝင်းကျင်နှင့်ပတ်သက်ပြီးကိုယ်ပိုင်ရပ်တည်နိုင်သော Java (Java SE) ၏အပလီကေးရှင်းဆော့ဖ်ဝဲ(Javaအပလီကေးရှင်း)သည်၊ ယခင်က အသုံးနည်းပါးခဲ့သော်လည်း ယခုနောက်ပိုင်းတွင် Java ကိုအသုံးပြုသော ဆော့ဖ်ဝဲများကို တွေ့လာခဲ့ရသည်။ ဤကဲ့သို့ အသုံးများလာရခြင်း အကြောင်းအရင်းကို အောက်ပါအချက်များကြောင့်ဟု စဉ်းစားနိုင်သည်။
အသုံးများသော Java ဆော့ဖ်ဝဲများမှာNetBeansနှင့်Eclipse SDK၏ပေါင်းစုရေးသားပတ်ဝင်းကျင်နှင့်၊ LimeWireနင့်Azureusကဲ့သို့သောဖိုင်ပူးတွဲအသုံးချ ဆော့ဖ်ဝဲများ အစရှိသော ဆော့ဖ်ဝဲများပဲဖြစ်ကြ၏။ တဖန် သင်္ချာဆော့ဖ်ဝဲတစ်ခုဖြစ်သော MATLAB မှာလည်းUser Interface၏ ပံ့ပိုးမှု့နှင့် အတွက်အချက်ပိုင်းနေရာ အချို့တွင် Java ကို အသုံးပြုထားသည်။ Java Swingနှင့်SWT၏ဝစ်ဂျက်တူးကစ်ကို အသုံးပြုထားသော အပလီကေးရှင်းများကို နောက်ပိုင်းနေ့ရက်များတွင် တွေ့လာခဲ့ရသည်။ ဤကဲ့သို့ ယနေ့ခေတ်များတွင် Desktop Java အပလီကေးရှင်းများကို အသုံးပြုလာသည်ကို တွေ့ရပါသော်လည်း၊ အောက်ပါအခက်အခဲများကြောင့် သုံးသင့်သလောက် အသုံးမများသည်ကို တွေ့နေရ၏[၂] 30 October 2012 ၌ မော်ကွန်းပြန်ကြည့်စက်တွင် မော်ကွန်းတင်ပြီး .။
အချို့သောဆော့ဖ်ဝဲရေးသားသူများသည် အိုင်တီနည်းပညာတွင်ဝက်ဘ်ကို အခြေခံသော မော်ဒယ်သည် ခေတ်စားနေပြီး၊ Stand Aloneအပလီကေးရှင်းများသည် ခေတ်နောက်ကျလျက် ရှိပြီး၊ ပရိုဂရမ်မင်းနည်းပညာ အသစ်များသည် ထူးချွံသောဝက်ဘ်အပလီကေးရှင်းကို ရေးသားနိုင်ခြင်းဖြင့် ပြည့်စုံနေသည်ဟု ထင်မြင်နေကြ၏။ ဤအမြင်နှင့်ပတ်သက်၍ ဆော့ဖ်ဝဲနည်းပညာရှင်များကြားတွင် ထောက်ခံသူများရော ကန့်ကွက်သူများပါ အမျိုးမျိုးရှိကြပါ၏။ လက်ရှိအချိန်တွင်Rich Clientနှင့်Web 2.0တို့၏ ထွက်ပေါ်လာမှု့ကြောင့် ပုံစံအသစ်များကို ဖြစ်ပေါ်စေခဲ့သည်။ ဝက်ဘ်ကို အခြေပြုသော ဝက်ဘ်အပလီကေးရှင်းနှင့်Stand Aloneအပလီကေးရှင်းများ၏ ပူးတွဲမှု့များပင်ဖြစ်၏။ ဝက်ဘ်အပလီကေးရှင်းအား Ajaxနှင့် Java Web Start၊Adobe Flash အစရှိသည့် ပူးတွဲရေးသားမှု့များကြောင့်၊ Web2.0 ခေတ်နှင့် လိုက်ညီသော လှပသေသပ်သည့် အပလီကေးရှင်းများကို ရေးသားလာနိုင်ခဲ့ကြသည်။ အိမ်သုံး ကွန်ပျူတာနှင့် ပတ်သက်၍ယနေ့ခေတ် အိမ်သုံးကွန်ပျူတာ (PC) အတော်များများသည် အသုံးပြုသူက ဝက်ဘ်နှင့်Desktop ပတ်ဝင်းကျင်အပေါ်တွင် Javaအပလီကေးရှင်း များကို အခက်အခဲမရှိ အလုပ်လုပ်စေနိုင်သည် ။ PCထုတ်လုပ်သူ အတော်များများသည် ထုတ်လုပ်ရောင်းချသည့် Windows PC တွင်Javaပလက်ဖေါင်း (JRE) ကို ထည့်သွင်းပေးလျက် ရှိ၏။ ပန်းသီးတံဆိပ်၏ Mac OS X နှင့် Linux အတော်များများတွင်လည်း Java ပလက်ဖေါင်းကို ထည့်သွင်းပေးလျက် ရှိ၏။ ထို့ကြောင့် ၂၀၀၁ခုနှစ်နောက်ပိုင်း Microsoftမှ Java ပလက်ဖေါင်းကို Windows တွင် ထည့်သွင်းခြင်းမပြုတော့ဟု ထုတ်ပြန်ချက်သည် Java အပလီကေးရှင်းများ အပေါ် အကျိုးသက်ရောက်မှု့မှာ ထင်သလောက်ကြီးမားခြင်းမရှိပေ။ ၂၀၀၁ခုနှစ် နောက်ပိုင်းတွင် မိုက်ကရိုဆော့ဖ်မှ Java ပလက်ဖေါင်းကို Windows တွင် ထည့်သွင်းခြင်းမပြုတော့ဟု ထုတ်ပြန်ခဲ့ခြင်းသည်၊ ဆန်းမိုက်ကရိုစစ္စတမ်မှ မိုက်ကရိုဆော့ဖ်အား အဆင့်နိပ်သော Java ပလက်ဖေါင်းအား ထည့်သွင်းနေမှု့ကြောင်း တရားစွဲဆိုခဲ့သောကြောင့်ဖြစ်၏။ မိုက်ကရိုဆော့ဖ်မှ ယနေ့တိုင် Windows တွင် ထည့်သွင်းခဲ့သော Java ပလက်ဖေါင်းတွင် အသုံးပြုရန် ရေးသားသားသော Java ပရိုဂရမ်တစ်ခုသည် အခြားသော ပလက်ဖေါင်းအပေါ်ရှိ Java ပလက်ဖေါင်းအပေါ်တွင် အလုပ်နိုင်မည်ဟု အာမခံနိုင်မည် မဟုတ်ပေ။ သို့ရာတွင် ယနေ့ခေတ်များတွင် Java အပလီကေးရှင်းများ ကိုယ်တိုင်က Java ပလက်ဖေါင်းများကို ပူးတွဲဖြန့်ဝေလာကြသည်ကို တွေ့ရ၏။ ထိုသို့ဖြန့်ဝေလာကြခြင်းမှာ Java အပလီကေးရှင်းများကို ရေးသားသူနည်းပညာရှင်များ၏ ဆုံးဖြတ်ချက်ကြောင့် ဖြစ်၏။ Java အပလီကေးရှင်းများကို ရည်ရွယ်ထားသလို အသုံးပြုနိုင်စေရန်အတွက် Java ပလက်ဖေါင်း၏ခြားနားမှု့ကြောင့် ဖြစ်ပေါ်စေတတ်သော ပြဿနာများကို ရှောင်ရှားနိုင်စေဖို့အတွက် ကွန်ပျူတာအပေါ်တွင်ရှိသော Java ပလက်ဖေါင်းအား အသုံးပြုရန် မသင့်ဟု ဆုံးဖြတ်ခဲ့ကြသောကြောင့် ဖြစ်၏။ လက်ရှိအချိန်တွင်Javaအပလက်သည် ကိုယ်တိုင်အလုပ်လုပ်နိုင်သော ပလတ်ဖေါင်းကို ခွဲခြားသိရှိ လာနိုင်ခဲ့သည်။ တဖန်၊ ဗားရှင်းများအကြား၌ အပြန်အလှန်အသုံးပြုနိုင်မှု့ သည်လည်း ပရိုဂရမ်မင်းဘာသာရပ်များ အကြားတွင် အဆင့်မြင့် အနေအထားတွင် တည်ရှိသည်။ Java SE 1.3 နောက်ပိုင်းတွင် ဗားရှင်းမတူညီမှု့ကြောင့် ဖြစ်ပေါ်တက်သော ပြဿနာများမှာ အလွန်နည်းပါးလာခဲ့သည်။ ထို့အပြင် Java Web Start နည်းပညာသည် အင်စတောလုပ်ထားသော Java ဗားရှင်းကို စမ်းစစ်ပြီး လိုအပ်ပါက အလိုအလျှောက် အပ်ဒိတ်လုပ်ပြီး၊ Java Web Start သုံး အပလီကေးရှင်းများကိုပါ အပ်ဒိတ်လုပ်လာနိုင်သည်။ ထို့အတွက် Java ပလက်ဖေါင်း ဗားရှင်းအဟောင်းများကို အသုံးပြုနေသော စက်များပင်ဖြစ်လင့်ငြား အလိုအလျှောက် အပ်ဒိတ်လုပ်နိုင်ခြင်းကြောင့် ဘားရှင်းပြဿနာသည် ခက်ခဲသော ပြဿနာတစ်ခုမဟုတ်တော့ပါ။ နှစ်မြှုပ်စစ္စတမ် အပိုင်းဆိုင်ရာနှစ်မြှုပ်စစ္စတမ်သုံး Java (Java ME) သည် တွင်ကျယ်စွာအသုံးပြုနေသော ပတ်ဝင်းကျင်တစ်မျိုးဖြစ်၏။ မိုဘိုင်းကရိယာ(မိုဘိုင်းဖုန်း・PHSやPDA・စမတ်ဖုန်းအစရှိသည့်)များတွင် Java ပလက်ဖေါင်းများကို အသုံးပြုကြသည်က များ၏။ Java ပလက်ဖေါင်းအား အထက်ပါ မိုဘိုင်းကရိယာများတွင် တွင်ကျယ်စွာအသုံးပြုနေကြ၏။ တဖက်တွင် Symbian နှင့် BREW သည်လည်း မိုဘိုင်းဖုန်းအား အဓိကထားပြီး Java နှင့် အပြိုင်ဖြစ်လာခဲ့သည်။ Java ME သည် BREW နှင့်မတူညီပဲ၊ ဖန်တီးသူမှ လိုင်စဉ်ခ ပေးဆောင်ရန်မလိုပဲ ပရိုဂရမ်များကို ဖန်တီးရေးသားနိုင်၏။ တဖန် Java ME အား Symbian ထက်စာလျှင် ကျယ်ပြန့်စွာ အသုံးပြုနေသည်ကို တွေ့ရသည်။ ထိုအချက်ကြောင့် Java ME သည် Symbian ထက်ကျယ်ပြန့်စွာ အသုံးပြုလာကြသည်မှာ မိုဘိုင်းကရိယာများအတော်များများအပေါ်တွင် သက်သာစွာ အလုပ် လုပ်ဆောင်နိုင်စေသောကြောင့် ဖြစ်၏။ အထက်ပါအကြောင်းများကြောင့် တတိယပါတီများမှတဆင့် Opera mini ကဲ့သို့သော အခမဲ့ Java ဆော့ဖ်ဝဲများကို ရေးသားလာနိုင်ခြင်းဖြစ်၏။ ဗားရှင်းများJava သည် JDK(Java Development Kit)1.0 ကို ထုတ်ပြန်ပြီးသည့် နောက်ပိုင်း၊ အကြိမ်ကြိမ် အဓိကပြောင်းလည်းမှု့များကို ထည့်သွင်းလာခဲ့ကြ၏။ ဗားရှင်းများကို မြှင့်တင်ရင်း များစွာသောကလပ်စ်နှင့် Packageများသည် အခြေခံ အသုံးချ ကလပ်စ် အစုအဝေး ထဲကို ပါဝင်လာခဲ့ကြ၏။ပရိုဂရမ်မင်းဘာသာရပ်Java နှင့်Javaပလက်ဖေါင်းသည် ဗားရှင်းများကြားတွင် အပြန်အလှန်အသုံးပြုနိုင်ရန် သတိပြု၍ ဖြည့်စွက်ပြုပြင်မှု့များကို ပြုလုပ်လာခဲ့ကြ၏။ J2SE 1.4 မှစ၍ Java ၏ ရေးသားခြင်းများသည် JCP (Java Community Process) ဟုခေါ်သော စနစ်ချမှတ်ရေး အစီအစဉ်များဖြင့် ရေးသားလာခဲ့ကြ၏။ JCP တွင် JSRs (Java Specification Requests) ဟုခေါ်သော တောင်းဆိုချက်စာစောင်များမှ Java နှင့်ပတ်သက်သော ဖြည့်စွက်ဖန်ရှင်များ Java ပလက်ဖေါင်းနှင့်ပတ်သက်သော ပြုပြင်ပြောင်းလဲမှု့များကို အကြံပြုခြင်း၊ သတ်မှတ်ခြင်းများကို ပြုလုပ်နေကြ၏။ တဖန် J2SE1.3 နောက်ပိုင်းတွင် ရေးသားသည့် ကုဒ်အမည်အနေဖြင့်၊ အဓိကဗားရှင်းများအား သွေးနွေးသတ္တဝါများ၏ အမည်ကို၎င်း၊ အသေးစိတ် ပြောင်းလည်းမှု့များကို အင်းဆက်များ၏ အမည်ကို ၎င်း အသုံးပြုလာသည်ကို တွေ့ရ၏။ ဘာသာရပ်၏ ထင်ရှားချက်များမှာ JLS(Java Language Specification; Java ထင်ရှားချက်များ)ဖြင့် သတ်မှတ်ထားသည်။ JLS သည် JSR 901 ၏ လက်အောက်တွင် ထိမ်းသိမ်းထားသည်။ ဗားရှင်းများကို မြှင့်တင်ပြောင်းလည်းခြင်းအားဖြင့်၊ ဘာသာရပ်၏ ထင်ရှားချက်များကို ပြောင်းလဲရုံသာမက၊ အခြေခံ အသုံးချ ကလပ်စ် အစုအဝေးတွင်လည်း အသစ်ဖြည့်စွက်မှု့များကို ပြုလုပ်ခဲ့ကြ၏။ JDK 1.0 တွင် အခြေခံအသုံးချ ကလပ်စ် အစုအဝေးသည် ပျမ်းမျှ အားဖြင့် ကလပ်စ်/အင်တာဖေစ်ပေါင်း 200 ခန့်သာ ရှိခဲ့သော်လည်း၊ Java SE 6 အရောက်တွင် စုစုပေါင်း 4000 ကျော်အထိ တိုးပွားလာခဲ့၏။Swing နှင့် Java 2D ကဲ့သို့ API အသစ် များကိုလည်း ထည့်သွင်းလာခဲ့ကြ၏။ တဖက်တွင် နဂို JDK 1.0 လက်ထက်တွင် အသုံးပြုခဲ့သော ကလပ်စ်များ၏မက်သတ် အတော်များများသည်လည်း၊ J2SE 5.0 အရောက်တွင် အသုံးပြုရန် အားမပေးတော့ခြင်းများ ရှိလာခဲ့ကြသည်။ JDK 1.0 (1996/1/23)ကနဦး ဗားရှင်းဖြစ်သည်[၃] 25 June 2008 ၌ မော်ကွန်းပြန်ကြည့်စက်တွင် မော်ကွန်းတင်ပြီး .
JDK 1.1 (1997/2/19)အဓိကလုပ်ဆောင်ချက် အတော်များများကို ဖြည့်စွက်လာခဲ့၏။[၄] 6 May 2008 ၌ မော်ကွန်းပြန်ကြည့်စက်တွင် မော်ကွန်းတင်ပြီး .
J2SE 1.2 (1998/12/8)ကုဒ်အမည်မှာ Playground ဖြစ်၏။ ဤ ဗားရှင်းမှစ၍ အမည်ကို Java 2 ဟု ပြောင်းလည်းခေါ်ဆိုပြီး၊ J2SE 5.0 အထိ ဤအမည်ကို အသုံးပြုလာခဲ့၏။ တဖန် အဲဒီးရှင်းကိုလည်း JDK မှ "J2SE"(Java 2 Platform, Standard Edition)ဟု ပြောင်းလည်းခေါ်ဆိုခဲ့၏။ ထိုအမည်ကြောင့် J2SE သည်J2EE(Java 2 Platform, Enterprise Edition)နှင့် J2ME(Java 2 Platform, Micro Edition)၏ အခြေခံ အယ်ဒီးရှင်းဖြစ်ကြောင်းကို သိသာစေခဲ့၏။[၅] 6 May 2008 ၌ မော်ကွန်းပြန်ကြည့်စက်တွင် မော်ကွန်းတင်ပြီး .
J2SE 1.3 (2000/5/8)ကုဒ်အမည်သည် Kestrel ဖြစ်၏။ [၆] 16 May 2008 ၌ မော်ကွန်းပြန်ကြည့်စက်တွင် မော်ကွန်းတင်ပြီး .
J2SE 1.4 (2002/2/6)ကုဒ်အမည်သည် Merlin ဖြစ်၏။ ထိုဗားရှင်းသည် JCP(Java Community Process)၏ အောက်တွင် ရေးသားခဲ့သော ဦးဆုံးသောJavaပလက်ဖေါင်းဖြစ်၏။JSR 59[၇] 6 September 2008 ၌ မော်ကွန်းပြန်ကြည့်စက်တွင် မော်ကွန်းတင်ပြီး .
J2SE 5.0 (2004/9/30)ကုဒ်အမည်မှာ Tiger ဖြစ်၏။JSR 176 ၏ အောက်တွင် ရေးသားလာခဲ့ခြင်းဖြစ်သည်။ J2SE 5.0 တွင် ဘာသာရပ်၏ အသုံးပြုပုံမှာ အတော်များများ ပြောင်းလည်းခဲ့ပြီး၊ အသုံးပြုပုံအသစ် အတော်များများကိုလည်း ဖြည့်စွက်ခဲ့လေသည်။ [၈] 15 February 2005 ၌ မော်ကွန်းပြန်ကြည့်စက်တွင် မော်ကွန်းတင်ပြီး . မှုရင်းဗားရှင်း၏ အမည်မှာ J2SE 1.5 ဖြစ်ခဲ့သော်လည်း အတွင်းပိုင်းတွင်သာ အသုံးပြုခဲ့ကြ၏။ [၅]
Java SE 6 (2006/12/11)ကုဒ်အမည် သည် Mustang ဖြစ်၏။ JSR 270 ၏အောက်တွင် ရေးသားခဲ့ခြင်းဖြစ်၏။ Java SE 6 နှင့် ပတ်သက်ပြီး Sun သည် အမည်ပေးစနစ်ကို ပြောင်းလည်းခဲ့ပြီး "J2SE" မှ Java SE ဟု ပြောင်းလည်းခေါ်ဆိုခဲ့ပြီး၊ ဗားရှင်းလည်း ".0" ကို ဖျက်ပြစ်လိုက်ပါတယ်။ [၆]。
Java SE 7 (2011/7/28)ကုဒ်အမည်မှာ Dolphin ဖြစ်၏။ [၇] Java SE 7 တွင် အသစ်ပါဝင်ခဲ့သော အဓိက နည်းပညာများမှာ အောက်ပါအတိုင်းဖြစ်၏။
Java SE 8၂၀၁၁ခု ၈ လပိုင်း လက်ရှိ အခြေအနေတွင် အောက်ပါပြောင်းလည်းချက်များကို Java SE 8 တွင် ပါဝင်ရန် စီစဉ်ထားသည်။ JSR 337[၈] ဖြင့် ဘာသာရပ်ပိုင်းဆိုင်ရာ အသုံးပြုပုံတို့ကို သက်မှတ်ပြီး၊ ၂၀၁၂ခု ၁၀လပိုင်း လောက်တွင် သတ်မှတ်နိုင်ရန် ရည်ရွယ်ထားသည်။ ၂၀၁၂ခုနှစ် အကုန်ပိုင်းလောက်တွင် ထုတ်ပြန်ရန် ရည်ရွယ်ထားသည်။
ထူးခြားချက်များအခြေခံ အယူအဆJava အား တီထွင်ခဲ့ကြရာတွင် အခြေခံ အယူအဆ ၅ချက် ရှိခဲ့၏။
ကွန်ယက်နည်းပညာနှင့် အဝေးရောက်ကွန်ပျူတာအသုံးချနည်းပညာများကို အသုံးပြုရာတွင် အခြေအနေအပေါ်တွင်မှုတည်၍၊ Javaပရိုဂရမ်မာများသည်၊CORBA နှင့် Internet Communications Engine၊ OSGi များကဲ့သို့ နည်းပညာများကိုလည်း အသုံးပြုကြသည်။ Object Oriented Programming (Object-Based Programming)Java သည်ကလပ်စ်ကို အခြေခံသော Object Oriented ပရိုဂရမ်မင်း ဘာသာရပ် တစ်ခု ဖြစ်၏။ Java ပရိုဂရမ်သည် ကလပ်စ်များဖြင့် ဖွဲ့စည်းထားပြီး၊ ထိုကလပ်စ်များကို ပုံစံသွင်းထားသော Object များက အချင်းချင်း ဆက်သွယ်လုပ်ဆောင်ခြင်းအားဖြင့် Java ပရိုဂရမ်များကို အလုပ်လုပ်စေသည်။ Java ကလပ်စ်များသည် အမွေဆက်ခံရာတွင် တစ်ခုသော ကလပ်စ်မှသာ အမွေဆက်ခံနိုင်ပြီး၊ အင်တာဖေစ်ကို တစ်ခုမက ပံ့ပိုးပေးထားနိုင်သည်။ အမွေဆက်ခံခြင်း(Inheritance)ဆိုသည်မှာ ကလပ်စ်တစ်ခုကို တည်ဆောက်ရာတွင် အခြားကလပ်စ်တစ်ခုအား စူပါကလပ်စ်အနေဖြင့် သတ်မှတ်ထားပါက၊ စူပါကလပ်စ်က ပိုင်ဆိုင်သော အချက်အလက်များနှင့်၊ လုပ်ဆောင်ချက်များကို အသုံးပြုနိုင်ခြင်းကို ဆိုလိုသည်။ Java ဘာသာရပ်တွင် ကလပ်စ်တစ်ခုသည် စူပါကလပ်စ်တစ်ခုတည်းကိုသာ သက်မှတ်နိုင်သော်လည်း၊ အင်တာဖေစ်များကို တစ်ခုထက်မက ပံ့ပိုးပေးနိုင်သောကြောင့်၊ ကလပ်စ်တစ်ခုမှ အမျိုးမျိုးသော တာဝန်ကို ထမ်းဆောင်စေနိုင်ခြင်းဖြစ်၏။ Java တွင် အသုံးပြုသော အချက်အလက်များ၏ ပုံစံသည်၊ ပြင်းထန်သော ငြိမ်သက်ပုံစံ(Strong Static Type)ကို အသုံးပြုထားသည်။ ငြိမ်သက်သော အချက်အလက်ပုံစံကို အသုံးပြုထားခြင်းအားဖြင့် Java ကွန်ပိုင်လာနှင့် အသုံးပြု ပတ်ဝင်းကျင်(ပလက်ဖေါင်း)သည်၊ ပုံစံအချင်းချင်း၏ ဆက်စပ်မှု့မှန်ကန်ခြင်းကို စမ်းစစ်ခြင်းအားဖြင့်၊ ပရိုဂရမ်၏ မှန်ကန်စွာအလုပ်လုပ်နိုင်ခြင်းနှင့်၊ လုံခြုံစိတ်ချစွာ အလုပ်လုပ်နိုင်မှု့ကို အာမခံပေးနိုင်ခြင်းဖြစ်၏။ Java ၏ ဒေတာပုံစံသည်၊ ကိုးကားပုံစံ(reference type)နှင့် ကနဦးပုံစံ(primitive type)ဟု နှစ်မျိုးခွဲခြားနိုင်၏။ Java ၏ Object များသည် ကိုးကားပုံစံများဖြစ်ကြ၏။ Java တွင် အသုံးပြုနေသော အချက်အလက်များ၏ အခြေခံပုံစံသည်၊ ရိုးရှင်းသော အချက်အလက်(int, boolean, char ...) ပုံစံများဖြစ်ကြ၏။ Java ၏ စနစ်ကျလိုင်ဘရီသည်၊ အခြေခံပုံစံအချက်အလက်များကို Object အဖြစ် အသုံးပြုနိုင်စေရန် အတွက် အခြေခံအချက်အလက်များကို ခြုံငုံထားသော Wrapper Class များကို ပြင်ဆင်ထား၏။ Java(J2SE 5.0)အရောက်တွင် အချက်အလက်ပုံစံများ၏ ပြုပြင်ပြောင်းလည်းမှု့များကို ပြုလုပ်ထားသည်။
Java ၏ ထူးခြားချက်တစ်ခုဖြစ်သော Object Orientedသည်၊ ပရိုဂရမ်မင်းနှင့် ပရိုဂရမ်မင်းဘာသာရပ်ဖွဲ့စည်းပုံ များ၏ နည်းစနစ်တစ်မျိုးဖြစ်၏။ Java သည် Object Orientedပရိုဂရမ်မင်း ဘာသာရပ် တစ်မျိုးဖြစ်၏။ Object Oriented ဘာသာရပ်၏ အတွေးအခေါ်နှင့် ပတ်သက်ပြီး၊ အဓိပ္ပာယ်ဖွင့်ဆိုချက်ပေါင်း များစွာရှိကြ၏။ အများအားဖြင့် Object Orientedသဘောတရား၏ ထင်ရှားချက်ကိုသတ်မှတ်ရာတွင် ဆော့ဖ်ဝဲတွင် အသုံးပြုသော အမျိုးမျိုးသော အချက်အလက်များနှင့်ပတ်သက်၍၊ အချက်အလက်နှင့် ထိုအချက်အလက်များနှင့်ပတ်သက်သော လုပ်ဆောင်ချက်များကို တနေရာတည်းတွင် ပူးတွဲထားပြီး၊ ဆော့ဖ်ဝဲကို ဒီဇိုင်းရေးသားခြင်းပင်ဖြစ်၏။ ဤကဲ့သို့ အချက်အလက်နှင့် ကုဒ်တို့ကို ပူးတွဲထားသည်ကို၊ Objectဟုခေါ်ဆိုသည်။ Object ဆိုသည်မှာ၊ အနေအထားကို ဖော်ပြသော အချက်အလက်များနှင့်၊ လုပ်ဆောင်မှု့များကိုပြုလုပ်နိုင်သော ကုဒ်တို့က တနေရာတည်းမှာ စုစည်းထားသော အစုအဝေးတစ်ခုဟု သတ်မှတ်နိုင်ပေသည်။ Java တွင် Object တစ်ခု၏ဖွဲ့စည်းပုံကိုဖော်ပြသော မြေပုံကြမ်း(Blue Print) တစ်ခုဖြစ်သော ကလပ်စ်တွင် လုပ်ဆောင်ချက်များကို မက်သတ်ဟုခေါ်ဆိုပြီး၊ အချက်အလက်များကို Fields (Instance Variable) ဟုခေါ်ဆိုသည်။ Object Oriented မတိုင်မှီတွင် အသုံးပြုခဲ့သော နည်းပညာများတွင် အချက်အလက်နှင့် လုပ်ဆောင်ချက်များသည် တစ်နေရာစီတွင် တည်ရှိခဲ့ကြ၏။
Object Oriented အတွေးအမြင်ကို အခြေပြုပြီး၊ ယနေ့တိုင် တနေရာစီတွင် တည်ရှိခဲ့သော အချက်အလက်နှင့် လုပ်ဆောင်ချက်များအား၊ Object အနေဖြင့် တစ်နေရာတည်းတွင် စဉ်းစားလာနိုင်ခြင်းသည်၊ ဆော့ဖ်ဝဲစစ္စတမ်များ၏ ဖွဲ့စည်းပုံကို ဒီဇိုင်းရေးသားရာတွင် လွန်စွာမှအစဉ်ပြေသော အခြေခံတစ်ခုဖြစ်လာခဲ့၏။ Object Oriented ကို အသုံးပြုခြင်းအားဖြင့် ပမာဏကြီးမားသော စစ္စတမ်များကို ရေးသားရာတွင် ဖြစ်ပေါ်လေ့ရှိသော အခက်အခဲများကို လျှော့ပါးစေခြင်း၊ ဆော့ဖ်ဝဲ၏ အရည်အသွေးကို မြင့်မားစေခြင်းနှင့် မအောင်မြင်သော ပရိုဂျက်များကို နည်းပါးစေခြင်း အစရှိသော အကျိုးများကို ရရှိစေနိုင်သည်။ Object Oriented ၏ အခြားသော ရည်မှန်းချက် တစ်ခုမှာ နေရာ အမျိုးမျိုးတွင် အသုံးပြုနိုင်သော Object များကို ရေးသားခြင်းအားဖြင့်၊ ပရိုဂျက်များအကြားတွင် ဆော့ဖ်ဝဲများကို ပြန်လည်အသုံးပြုနိုင်ခြင်း ပင်ဖြစ်၏။ ဥပမာအားဖြင့်၊ User Object တစ်ခုသည်၊ အခြားသော ပရိုဂျက်တစ်ခုတွင်လည်း တူညီစွာအသုံးပြုနိုင်မည် ဖြစ်၏။ ကြီးမားသော အဖွဲ့အစည်းကြီးများတွင်၊ ပရိုဂျက်အမျိုးမျိုးတည်ရှိကြပြီး ထိုပရိုဂျက်များတွင် အခြေခံ အလွှာတစ်ခုကို တူညီစွာအသုံးပြုရန်လိုအပ်ပါက ပြန်လည်အသုံးပြုနိုင်သော ဆော့ဖ်ဝဲများသည် လွန်စွာမှအရေးကြီးလာသည်။ ဤကဲ့သို့ နေရာအမျိုးမျိုးတွင် အသုံးပြုနိုင်သော အခြေခံ ဆော့ဖ်ဝဲများကို ပြင်ဆင်ထားခြင်းအားဖြင့်၊ ဆော့ဖ်ဝဲများကို ရေးသားရာတွင် ရေးသားရန်လိုအပ်သော အချိန်ကို လျှော့ပါးစေသည်။ ပလက်ဖေါင်းအပေါ်တွင် မှီခိုမှု့ မရှိခြင်းJava ထူးခြားချက်နောက်တစ်ခုမှာ ပလက်ဖေါင်းတွင် မှီခိုမှု့မရှိခြင်း ဖြစ်ပြီး၊ Java ပရိုဂရမ်များသည် အမျိုးမျိုးသော ဟဒ်ဝဲနှင့်Operating Systemများအပေါ်တွင် အမြဲတမ်း တူညီစွာ လုပ်ဆောင်မှု့ကို ပြနိုင်သည်ဟု ဆိုလိုခြင်းဖြစ်၏။ Java ပရိုဂရမ်ကို တစ်ကြိမ်ရေးသားပြီးပါက၊ ထိုပရိုဂရမ်ဖြင့် အမျိုးမျိုးသော ပလက်ဖေါင်းအပေါ်တွင် အလုပ်လုပ်စေ နိုင်သည်။ ယခုနောက်ပိုင်းနှစ်များတွင် Java အသုံးပြုပတ်ဝင်းကျင်တွင် ပါဝင်သော Java ဒြပ်မဲ့စက် သည် အမြန်အလုပ်လုပ်စေနိုင်သည့် နည်းပညာကို ထည့်သွင်းလာနိုင်ခဲ့ပြီး၊ ပလက်ဖေါင်းကို မှီခိုသော သဘာဝပရိုဂရမ်မင်းဘာသာရပ် များကဲ့သို့ပင် လျင်မြန်စွာ အလုပ်လုပ်နိုင်လာခဲ့၏။ Java သည် ပလက်ဖေါင်းအပေါ်တွင် မှီခိုမှု့မရှိသည်မှာ အောက်ပါအကြောင်းများကြောင့် ဖြစ်၏။
တဖန်GNU၏GNU Compiler for Java (GCJ) ကဲ့သို့ Java ပင်ရင်းကုဒ်များမှ တိုက်ရိုက် စက်ဘာသာအဖြစ် ပြောင်းလည်း ပေးနိုင်သော ကွန်ပိုင်လာများလည်း ရှိကြ၏။ သို့ရာတွင် ဤနည်းဖြင့် ကွန်ပိုင်းလုပ်ထားသော ပရိုဂရမ်များသည် ကွန်ပိုင်းလုပ်စဉ်က အသုံးပြုထားသော ပလက်ဖေါင်းများအပေါ်၌သာ အလုပ်လုပ်နိုင်သည်။ ယခုနောက်ပိုင်းနှစ်များတွင် Ruby(JRuby)နှင့် Groovy၊Jabaco၊Python(Jython) အစရှိသည့် ဘာသာစကားဖြင့် ရေးသားထားသော ပရိုဂရမ်များကို ဘိုက်ကုဒ်အဖြစ် ကွန်ပိုင်းလုပ်ခြင်းအားဖြင့် Java ဒြပ်မဲ့စက် အပေါ်တွင် အလုပ်လုပ်စေသည့် နည်းလမ်းများကိုလည်း တွေလာရသည်။ အမှိုက်သိမ်းစနစ်Java သည် အမှိုက်သိမ်းစနစ်(Garbage Collection)ဟုခေါ်သော အလိုအလျှောက် မံမိုရီထိမ်းသိမ်းရေးစနစ်ကို ပြင်ဆင်ထားပြီး၊ ထိုစနစ်ကို အသုံးမပြုသော အခြားသော ဘာသာရပ်များ နှင့်နှိုင်းယှဉ်လျှင် ပရိုဂရမ်ရေးသားရာတွင် လွယ်ကူမြန်ဆန်ပြီး၊ စိတ်ချစွာအလုပ်လုပ်စေနိုင်၏။ နောက်ပိုင်းနှစ်များတွင် Java ၌ သက်တမ်းအလိုက် အမှိုက်သိမ်းစနစ် (Generational Garbage Collection) ဟုအမည်ရသော ပိုမို၍ အကျိုးရှိစွာအသုံးချနိုင်သော နည်းပညာအသစ်ကို ထည့်သွင်းအသုံးပြုလာခဲ့၏။ အမှိုက်သိမ်းစနစ်ကို အသုံးမပြုထားသော C++ နှင့် အခြားသော ဘာသာရပ်များကို အသုံးပြုရာတွင်၊ ပရိုဂရမ်မာမှ မံမိုရီကို တိုက်ရိုက် ထိမ်းသိမ်းရန်လိုအပ်ခဲ့၏။ OOP ကို အသုံးပြုသော ပရိုဂရမ်မာသည် ပုံမှန်အားဖြင့်၊ Java ကဲ့သို့ Heap မံမိုရီအတွင်းတွင် Object ကို နေရာချ၍ အသုံးပြုလေ့ရှိ၏။ ထိုမှတဆင့် Object ကို အသုံးမလိုတော့သောအခါ မဖြစ်မနေ ထို Object ကို ဖျက်စီးခြင်းအားဖြင့် Object က အသုံးပြုနေသော မံမိုရီကို ပြန်ပြီး လက်လွှတ်ပေးရန် လိုအပ်သည်။ မံမိုရီထိမ်းသိမ်းရေးတွင် အားနည်းသော ပရိုဂရမ်သည် မံမိုရီယိုစီးမှု့ကို ဖြစ်ပွားစေနိုင်၏။ မံမိုရီယိုစီးမှု့ဆိုသည်မှာ မသင့်တော်သော အမိန့်ပေးမှု့များကြောင့် အသုံးမလိုသော Object များမှ မံမိုရီကို ဆက်လက် နေရာယူထားပြီး၊ စုစည်းမိလာသောအခါ ပရိုဂရမ်မှ အသုံးပြုနိုင်သော မံမိုရီက တဖြည်းဖြည်းနည်းပါးလာခြင်းကို ဆိုလို၏။ ထို့အပြင် မံမိုရီကို လက်လွှတ်ချိန်တွင် အကြိမ်ကြိမ် Object ကို ဖျက်မိပါသဖြင့် ပရိုဂရမ်ကို မှားယွင်းစေပြီး ရုတ်တရက် အမှားဖြင့် ပြီးဆုံးသည့်အခါများလည်း ရှိတတ်၏။ အမှိုက်သိမ်းစနစ်ကိုအသုံးပြုခြင်း အားဖြင့် မလိုအပ်သော အမှားများကို ကြိုတင်ကာကွယ်နိုင်၏။ ပရိုဂရမ်မာသည် နှစ်သက်သည့်အချိန်တွင် Object ကို ခေါ်ယူ အသုံးပြုနိုင်ပြီး၊ Java ပတ်ဝင်းကျင်မှ ထို Object ၏ ဘဝစက်ဝိုင်း(Life Cycle)ကို ထိမ်းသိမ်းပေးနိုင်သည်။ Object တစ်ခုသည် အခြားသော Object ကို ကိုးကားနိုင်ပြီး၊ ကိုးကားထားသည့် Object ၏ မက်သတ်များကို ခေါ်ယူအသုံးပြုနိုင်၏။ အခြားသော Object တစ်ခုကို ကိုးကားခြင်းဆိုသည်မှာ Heap မံမိုရီ အပေါ်တွင်ရှိသော Object ၏ လိပ်စာကိုရည်ညွှန်းခြင်းကို ဆိုလို၏။ Object တစ်ခုအား ဘယ်နေရာကမှ ကိုးကားခြင်း မပြုတော့ပါက၊ Java ၏အမှိုက်သိမ်းစနစ်သည် အသုံးပြုရန်မလိုသော Object ကို အလိုအလျှောက် ဖျက်စီးပေးခြင်းအားဖြင့် အလိုအပ်ပဲနေရာယူထားသော မံမိုရီများကို ပြန်လည် လွှတ်ထုတ်ပေးနိုင်၏။ ဤသို့ ပြုလုပ်ပေးခြင်းအားဖြင့် မလိုအပ်ပဲ နေရာယူထားသော မံမိုရီများက တဖြည်းဖြည့် စုစည်းပြီး ဖြစ်ပေါ်တက်သော မံမိုရီယိုယွင်းမှု့မှ ကာကွယ်ပေးနိုင်သည်။ ကွန်ယက်နည်းပညာJava ၏ ပြည့်စုံသော လိုင်ဘရီကို အသုံးပြုခြင်းအားဖြင့်၊ ကွန်ပျူတာကွန်ယက်ကို အသုံးပြုသည့် ဆော့ဖ်ဝဲများကို လွယ်ကူစွာရေးသားနိုင်၏။ Java ၏ ကနဦးဗားရှင်းများမှစ၍၊ TCP/IP(IPv4) ကို အသုံးပြုနိုင်သော လိုင်ဘရီကို ပြင်ဆင်ထားပြီး၊ Network တွင် ဆော့ကက်ကို အသုံးပြုပြီး ဆက်သွယ်နိုင်သည့် ဆော့ဖ်ဝဲများကို လွယ်ကူစွာရေးသားနိုင်ခဲ့၏။ Java RMI ဒါမှမဟုတ် CORBA ၏ အဝေးရောက် Object (Remote Object)နည်းပညာကိုလည်း အခြေခံမှစ၍ အသုံးပြုနိုင်ခဲ့၏။ နောက်ပိုင်းနှစ်များတွင် အခြေခံ လိုင်ဘရီနှင့် မွန်းမံလိုင်ဘရီများကို အသုံးပြုခြင်းအားဖြင့် အမျိုးမျိုးသော ကွန်ယက် ပရိုတိုကောများကို အဆင့်မြင့်စွာ အသုံးပြုလာနိုင်ခဲ့၏။ လက်ရှိတွင် IPv6 ကို လည်းအသုံးပြုလာနိုင်ခဲ့၏။ လုံခြုံရေးJava သည် ကနဦးဗားရှင်းများမှစ၍ အခြားကွန်ပျူတာတစ်ခုအပေါ်ရှိ အလုပ်လုပ်နိုင်သောကုဒ်(Java အပလတ်)ကို စိတ်ချစွာအသုံးချနိုင်ရန် ဒီဇိုင်းရေးသားခဲ့သည်။
Java ပတ်ဝင်းကျင်၏ မှုလသတ်မှတ်ချက်ဖြင့်၊ အဝေးရောက်ကွန်ပျူတာ တစ်ခုအပေါ်ရှိ အလုပ်လုပ်နိုင်သောကုဒ်များမှ၊ လိုကယ်ဖိုင်စစ္စတမ်ဆီသို့ ဆက်သွယ်ခြင်းနှင့်၊ လုဒ်လုပ်ခဲ့သော ဆာဗာအပြင် အခြားသောနေရာများနှင့် ဆက်သွယ်ခြင်းကို တားမြစ်ထားသည်။ ရေးသားရန် အထောက်အကူပစ္စည်းကရိယာများJava အပလီကေးရှင်းများကို ရေးသားရန်လိုအပ်သော အဓိက အထောက်အကူပြု ဆော့ဖ်ဝဲ ကရိယာများကို ဖော်ပြသွားပါမည်။ ဖော်ပြပါ ဆော့ဖ်ဝဲများအပြင် အခြားသော တူးများလည်းရှိပါဦးမိ။
စုပေါင်းပတ်ဝန်းကျင် (IDE)များ
Java နည်းပညာ၏ အခြေခံစနှစ်ချမှတ်မှု့များ
လက်ရှိ Javaပလက်ဖေါင်း၏ အနာဂတ်ဗားရှင်းနှင့် ဖန်ရှင်များကို၊ JCP(Java Community Process)၏စနစ်ချမှတ်ရေး နည်းလမ်းများဖြင့် ပြုပြင်ရေးသားနေကြ၏။ JCP ၏ အဖွဲ့ဝင်ဖြစ်ခြင်းအားဖြင့် Javaနည်းပညာ၊ အနာဂတ်ဗားရှင်းနှင့် ဖန်ရှင်များကိုသတ်မှတ်ရာတွင် ပါဝင်နိုင်သည်။ JCP တွင်IBM၊ Borland၊ BEA Systems၊ Fujitu၊ Apache Software Foundation၊ HP အစရှိသော နယ်ပယ်အသီးသီးမှ ပါဝင်လျက် ရှိ၏။ JCP သည် Javaပလက်ဖေါင်းတွင် ထည့်သွင်းမည့် အသုံးပြုပုံနှင့် နည်းပညာများအား JSRs(Java Specification Requests) ဟုအမည်ရသော စာတမ်းများဖြင့် သတ်မှတ်လျက် ရှိ၏။ ပရိုဂရမ်မင်းဘာသာရပ် Java နှင့် Java Core API နှင့် ပတ်သက်သော JSRs အချို့ကို စုစည်းထားပါမည်။
ကိုးကား
|
Portal di Ensiklopedia Dunia