Wednesday 19 September 2018

Android ဖုန္းတစ္လံုးတြင္ ပါ၀င္ေနသည့္အစိတ္အပိုင္းမ်ား (Android Architecture)

(Android Architecture) ကို Android ဖုန္းတစ္လံုးတြင္ 
ပါ၀င္ေနသည့္အစိတ္အပိုင္းမ်ား ဆိုၿပီး ေခါင္းစဥ္ေလးတပ္ေပးလိုက္ပါတယ္။

Android System ပိုင္းကို နားလည္ၿပီးသား လူေတြအတြက္ေတာ့ 
ဒီပိုစ့္ကို ဖတ္ရႈေနဖို႔ သိပ္မလိုေလာက္ေတာ့ပါဘူး အခုမွ စတင္ေလ့လာမည့္သူနဲ႔
ဖုန္းတစ္လံုးတြင္ ပါ၀င္ေနသည့္ အစိတ္အပိုင္းမ်ားကို မသိေသးတဲ့သူေတြနဲ႔
သိေအာင္ ႀကိဳ းစားေနၾကတဲ့ ညီအကိုေတြအတြက္ အထူးဖတ္ထားသင့္ပါတယ္။


Android operating system ဆိုတာ Software Components မ်ားကို
ေပါင္းစပ္ထားတာပဲျဖစ္ပါတယ္၊ Software Components ဆိုသည့္ေနရာတြင္
 ျပမ္းမွ်အားျဖင့္ Sections အားျဖင့္ ငါးခုပါ၀င္ပါတယ္။
 
အဆိုပါ Sections မ်ားသည္ Main layers ေတြျဖစ္ၾကၿပီး ဖုန္းတစ္လံုးအတြက္
 အေရးပါလွပါသည္၊ ထိုအစိတ္အပိုင္းမ်ားကေတာ့ ေအာက္ပါအတိုင္းျဖစ္ပါတယ္။

အတိုခ်ံဳ႕ေျပာရရင္ေတာ့ Android ဖုန္းတစ္လံုးကို
  ေအာက္ပါအတိုင္း တည္ေဆာက္ထားတာပဲျဖစ္ပါတယ္။


Architecture diagram
--------------------------

#1. Linux Kernel

#2.  Libraries 

#3. Android Runtime

#4.  Applications Framework

#5.  Applications



 #1 : Linux Kernel

Linux Kernel က Android Operating System ရဲ့ အသည္းႏွလံုးလို႔ေျပာရင္လည္း ရပါတယ္၊ 
Linux Kernel က အေရးႀကီးတဲ့ Hardware နဲ႔ အနီးကပ္ဆံုးအပိုင္းျဖစ္ၿပီး Device Driver ေတြရွိတဲ့
အပိုင္းလည္းျဖစ္ပါတယ္။

သူအဓိက ေထာက္ပံ့ေပးေနတာကေတာ့ basic system ပိုင္းရဲ့ Function မ်ားနဲ႔ အျခားေသာ
Process Management, Memory Management, device management ပိုင္းေတြပဲျဖစ္ပါတယ္။

 ေနာက္တစ္မိ်ဳးေျပာႏိုင္တာက Linux Kernel က Android ဖုန္းတစ္လံုးတြင္ ပါ၀င္ေနသည့္
Hardware ပိုင္းနဲ႔ software layers ေတြကို ခ်ိတ္ဆက္ေပးၿပီး အလုပ္လုပ္ေစတဲ့ အစိတ္အပိုင္းျဖစ္ပါတယ္။

ဥပမာ...။ Driver Software ဆိုပါေတာ့ အဲဒီ Software က Hardware ခ်ိတ္ဆက္မႈကို သိရွိႏိုင္ေအာင္
ျပဳလုပ္ေပးတဲ့ Software မိ်ဳးကိုေျပာတာပဲျဖစ္ပါတယ္၊ ၿပီးေတာ့ camera, keypad, display အစရွိတဲ့
components မ်ားကို ထပ္ဆင္ထားေသာ္ျငားလည္း သူတို႔ရဲ့ သက္ဆိုင္ရာ Driver Software မ်ားသာ
မရွိပါက System ပိုင္းက Camera, keypad, display စတာေတြကို ခ်ိတ္ဆက္မႈ ေပးစြမ္းႏိုင္လိမ့္မယ္မဟုတ္ပါ။


#2 : Libraries

