Java အကြောင်း

Java ဆိုတာဘာကို ခေါ်တာလဲ ? Java Programming Language ကို Java လို့ဆိုလိုတာလား ? သို့မဟုတ် JRE , JDK ကို Java လို့ခေါ်တာလား ? Java Virtual Machine(JVM) ကိုပဲ Java လို့ခေါ်သလား ? မျက်နှာ ဘယ်နားရှိသလဲ ထောက်ပြခိုင်းသလိုပါပဲ ။ အမှန်က အားလုံးကို ပေါင်းပြီး Java လို့ခေါ်တာပါ။ အတိအကျဆိုရင်တော့ Java ဆိုတာဟာ Sun Microsystems ကထုတ်လုပ်တဲ့ computer software တစ်ခုပါ။ Sun Microsystems ဆိုတာ California ပြည်နယ် Santa Clara မြို့ မှာရှိတဲ့ ရှေ့ဆောင် နည်းပညာကုမ္ပဏီတစ်ခုပါ (Silicon Valley လို့ခေါ်တဲ့ California ပြည်နယ်ရဲ့မြောက်ပိုင်းပါ။)။ Sun Microsystems ကနေ computerတွေ ၊ computer သုံးပစ္စည်းတွေ ၊ computer software တွေ ထုတ်လုပ်ရောင်းချပါတယ်။ Java platform ကို အမျိုးမျိုးသော စက်ပစ္စည်းတွေ(ရေခဲသေတ္တာ၊ မိုက်ခရိုဝေ့ဖ် မီးဖို၊ air-con၊ ငွေထုတ်စက်) တွေအပြင် mobile phones, computers, web servers ,supercomputers တွေမှာ ထည့်သွင်း အသုံးပြုနိုင်ဖို့ Sun(Sun Microsystems အတိုကောက်) ကုမ္ပဏီကနေ ထုတ်လုပ်ခဲ့တာဖြစ်ပါတယ်။

ဒီနေရာမှာ platform ဆိုတဲ့ စကားလုံးကိုရှင်းပါဦးမယ်။ platform ဆိုတာ က applicationတွေ ၊ software တွေ ဖန်တီး အသုံးပြုတဲ့ နည်းပညာအစုအဝေးကိုပြောတာပါ။ ဆိုပါဆို့ ကျွန်တော့်မှာ ကွန်ပျူတာ ရှိတယ်။ ကျွန်တော့်ကွန်ပျူတာမှာ Window OS သွင်းထားတယ်။ ဒါဆိုရင် ကျွန်တော် software တွေသွင်းပြီး အသုံးပြုလို့ရတယ်။ နောက်ပြီး ကျွန်တော် Window OS အတွက် application တွေလည်း create လုပ်လို့ရတယ်။ ဒါကြောင့် ကျွန်တော့်ကွန်ပျူတာကို platform လို့ခေါ်လို့ရပါတယ်။ အဲ့လိုပဲ ကျွန်တော့်သူငယ်ချင်းဆီမှာ Mac book တစ်လုံးရှိတယ် Mac OS သွင်းထားတယ်။ ဒါဆိုရင် သူငယ်ချင်းရဲ့စက်မှာ Mac application တွေ အသုံးပြုလို့ရတယ် ဖန်တီးလို့ရတယ်။ အဲ့တာကြောင့် သူ့ Mac book ကိုလည်း platform လို့ခေါ်ပါတယ်။ ဒါကြောင့် ကွန်ပျူတာ နယ်ပယ်မှာ platform ဆိုတာက CPU တွေ ၊ memory တွေကို ခိုင်းစေတဲ့ software တွေကို platform လို့ခေါ်ပါတယ်။ သိသာတဲ့ platform တွေကတော့ ကျွန်တော်တို့ လက်ရှိသုံးနေကြတဲ့ Window , Mac ,Linux စတဲ့ Operation System တွေပါ။ ယျေဘူယျ အားဖြင့် platform တစ်ခုမှာ အလုပ်လုပ်စေချင်တဲ့ application တစ်ခုဟာ အဲ့ဒီ့ platform မှာပဲ အလုပ်လုပ်ပါတယ်။ တစ်ခြား platform မှာ အလုပ်မလုပ်ပါဘူး။ ဆိုလိုတာက Mac OS အတွက် ဖန်တီးထားတဲ့ application တစ်ခုဟာ Mac OS ရဲ့ Operating System , Hardware တွေအပေါ်မှာပဲ အလုပ်လုပ်ပါတယ်။ Window OS အတွက်အလုပ်မလုပ်ပါဘူး။ နောက်ပိုင်း နည်းပညာတွေမှာတော့ platform အမျိးမျိုး မှာ အလုပ်လုပ်နိုင်တဲ့ application တွေဖြစ်အောင် ကြိုးစားလာကြပါတယ်။

ဒီနေရာမှာ Java platform ဆိုတာက Java programming language ကို အသုံးပြုပြီး application တွေတည်ဆောက်နိုင်အောင် ၊ run (run တယ်ဆိုတာက program ရေးသားသူတွေကြားမှာ ပြောလေ့ရှိတဲ့ စကားလုံးပါ။အဓိပ္ပာယ်က ရေးသားထားတဲ့program တွေကို အသုံးပြုတာကို ဆိုလိုပါတယ်။) နိုင်အောင် အထောက်အပံ့ပေးပါတယ်။ ဟုတ်တယ် Java ဟာ platform တစ်ခုပါ။ Java application , software , program တွေ create လုပ်နိုင်တဲ့ကောင်ပါ။ ကျွန်တော်တို့ create လုပ်လိုက်တဲ့ Java program တွေဟာ Operating System တွေပေါ်မှာ တိုက်ရိုက် မ run ပါဘူး။ Java platform ရဲ့ JVM ဆိုတဲ့ software ပေါ်မှာ run တာပါ။ တကယ်လို့သာ java program တွေက OS ပေါ်မှာသာ run တယ်ဆိုရင် ကျွန်တော်တို့ ရေးတဲ့ program တွေက Window မှာရေးရင် Window မှာပဲ အလုပ်လုပ်ပါမယ်။ Mac မှာပါ အလုပ်လုပ်စေချင်ရင် Mac OS အတွက် compile ပြန်လုပ်ရပါမယ်။ ဒါဟာ java ရဲ့ အဓိက အားသာချက်ပဲ ။ ဒီအချက်ကြောင့်လည်း Java မဟုတ်တဲ့ တစ်ခြား programming language တွေကပါ Java ရဲ့ JVM ကို အသုံးပြုလာကြတာပါ။ ကျွန်တော်တို့ တစ်ခါပဲ ရေးသားစရာလိုတယ်။ ကြိုက်တဲ့ platform မှာရေး ပြီးရင် ကြိုက်တဲ့ OS မှာသွား run။ အလုပ်လုပ်တယ်ဗျ။ ဘာကြောင့်လဲ ဆိုတော့ ကျွန်တော်တို့ ရေးတဲ့ program တွေက OS တွေမှာ run တာမှမဟုတ်တာ။ JVM မှာ run တာကိုး။ တစ်နည်း java platform မှာ runတာ။ ဒါကြောင့် Java ရဲ့ဆောင်ပုဒ်ဖြစ်တဲ့ "Write Once , Run Anywhere (WORA)" ဆိုတာနဲ့ နာမည်ကြီးလာတာပေါ့ဗျာ။ Java programming က ဘယ် platform ကိုမှ မမှီခိုနေပါဘူး။ platform independent လို့ခေါ်ပါတယ်။ ကျွန်တော်ပြောတာ java programming နော်။ Java platform မှာ Java Virtual Machine(အတိုကောက် JVM)၊ compiler နဲ့ ကျွန်တော်တို့ java program တွေမှာရော JVM မှာရော အသုံးပြုတဲ့ libraries တွေပါဝင်ပါတယ်။ JDK + JRE ကိုဆိုလိုတာပါ။ compiler ဆိုတာကတော့ Java Programming Language ကိုအသုံးပြုပြီး ရေးသားထားတဲ့ Java program တွေကို JVM မှာ run နိုင်ဖို့အတွက် JVM က နားလည်တဲ့ Java byte code တွေအဖြစ်ပြောင်းလဲ ပေးတဲ့ ကြားခံ language တစ်ခုပါ။ အခုလိုမျိုး သူ့အပိုင်းနဲ့ သူ ဆောင်ရွက်ပေးတဲ့ program တွေကိုစုစည်းပြီး Java platform အဖြစ် တည်ဆောက်ထားတာပါ။

