ကျွန်တော် start learning android development ကို ရေးခဲ့ဖူးပါတယ်။ အပတ်တိုင်းတော့ android ကို လေ့လာဖြစ်နေတယ်။ အခုအချိန်မှာ iOS လောက် မသိသေးပေမယ့် ပုံမှန် app သေးသေးလေးတွေတော့ လုပ်နိုင်လာပါပြီ။ android development ကို iOS development နဲ့ ယှဉ်ကြည့်တဲ့ အခါမှာ ကျွန်တော် ခံစားရတာလေးတွေ တချို့ရှိတယ်။
Java VS objective-c
နှစ်ခုလုံးက OO တွေပဲ ဆိုပြီး သိပ်ပြီး ယှဉ်စရာမလိုပါ။ အခေါ်အဝေါ် တွေ အသုံးအနှုန်းတွေက ကွာတော့ စာဖတ်ရတဲ့ အခါမှာ နည်းနည်းလေး ခက်တာပဲ ရှိပါတယ်။ ဥပမာ။။ java မှာ interface လို့ ခေါ်ပေမယ့် objective-c မှာ protocol လို့ ခေါ်တယ်။ အခေါ် အဝေါ် အချို့က ကွဲလွဲတော့ နည်းနည်းလေး အခက်အခဲ ဖြစ်တာကလွဲလို့ language က ပြဿနာ မရှိပါ။
ကျောင်းမှာ Java သင်ပေးလိုက်တာဟာ အခုအချိန်မှာ လာပြီး အထောက်အကူပြုတာကတော့ အံဩ ဖို့ ကောင်းပါတယ်။ ကျွန်တော် ကျောင်းမှာ Java သင်လို့သာ လေ့လာခဲ့ပေမယ့် အခုအချိန်မှာ Android development လုပ်ကြည့်တော့ ထင်သလောက် မခက်ခဲပါဘူး။ Java က ခက်ခဲမယ်လို့ ထင်ထားတာက တော်တော်လေးကို လွယ်ပါတယ်။
Objective-c မှာ ကျွန်တော်တို့ Arc မသုံးခင်တုန်းက memory ကိစ္စကို အရမ်း အလေးထားရတယ်။ arc သုံးတော့လည်း သတိထားရတယ်။ အခုတလော Memory Warning တက်ပြီး Application ကို ပိတ်သွားတဲ့ ပြဿနာ တစ်ခု ရုံးမှာ ကြုံရတယ်။ ဘာဖြစ်လို့လည်းဆိုတာ ကြည့်တော့ တချို့ Variable တွေက view ကို popup လုပ်လိုက်ပေမယ့် release မလုပ်သွားဘူး။ ဟိုစာလိုက်ဖတ် ဒီစာလိုက်ဖတ်လိုက်တော့ autorelease သုံးထားလို့ ဒီလို ပြဿနာလေးတွေ ဖြစ်တာကို တွေ့ရတယ်။ တစ်ခုခြင်းဆီ ကြိုးစားပြီး ပြင်တယ် မရဘူး။ ဒါနဲ့ နောက်ဆုံး Arc ပြောင်းချင်လိုက်တော့ memory ကိစ္စ တော်တော် အဆင်ပြေသွားတယ်။ သို့ပေမယ့်လည်း တစ်ခါတစ်လေ ဖြစ်နေဆဲပဲ။ မလိုအပ်တဲ့ variable တွေကို ပြန်ဖြုတ်ရတာတွေ လုပ်ရမယ်။ ကျွန်တော် နဲ့ အတူတူ ရေးတဲ့ တစ်ယောက်က View တွေကို ခွဲခွဲပြီး သုံးထားတယ်။ code အပိုင်းအရတော့ ကောင်းပေမယ့် nib တွေကို load ခေါ်ရတဲ့ အတွက် memory က တော်တော်ပေးလိုက်ရတယ်။ ကျွန်တော်ကတော့ view တွေကိုခွဲပြီး nib load ရတာတွေကို သိပ်မကြိုက်ဘူး။ ရေးရတာ ကောင်းပေမယ့် memory warning တက်ရင် ပြန်ရှင်းတဲ့ အခါမှာ ုပြန်ရေးရမှာ ဆိုးလို့ပါ။ နောက်တချက်က performselector ထက် protocol ကို သုံးတာဟာ memory ကို သက်သာစေတယ်။ performselector နဲ့ လှမ်းခေါ်တဲ့အခါမှာ selector တွေကို memory မှာ သီးသန့် variable နဲ့ ထပ်ပြီး သုံးထားရတယ်။ ဒါကြောင့် protocol delegate method က ပို ကောင်းတယ်လို့ ယူဆရတယ်။
Java မှာတော့ memory ပြဿနာ ကြီးကြီးမားမား မရှိဘူး။ သို့ပေမယ့် Android က device မျိုးစုံ CPU , Memory မျိုးစုံရှိတော့ testing လုပ်ရတဲ့ အခါမှာတော့ devices မျိုးစုံ လိုတာတော့ အမှန်ပဲ။ Java ကတော့ Objective-C ထက်စာရင် အများကြီး ပိုလေ့လာရတာ လွယ်တာတော့ အမှန်ပဲ။
Eclipse Vs Xcode
ကျွန်တော်ကတော့ Xcode ကို ပိုသဘောကျတယ်။ android နဲ့ ios UI development ပိုင်းမှာ Xcode က အများကြီး သာတယ်။ IBoutlet က ရေးသားရတာ ပိုပြီး လွယ်ကူနားလည်စေတယ်။ Eclipse က ဘယ်လိုပဲ သုံးသုံး တော်တော်နှေးတယ်လို့ ခံစားရတယ်။ Debug လုပ်တဲ့ အပိုင်းမှာလည်း Xcode က အများကြီး ပိုသာတယ်။
Autocomplete ပိုင်းမှာလည်း Xcode က ပိုမြန်တယ်။ Eclipse က Xcode လိုမျိုး project တစ်ခုလုံးကို ဖွင့်ဖို့ မပါဘူး။ import လုပ်နေရတယ်။ ဒါကိုတော့ လုံးဝ မကြိုက်ဘူး။ sample code လေး ကြည့်ချင်ရင် import လုပ်နေရတယ်။ နောက်ပြီး sidebar မှာ project တွေ အများကြီး ပါနေတာလည်း ကျွန်တော့် အတွက် မျက်စိရှုပ်တယ်။
Emulator VS Simulator
Android က Emulator နဲ့ iOS က Simulator နှစ်ခုယှဉ်လိုက်ရင် အများကြီး ကွာပါတယ်။ Emulator က တော်တော်လေးကို လေးပါတယ်။ တစ်ခါတစ်ခါ ပိတ်ပြီးသွားရင် ပြန်ဖွင့်ရတဲ့ အချိန်မှာ စောင့်ရတာ တော်တော်ကြာတယ်။ နောက်တချက်က emulator ကို create လုပ်ချိန်မှာ virtual disk အတွက် နေရာပါပေးထားရပါတယ်။ Android 2.2 အတွက်က တစ်ခု android 4 အတွက်က တစ်ခု Screen Size အကြီးအတွက်က ၁ ခု ။ စုစုပေါင်း ၃ ခု လောက် ဆောက်ထားလိုက်တော့ အနည်းဆုံး 3 GB လောက်တော့ နေရာပေးထားရတယ်။
iOS Simulator ကတော့ တော်တော်လေးကို မြန်တယ်လို့ ဆိုရမယ်။ ပေါ့ပေါ့းပါးပါးရှိသလို iPad , iPhone စတာတွေကိုလည်း ရွေးနိုင်ပါတယ်။ သူ့ OS ပေါ်မှာ သူ့ simulator ကောင်းကောင်း run နိုင်တာ အစမ်းမဟုတ်ပါဘူးလို့ပဲ ဆိုရမှာပဲ။
UI Development
Android အတွက် UI Development လုပ်မယ်လို့ စဉ်းစားလိုက်ရင် အောက်က ပုံလေးကို သတိရတယ်။
UI Development တစ်ခုလုံးက XML တွေပါပဲ။ XML tag တွေကို သိရမယ်။ တချို့ XML tag တွေက ကျွန်တော့် အတွက် နည်းနည်း နားလည်ရခက်တယ်။ ဥပမာ။။ text alignment ချိန်ဖို့အတွက် android:gravity ဆိုတာကို သုံးရ တာမျိုးပေါ့။
Relative Layout မှာ match_parent မလုပ်ပဲ အခြား Liner layout သုံးမိရင်တော့ တော်တော်လေးကို ဂွကျတယ်လို့ ဆိုရမယ်။ Screen တစ်ခုလုံး ကြိုက်တဲ့ နေရာမှာ button ထည့်ဖို့အတွက် Relative Layout နဲ့မှ အဆင်ပြေမယ်။
ဒါမှမဟုတ်ရင် Liner Layout နဲ့ စနစ်တကျ စဉ်းစားပြီးတော့ ချရလိမ့်မယ်။ Android မှာ Coding ရေးတာထက် အဲဒီ Layout ချရတာ တော်တော် စိတ်ညစ်ဖို့ ကောင်းတယ်။
iOS မှာတော့ Xcode မှာ Interface Builder ပါပြီးသားပါ။ သုံးရတာ လွယ်တယ်။ Story Board တစ်ခုလုံးနဲ့ Project တစ်ခုလုံး စဉ်းစားပြီး layout ချသွားလို့ရတယ်။
Android မှာ XML သုံးထားတဲ့ auto generate တွေ ထုတ်ပေးလို့ရတယ်။ iPhone မှာတော့ မရဘူး။ UI ကို auto generate ထုတ်ပေးချင်ရင်တော့ coding မှာ ရေးပေးမှ ရမယ်။
iPhone က တစ်ခုနဲ့ တစ်ခု သိသိသာသာ ပြောင်းလဲသွားတဲ့ UI မရှိဘူး။ iOS 1 ကနေ အခု 6 နဲ့ ယှဉ်ရင်တော့ အများကြီးပြောင်းလဲသွားတယ်။ သို့ပေမယ့် ဝုန်းခနဲ ပြောင်းလဲသွားတာ မဟုတ်ပဲ ဖြည်းဖြည်းနဲ့ ပြောင်းလဲသွားတာ။ ပြောင်းလဲလာတာကလည်း UI control အသစ်တွေ မဟုတ်ဘူး။ လက်ရှိ control ကိုပဲ ပိုပြီး modification လုပ်ခွင့်ပေးလာတာပဲ ရှိတယ်။ Android 2.2 ကနေ Android 4 မှာ အပြောင်းကြီးပြောင်းသွားပြီ။ Android 3 က တော့ လူသုံးမများလိုက်ဘူး။ 2.2 နဲ့ 4 နှစ်ခုလုံး အတွက် UI ကို လုပ်ရတာ တော်တော်ဆိုးတယ်။ 2.2 နဲ့ 4 က အများကြီး ကွာခြားသွားတယ်။
Community
နှစ်ခုလုံးက Community အားကောင်းတယ်။ Developer တော်တော်များများကလည်း ၂ ခုလုံးကို ရေးကြတယ်။ Android မှာတော့ iOS မှာလို့ Standford University က သင်တဲ့ course လိုမျိုး သင်တာ မတွေ့မိဘူး။
Android မှာ code support ပိုင်းပိုများတယ်။ UI development အတွက် control တွေက iOS လောက် သိပ်မတွေ့ရဘူး။ ဒါမှမဟုတ် ကျွန်တော်ပဲ ရှာမတွေ့တာလား တော့ မသိဘူး။ cocoacontrols လိုမျိုး website ကို android မှာ မတွေ့မိသေးဘူး။
Code အပိုင်းကတော့ ပြောစရာမလိုလောက်အောက် community အားကောင်းတယ်။ သို့ပေမယ့် opensource UI Control ပိုင်းမှာတော့ iOS က ပိုသာတာ အမှန်ပဲ။
ဘာပဲပြောပြော iOS ကို လေ့လာပြီးမှ android ကိုလေ့လာတာ သိပ်ခက်ခဲလှတယ်တော့ မဟုတ်ဘူး။ သို့ပေမယ့် အချိန်တော့ တော်တော်လေးကို ပေးရတယ်။
Leave a Reply