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

JDK နဲ့ JRE ဘာကွာခြားသလဲ ဆိုရင် JDK က JAVA Programming Language ကို အသုံးပြုပြီး ပရိုဂရမ်တွေရေးသားနိုင်ဖို့အတွက် ရည်ရွယ်တာဖြစ်ပြီး JRE ကတော့ ၎င်းရေးသားထားသော program များကို အသုံးချ(run)နိုင် ဖို့အတွက်ဖြစ်ပါတယ်။ JRE တစ်ခုတည်းရှိရုံနဲ့ ကျွန်တော်တို့ java program တွေ ၊ application တွေ ၊ java software တွေကို တည်ဆောက်လို့ မရနိုင်ပါဘူး။ JRE ဆိုတာက JDK ကို အသုံးပြုပြီး ရေးသားထားတဲ့ program တွေကို compile လုပ်လို့ရရှိလာတဲ့ java byte code တွေကို အသုံးချရုံသက်သက်သာဖြစ်ပါတယ်။ ဆိုလိုတာက java နဲ့ရေးထားတဲ့ application တွေ ၊ game တွေ ၊ browser တွေပေါ်မှာ အသုံးပြုတဲ့ applet တွေအတွက် အသုံးပြုနိုင်ဖို့ဆိုရင် JRE တစ်ခုတည်း ရှိရုံနဲ့အဆင်ပြေပါတယ်။ သို့မဟုတ် သင်ကိုယ်တိုင် Java program တွေရေးမယ် ၊ debug လုပ်မယ် ၊ compile လုပ်မယ် ၊ documentation တွေထုတ်မယ် စတာမျိုးတွေ လုပ်ချင်ရင်တော့ JDK ကိုပါ လိုအပ်မှာ ဖြစ်ပါတယ်။

ကျွန်တော်တို့ java ကို installer နဲ့သွင်းသည်ဖြစ်စေ zip ဖိုင် အနေနဲ့ ဖြည်သည်ဖြစ်စေ jdkxxx နဲ့ jrexxx ဆိုတဲ့ folder နှစ်ခုရရှိမှာဖြစ်ပါတယ်(xxx ဆိုတဲ့နေရာမှာ java ရဲ့ version ပါ)။ အမှန်တကယ်က ကျွန်တော်တို့ JDK တစ်ခုတည်းနဲ့တင်လုံလောက်ပါတယ်။ အကြောင်းက JRE က JDK ထဲမှာပါ ပါပြီးသားဖြစ်နေလို့ပါ။ ဒါပေမယ့် java က ကိုယ်အဆင်ပြေရာကို သုံးနိုင်ဖို့ နှစ်ခုလုံး ထည့်ပေးထားတာပါ။ နှစ်ခုလုံးဆိုတာ JRE သီးသန့်ရော JDK+JRE ရောဆိုပါတော့။ တစ်ချို့ java နဲ့ရေးထားတဲ့ software တွေကို အသုံးပြုဖို့ ဥပမာ JDownloader လို software မျိုးတွေသုံးဖို့ ၊ browser game တွေဆော့ဖို့ JRE ကို configure လုပ်ပေးဖို့ လိုအပ်ပါတယ်။ ဒါတွေကတော့ ကျွန်တော်တို့ programmer တွေပဲ JAVA ကို သုံးတယ်လို့ ထင်မှာဆိုးလို့ပါ။

JRE folder အတွင်းကို ကြည့်မယ်ဆိုရင် အောက်ပါအတိုင်း မြင်တွေ့ရမှာပါ။ ကျွန်တော်က Java 7 ရဲ့ JRE structureကို ပြထားတာပါ။ JAVA version အပေါ်မူတည်ပြီး အတွင်းထဲက ဖိုင် တစ်ချို့ ကွဲပြားနိုင်ပါတယ်။

bin folder အတွင်းမှာတော့ ကျွန်တော်တို့ အသုံးပြုနေတဲ့ Operating System အပေါ်မူတည်ပြီး သက်ဆိုင်ရာ application တွေကို တွေ့ရမှာပါ။ (Window အတွက်ဆို .exe file တွေပေါ့) ဒီ bin ဆိုတဲ့ folder ကိုပဲ JVM လို့ ခေါ်နိုင်ပါတယ်။ ဒီ folder ထဲက application တွေဟာ Operating System မှာ အသုံးပြုမယ့် JVM ရဲ့ program တွေဖြစ်ပါတယ်။ (ဒါကြောင့်လည်း java ကို install လုပ်စဉ်က bin folder အထိ path လမ်းကြောင်းပေးရခြင်းပါ)

lib filder ထဲမှာတော့ java file များကို ဆိုက်သေးအောင် ချုံ့ထားတဲ့ java archive (jar) file များ ၊ configuration file များ ၊ property file များ ၊ font file များ ၊ အသံဖိုင်များ ၊ ရုပ်ပုံများ အစရှိသည် တို့ ပါဝင်ပါတယ်။ (ကိုယ့်ဘာသာဖွင့်ကြည့်ကြပါကုန်) နောက်ပြီး အရေးကြီးတဲ့ jar file တစ်ခုလည်းပါပါသေးတယ်။ rt.jar ဆိုတာပါ။ rt ဆိုတာက runtime ဆိုတာကို အတိုကောက်ဆိုလိုတာပါ။ rt.jar ထဲမှာပါဝင်တာတွေက ကျွန်တော်တို့ JAVA program တွေမှာ အသုံးပြုတဲ့ API တွေဖြစ်ပါတယ်။ ဥပမာ - java.lang.String, java.lang.Thread, java.util.ArrayList , java.io.InputStream စတဲ့ အသုံးများတဲ့ API တွေကို ဒီ jar file အတွင်းထဲမှာ ထည့်သွင်းထားတာပါ။(မှတ်ချက် - java 7 မတိုင်ခင်က OS တစ်ချို့မှာဆိုရင် classes.jar ဆိုပြီးဖြစ်နေတတ်ပါတယ်။) JRE ဟာ JDK ထက်သေးငယ်တဲ့ အတွက် file size အနေနဲ့လည်း ပိုပြီးသေးပါတယ်။