Java platform မှာ ပါဝင်တဲ့ JVM ကတော့ platform dependent ဖြစ်ပါတယ်။ Window အတွက် JVM နဲ့ Mac အတွက် JVM ကတော့ မတူပါဘူး။ JVM ကိုယ်တိုင်ကတော့ OS တွေမှာ run တာဖြစ်တဲ့ အတွက် platform dependent ဖြစ်ပါတယ်။ ကျွန်တော်တို့ ကြားကြားနေရဲ့ java is platform independent ဆိုတာ java programming language ကိုသာဆိုလိုပါတယ်။ ကျွန်တော်တို့တွေက Java လို့ဆိုလိုက်ရင် Java programming Language တစ်ခုတည်း ကိုပဲပြေးမြင်ကြပါတယ်။ ဒါပေမယ့် programming language ဆိုတာက platform ဆိုတဲ့စကားလုံးမှာ အကျုံးမဝင်ပါဘူး။ ဆိုလိုတာက java programming ဟာ အထက်မှာ ဖော်ပြခဲ့တဲ့ Java platform ထဲမှာ ယနေ့အချိန် မပါဝင်တော့ပါဘူး။ java platform က သပ်သပ် ၊ java programming ကသပ်သပ်လို့ မှတ်ယူစေလိုပါတယ်။ Java version 7 မတိုင်ခင်ကအထိတော့ java programming ဟာ java platform ရဲ့ အဓိက အစိတ်အပိုင်း ဖြစ်ခဲ့ပါတယ်။ ဒါကြောင့်လည်း java programming နဲ့ JVM တို့ကို တစ်ခုတည်းအနေနဲ့ပဲ မြင်ခဲ့ကြတာပါ။ Java 7 ကနေစပြီးတော့ java programming နဲ့ JVM ကို သီးခြားစီအဖြစ် ခွဲခြားခဲ့ပါတယ်။ အခုဆိုရင် JVM ဟာ Java programming language တစ်ခုတည်းအတွက် မဟုတ်တော့ပါဘူး ။ JVM ကို အသုံးပြုတဲ့ တစ်ခြား programming language တွေ ၊ compiler တွေ ၊ interpreter တွေလည်း ရှိပါသေးတယ်။

ဥပမာ

	    BeanShell – A lightweight scripting language for Java
	    Clojure – A dialect of the Lisp programming language
	    Groovy, a dynamic language with features similar to those of Python, Ruby, Perl, and Smalltalk
	    JRuby – A Ruby interpreter
	    Jython – A Python interpreter
	    Kotlin – An industrial programming language for JVM with full Java interoperability
	    Rhino – A JavaScript interpreter
	    Scala – A multi-paradigm programming language designed as a "better Java"
	    Gosu – A general-purpose Java Virtual Machine-based programming language released 
                   under the Apache License 2.0
     	

Java platform ကို ပုံစံသုံးမျိုးနဲ့ ထုတ်လုပ်ထားပါတယ်။ အသုံးပြုမယ့် ပါတ်ဝန်းကျင်အပေါ် မူတည်ပြီး အဆင်ပြေရာ ရွေးချယ်နိုင်အောင်ပါ။ အဲ့တာတွေကတော့

  1. Java SE (Standard Edition)
    Standard Edition ဟာ java platform ရဲ့ အဓိက အစိတ်အပိုင်းဖြစ်ပါတယ်။ သူ့မှာ ပါဝင်တာတွေကတော့ Java programmer တစ်ယောက်အနေနဲ့ သိသင့်သိထိုက်တဲ့ libraries တွေဖြစ်ပါတယ်။ libraires တွေဆိုတာက JVM အတွက်သို့မဟုတ် Java program တွေအတွက် လိုအပ်တဲ့ အဆင်သင့်ရေးထားပြီးသား java program အစုအဝေးတွေကိုဆိုလိုတာပါ။ ဒါအပြင် ready made ပြုလုပ်ပြီးသား API(Application Programming Interface)တွေပါဝင်ပါတယ်။ ဥပမာ - applet,awt,rmi,jdbc,swing,collections,xml binding,JavaFX(Java version 8ရောက်မှ Java SE ထဲပေါင်းထည့်တာပါ။ Java7 တုန်းကဆိုရင်တော့ သူက သပ်သပ် platform အနေနဲ့ခွဲခြားထားပါတယ်), java.lang, java.io, java.math, java.net, java.util, အစရှိသည်တို့ဖြစ်ပါတယ်။ Java SE platform ကိုတော့ Personal Computers(PC) တွေအတွက် အဓိကရည်ရွယ်ပြီးထုတ်လုပ်ထားတာပါ။
  2. Java EE(Enterprise Edition)
    Enterprise Edition ဆိုတာကတော့ လုပ်ငန်းသုံးအတွက်ရည်ရွယ်ပြီး ထုတ်လုပ်ထားတာပါ။ လုပ်ငန်းသုံးဆိုတာက သုံးစွဲသူ တစ်ဦးတစ်ယောက်ထက်ပိုလာပြီး အဖွဲ့အစည်းတစ်ခု ၊ ကုမ္ပဏီတစ်ခု မှတစ်ဆင့် ကမ္ဘာအရပ်ရပ်မှ လူများ စုပေါင်း သုံးစွဲနိုင်တဲ့ large application တွေတည်ဆောက်ဖို့ရည်ရွယ်ပါတယ်။ အဲ့အတွက် application server များကိုကြားခံပြီး သုံးစွဲကြတဲ့ အခါမှာ လိုအပ်တဲ့ libraries တွေကို Standard Edition အပေါ်မှာ အခြေခံပြီး ထပ်မံဖြည့်စွက်ထားတဲ့ platform ဖြစ်ပါတယ်။ ဥပမာ အနေနဲ့ servlet,JSP,websocket,java faces,dependency injection,ejb,persistence,transaction,jms,batch api အစရှိတဲ့ distributed system တွေအတွက် လိုအပ်တဲ့ API တွေ ၊ libraries တွေပါဝင်ပါတယ်။ distributed system ဆိုတာက files,media,data,documents တွေကို network ပေါ်ကနေ မျှဝေသုံးစွဲတာကိုပြောတာပါ။ Web application တွေအတွက်လို့ဆိုရင်လည်း မမှားပါဘူး။
  3. Java ME(Micro Edition)
    Micro Edition ကတော့ သေးငယ်တဲ့ electronic ပစ္စည်းတွေအတွက် ထုတ်လုပ်ထားတဲ့ platform ဖြစ်ပါတယ်။ Java ME ဟာ Java SE platform ကို သေးငယ်တဲ့ device တွေအတွက် အဆင်ပြေမယ့် platform အဖြစ်ပြုလုပ်ထားတာပါ။ ဥပမာ sim card ,ရေခဲသေတ္တာ ,မီးဖို ,phone အစရှိသည်တို့အတွင်းမှာ ထည့်သွင်း အသုံးပြုနိုင်ဖို့အတွက်ဖြစ်ပါတယ်။ ပါဝင်တဲ့ libraries တွေကတော့ Wireless Messaging,Java ME Web Services,Security and Trust Services API, Location,Mobile XML API အစရှိသည်တို့ဖြစ်ပါတယ်။ အဓိက target ထားပြီး တည်ဆောက်တာကတော့ mobile device တွေအတွက်ပါ။ Java ME ဟာ ဟိုးအရင် Java version အဟောင်းတွေအပေါ်မှာအခြေခံပြီး တည်ဆောက်ထားတာဖြစ်တဲ့ အတွက် အခုနောက်ပိုင်း Java version အသစ်တွေမှာ ဖြည့်စွက်လာတဲ့ နည်းပညာအသစ်တွေကိုတော့ အသုံးပြုလို့ မရနိုင်ပါဘူး။ ဥပမာ Java version 1.5 ရဲ့ Generic feature ဟာဆိုရင် Java ME မှာ support မလုပ်ပါဘူး။ ကံမကောင်းစွာပဲ Java ME platform ကတော့ သိပ်ပြီးလူအသုံးမများ ပါဘူး။
