အရင္ က်ေနာ္သိေသာ Android အေၾကာင္း အပိုင္းမွာ တုန္းက
နည္းပညာပိုင္း ဆုိင္ရာ အသုံးႏႈန္းပိုင္း အနည္းငယ္သာ ပါ၀င္ေအာင္
ေရးးသားခဲ့ျပီး မည္သူမဆို ဖတ္ရႈ႕လို ့ရႏိုင္မယ့္ အေျခအေနမ်ဳိး
တင္ျပခဲ့ပါတယ္။ ယခု အပိုင္း (၂) မွာေတာ့ နည္းပညာပိုုင္းဆုုိင္ရာ
စကားလုုံးမ်ား အသံုးအႏႈန္းမ်ား အနည္းငယ္ပိုမို ပါ၀င္လာမွာျဖစ္တယ္ဆိုတာ
ဦးစြာပထမ အသိေပးပါရေစ။ ယခု အပိုင္း (၂) မွာ Android ကို ဘယ္လို
ဘယ္ပုံဖြဲ ့စည္းထားလဲဆိုတာကို က်ေနာ္သိသေလာက္ အတက္နုုိင္ဆုုံးတင္ျပ
ေရးသားသြားမွာပါ။ လိုုအပ္ခ်က္ေတြရွိေနခဲ့ရင္ မွားယြင္းေနတာမ်ားရွိရင္လဲ
စာဖတ္သူတိုု ့ရဲ႕ အေတြ႔အၾကဳံကိုလဲ ခ်က္ျခင္းေ၀မွ်ေပးဖိုု
့ေထာက္ျပေ၀ဖန္ေပးဖိုု ့ၾကိဳတင္ပန္ၾကားအပ္ပါတယ္။ ဒါမွ ပိုုျပီးမွန္ကန္
ေကာင္းမြန္တဲ့ အခ်က္အလက္ေတြ လူအမ်ားဆီကိုေရာက္ႏိုင္မယ္လိုု ့ က်ေနာ္ထင္ပါတယ္။
Android ကိုုဘယ္လိုု ဖြဲ ့စည္းထားပါသလဲ?
ဒီေမးခြန္းဟာ သိပ္ကို ေမးသင့္ေမးအပ္တဲ့ ေမးခြန္းတခုျဖစ္သလိုု သိထားသင့္တဲ့အခ်က္ထဲမွာလဲပါ၀င္ပါတယ္။
ဘာလိုု ့လဲဆိုုေတာ့ ကိုယ္က Android developer တစ္ေယာက္ ျဖစ္ဖိုု ့
စိတ္ကူးရွိေနျပီဆိုရင္ေတာ့ ကိုယ္စီးမယ့္ျမင္းဟာ အထီးလား အမလားဆိုတာေတာ့
သိထားသင့္တယ္ မဟုတ္လား။ Android Application ကိုုေရးသားမယ့္ developer
တစ္ေယာက္ဟာ ကိုယ္ေရးသားမယ့္ Operating System ဟာ ဘယ္လို ဖြဲ
့စည္းတည္ေဆာက္ထားသလဲ system ရဲ ့အခင္းအက်င္း ေတြကို ေကာင္းစြာ နားလည္
သေဘာေပါက္ ထားမွသာလွ်င္ ကိုယ္ေရးသားမည့္ application ေတြဟာ ၄င္း OS ေပၚမွာ
ေကာင္းစြာ အလုပ္လုပ္မွာပါ။
Android developer တစ္ေယာက္အတြက္ တကယ့္ကို အေရးပါဆုုံး အခ်က္ကေတာ့ API
(Application Programming Interface) Level ျဖစ္ပါတယ္။ ဘာလိုု ့လဲဆိုုေတာ့
ကိုယ့္ application ဟာ ဘယ္ ကိရိယာေတြ (devices) ဘယ္ OS version မွာ
အလုပ္ လုပ္မည္ မလုပ္မည္ ဆိုတဲ့ ကိစၥကို သတ္မွတ္ နုုိင္စြမ္းရွိတဲ့
အဆင့္ျဖစ္လိုု ့ပါပဲ။ ဥပမာ တခ်ဳိ႕ Application ေတြဟာ graphic ဘယ္ေလာက္ရွိမွ
CPU ကဘယ္ေလာက္ျဖစ္မွ OS version က ဘယ္ေလာက္မွသုုံးလိုု ့ရမယ္ မရဘူး
စတာေတြကို ဒီအဆင့္မွာ သတ္မွတ္တာ ျဖစ္တဲ့အတြက္ေၾကာင့္ပါ။
Android ဟာ Linux Kernel ကိုု အေျခခံေရးသားထားတဲ့ OS (Operating
System) တခုုျဖစ္တယ္ဆိုုတာ ျပီးေတာ့ Open Source ျဖစ္တယ္ဆိုတာကိုု
ျပီးခဲ့တဲ့ အပိုုင္းမွာ တင္ျပခဲ့ပါတယ္။ ဒါဆိုု ဘာအေၾကာင္း ေတြေၾကာင့္မ်ား
Android က Linux အေပၚ အေျခခံရသလဲဆိုုတဲ့ ေမးခြန္း တခုု ထြက္လာပါတယ္။ Linux
ဟာလဲ Free and Open Source ျဖစ္ပါတယ္။ ျပီးေတာ့ Linux က ေပါ့ပါးတယ္။
လုုံျခဳံမွဳရွိတယ္။ Features ေတြစုုံလင္မွဳရွိတယ္။
Linux ဟာ ကြန္ပ်ဳတာ hardware ေတာ္ေတာ္မ်ားမ်ားမွာ ( mobile ဖုုန္းေတြ၊
tablet computers ေတြ network routers, televisions , vedio game
consoles, desktop computer, mainframes နဲ ့super computer ေတြအထိ)
အလြယ္တကူ ေပါင္းစပ္ အလုပ္ လုပ္နုုိင္စြမ္း ရွိပါတယ္။ ဒီလို hardware
အေတာ္မ်ားမ်ားမွာ အလြယ္တကူ ေပါင္းစပ္ အလုုပ္ လုုပ္နုိင္စြမ္းရွိတဲ့ OS
တခုုကိုု Android က အေျခခံျပီး ရယူသုုံးစြဲလုုိက္ျခင္းဟာ hardware မ်ားကိုု
အတိုုင္းအတာ တခုုအထိခ်ဳံ ့နုုိင္ခဲ့သလိုု hardware နွင့္ ၄င္းရဲ႕ features
အေတာ္ မ်ားမ်ားကိုလည္း ထည့္သြင္းစဥ္းစားဖိုု ့မလိုုအပ္ေတာ့ပါဘူး။
အားလုုံး သိျပီးတဲ့အတုုိင္း Linux ရဲ ့Low Level အပိုုင္း
အေတာ္အမ်ားမ်ားကိုု ေပါ့ပါးတဲ့ C programming language code ေတြနဲ
့ေရးသားထားတဲ့အတြက္ Android ရဲ႕ hardware device ေတြနဲ ့android
application တိုု ့ဟာ လြယ္ကူ အဆင္ေျပစြာ ေပါင္းစပ္ အလုပ္လုပ္နုုိင္
ေနေတာ့တာပါပဲျဖစ္ပါတယ္။ ဒါေၾကာင့္ Android ဟာလဲ ေပါ့ပါးသြက္လပ္တဲ့ mobile
OS တခုုအျဖစ္ ရပ္တည္လာနုုိင္ေတာ့တာပါပဲျဖစ္ပါတယ္။
ေနာက္ျပီး Linux ဟာ လုုံျခဳံေရးေကာင္းမြန္တဲ့ Operating System ဆိုတာ
ဘယ္သူမွ မျငင္းနုုိင္ပါဘူး။ သူ ျဖတ္သန္း လာခဲ့တဲ့ သမိုုင္းကာလ
ေတြကိုုၾကည့္ရင္ သူယခုု ရပ္တည္ေနတဲ့ အေျခအေနေတြကိုုၾကည့္ရင္ ဘယ္ေလာက္ထိ
လုုံျခံဳမွုု ေပးနုုိင္သလဲဆိုုတာ သိနုုိင္ပါတယ္။ ျပီးတာ့ application
တစ္ခုကိုတစ္ခုု တည္မွီျပီး အလုပ္ လုပ္ျခင္း မရွိတာေၾကာင့္ application
တစ္ခုုကေန application တစ္ခုုသိုု ့ထိုုးေဖာက္ျပီးေတာ့
တိုုက္ခိုုက္လာနုုိင္ေသာ လုုံျခံဳေရးဆုုိင္ရာ ျပႆနာမ်ားလည္း အေတာ့ကိုု
ကင္းရွင္းသြားပါတယ္။ Adroid ဟာ ဘာေၾကာင့္ ဒီလိုု လုုံျခဳံေရးဆုုိင္ရာ
အားသာခ်က္ မ်ာစြာရွိေနတဲ့ Linux Kernel ကိုုအေျခခံရယူသုုံးစြဲ ရသလဲဆိုတာ
ေမးခြန္းေတာင္ ေမးေနစရာမလိုုေအာင္ပါပဲ။ ၂၀၁၀ စက္တင္ဘာေလာက္မွာ Linux Kernel
developer တဦးျဖစ္တဲ့ Rafael J.Wysocki က mainline Linux wakeup events
Framework အတြက္ patch တခုုကိုု ထည့္သြင္းခဲ့ပါတယ္။ Android devices မ်ားရဲ
့drivers ေတြအတြက္ေတာ့ သိပ္ေကာင္းတဲ့ patch တခုုပဲေလ။ ၂၀၁၁ ဒီဇင္ဘာလ
ေလာက္မွာေတာ့ Android ရဲ ့MainLining Project ကိုုစတင္ခဲ့ျပီး ၄င္းတိုု ့ရဲ
့ ရည္ရြယ္ခ်က္ကေတာ့ Adriod ရဲ ့drivers မ်ား Patch မ်ား နဲ ့Features
မ်ားကိုု Linux Kernel ထဲကိုု Linux version 3.3 မွစျပီး ထည့္သြင္းဖိုု
့ရည္ရြယ္ခဲ့တာျဖစ္ပါတယ္။
Android မွာ Linux ကဲ့သိုု ့ပင္ Mobile devices (ေ၇ြ ့လားနုုိင္ေသာ ၾကိဳးမဲ့ကိရိယာမ်ား) မ်ားအတြက္
မွတ္ဥာဏ္
ပိုုင္းဆုုိင္ရာ ထိန္းခ်ဳပ္စီမံနုုိင္ျခင္း (Memory Management) :
မလိုုအပ္ေသာအခ်ိန္တြင္ မလိုုအပ္ေသာ လုုပ္ငန္းေဆာင္တာမ်ားအားရွင္းလင္းျခင္း၊
အျမဲတမ္းသုုံးေလ့ရွိေသာ applicaiton မ်ားလုုပ္ငန္းေဆာင္တာမ်ားကိုု
မွတ္သားထားျပီး ရွာေဖြလုုပ္ေဆာင္တဲ့အခါမွာ လွ်င္ျမန္စြာ
ဦးစားေပးေဖာ္ျပေပးနုုိင္ျခင္း စတဲ့လုပ္ငန္းေဆာင္တာေတြဟာ
မွတ္ဥာဏ္ပိုင္းဆုုင္ရာ ထိန္းခ်ဳပ္စီမံနုုိင္ျခင္းပါပဲ။
ဘထၳရီမွ စြမ္းအင္ရယူသုုံးစြဲမွဳကိုု ထိန္းခ်ဳပ္စီမံနိုုင္ျခင္း (Power Management) : မလိုုအပ္တဲ့လုုပ္ငန္းေဆာင္တာမ်ားအား
memory မွာ ဖယ္ရွားျခင္းဟာလဲ memory သုုံးစြဲမွဳ နည္းသြားတဲ့အတြက္
စြမ္းအင္ပိုမို သုုံးစြဲလာႏိုင္ျခင္း screen resolution
ကိုုထိန္းခ်ဳပ္စီမံႏိုင္ျခင္းေၾကာင့္ စြမ္းအင္သုုံးစြဲႏိုင္ခ်ိန္
ပိုမိုေကာင္းမြန္လာျခင္း စသည့္ ဘထၳရီမွ စြမ္းအင္သုုံးစြဲမႈ
ၾကာခ်ိန္ကိုုျမင့္တင္ႏိုင္ဖို႔ ေရးဆြဲးထားသည့္ Management tool တခုပါပဲ။
ကြန္ယက္ခ်ိတ္ဆက္သုုံးစြဲနုုိင္တဲ့ networking စတဲ့စြမ္းအင္ျမင့္
Features မ်ားလဲပါ၀င္ပါတယ္။ Android ဟာ GSM/EDGE, CDMA, IDEN, EV-DO,
UMTS, Bluetooth, Wifi, LTE နွင့္ Wimax အစရွိတဲ့ ကြန္ယက္ခ်ိတ္ဆက္မႈ
နည္းပညာမ်ားကိုု အေထာက္အပံ့ေပးပါတယ္။
အျခား စြမ္းအင္ျမင့္ Features ေတြျဖစ္တဲ့ Handset Layouts ( graphic ရုပ္ပိုင္းဆိုင္မ်ားအဆင္ေျပေစရန္)၊
Storage (data ေတြသုုံးဖိုု ့အတြက္ ေပါ့ပါးတဲ့ Relational database
အမ်ဳိးစား ျဖစ္တဲ့ SQLite မ်ားသုုံးစြဲထားျခင္း)။ Multiple Language
Support, Web Browser, JavaSupport , Multitasking,Multi touch, Screen
capture ,Additional Hardware support, Media/Streaming Media support,
Video calling စတဲ့ Features မ်ားကိုုရရွိနုုိင္ပါတယ္။
တကယ္ေတာ့ Android OS ကိုု အလႊာ အထပ္ထပ္နဲ့ ေပါင္းစပ္ဖြဲ
့စည္းထားတာျဖစ္ပါတယ္။ ျပီးေတာ့ ၄င္းအလႊာ တခု နွင့္ တခုဟာလည္း သည္းျခားစြာ
ကြဲျပား ရပ္တည္ေနျခင္းမ်ဳိး မဟုုတ္ဘဲ တခု ႏွင့္ တခုေပါင္းစပ္ အလုုပ္
လုုပ္ၾကတဲ့ ပုံစံမ်ဳိးျဖစ္ပါတယ္။ ဒီေအာက္က ပုုံေလးကေတာ့ Android Operating
System ကို ဘယ္လိုုအလႊာ အဆင့္ဆင့္နဲ ့ ဖြဲ ့စည္းထားသလဲ
ဆိုုတာကိုုျပသတဲ့ပုံ ( Android Stack) ပါပဲ။