Linux Kernel ရဲ့ အေပၚမွာေတာ့ Native Libraries တည္ရွိပါတယ္။
၎ထဲမွာ WeKit, OpenGL, FreeType, SQLite, Media စသည္ျဖင့္ Android ကို
ေထာက္ပံ့ေပးမယ့္ libraries မ်ားပါ၀င္ပါတယ္။

1. Media Framework - Media ဆိုရင္ေတာ့ Audio ဖိုင္ေတြ 
Video ဖိုင္ေတြကို ဖြင့္ႏိုင္ဖို႔ Record လုပ္ႏိုင္ဖို႔အတြက္ ျဖစ္ပါတယ္။

2. SQLite - သူက database engine ကိုေျပာတာျဖစ္ၿပီး database management အတြက္
သီးသန္႔အလုပ္လုပ္ပါတယ္။ (Data မ်ားစုဖြဲ႔ၿပီး ရွိသည့္ေနရာကို database ဟုေခၚ)

3. OpenGL - Java interface ျဖစ္ပါတယ္၊
 2D or 3D graphics စတာေတြအတြက္ျဖစ္ပါတယ္။

4. SSL - Internet security ပိုင္းကို ေထာက္ပံ့ေပးပါတယ္။

5. WebKit - Browser ကိုေထာက္ပံ့ေပးဖို႔အတြက္ျဖစ္ပါတယ္။

6. Surface Manager - multiple applications မ်ားမွ 2D and 3D graphic layers မ်ားကို
 display subsystem အတြက္ အဆင္ေျပေခ်ာ့ေမြ႕ေအာင္ စြမ္းေဆာင္ေပးႏိုင္ပါတယ္။

7. FreeType - Font အတြက္ အေထာက္အပံ့ေပးပါတယ္။


 #3 : Android Runtime 

Android Runtime  တြင္ Core Java Libraries မ်ားနဲ႔ 
Dalvik Virtual Machine ဆိုၿပီး ႏွစ္ပိုင္းပါ၀င္ပါတယ္။

 
 Dalvik Virtual Machine ပိုင္း
 ----------------------------------
Dalvik Virtual Machine ကို အတိုေကာက္အားျဖင့္ JVM လို႔ေခၚပါတယ္၊

 Android Devices တြင္ Apps မ်ားကို ထည့္သြင္းတဲ့အခါ Optimize (ပိုေကာင္းလာေအာင္)
 low processing လိုေခၚတဲ့ memory & power အနိမ့္ပိုင္းမ်ားအတြက္ အလုပ္လုပ္ေပးပါတယ္။

Dalvik Virtual Machine က JVM နဲ႔ အလားသ႑န္တူညီပါတယ္၊ ဒါေပမယ့္လည္း 
designe ပိုင္းနဲ႔ optimize ပိုင္းတြင္ ကြဲျပားျခားနားၾကပါတယ္။ 

Dalvik Virtual Machine ကၽြန္ေတာ္တို႔ေရးထားတဲ့ Source Code ေတြ 
(Android application) ကို စက္နားလည္ေအာင္  ထည့္သြင္းအသံုးျပဳႏိုင္ေအာင္ 
Machine Language အျဖစ္ ဘာသာျပန္ေပးႏိုင္ပါတယ္။

 
Core Java Libraries ပိုင္း
------------------------------
Core Java Libraries က Java programming language အတြက္ ျဖစ္ၿပီး 
Android applications မ်ားကို ေရြးဆြဲေနၾကတဲ့ Android application developers မ်ားအတြက္ 
Java SE libraries မ်ားကို လုပ္ေဆာက္ခ်က္ေတြ ပိုေကာင္းလာေအာင္ အေထာက္အပံ့ေပးပါတယ္။

 
#4 : Application Framework

Android architecture အတြက္ ဒုတိယ အေရးပါလွတဲ့ component တစ္ခုျဖစ္ပါတယ္၊ 
Application ဖန္တီးတဲ့ Developers ေတြက ဒီ Application Framework အေပၚ အေျခခံၿပီး ဖန္တီးေရးၾကတာပဲျဖစ္ပါတယ္။