အခုလိုကွဲပြားတဲ့ environment တွေအတွက် ကွဲပြားတဲ့ platform တွေတည်ဆောက်ထားပါတယ်။ ကျွန်တော်တို့ JDK ကို download လုပ်တဲ့ အခါမှာ အခုနောက်ပိုင်းမှာတော့ Java SE အတွက်ကော Java EE အတွက်ပါ အသုံးပြုလို့ရတဲ့ platform ကိုရရှိမှာဖြစ်ပါတယ်။ ဒါပေမယ့် Java ME အတွက် JDK ကတော့ အသုံးပြုဖို့ရာ သပ်သပ် download လုပ်ရမှာပါ။ ပါဝင်တဲ့ libraries တွေနဲ့ JRE တည်ဆောက်ပုံတွေ ကွဲပြားပါတယ်။

1995ခုနှစ်မှာ Time မဂ္ဂဇင်းကနေ တစ်နှစ်တာအတွင်း ထိပ်ဆုံး ထုပ်ကုန် ၁၀ခုထဲမှာ Java ကို ထည့်သွင်းဖော်ပြခဲ့ပါတယ်။ 2014 ခုနှစ် ကထုတ်ပြန်တဲ့ The RedMonk Programming Language Rankings အရ Java ဟာ နံပါတ် တစ် နေရာကိုရောက်ရှိခဲ့ပါတယ်။ ယခုလက်ရှိ 2016 ခုနှစ်မှာတော့ Java ဟာ နံပါတ် တစ် programming language အဖြစ်ရပ်တည်နေပြီးတော့ တစ်ကမ္ဘာလုံးရှိ developer ကိုးသန်း ကျော်က အသုံးပြုနေကြတယ်လို့ စစ်တမ်း အရဖော်ပြထားပါတယ်။

Java Runtime Environment (JRE)

Java programming language နဲ့ရေးသားထားတဲ့ code တွေကို Java platformအထောက်အပံ့ပေးတဲ့ ဘယ် operating system မှာမဆို run လို့ရပါတယ်။ Java မပေါ်ခင်အချိန်တုန်းကဆိုရင် နေရာတိုင်းမှာ အဆင်ပြေတဲ့ program ကိုရဖို့ဆိုတာ အလွန်ခက်ခဲ့တဲ့ ကိစ္စတစ်ခုဖြစ်ခဲ့ပါတယ်။ Unix operation system အတွက်ဖန်တီးထားတဲ့ application တစ်ခု ၊ program တစ်ခုဟာ Window မှာ အလုပ်မလုပ်ပါဘူး။ အကြောင်းက ရေးသားထားတဲ့ program က Unix Operating system ရဲ့ စက် ကသာနားလည်အသုံးပြုနိုင်တဲ့ program တွေဖြစ်နေလို့ပါ။ Java နည်းပညာရဲ့ အဓိကရည်ရွယ်ချက်ကိုက Operation system , platform , architecture မရွေး အသုံးပြုနိုင်တဲ့ program တည်ဆောက်နည်း ဖြစ်ပါတယ်။ ဒါကြောင့် Java Runtime Environment ဆိုတဲ့ Java အမည်ရ Runtime Environment (program များ တည်ဆောက်အသုံးပြုရာ နေရာ)ကိုတီထွင်ခဲ့ပါတယ်။ JRE ရဲ့ အလုပ်လုပ်ပုံက သူဟာ Operating system အတွင်းမှာ နေရာယူပြီး Java program တွေက ခိုင်းစေတဲ့ ညွှန်ကြားချက်တွေကို သက်ဆိုင်ရာ operating system ကနားလည်တဲ့ command တွေဖြစ်ပြောင်းလဲ ပေးပါတယ်။ ဒီလိုပြောင်းလဲ နိုင်အောင် JRE အထဲမှာ ပါဝင်တဲ့ Java Virtual Machine(JVM) ကိုအသုံးပြုပြီး java program တွေနဲ့ Operating system ကြား မှာ ဆက်သွယ်မှု ပြုလုပ်စေပါတယ်။ အောက်ပါ ပုံကိုကြည့်ပါ။

ပုံမှာဆိုရင် java application တစ်ခုကို JRE မှတစ်ဆင့် ၊ Unix OSသုံး ကွန်ပျူတာ က နားလည်တဲ့ application ၊ Window OSသုံး ကွန်ပျူတာက နားလည်တဲ့ application တွေအဖြစ် ပြောင်းလဲပေး တဲ့ တာဝန်ကို လုပ်ဆောင်ပေးပါတယ်။

Java Virtual Machine (JVM)

