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 ေတာ္ေတာ္မ်ားမ်ားမွာ ( မိုဘိုင္းဖုန္း ၊ tablet computers ၊ network routers ၊ televisions ၊ video 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 တစ္ခုသို႔ ထိုးေဖာက္ျပီးေတာ့ တိုက္ခိုက္လာႏိုင္ေသာ လုံျခံဳေရးဆုိင္ရာ ျပႆနာမ်ားလည္း ကင္းရွင္းသြားပါတယ္။ Android ဟာ ဘာေၾကာင့္ ဒီလို လုံျခံဳေရးဆုိင္ရာ အားသာခ်က္မ်ားစြာ ရွိေနတဲ့ Linux Kernel ကိုအေျခခံ ရယူ သုံးစြဲရသလဲဆိုတာ ေမးခြန္းေတာင္ ေမးေနစရာ မလိုေအာင္ပါပဲ။ ၂၀၁၀ စက္တင္ဘာေလာက္မွာ Linux Kernel developer တဦးျဖစ္တဲ့ Rafael J.Wysocki က mainline Linux wakeup events Framework အတြက္ patch တခုကို ထည့္သြင္းခဲ့ပါတယ္။ Android devices မ်ားရဲ႕ drivers ေတြအတြက္ေတာ့ သိပ္ေကာင္းတဲ့ patch တခုပဲေလ။ ၂၀၁၁ ဒီဇင္ဘာလ ေလာက္မွာေတာ့ Android ရဲ႕ MainLining Project ကို စတင္ခဲ့ျပီး ၄င္းတို႔ရဲ႕ ရည္ရြယ္ခ်က္ကေတာ့ Andriod ရဲ႕ drivers မ်ား ၊ Patch မ်ား နဲ႔ Features မ်ားကို Linux Kernel ထဲကို Linux version 3.3 မွစျပီး ထည့္သြင္းဖို႔ ရည္ရြယ္ခဲ့တာ ျဖစ္ပါတယ္။
- မွတ္ညဏ္ ပိုင္းဆုိင္ရာ ထိန္းခ်ဳပ္စီမံႏိုင္ျခင္း (Memory Management)
Android မွာ Linux ကဲ့သို႔ပင္ Mobile devices (ေရြ႕လားႏိုင္ေသာ ၾကိဳးမဲ့ကိရိယာမ်ား) မ်ားအတြက္ မလိုအပ္ေသာအခ်ိန္တြင္ မလိုအပ္ေသာ လုပ္ငန္းေဆာင္တာမ်ားအား ရွင္းလင္းျခင္း ၊ အျမဲတမ္း သုံေလ့ရွိေသာ 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 ဟာ ၄င္းရဲ႕ တကယ့္ core system services ေတြျဖစ္တဲ့ လုံျခံဳမႈ (security) ၊ မွတ္ညဏ္ပိုင္းဆိုင္ရာ ထိမ္းခ်ဳပ္ စီမံခန္႔ခြဲမႈ (Memory management) ၊ စြမ္းအင္ သံုးစြဲမႈဆိုင္ရာ စီမံခန္႔ခြဲမႈ (Power Management)၊ လုပ္ငန္းေဆာင္တာ စီမံခန္႔ခြဲမႈ (process management) ၊ ကြန္ယက္ ခ်ိတ္ဆက္မႈဆိုင္ရာ (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 အမ်ိဳးအစားပါ။
- WebKit
Modern web browser engine တစ္မ်ဳိးပါ။ Safari ၊ Chrome ႏွင့္ အျခား browser မ်ားတြင္ သံုးထားေသာ web rendering engine မ်ဳိးျဖစ္ပါတယ္။ Open GL -3D graphic libraries မ်ားပါ။ Open GL ES 1.0 APIs ကိုအေျခခံထားတာပါ။
- Surface Manager
Application ေပါင္းစုံက ၂ ဖက္ျမင္ ၃ ဖက္ျမင္ အလႊာမ်ား အဆင္ေျပေျပ ေပါင္းစပ္ အလုပ္လုပ္ႏိုင္ဖို႔၊ သက္ဆုိင္ရာ subsystem ေတြအထိ display access ကို စီမံခန္႔ခြဲႏိုင္တဲ့ libraries ျဖစ္သည္။ Media libraries မ်ားမွာလဲ လူသုံးမ်ားတဲ့ ရုပ္ပုံ၊ အသံ၊ ရုပ္ရွင္ ဖိုင္ေတြရဲ႕ format ေတြျဖစ္တဲ့ MPEG4, 3GP, MP3, JPG, PNG စတဲ့ ဖိုင္အမ်ဳိးအစားမ်ား ေထာက္ပံ့တဲ့ libraries မ်ားျဖစ္သည္။
- SSL
Secure Socket Layer လုံျခံဳမႈဆုိင္ရာ libraries မ်ား ျဖစ္သည္။
- Libc
Libc ဆိုတာကေတာ့ System C libraries မ်ားျဖစ္ပါတယ္။
အထက္ေဖာ္ျပပါ libraries မ်ားကို နဂိုအရွိတုိင္း တိုက္ရိုက္ အသုံးခ်ႏိုင္ပါတယ္။ ဒါေပမယ့္ တခ်ဳိ႕ mobile ကိရိယာ ထုတ္လုပ္သူမ်ားက မိမိတို႔ ထုတ္လုပ္မယ့္ hardware မ်ားႏွင့္ ကိုက္ညီေစရန္ စံထား C Library မ်ားကို ျပန္လည္ေရးသားျပီး အသုံးျပဳေသာ မူကြဲ တစ္မ်ဳိး အျဖစ္ Bionic ကို ထည့္သြင္း သုံးစြဲပါတယ္။ Bionic ကို သုံးစြဲရတာ အေၾကာင္း ၂ ရပ္ေၾကာင့္ပါ။
နည္းပညာအပိုင္းအရ moblie devices မ်ားကို သယ္ယူရ အဆင္ေျပေစရန္ ေသးငယ္ေအာင္ ထုတ္လုပ္ရပါတယ္။ Mobile devices မ်ားဟာလည္း battery မွစြမ္းအင္ကို ရယူ သံုးစြဲေနရတဲ့အခ်ိန္ battery မ်ားရဲ႕ စြမ္းအင္ သိုေလာင္ႏိုင္မႈကိုလည္း ခ်က္ခ်င္းၾကီး တိုးတက္ေအာင္ မလုပ္ႏိုင္ေသးတဲ့ အခ်ိန္မ်ဳိးမွာ အတက္ႏိုင္ဆုံး အဆင္ေျပေစရန္ ၄င္းတို႔အတြက္ ရည္ရြယ္ျပီး Bionic ကိုထည့္သြင္းထားပါတယ္။
ခြင့္ျပဳမႈ - ၄င္းကို ျပဳျပင္ယူကာ သုံးလိုသူမ်ားအတြက္ အဆင္ေျပေသာ license မ်ဳိးရွိျခင္းတို႔ေၾကာင့္ Bionic ကိုထည့္သြင္းထားပါတယ္။
Credit: Original Aurthor
Source: Internet
No comments:
Post a Comment