Android Application မ်ားက Application Framework နဲ႔ တိုက္ရိုက္ခ်ိတ္ဆက္ အလုပ္လုပ္ၾကပါတယ္၊ Android က Java Programming Language နဲ႔ေရးရတယ္ဆိုေပမယ့္ PC အတြက္ေရးတာ မဟုတ္တဲ့အတြက္ သူ႔အတြက္သီးသန္႔ Framework ကို Google ကထုတ္ေပးထားပါတယ္၊ ၎ Framework ကိုအေျခခံၿပီး Android Application ေတြကို Develop လုပ္တာျဖစ္ပါတယ္။

 
Application Framework မ်ား
--------------------------------
ေအာက္ေဖၚျပပါ အေၾကာင္းရာ မ်ားသည့္ Application Framework Blocks မ်ားျဖစ္ၾကပါသည္

1. Activity Manager - Application မ်ား၏ Activity မ်ားကို စီစဥ္ေပးျခင္း။

2. Content Provider - Data sharing မ်ားနဲ႔ Application ႏွစ္ခုရဲ့ၾကား စီစဥ္ေပးျခင္း။

3. Telephony Manager - voice calls မ်ားကို စီစဥ္ေပးျခင္း။

4. Location Manger - GPS နဲ႔ cell tower မ်ားကို 
အသံုးျပဳၿပီး Locations မ်ားက ိုစီစဥ္ေပးျခင္း။

5. Resource Manager - ကၽြန္ေတာ္တို႔ အသံုးျပဳလုိက္တဲ့ 
Android Application ၏ Resources ေပါင္းမ်ားစြကို စီစဥ္ေပးျခင္း။

6. Notification Manager - User မ်ားအတြက္ display alerts နဲ႔ 
notifications မ်ားကို စီစဥ္ေပးျခင္း။
#5. Applications

User ေတြတိုက္ရုိက္ ထိေတြ႔ေနရတာေတာ့ Application ေတြပဲျဖစ္ပါတယ္၊ Application ေတြမွာ
System Application နဲ႔ User Application ဆိုၿပီး အုပ္စုႏွစ္ခုျပန္ခြဲယူႏိုင္ပါတယ္။

System Application ကေတာ့ Device မွာမရွိမျဖစ္လိုအပ္တဲ့ Application ေတြလို႔ေျပာလို႔ရပါတယ္
ဥပမာ... Home laucher, Phone, Message, Setting, Camera စတဲ့ Application ေတြကိုေျပာတာပါ။

User Application ဆိုတာကေတာ့ အသံုးျပဳသူက စိတ္ႀကိဳက္ထပ္ထည့္ထားတဲ့
Game ေတြ Application ျဖစ္ပါတယ္၊

 
Application တြင္ပါ၀င္သည့္ အရာမ်ား
------------------------------------------
Home, Dialer, Contacts, Voice Dial, Email
Calendar, Browser, Media Player, Camera
Albums, Clock, Calculator, Alarm, IM


Android အစိတ္အပိုင္းတြင္ Application သည္ Top layer ျဖစ္ၿပီး Developers မ်ားမွေရးဆြဲထားၿပီး
ဒီ layer တြင္ ထည့္သြင္း အသံုးျပဳျခင္း ျပန္လည္ ဖ်က္ပယ္ႏိုင္ျခင္းစတဲ့ Feature မ်ားကို တိုက္ရိုက္ထိ
ေတြ႔ခြင့္ေပးၿပီး အသံုးျပဳႏိုင္သည့္ အစိတ္အပိုင္းတစ္ခုျဖစ္ပါတယ္။

မွတ္ခ်က္...။
 ေဖၚျပပါ Android architecture ကို (သို႔) Android ဖုန္းတစ္လံုးတြင္ ပါ၀င္ေနသည့္
အစိတ္အပိုင္းမ်ားကို ေလ့လာရာမွာ စာဖတ္သူက Programming သေဘာတရားမ်ားကို လံုး၀မေလ့လာဘူးသူတစ္ေယာက္ဆိုရင္ေတာ့ နားလည္ဖို႔ရန္ ခက္ခဲႏိုင္ပါတယ္၊ 

 သို႔ေပမယ့္ အထက္ပါ အေၾကာင္းအရာမ်ားကို ဖတ္ရႈၿပီး Android ဖုန္းတစ္လံုးအတြက္
တည္ေဆာက္ထားပံုကို သေဘာေပါက္ နားလည္ၾကလိမ့္မယ္လို႔ ထင္ပါတယ္။


 Ref#1. Android System Book (Sithu Paing)

   #2. www.androidtutorialsworld.com

       #3. www.tutorialspoint.com


အားလံုးကိုေက်းဇူးတင္ပါတယ္




ဇူးနစ္(နည္းပညာ)