Java Virtual Machine(JVM) ဟာ Java Runtime Environment(JRE) ရဲ့ အဓိကအစိတ်အပိုင်းဖြစ်ပါတယ်။ ကျွန်တော်တို့ ကွန်ပျူတာတွေရဲ့ အဓိက အစိတ်အပိုင်းက CPU ပါ။ heart of computer ပါ။ CPU ကမှတစ်ဆင့် Operating system တစ်ခုလုံးရဲ့ အလုပ်တွေကို စီမံတာပါ။ JVM ဟာ ကျွန်တော်တို့ရဲ့ ကွန်ပျူတာတွေထဲမှာ Java program တွေအလုပ်လုပ်နိုင်အောင် CPU တစ်ခုကဲ့သို့ အလုပ်လုပ်ဆောင်ပေးပါတယ်။ တကယ့် CPU တစ်ခု တပ်ဆင်တာမျိုးမဟုတ်ပဲ CPU ကဲ့သို့ java program တွေအပေါ် စွမ်းဆောင်ဆောင်ပေးတဲ့ အတွက် CPU အတု သို့မဟုတ် စက်အတု (Virtual Machine)ဆိုပြီးခေါ်ဆိုပါတယ်။ Virtual Machine ဆိုတဲ့ ဝေါဟာရက Java မှာမှ ရှိတာမဟုတ်ပါဘူး ။ Java မပေါ်ခင်ကတည်းက enulator တွေ၊ VMWare ကဲ့သို့သော Virtual Machine တွေရှိပါတယ်။ JVM ရဲ့ အဓိက လုပ်ငန်းစဉ်ကတော့ java byte code တွေကို သက်ဆိုင်ရာ operating system တွေက နားလည်တဲ့ machine code တွေအဖြစ်ဘာသာပြန်(interpret)ပေးတဲ့ အလုပ်ပါ။ JVM က ဘာသာပြန်(interpret) လုပ်တယ်ဆိုတာကလည်း Java စပေါ်ကာစအချိန်တုန်းက JVM ရဲ့တည်ဆောက်ပုံပါ။ အခုလို JVM ကနေတစ်ဆင့် operating system တွေကနားလည်တဲ့ native code တွေအဖြစ်ဘာသာပြန်ပေးခြင်းအားဖြင့် Write Once , Run Anywhere (WORA) ဆိုတဲ့ အကျိုးကျေးဇူးကို ရရှိတာမှန်ပေမယ့် ဒါဟာတော်တော်လေး ခေတ်နောက်ကျတဲ့ ပုံစံဖြစ်နေပါတယ်။ အခုလို interpret လုပ်တဲ့ အခါမှာ Java program တွေ အသုံးပြုနိုင်ဖို့အတွက် အချိန်ကြာမြင့်စေပါတယ်။ native code ဆိုတာ သက်ဆိုင်ရာ Operating system တွေရဲ့ ကိုယ်ပိုင်ဘာသာစကားဖြစ်ပါတယ်။ ဥပမာ - browser တွေက HTML ကိုနားလည်တယ်။ Window OS က xxxx.bat file တွေ xxxx.exe file တွေကိုနားလည်တယ် ဆိုတာမျိုးပေါ့။ platform တိုင်းရဲ့ သူတို့ကို တည်ဆောက် ဖွဲ့စည်းထားတဲ့ အခြေခံ ဘာသာစကား တွေ ၊ program တွေကို native code လို့ခေါ်ပါတယ်။ native code တွေက platform တွေအပေါ်မူတည်ပြီး မတူညီကြပါဘူး။

ပုံမှာဆိုရင် java byte code တွေကို JRE အတွင်းထဲမှာရှိတဲ့ JVM ကနေ interpret အလုပ်ကိုလုပ်ဆောင်ပြီး ကျွန်တော်တို့ကွန်ပျူတာ တွေမှာ အသုံးပြုနိုင်တဲ့ native code တွေအဖြစ်ပြောင်းလဲပေးတာကို တွေ့ရပါမယ်။

Just-in-Time Compilation

Java version 1.2 ကတည်းက စပြီး JVM ကိုပိုမိုမြန်ဆန်အောင် ကြိုးစားလာပါတယ်။ java byte code တွေကို OS တွေကနားလည်တဲ့ native code တွေအဖြစ် interpret လုပ်တာထက်စာရင် OS တွေမှာသုံးတဲ့ native code တွေအဖြစ်တိုက်ရိုက်ပြောင်းလဲနိုင်အောင် ပြုလုပ်ခဲ့ပါတယ်။ အခုလိုမျိုး OS ရဲ့ native code အဖြစ် တိုက်ရိုက်ပြောင်းလဲခြင်း ဖြစ်စဉ်ကို just-in-time compilation သို့မဟုတ် JIT-compilationလို့ ခေါ်ပါတယ်။ JIT-compilation နည်းပညာရဲ့အားသာချက်က ပထမဆုံးတစ်ကြိမ်ပဲ java byte code တွေကို native code အဖြစ်ပြောင်းလဲပါတယ်။ နောက်ထပ်အကြိမ်ကြိမ် program ကို run တဲ့ အခါတွေမှာ ပြောင်းလဲပြီးသား native code တွေကိုပဲ အသုံးပြုသွားပါတယ်။ ကျွန်တော်တို့ interpreting လုပ်စဉ်ကဆိုရင်တော့ java byte code တွေကို native code တွေအဖြစ် ဘာသာပြန်တဲ့ အလုပ်ကို java program တစ်ပုဒ် run တိုင်း လုပ်ဆောင်ပါတယ်။ JIT-compiler ကို Java version ကိုထည့်သွင်းလာပြီးတဲ့ နောက်မှာတော့ ကျွန်တော်တို့ java program တွေဟာ ပထမတစ်ကြိမ် native code အဖြစ်ပြောင်းလဲတဲ့ အချိန်ပဲ ကြာမှာဖြစ်ပြီး နောက်အကြိမ်တွေမှာတော့ တိုက်ရိုက် run နိုင်တဲ့ ပုံစံအဖြစ်ပြောင်းလဲလာပါတယ်။ ဒီလို လုပ်ဆောင်ခြင်းအားဖြင့် CPU ရဲ့ လုပ်ငန်းစဉ်တွေကို လျှော့ချနိုင်မှာဖြစ်ပြီး အချိန်ကုန်သက်သာ မြန်ဆန်စေပါတယ်။

အထက်ပါပုံမှာပြထားချက်အရ java byte code တွေကို ပထမတစ်ကြိမ် run တဲ့အခါမှာ native application အဖြစ် ပြောင်းလဲတာကိုတွေ့ရပါမယ်။ နောက်အကြိမ်တွေမှာတော့ ပြောင်းလဲပြီးသား native application အဖြစ် တိုက်ရိုက် run တာကိုတွေ့ပါလိမ့်မယ်။ ဒါက JVM ရဲ့ အသစ်ထည့်သွင်းလာတဲ့ Just-In-Time (JIT) compiler အကြောင်းပါ။

The Java compiler

အထက်မှာ ကျွန်တော်က java byte code ဆိုတာကို ထပ်ခါထပ်ခါ ပြောခဲ့တယ်။ java byte code ဆိုတာဘာလဲပေါ့နော်။ ဒီလိုပါ ကျွန်တော်တို့က java program တွေကိုရေးတယ်ပေါ့ဗျာ။ အဆင်ပြေရာ Text Editor တစ်ခုခုမှာဖြစ်ဖြစ် IDE တစ်ခုခုမှာဖြစ်ဖြစ်ပေါ့။ အဲ့ဒီ့ ကျွန်တော်တို့ရေးထားတဲ့ java program တွေကို .java ဆိုတဲ့ file extension နဲ့ သိမ်းဆည်းကြပါတယ်။ အဲ့ဒီ့ xxxx.java file တွေကို Java programming နယ်ပယ်မှာ source code တွေလို့ခေါ်ပါတယ်။ အဲ့ဒီ့ source code တွေဟာ Operating system ကိုခိုင်းစေမယ့် instruction တွေပါဝင်ပါတယ်။ ဒီကောင်တွေကို ကျွန်တော်တို့ ရဲ့ Operating system မှာခိုင်းစေနိုင်ဖို့ဆိုတာ ဘာတွေခိုင်းတာလဲ ဆိုတာကို ကျွန်တော်တို့ရဲ့ Operating system က နားလည်မှ ဖြစ်မှာပါ။ ဒါပေမယ့် ခက်တာက ကျွန်တော်တို့ရေးထားတဲ့ java program တွေကို OS တွေက နားမလည်ဘူးဗျ။ OS တွေက သူတို့ ရဲ့ native code တွေကိုပဲ နားလည်တာ။

