Core Java Programming
Tags: java, beginners, programming
Published: 2022-12-25 10:59:57

ယနေ့ခေတ်လူတွေကြားမှာ Programming လို့ကြားလိုက်တာနဲ့ Java ဆိုတဲ့ Guru ကြီးကို မသိတဲ့လူဟာ မရှိသလောက်ပါပဲ။ဒီနေ့မှာတော့ ကျွန်တော်သိတဲ့ Java နဲ့ပတ်သတ်ပြီး စာလေးနည်းနည်းလောက်ရေးရင်း မျှဝေပေးပါမယ်။

## What is Java?
ပထမဦးဆုံး Java ဆိုတာဘာလဲလို့ပြောရရင် software system တွေကို create လုပ်ဖို့အသုံးပြုတဲ့ computer programming language တစ်ခုဖြစ်ပါတယ်။ History ကို လိုတိုရှင်းပြောရရင် 1995ခုနစ်လောက်မှာ Sun Microsystems က developed လုပ်ခဲ့ပြီး နောက်တော့ Oracle ကပြန်ဝယ်လိုက်တာပေါ့။ James Gosling ဆိုသူကတော့ the father of Java ပေါ့။စစချင်းတုန်းကတော့ Oak ဆိုတဲ့နာမည်အသုံးပြုခဲ့ပေမည့် company တစ်ခုက registered လုပ်ပြီးသားဖြစ်နေ့တော့ James Gosling နဲ့သူ့ရဲ့ team က Oak ကနေ Java ဆိုပြီးပြောင်းလဲလိုက်တာ။ Java က high level language ဖြစ်ပြီး object oriented ဖြစ်တယ်။ Java program တွေကို ဘယ် operating system မှာမဆို run နိုင်တာကြောင့် သူ့ကို platform independent ဖြစ်တယ်လို့ဆိုတယ်။ကျွန်တော်တို့ Java program တွေ ဘယ်လို executed လုပ်သလဲဆိုတာကို မပြောခင် JVM, JRE, JDK တို့အကြောင်း အကျဉ်းချုပ်အရင်ပြောပါမယ်။

## JVM
JVM (Java Virtual Machine) ကတော့ abstract machine တစ်ခုဖြစ်တယ်။ကျွန်တော်တို့ Java Program တစ်ခုရေးလိုက်ပြီးပြီဆိုရင် အဲဒီ program ကို Java Compiler နဲ့ အရင်ဆုံး compile လုပ်ရမယ်ပေါ့။ဒီနေရာမှာ compiler သည် native code ထုတ်တယ်ပေါ့။ သူ့ရဲ့ အားနည်းချက်က platform တိုင်းမှာ run လို့မရဘူး window ဆို window ၊ mac ဆို mac ပေါ့။ Program တစ်ခုက platform တိုင်းမှာ လိုက် compile လုပ်ရမယ်ဆို ပြသနာရှိတယ်။ခနကဟာကို ပြန်ဆက်ရရင် java compiler သည် bytecode ထုတ်တယ်ပေါ့။ရလာတဲ့ bytecode ကို ကျွန်တော်တို့က window မှာ run လို့ရချင်ရင် JVM on window နဲ့ Mac မှာ run လို့ရချင်ရင် JVM on mac ပေါ့။ဆိုတော့ platform တိုင်းမှာ run လို့မရတဲ့ပြသနာကို ကြားထဲကနေ VM ခံပြီးဖြေရှင်းလိုက်တယ်။လိုတိုရှင်းပြောရရင် JVM က
- Loads code
- Verifies code
- Execute code
- Provides runtime environment 
အစရှိတဲ့ operations တွေကို လုပ်ဆောင်ပေးတယ်။

##JRE
JRE (Java Runtime Environment) ကတော့ java bytecode တွေကို executed လုပ်တဲ့နေရာပေါ့။သူက computer ရဲ့ OS ပေါ်မှာ run တဲ့ software layer တစ်ခုဖြစ်တယ်။ Java program မှာလိုအပ်တဲ့ တခြားသော services တွေကို သူကထောက်ပံ့ပေးတယ်။သူ့ရဲ့ အဓိကလုပ်ဆောင်ချက်က ဘာလဲဆိုတော့ ဘယ် OS မှာမဆို program ကို virtually run နိုင်ဖို့အတွက် လုပ်ဆောင်ပေးတယ်။ပြန်ခြုံပြောရရင် JVM ဆိုတာက abstract machine ဖြစ်ပြီး physically အရတည်ရှိနေတာမဟုတ်ဖူးဆိုတာရယ်၊ JRE ဆိုတာ JVM က runtime မှာ အသုံးပြုတဲ့ files တွေနဲ့ တခြား library classes တွေပါတဲ့ software layer တစ်ခုဖြစ်တယ်ဆိုတာပါပဲ။

## JDK
JDK (Java Development Kit) ကတော့ JRE နဲ့ တခြား development tools တွေပါတဲ့ software development environment တစ်ခုဖြစ်တယ်။

![JDK](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6lxvobxfsuyc9ki96dhg.png) 

## Java Files
JVM, JRE, JDK တို့အကြောင်းတီးမိခေါက်မိရှိပြီဆိုတော့ Java Files တွေအကြောင်းပြောပါမယ်။

- Source code file
ကျွန်တော်တို့ ရေးလိုက်တဲ့ Java program ကို `.java` extension နဲ့ save လိုက်တဲ့ file တွေကို source code file လို့ဆိုလိုပါတယ်။

- Java class file
ကျွန်တော်တို့ရဲ့ source code file ကို Java compiler နဲ့ compile လုပ်ပြီးတဲ့အခါ ရလာတဲ့ file တွေကို java class file လို့ဆိုလိုပါတယ်။

- JAR file, Runnable JAR file
Java class တွေနဲ့ library တွေကို compressed လုပ်ထားတဲ့ java archive file တွေကို jar file လို့ဆိုလိုပါတယ်။တစ်နည်းအားဖြင့် zip file လို သဘောမျိုးပါ။ Runnable JAR file ဆိုတာက classes, libraries တင်မကပဲ manifest file ပါတာမျိုးပါ။
Manifest file ဆိုတာက jar ကို run လိုက်တဲ့ခါ main class ကို executed လုပ်ဖို့အတွက် သတ်မှတ်ထားတဲ့ file ကိုဆိုလိုပါတယ်။