Android ဟာ ၄င္းရဲ ့ တကယ့္ core system services ေတြျဖစ္တဲ့ လုုံျခဳံမွဳ
(security)၊ မွတ္ဥာဏ္ပိုင္းဆိုင္ရာ ထိမ္းခ်ဳပ္ စီမံခန္ ့ခြဲမႈ (Memory
management)၊ စြမ္းအင္သုုံးစြဲမွဳဆိုုင္ရာ စီမံခန္ ့ခြဲမွဳ (Power
Management)၊ လုုပ္ငန္းေဆာင္တာ စီမံခန္ ့ခြဲမႈ (process management)၊
ကြန္ယက္ခ်ိတ္ဆက္မွုုဆုdင္ရာ (nework stack)၊ hardware မ်ား ႏိုးၾကြားလုပ္ေဆာင္နုုိ္င္ေစမယ့္ (driver model) စသည္တိုု ့အတြက္
Linux Kernel 2.6 ကိုစတင္ျပီး ရယူသုုံးစြဲခဲ့ပါတယ္။ Apache 2.0 license
ေအာက္မွာ ျဖစ္ပါတယ္။ အထက္မွာေဖာ္ျပခဲ့သလိုုပဲ linux ရဲ ့low level
အပိုုင္းအေတာ္မ်ားမ်ားဟာ C code ေတြျဖစ္တာေၾကာင့္ hardware မ်ားကိုု
ေကာင္းစြားသိရွိျပီး လြယ္ကူေပါ့ပါးစြာ ေပါင္းစပ္အလုပ္လုပ္နုုိင္ပါတယ္။
Android အတြက္ applications မ်ား၊ လိုုအပ္တဲ့ services မ်ား
ဖန္တီးေရးသား တဲ့အခါမွာ ၄င္း apps မ်ားနွင့္ services မ်ားဟာ Andorid OS
ရဲ ့Application Layer မွာ အလုုပ္ လုုပ္ပါတယ္။ Android
သာမန္အသုုံးျပဳသူ(end user)ဟာ ဒီ Application Layer ေပၚမွ apps မ်ား၊
services မ်ားကိုုသာ အသုုံးျပဳမွာပါ။ ေအာက္က layers ေတြကိုု သူတိုု
့သတိထားမိမွာမဟုုတ္ပါဘူး။
ဥပမာ က်ေနာ္တိုု ့ Contact Book application
တခုုေရးသားတယ္ဆိုုပါေတာ့ဗ်ာ။ အသုုံးျပဳသူက contact အသစ္ဖန္တီးျခင္း၊
ဖ်က္ျခင္း၊ ျပင္ဆင္ျခင္း၊ ရွာေဖြျခင္းစတာေတြပဲ သူတိုု ့အသုုံးျပဳမွာပါ။
ဒီေနရာမွာ သိရမွာက Andorid Application layers ေပၚက apps & services
မ်ားဟာ ေအာက္က layers ေတြနဲ ့ဆက္ႏြယ္ အလုုပ္လုုပ္ေဆာင္တယ္ဆိုုတာကိုု
သိထားရမွာပါ။ အထက္ေဖာ္ျပပါ contact app ေရးသားတဲ့အခါ ေဒတာေတြသိမ္းဖိုု
့အတြက္ SQLite လိုု libraries ေတြ စတဲ့ libraries ေတြအသုုံးျပဳရမွာပါ။
ဆိုုလိုုခ်င္တာက applcation layer မွာေရးသားမယ္ applications ေတြဟာ Native
Libraries ေတြကို အသုုံးျပဳေရးသားတယ္။ ၄င္းတိုု ့လိုုအပ္တဲ့ layers ေတြနဲ
့ခ်ိတ္ဆက္အလုုပ္လုုပ္တယ္ဆိုတာကိုသိေစခ်င္တာပါ။ ၄င္း Native
Libraries ေတြဟာ C/C++ လိုု programming နဲ ့ေရးသားထားျပီး open source
ျဖစ္တဲ့အတြက္ မည္သူမဆိုု သိရွိနုုိင္ေလ့လာနုုိင္တဲ့အျပင္
ရယူသုုံးစြဲျပင္ဆင္နုုိင္ခြင့္ရွိပါတယ္။ ဒီအေၾကာင္းေတြကို အရင္အပိုင္းမွာေျပာၾကားခဲ့ျပီးျဖစ္ပါတယ္။
SQLite :application အားလုုံးအတြက္ ေပါ့ပါးျပီး စြမ္းအင္ျမင့္မားတဲ့
Relational Database Engine ရရွိနုုိင္ပါတယ္။ Features ေတာ္ေတာ္မ်ားမ်ား
စုံလင္စြာ ပါရွိတဲ့ SQL Database အမ်ိဳးအစားပါ။
Surface Manager
WebKit-
modern web browser engine တမ်ဳိးပါ။ Safari ၊ Chrome ႏွင့္ အျခား browser
မ်ားတြင္သုုံးထားေသာ web rendering engine မ်ဳိးျဖစ္ပါတယ္။
Open GL -3D graphic libraries မ်ားပါ။ Open GL ES 1.0 APIs ကိုုအေျခခံထားတာပါ။
FreeType-bitmap and vector font rendering
Surface
Manager- Application ေပါင္းစုုံက ၂ ဖက္ျမင္ ၃ ဖက္ျမင္
အလႊာမ်ားအဆင္ေျပေျပ ေပါင္းစပ္ အလုုပ္လုုပ္နုုိင္ဖိုု ့၊ သက္ဆုုိင္ရာ
subsystem ေတြအထိ display access ကို စီမံခန္ ့ခြဲနုုိင္တဲ့ libraries
ျဖစ္သည္။
Media libraries မ်ားမွာလဲ လူသုုံးမ်ားတဲ့ ရုုပ္ပုံ၊ အသံ၊ ရုုပ္ရွင္
ဖိုုင္ေတြရဲ ့format ေတြျဖစ္တဲ့ ( MPEG4, 3GP, MP3, JPG, PNG စတဲ့
ဖိုုင္အမ်ဳိးစားမ်ား ေထာင့္ပံ့တဲ့ libraries မ်ားျဖစ္သည္။
SSL -Secure Socket Layer လုုံျခဳံမႈဆုိင္ရာ libraries မ်ား ျဖစ္သည္။
Libc - ဆိုုတာကေတာ့ System C libraries မ်ားျဖစ္ပါတယ္။
အထက္ေဖာ္ျပပါ libraries မ်ားကိုု နဂိုုအရွိတုုိင္း တုုိက္ရိုုက္အသုုံးခ်နုုိင္ပါတယ္။
ဒါေပမယ့္တခ်ဳိ ့ mobile ကိ၇ိယာ ထုုတ္လုုပ္သူမ်ားက မိမိတိုု
့ထုုတ္လုုပ္မယ့္ hardware မ်ားနွင့္ကိုုက္ညီေစရန္ စံထား C Library
မ်ားကိုု ျပန္လည္ေရးသားျပီး အသုုံးျပဳေသာ မူကြဲ တစ္မ်ဳိး အျဖစ္ Bionic
ကိုု ထည့္သြင္း သုုံးစြဲပါတယ္။ Bionic ကိုု သုုံးစြဲရတာ အေၾကာင္း ၂
ရပ္ေၾကာင့္ပါ။
နည္းပညာအပိုု္င္းအရ moblie devices မ်ားကို သယ္ယူရအဆင္ေျပေစရန္
ေသးငယ္ေအာင္ ထုုတ္လုုပ္ရပါတယ္။ mobile devices မ်ားဟာလည္း battery
မွစြမ္းအင္ကိုု ရယူသုုံးစြဲေနရတဲ့အခ်ိန္ battery မ်ားရဲ
့စြမ္းအင္သိုုေလာင္နုုိင္မွုု ကိုလည္း ခ်က္ျခင္းၾကီး
တိုုးတက္ေအာင္မလုပ္နုုိင္ေသးတဲ့အခ်ိန္မ်ဳိးမွာ အတက္နုုိင္ဆုုံး အဆင္ေျပေစရန္ ၄င္းတိုု ့အတြက္ ရည္ရြယ္ျပီး Bionic ကိုုထည့္သြင္းထားပါတယ္။
ခြင့္ျပဳမွုု - ၄င္းကိုု ျပဳျပင္ယူကာသုုံးလိုသူမ်ားအတြက္ အဆင္ေျပေသာ license မ်ဳိးရွိျခင္း တိုု ့ေၾကာင့္ Bionic ကိုုထည့္ထသြင္းထားပါတယ္။
Android Run time ကိုေတာ့ JVM နဲ ့ အနည္းငယ္ ႏႈိင္းယွဥ္တင္ျပလိုတာေၾကာင့္ ေနာက္တပိုင္းမွ ေရးသားပါေတာ့မယ္။
Post By: Ye` Paing Phyo
The Basic Principle of Developing Android Applications (Sayar Win Hein)
No comments:
Post a Comment