အဲဒီ့တော့ကာ English ဘာသာပဲ နားလည်တဲ့ လူတစ်ယောက်နဲ့ Myanmar ဘာသာပဲ နားလည်တဲ့ လူနှစ်ယောက် ပြောဆိုဆက်ဆံနိုင်ဖို့ အတွက် အကောင်းဆုံးနည်းလမ်းက စကားပြန် ထည့်ပေးလိုက်တာပါပဲ ။ ဒီသဘောတရားကို သိမယ်ဆိုရင် ကျွန်တော်တို့ရေးထားတဲ့ Java program တွေနဲ့ platform တွေကြားမှာ စကားပြန်လိုအပ်ပါတယ်။ ဒါဖြင့် စကားပြန်ကဘာလဲ ဆိုရင်တော့ ကျွန်တော်တို့ရဲ့ မင်းသားချောကြီး JVM ပါ။ ကျွန်တော်တို့ရေးတဲ့ program တွေကို JVM ကနားလည်တယ် ။ သူကနေတစ်ဆင့် OS နားလည်တဲ့ ညွှန်ကြားချက်တွေအဖြစ် ပြောင်းလဲပေးနိုင်ပါတယ်။ စကားပြန်မထည့်လို့မရဘူးလားတော့ မမေးနဲ့ဗျို့ Java က ဒီစကားပြန်လေးနဲ့ လုပ်စားနေတာ။ စကားပြန်မရှိပဲ တိုက်ရိုက်လုပ်ချင်သပဆို ကျွန်တော်တို့ ရေးတဲ့ program တွေက platform ကို မှီခိုသွားလိမ့်မယ်။ ဒါလေးပါ ... ကြည့်စမ်း Java တို့ပိုင်ချက် ။ သူများတကာတွေအဲ့တာမျိုး မစဉ်းစားမိတော့ သူတို့ programming language တွေဟာ platform တွေအပေါ်မှာ မှီခိုကုန်တယ်။ What is the most important feature of Java ? လို့မေးရင် အဖြေက Platform Independent ပါပဲ။

Java compiler အကြောင်းဆက်ပြောရအောင်။ "... ကျွန်တော်တို့ရေးတဲ့ program တွေကို JVM ကနားလည်တယ် " ဆိုတာ ကျွန်တော်ကအလွယ်ပြောလိုက်တာပါ။ အမှန်က JVM ကကျွန်တော်တို့ရဲ့ Java source ဖိုင်တွေကိုတိုက်ရိုက်နားမလည်ပါဘူး။ JVM ကို byte code system အနေနဲ့ တည်ဆောက်ထားတာပါ။ byte code ကို portable code(p-code) လို့လည်း ခေါ်ပါတယ်။ အထူးသဖြင့် Virtual Machine တွေနဲ့ တွဲပြီးသုံးတဲ့ system တစ်ခုပါ။ JVM ကလည်း byte code system အနေနဲ့ တည်ဆောက်ထားတာ ဖြစ်တဲ့အတွက် JVM နားလည်တဲ့ byte code တွေဖြစ်အောင် ကျွန်တော်တို့ရေးသားထားတဲ့ program တွေကို ပြောင်းလဲပေးဖို့လိုပါတယ်။ ဒီအတွက် Java software(JDK)မှာ compiler လို့ခေါ်တဲ့ java source code တွေကို byte code တွေအဖြစ်ပြောင်းလဲ ပေးနိုင်တဲ့ tool လေးပါပါတယ်။ JDK အတွင်း ထဲမှာ javac ဆိုတဲ့ application ဟာ java software ရဲ့ compiler ပါ။ Java မှာတော့ byte code တွေကို xxxx.class ဆိုတဲ့ file extension နဲ့သိမ်းဆည်းပါတယ်။ ဒီ ဖိုင်တွေထဲမှာ ပါဝင်တာတွေကိုတော့ ကျွန်တော်တို့ programmer တွေအနေနဲ့လည်း နားမလည် နိုင်သလို Operating system တွေကလည်း နားမလည်ပါဘူး။ သူက byte code system တွေနဲ့ တည်ဆောက်ထားတဲ့ Virtual Machine တွေအတွက်ပါ။

အထက်ပါပုံမှာဆိုရင် ကျွန်တော်တို့တွေရေးသားထားတဲ့ SampleApplication.java ဆိုတဲ့ java program file ကို Java Compiler မှတစ်ဆင့် JVM နားလည်တဲ့ byte code Application.class ဖိုင်အနေအထား ပြောင်းလဲပေးပုံကို ပြထားပါတယ်။

Java ပေါ်ပေါက်လာပုံ

Java Programming Language ကို Sun Microsystems ကုမ္ပဏီရဲ့ နည်းပညာရှင်ကြီးများဖြစ်ကြတဲ့ James Gosling, Patrick Naughton, Chris Warth, Mike Sheridan နဲ့ Ed Frank ဆိုတဲ့ ပုဂ္ဂိုလ် ငါးဦးက 1991 ခုနှစ်မှာ စတင်ထုတ်လုပ်ခဲ့ကြပါတယ်။ ဒီ language ကို သူတို့ငါးဦးဟာ (၁၈)လ လောက်အချိန်ယူပြီး ဖန်တီးခဲ့ကြတာပါ။ သူတို့အဖွဲ့ကိုတော့ Green Team (အစိမ်းရောင်အဖွဲ့)လို့အမည်ပေးထားပါတယ်။ သူတို့တွေဟာ မူလရည်ရွယ်ချက်က programming language တစ်ခုအသစ်ဖန်တီးဖို့ဆိုပြီး ရည်ရွယ်ချက်နဲ့ ဖွဲ့စည်းခဲ့တာ မဟုတ်ပါဘူး။ အဲ့ဒီ့ အချိန်တုန်းက C++ programming language ဟာ developerတွေကြားမှာ အရမ်းကို popular ဖြစ်နေချိန်ပါ။ Green Team အနေနဲ့လည်း လက်ရှိ popular ဖြစ်နေတဲ့ C++ သို့မဟုတ် ခေတ်နည်းနည်းနောက်ကျနေတဲ့ C programing language တစ်ခုခုကို အသုံးပြုပြီး digital ပစ္စည်း တွေမှာအသုံးပြုဖို့ ပိုမိုသေးငယ် မြန်ဆန်တဲ့ tool တစ်ခုဖန်တီးဖို့ပါ။ ဒါပေမယ့် လက်ရှိ ရှိနေတဲ့ programming language တွေဟာ memory အသုံးပြုမှုများပြားလွန်းတာကြောင့်ရယ် ၊ ပမာဏကြီးလွန်းတာတွေကြောင့် သေးငယ်တဲ့ ပစ္စည်းတွေအတွက် အသုံးပြုဖို့ရာမှာ အဆင်မပြေတွေဖြစ်လာပါတယ်။ ဒါ့အပြင် platform အမျိုးမျိုး ၊ ပစ္စည်း အမျိုးမျိုးအတွက် portable လည်းဖြစ်ချင်လာပါတယ်။ portable ဖြစ်တယ်ဆိုတာ platform independent ကိုဆိုလိုတာပါ။ လုပ်ဆောင်ချက်တူညီတဲ့ program တွေကို platform မတူတဲ့ ပစ္စည်းတွေအားလုံးမှာ အလုပ်လုပ်နိုင်အောင်လည်းရည်ရွယ်ပါတယ်။ ဒီလိုအပ်ချက်တွေကို ဖြည့်ဆည်းပေးဖို့အတွက် tool တစ်ခုဖန်တီးဖို့ထက် programming language အသစ်တစ်ခု ဖန်တီးဖို့ ဖြစ်လာခဲ့ပါတယ်။ Object ကို အခြေခံတဲ့ C++ programming language မှာဆိုရင်လည်း programmer က memory management ကိစ္စတွေကိုပါ လိုက်လံလုပ်ဆောင်နေရတာတွေ ၊ pointer ကဲ့သို့သော ရှုပ်ထွေးပြီး အမှားဖြစ်လွယ်တဲ့ နည်းပညာတွေ ၊ မလိုလားအပ်ပဲ ဆင့်ကဲ မှီခိုမှုတွေ(multiple inheritance) ပါဝင်နေတဲ့ C++ programming အတွက် ဖြည့်စွက် tool သို့မဟုတ် Application Programming Interface(API) ပြင်ဆင်တည်ဆောက်မယ့်အစား ဒီပြင်ဆင်ချက်တွေပါဝင်တဲ့ programming language အသစ် ကိုသာ တည်ဆောက်ဖို့ ရည်ရွယ်လာခဲ့ပါတယ်။