JDK folder အတွင်းကို ကြည့်မယ်ဆိုရင် အောက်ပါအတိုင်း မြင်တွေ့ရမှာပါ။ကျွန်တော်က Java 7 ရဲ့ JDK structureကို ပြထားတာပါ။ JAVA version အပေါ်မူတည်ပြီး အတွင်းထဲက ဖိုင် တစ်ချို့ ကွဲပြားနိုင်ပါတယ်။ Java 8 မှာ ဆိုရင်တော့ javafx-src.zip ဖိုင်လေးထပ်ပါပါသေးတယ်။

အထက်ပါပုံကို ကြည့်မယ် ဆိုရင် JDK ထဲမှာလည်း bin ဆိုတဲ့ folder နဲ့ lib ဆိုတဲ့ folder ရှိတာကိုတွေ့ရပါလိမ့်မယ်။ ဒါပေမယ့် အထဲမှာပါဝင်တာတွေကတော့ JRE ထဲက ကောင်တွေနဲ့ တူတွေတွေရှိသလို မတူတာတွေလည်း အများကြီးပါ။ ဥပမာ JDK ရဲ့ bin folder ထဲမှာ java program တွေကို compile လုပ်နိုင်တဲ့ javac.exe ဆိုတာပါပါတယ်။ ကျွန်တော့်ကွန်ပျူတာက Window ဆိုတော့ .exe file ပေါ့။ java documentation တွေထုတ်ဖို့အတွက် javadoc.exe ၊ jar file တွေထုတ်ဖို့ အတွက် jar.exe အစရှိသည်ဖြင့် java programmer တွေအတွက် အသုံးပြုလေ့ရှိတဲ့ java ဆိုင်ရာ application ဖိုင်တွေကို တွေ့ရမှာဖြစ်ပါတယ်။ JDK ရဲ့ lib folder ထဲမှာဆိုရင်တော့ java programmer များ debugging လုပ်ဖို့ ၊ IDE တွေနဲ့ အသုံးပြုနိုင်ဖို့ စတဲ့ tools.jar လိုမျိုး jar file တွေပါဝင်ပါတယ်။

JDK ရဲ့ file structure အကြောင်းနဲ့ ပါဝင်ဖွဲ့စည်းထားတာတွေအသေးစိတ်ကိုတော့ Oracle ရဲ့ JDK Structure site မှာ အသေးစိတ်သွားကြည့်နိုင်ပါတယ်။ ဒီနေရာမှာ JDK နဲ့ JRE ကွာခြားချက်အကြောင်းကိုပဲ အဓိကပြောချင်တာဖြစ်တဲ့အတွက် ချန်လှပ်ခဲ့ပါတယ်။ JDK ရဲ့ folder အတွင်းကို ကြည့်မယ် ဆိုရင် jre ဆိုတာကိုလည်း တွေ့ရမှာပါ။ ဒီ folder ကတော့ JDK အတွင်းထဲမှာလည်း JRE ကိုထည့်သွင်းထားတာပါ။ JRE folder နဲ့ JDK ထဲက jre folder နဲ့ ကွာခြားချက်မရှိပါဘူးလို့ဆိုနိုင်ပါတယ်။ အဲ့ဒီတော့ ဒီနေရာမှာ ကျွန်တော်ပြောချင်တာလေးတစ်ခုက ကျွန်တော်တို့ Operation System ရဲ့ System Variables တွေထဲမှာ JAVA အတွက် path လမ်းကြောင်းကြေငြာပေးရာမှာ JRE ရဲ့ home directory ပဲ ဖြစ်ဖြစ် ၊ JDK ထဲက jre home directory ပဲ ဖြစ်ဖြစ်ပေးခဲ့မယ် ဆိုရင် ကျွန်တော်တို့ java program တွေကို run ရုံသက်သက်ပဲရပါလိမ့်မယ်။ compile လုပ်တာမျိုးလို Java Programmer အသုံးချ လုပ်ငန်းတွေ လုပ်လို့ မရပါဘူး ။ တစ်နည်းအားဖြင့် java ဆိုတဲ့ command ပဲ command prompt မှာရိုက်လို့ရပါမယ်။ compile လုပ်တဲ့ javac ကိုတော့ အသုံးပြုလို့မရပါဘူး။ ဒါလေး သတိထားစေလိုပါတယ်။

Java Programming Language ရဲ့ တည်ဆောက်ပုံကို အောက်ပါအတိုင်း တွေ့မြင်နိုင်ပါတယ်။

JDK က အဖိုး ဆိုရင် JRE က အဖေဖြစ်ပြီး JVM ကတော့ သား ဖြစ်ပါတယ်။

ဒါကြောင့် JDK > JRE > JVM ဆိုတာမျိုးပါ။
JDK = JRE + Development/debugging tools
JRE = JVM + Java Packages Classes(like util, math, lang, awt,swing etc)+runtime libraries.
ဒီလောက်ဆိုရင် ခင်ဗျားလည်း JDK နဲ့ JRE ဘာကွာသလဲဆိုတာ နားလည်လောက်ပြီလို့ ယူဆပါတယ်။

ကိုးကား - http://stackoverflow.com/questions/1906445/what-is-the-difference-between-jdk-and-jre

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

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