ပထမဆုံး Java version 1.0 ကို January 23, 1996 ခုနှစ်မှာ release လုပ်ခဲ့ပါတယ်။ စထွက်လာကတည်းက "Write Once, Run Anywhere" (WORA) ဆိုတာကြီးနဲ့ကြွေးကြော်ပြီး ထွက်လာခဲ့ပါတယ်။ ဒါ့အပြင် programming language အသစ်တစ်ခုဆိုပေမယ့် အရမ်းကို ရိုးရှင်း လွယ်ကူတဲ့ language အနေနဲ့ပေါ်ပေါက်လာတာပါ။ အကြောင်းအရင်းက developer အများစုအသုံးများပြီး popular ဖြစ်နေတဲ့ C,C++ programming language တွေရဲ့ syntax တွေအတိုင်းတည်ဆောက်ထားတာဖြစ်ပြီး pointer,multiple inheritance , operator overloading စတဲ့ developer တွေအတွက်ရှုပ်ထွေးစေတဲ့ API တွေကို ဖြုတ်ထားတဲ့ အတွက်ပါ။ ဒါတွေမပါလည်း လုပ်ဆောင်လို့ရတယ်ဆိုတာကို ထောက်ပြတဲ့ language အနေနဲ့ပေါ့။ နောက်ပြီး programmer တွေအနေနဲ့ memory management ကို ကိုယ်တိုင် လိုက်လုပ်စရာ မလိုပါဘူး။ Garbage Collector လို့ခေါ်တဲ့ အလိုအလျောက် memory management system ပါဝင်လာပါတယ်။ ဒီနေရာမှာ Java ဟာ ရိုးရှင်းလွယ်ကူပါတယ်ဆိုတဲ့ စကားဟာ ဘာ programming language ကိုမှ မသင်ဖူးပဲ Java programming language ကို ပထမဆုံးစလေ့လာတဲ့ သူအတွက်ဆိုရင်တော့ မမှန်ပါဘူး။ သူ့အနေနဲ့ ရည်ရွယ်ပြီးပြောတာက C,C++ သုံးနေကြတဲ့ အဲ့အချိန်တုန်းက programmer တွေကိုပြောတာပါ။ စစချင်း တုန်းကတော့ ဒီ programming language ရဲ့ နာမည်က "Oak" ဖြစ်ပါတယ်။ အဖွဲ့ခေါင်းဆောင် James Goslingက သူ့ရုံးခန်းအပြင်ဘက်မှာရှိတဲ့ ဝက်သစ်ချပင်ကို အဆွဲပြုပြီး ဒီနာမည်ကိုပေးခဲ့တာပါ။ ဒါပေမယ့်နောက်ပိုင်းမှာ ဒီနာမည်နဲ့ trademark ရှိပြီးသားဖြစ်နေတာကြောင့် copyright အခြေအနေအရ တစ်ခြားနာမည်ပြောင်းပေးခဲ့ပါတယ်။ Gosling က ဒီ language ဟာ ဆန်းသစ်တယ် ဒီနည်းပညာဟာ ပထမဆုံးပဲ ဆိုတဲ့ အဓိပ္ပာယ်ပေါ်လွင်အောင် အင်ဒိုနီးရှားနိုင်ငံ Java ကျွန်းကထုတ်တဲ့ ပထမဆုံး အကောင်းဆုံး ကော်ဖီ Java coffee ကိုအဆွဲပြုပြီး Java အဖြစ်နာမည်ပြောင်းပေးခဲ့ပါတယ်။ January 27, 2010 မှာတော့ Oracle ကုမ္ပဏီက Sun Microsystems ကနေ Java ကို ပြန်လည်ဝယ်ယူခဲ့ပါတယ်။ ဒါကြောင့် လက်ရှိမှာတော့ Java နည်းပညာကို ပိုင်ဆိုင်တဲ့ ကုမ္ပဏီက Sun မဟုတ်တော့ပါဘူး။ Oracle ဖြစ်သွားပါပြီ။

Java နဲ့ အင်တာနက်အကြောင်း

Java ပေါ်ကစအချိန်တုန်းက internet နည်းပညာကလည်း တနေ့တစ်ခြားတိုးတက်လာတဲ့ အချိန်ဖြစ်ပါတယ်။ ဒီအချိန်မှာ Web page တွေဟာ static page တွေအနေဲ့ပဲ အတွေ့များပါတယ်။ static page တွေဆိုတာ အင်တာနက်အသုံးပြုသူတွေက နေ interaction လုပ်လို့မရပါဘူး။ ပြထားတွေကို ကြည့်ရုံသက်သက်သာရှိပါသေးတယ်။ ဒီအချိန်မှာ အသုံးပြုသူတွေရဲ့ input တွေ event တွေ , action(register လုပ်တာ ,တစ်ခုခုမေးမြန်းတာ ,သိချင်တာကိုရှာဖွေတာ) တွေအပေါ်မူတည်ပြီး တုံ့ပြန်လုပ်ဆောင်ဖို့ရာ အတွက်ရယ် ၊ အချိန်နဲ့ တစ်ပြေးညီပြောင်းလဲ နေတဲ့ သတင်းအချက်အလက်တွေကို ပြပေးနိုင်ဖို့ရာအတွက် server side program တွေလိုအပ်လာပါတယ်။ ဒီနေရာမှာတော့ Common Gateway Interface(CGI) လိုမျိုး server side application တွေပေါ်လာပေမယ့် browser တွေက server ဘက်ကပို့ပေးတဲ့ information တွေကို dynamic ပြန်ပြပေးနိုင်ဖို့ program တွေ ဖန်တီးရတာဟာ အရမ်းကိုခက်ခဲပြီး မတူတဲ့ platform တွေကြားမှာ ဟိုမှာတစ်မျိုး ဒီမှာတစ်မျိုး ပြဿာနတွေကြုံတွေ့နေရပါတယ်။ ဒီအချိန်မှာ Java က browser တွေထဲမှာ java program တွေကို အသုံးပြုလို့ရေစမယ့် embedded system တစ်ခုကို browser တွေအတွက် ဖန်တီးခဲ့ပါတယ်။ ဒီ embedded system ကဘာနဲ့တူလဲ ဆိုရင် လက်ရှိ ကျွန်တော်တို့ browser တွေမှာပါဝင်နေတဲ့ Adobe Flash player plugin လိုမျိုးပါ။ ဒီ embedded system လေးက Java က browser တွေအတွက် Applet လို့ခေါ်တဲ့ application တွေကို run လို့ရစေပါတယ်။

Applet ဆိုတာက ကျွန်တော်တို့ webpage တွေမှာမြင်တွေ့ရတဲ့ image,mp4,gif,mp3 file တွေလိုမျိုးပဲ browser ကနေ download လုပ်ပြီး user ကိုပြပေးတာပါ။ download လုပ်တယ်ဆိုတာ download button ကိုသွားနှိပ်တာကိုပြောတာမဟုတ်ပါဘူး။ Webpage တစ်ခုမှာပေါ်နေတဲ့ ဓာတ်ပုံတို့ movie တို့ဆိုတာ browser ကနေ server ဆီက download ရယူပြီးမှ ပြရတာပါ။ Applet ဆိုတာလဲ အဲ့လို media file တွေနဲ့ ပုံစံအတူတူပါပဲ ။ ဒါပေမယ့် ကွာခြားချက် သူက application ။ applcation ဆိုတော့ user ကလုပ်တဲ့ action တွေအပေါ်မူတည်ပြီး တုံ့ပြန်မှုပြုနိုင်ပါတယ်။ရိုးရိုး ဓာတ်ပုံတွေက အသေပြနေမယ်။ annimation တွေ ၊ git ပုံတွေကတော့ သူတို့ရဲ့ အစီအစဉ်အတိုင်း အစကနေအဆုံး ထပ်ခါထပ်ခါ ပြနေပေမယ့် applet ကတော့ user ကဘာလုပ်လိုက်တာလဲ ၊ server ကို ဘာပို့ချင်တာလဲ ၊ သူဘာရှာချင်တာလဲ ၊ server က ဘာ information တွေပြန်ပို့လိုက်တာလဲ အစရှိသည်ဖြင့် လိုက်လျောညီထွေ user ကိုတုန့်ပြန်မှုပေးနိုင်တဲ့ program တွေပါ။ အခုလက်ရှိခေတ်မှာ ဆိုရင်တော့ Ajax,javascript နည်းပညာတွေနဲ့ အလားသဏ္ဍာန်တူပါတယ်။ ဟိုတုန်းက HTML မှာရှိတဲ့ APP ဆိုတဲ့ tag ဟာ Javaရဲ့ applet ကိုကိုယ်စားပြုပါတယ်။ ဒီ Applet program တွေကိုလုပ်ဆောင်နိုင်အောင် Sun ကထုတ်တဲ့ HotJava browser သို့မဟုတ် Netscape ကုမ္ပဏီကထုတ်တဲ့ Navigator 2.0(Firefox browser ရဲ့ version အဟောင်း browser) တွေမှာဆိုရင် အလိုအလျောက်ပါဝင်ပြီးသားဖြစ်ပါတယ်။ ဒါကြောင့် တဟုန်ထိုးတိုးတက်လာတဲ့ အင်တာနက်နည်းပညာအပေါ်မှာ ပါ platform independent လည်းဖြစ် ၊ ပိုပြီး နည်းပညာပိုင်းဆိုင်ရာမှာလုံခြုံမှုလည်း ရှိတဲ့ Java programming language ကို ကမ္ဘာအရပ်ရပ်က developer တွေရဲ့ ရာခိုင်နှုန်းတော်တော်များများဟာ ပြောင်းလဲ သုံးစွဲလာကြပါတယ်။

Java Version History

  • ပထမဆုံး Java version 1.0 နဲ့ 1.1 ကို 1996 ခုနှစ်အတွင်းမှာ Linux, Solaris, Mac နဲ့ Windows Operating System တွေအတွက်ထုတ်လုပ်ခဲ့ပါတယ်။
  • Java version 1.2 (Java 2 လို့လူသိများတဲ့) ကိုတော့ 1998 ခုနစ်
  • Java Version 1.3 Kestrel လို့ နာမည်ပေးပြီး 2000 ခုနစ်
  • Java Version 1.4 Merlin လို့ နာမည်ပေးပြီး 2002 ခုနစ်
  • Java Version 1.5 Tiger လို့ နာမည်ပေးပြီး 2004 ခုနစ်
  • Java Version 1.6 Mustang လို့ နာမည်ပေးပြီး 2006 ခုနစ်
  • Java Version 1.7 Dolphin လို့ နာမည်ပေးပြီး 2011 ခုနစ်
  • Java Version 1.8 ကတော့ ဒီစာရေးနေချိန်မှာ နောက်ဆုံးပေါ် ဖြစ်ပြီး stable release ကို (2015)ခုနှစ်
စသည်ဖြင့် အသီးသီး ထုတ်လုပ်ဖြန့်ဝေခဲ့ပါတယ်။

Mascot

Mascot ဆိုတာ ကံကောင်းစေတယ်လို့ယူဆတဲ့ ပစ္စည်း ၊ ကာတွန်း၊ တံဆိပ် ၊ ဝတ်စုံ ၊ တိရစ္ဆာန်ကို ခေါ်တာပါ။ Javaရဲ့ Mascot ကတော့ Duke လို့ခေါ်တဲ့ ကာတွန်း အရုပ်ကလေးဖြစ်ပါတယ်။

Java programming ၏အကျိုးကျေးဇူးများ

Java ဟာ General purpose programming language တစ်ခုဖြစ်ပါတယ်။ General purpose ဆိုတာက platform အမျိုးမျိုး ၊ application domain အမျိုးမျိုးမှာ အသုံးပြုနိုင်အောင်ရည်ရွယ်ပြီးတည်ဆောက်ထားတဲ့ programming language တစ်ခုဖြစ်လို့ပါ။ domain-specific programming language လိုမျိုး ဘယ် platform,ဘယ် domainမှာပဲ အလုပ်လုပ်ပါမယ်ဆိုပြီး သီးခြားတည်ဆောက်ထားတာမျိုးမဟုတ်ပါဘူး။ Java ဟာ Open Source ,class based, object oriented, Platform independent, portable, Architecturally neutral, multithreaded, dynamic, distributed, Portable and robust interpreted ဆိုတဲ့ အကျိုးကျေးဇူးတွေကိုအထောက်အပံ့ပေးပါတယ်။

Open Source

Java platform တစ်ခုလုံး (JDK,JRE,Java programming language)အသုံးပြနိုင်ဖို့အတွက် မည်သည့်အခွန်အခမှပေးဆောင်စရာမလိုပါဘူး။ ဒါ့အပြင် java ကိုအသုံးပြုပြီး တည်ဆောက်ထားတဲ့ program တွေ , libraries တွေ , application တွေကိုလည်း လွတ်လပ်စွာ အသုံးပြုနိုင် ရောင်းချနိုင်ပါတယ်။ OpenJDK ဆိုပြီးတော့လည်း စိတ်ကြိုက်ပြင်ဆင် အသုံးပြုနိင်တဲ့ Java version ကို ထုတ်လုပ်ပေးခဲ့ပါတယ်။

Class based

Java ဟာ Class တွေကို အခြေခံတဲ့ ဒီဇိုင်းနဲ့ တည်ဆောက်ထားတာပါ။ ဒါကြောင့် Object Oriented Programming language တွေရဲ့ မျိုးရိုးဆက်ခံခြင်း (inheritance) လိုမျိုး စွမ်းဆောင်မှုပေးနိုင်ပါတယ်။

Object Oriented

Java ဟာ Oject အဖြစ် ကျွန်တော်တို့ရဲ့ လိုအပ်ချက်တွေ ၊ ပြဿနာတွေကို အသုံးပြုဖြေရှင်းနိုင်ပါတယ်။ Object Oriented Paradigm ကို ဖော်ဆောင်နိုင်တဲ့ programming language ပါ။

Platform Independent

ဘယ် OS ဘယ် platform ကိုမှ မှီခိုမှု မရှိပါဘူး။ ဒါကြောင့် program တွေကို တစ်ခါ compile လုပ်ပြီးတာနဲ့ ရလာတဲ့ byte code တွေဟာ မည်သည့် platform မှာမဆို အသုံးပြုနိုင်ပါတယ်။

Architecturally Neutral

Platform တွေရဲ့ တည်ဆောက်ပုံပေါ်မှာလည်း လိုက်လျောညီထွေရှိပါတယ်။ ကျွန်တော်တို့ အသုံးပြုတဲ့ OS တွေက 32bit ပဲ ဖြစ်ဖြစ် 64bit ပဲဖြစ်ဖြစ် ဘာပြဿနာမှ မရှိပဲ compile လုပ်နိုင် run နိုင်ပါတယ်။

Multithreaded

thread ဆိုတာက Java မှာ မှီခိုမှုကင်းမဲ့တဲ့ program တွေကိုဆိုလိုတာပါ။ multithreaded ဆို ထောက်ပံ့ပေးတယ်ဆိုတာကတော့ Java မှာ program တွေဟာ တစ်ချိန်တည်း တစ်ပြိုင်နက်တည်းမှာ memeory ကို မျှဝေသုံးစွဲပြီး run နိုင်ပါတယ်။

Dynamic

dynamic ဖြစ်တယ်ဆိုတာကတော့ java program တွေဟာ static application တွေလိုမျိုး မ run ခင်မှာ လိုအပ်တဲ့ တန်ဖိုးတွေ လုပ်ဆောင်ရမယ့်ပုံစံတွေကို ကြိုတင်သတ်မှတ်စရာမလိုပဲနဲ့ program run နေစဉ်ကာလမှာ အချိန်မရွေးတန်ဖိုး ပြောင်းလဲ သတ်မှတ်နိုင်ပါတယ်။

Distributed

distributed ဆိုတာကတော့ file,media,data,documentsအစရှိသည်တို့ကို internet ကဲ့သို့သော networking နည်းပညာများနဲ့ မျှဝေသုံးစွဲနိုင်ဖို့အတွက် အထောက်အပံ့ပေးပါတယ်။

Portable

byte code system ကိုအသုံးပြုထားတဲ့ JVM ကြောင့် compile လုပ်ထားတဲ့ java byte code တွေဟာ မည်သည့် platform မှာမဆို အလွယ်တကူ ပြောင်းလဲသုံးစွဲနိုင်ပါတယ်။

Robust

ခိုင်မာတဲ့ language တစ်ခုလည်းဖြစ်ပါတယ်။ Java ဟာ Strong type programming language တစ်ခုဖြစ်တာကြောင့် အမှားအယွင်းတွေရှိခဲ့ရင်လည်း program ကို မ run ခင်ကတည်းက (compile လုပ်နေချိန်မှာတင်)သိနိုင်ပါတယ်။ ဒါ့အပြင် အသုံးမလိုတော့တဲ့ Object တွေကို memory ပေါ်ကနေ ဖယ်ရှားပေးနိုင်တဲ့ Garbage Collector ဆိုတဲ့ကောင်လည်းပါဝင်ပါတယ်။ program error ဖြစ်ခဲ့ရင်လည်း user ကို သေသေချာချာ response ပြန်နိုင်တဲ့ Exception Handling နည်းပညာတွေအပြင် memory management ပိုင်း ဆိုင်ရာမှာလဲ ကိုယ်တိုင် ပြင်ဆင်သတ်မှတ်ခွင့်တွေရှိပါတယ်။/p>

Interpreted

programming နည်းပညာတွေမှာ အဓိကအားဖြင့် Compiled လုပ်တဲ့ အမျိုးအစားနဲ့ Interpret လုပ်တဲ့ အမျိုးအစားဆိုပြီးနှစ်မျိုးရှိပါတယ်။တစ်ခုချင်းစီမှာ အားသာချက် ကိုယ်စီရှိပါတယ်။ Java ကတော့ Compiled programming language အမျိုးအစားဖြစ်ပေမယ့် JVM တဲ့ရောက်တဲ့ အခါမှာတော့ platform တွေက နားလည်တဲ့ native code တွေအဖြစ် interpret လုပ်တဲ့ အလုပ်ကို လုပ်ဆောင်ပါတယ်။

အထက်ပါ အကျိုးကျေးဇူးများအပြင် အခြားထင်ရှားလူသိများတဲ့ အချက်တွေကတော့

Security

Java program တွေဟာ OS တွေအပေါ်မှာ တိုက်ရိုက် run တာမဟုတ်ပဲ ကြားခံ အလွှာတစ်ခုဖြစ်တဲ့ JVM ပေါ်မှာ run တာဖြစ်တာကြောင့် security အပိုင်းမှာ ပိုပြီးလုံခြုံစိတ်ချရမှုရှိပါတယ်။ Native OS တွေကို တိုက်ခိုက်တဲ့ virus ,malware ,injection attack တွေဟာ Java program တွေရော JVM အပေါ်မှာရော သက်ရောက်မှုမရှိပါဘူး။

Simple Syntax

C,C++ programming language တွေအပေါ်မှာ အခြေခံတဲ့ Java ဟာ developer တွေအတွက်ရင်းနှီးပြီး သား syntax တွေကိုသာအသုံးပြုထားတာဖြစ်တဲ့အတွကြောင့် အချိန်ပေးပြီး တစ်ကူးတစ်က သင်စရာထပ်မလိုတော့သလိုဖြစ်နေပါတယ်။ ဒါ့အပြင် မလိုအပ်တဲ့ ၊ ရှုပ်ထွေးတဲ့ အပိုင်းတွေကိုလည်း Java မှဖြုတ်ပစ်လိုက်ခြင်းနဲ့ အတူ အလိုအလျောက် memory management ကြောင့် ပိုမိုလွယ်ကူတဲ့ programming language အဖြစ်လူသိများလာပါတယ်။

High Level Programming Language

Java ဟာ programmer တွေနဲ့ နီးစပ်တဲ့ high level programming language ဖြစ်ပါတယ်။ High level ဆိုတာကတော့ ရေးထားတဲ့ program တွေ programmer တွေအနေနဲ့ ဘာလုပ်ချင်တာလဲ ဆိုတာကို ဖတ်ရှုနားလည်နိုင်စွမ်းရှိပါတယ်။ လူသုံးများတဲ့ English ဘာသာစကားနဲ့ပဲတည်ဆောက်ထားတာပါ။ JVM ကသာကြားခံအနေနဲ့ စက်နားလည်တဲ့ ဘာသာစကားအဖြစ်ပြောင်းလဲ ပေးပါတယ်။

High Performance

Java မှာ JIT(Just-In-Time) compiler ကိုအသုံးပြုထားတာဖြစ်တဲ့ အတွက် java byte code တွေကို plaform မှာ တန်း run နိုင်တဲ့ application အဖြစ်ဆောင်ရွက်ပေးနိုင်ပါတယ်။ byte code မှ application အဖြစ် တန်းအသုံးပြုနိုင်အောင် ဆောင်ရွက်ပေးနိုင် တဲ့ JIT compiler ကြောင့် Java ရဲ့ performance ဟာ တော်တော်လေး ကောင်းမွန်မြန်ဆန်ပါတယ်။

No comments:

Post a Comment

JDK နဲ့ JRE ဘာကွာသလဲ ?

JDK နဲ့ JRE ဘာကွာခြားသလဲ ဆိုရင် JDK က JAVA Programming Language ကို အသုံးပြုပြီး ပရိုဂရမ်တွေရေးသားနိုင်ဖို့အတွက် ရည်ရွယ်တာဖြစ်ပြီး...