standart kutubxonalarda platformaga xos kodni (mahalliy kod) keng ishlatish,
(masalan, Jazelle texnologiyasi, ARM arxitekturasining ba'zi protsessorlari
tomonidan qo'llab-quvvatlanadigan) tezlashtirilgan bytecode ishlov berish imkonini
beradi.
Shootout.alioth.debian.org saytiga ko'ra, etti turli vazifalar uchun Java dasturining
bajarilish vaqti C / C ++ ga nisbatan o'rtacha 1,5-2 barobar, ba'zi hollarda Java tezroq
va ba'zi hollarda 7 baravar sekinroq. Boshqa tomondan, ularning ko'pchiligi uchun Java
mashinasi tomonidan xotira sarflash C / C ++ dasturidan 10 dan 30 baravar yuqori
bo'ldi. Shuni ham ta'kidlash joizki, Google tomonidan olib borilgan tadqiqotlar shuni
ko'rsatadiki, o'xshash C ++ dasturlariga qaraganda Java test misollarida sezilarli
darajada past ishlash va xotirani sarflash ancha yuqori.
Java – tilining asosiy yutuqlaridan biri uning tez o’zgaruvchanligidir. Bu til
dasturlash muhitiga va dasturlash yondashuvlariga tez moslasha oladi. Undan nafaqat
ilovalar yaratishda, balki Internet uchun dasturlar yaratishda ham foydalanish mumkin.
Xavfsizlik (ishonch yuq kodni xavfsiz ishga tushirish).
Xotirani xavfsiz boshqarish (avtomat ravishda keraksiz ma’lumotlarni yig’adi)
Tarmoqda dasturlash
Ko’p oqimli (Multi-thread) dasturlash
Quyidagi farqlar bilan Java C/C++ dan ajralib turadi
header fayllar yo’q;
preprocessorlar yo’q;
goto yo’q ;
unicode belgilar;
7
Android platformasi haqida
Android (yunoncha so’z) odam sifat robot ma’nosini ifoda etadi. Balki mana
shuning uchun Android operatsion tizimi logotipida robot tasvirlangandir.
Android operatsion tizimining yaratilishi tarixi 2002-yillardan boshlangan. Mana
shu davrda Google korporatsiyasi yaratuvchilari E. Rubinning dasturiy ishlanmalari
to’plami bilan qiziqib qoladilar. Dastlab mobil qurilmalar uchun yangi operatsion
tizimni yaratish loyihasi bilan katta maxfiylik ostida Android Inc. Kompaniyasi
shug’ullangan, ushbu kompaniyani keyinchalik Google sotib oladi.
Android Linux yadrosiga asoslangan kommunikatorlar, planshetli kompyuterlar,
elektron kitoblar, raqamli musiqa uskunalari, qo’l soatlari, netbuklar va smartbuklar
uchun portativ (tarmoqli) operatsion tizimdir.
Keyinchalik Google Open Handset Alliance (OHA) alyansini tashkil qildi, u hozirda
ham platformani qo’llab-quvvatlash va yanada rivojlantirish bilan shug’ullanadi.
Android Google tomonidan ishlab chiqilgan kutubxona orqali qurilmani boshqaruvchi
Java-ilovasini yaratishga imkon beradi. Android Native Development Kit Si va boshqa
tillarda yozilgan ilovalarni yaratadi.
2012-yilning uchinchi choragida sotilgan smartfonlarning 75 foizida Android
operatsion tizimi o’rnatilgan.
Android ilovasi quyidagilardan iborat.
Android SDK (View, Activity, ContentProvider, Service, BroadcastReciever, niyat)
va Android SDKda bir-birining vorisi bo'lmagan Java sinflari.
ilova bayonoti;
string, rasm va boshqalar kabi manbalar;
fayllar.
Darhaqiqat, ko'plab sinflar mavjud, ammo bular asosiy hisoblanadi. Sariq sarg'ish -
ishlab chiquvchi to'g'ridan-to'g'ri ishlaydi (xususan ulardan meros olingan). Qolganlari
juda muhim, ammo kamroq keng tarqalgan bo'lib qo'llaniladi.
View- barcha foydalanuvchi interfeysi vidjetlari uchun asosiy sinf hisoblanadi (GUI
vidjetlari). Android dasturining interfeysi bu sinfning vorislari daraxt ko’rinishidadir.
8
Ushbu daraxtni muntazam ravishda yaratishingiz mumkin, ammo bu noto'g'ri.
Foydalanuvchi interfeysi XML (qatlamli fayllar, tartib-fayllar) yordamida aniqlanadi
(Androidni ifodalash) [3].
Activity klassi va uning pastki sinflari foydalanuvchi interfeysi ortidagi mantiqni o'z
ichiga oladi. Yaqindan tekshirish bo'yicha ushbu sinf ViewModelga Model-View-
ViewModel modelida mos keladi (MVVM). Activityning ostki klassi va foydalanuvchi
interfeysi o'rtasidagi munosabatlar tur xildir. Odatda, har bir activity ostki klassida u
bilan bog'langan faqat bitta UI qatlami mavjud va aksincha. Activity sikl jarayoniga
ega.
Sikl davrida Activity uchta holatdan birida bo'lishi mumkin:
Faol va ishlayotgan - bu foydalanuvchi interfeysi oldingi o'rinda (texnik jihatdan -
faollashtirish stackining yuqori qismida).
To'xtatildi - bu foydalanuvchi interfeysi e'tiborda chetda qolgan holat. Bu holatda
kod bajarilmaydi.
Tugallangan - agar foydalanuvchi interfeysi ko'rinmasa. Ushbu holatda, kod ijro
etilmaydi.
ContentProvider sinf va uning voris sinflari MVVM arxitekturasida modelni
ifodalaydi. Ko'pgina amaliy holatlarda, bu SQLite ma'lumotlar bazasida, URIga
asoslangan kirish usuli bilan qoplangan. Nazariy jihatdan hech kim dasturchini
ma'lumotlar bazasidan boshqa narsa asosida ContentProvider yaratish uchun
ishlatmaydi. Biroq, kontent provayderning mavjud so'rovlar () usuli JDBC ResultSet
interfeysiga va uning qanday ishlashiga juda o'xshash Cursor obyektini qaytaradi.
Shuning uchun, kontent provayderlarining haqiqiy maqsadi ma'lumotlar bazasini
qamrab olishi shubhali bo'lishi mumkin emas [3].
Kontent provayderlarining asosiy g'oyasi AJAX ilovalarining arxitekturasiga
asoslangan bo’ladi. AJAX ilovalari odatda MVVM arxitekturasidan foydalanadi, bu
yerda model server tomonidagi URI sifatida ifodalanadi (lekin bu HTML5 bilan
o'zgartirildi). Haqiqatan ham, kontent provayderlarining URI yordamida so'ralishi va
MIME turlarini qo'llagan holda kengaytma yaratish AJAX ning yadroda ekanligini
ko'rsatadi.
9
Uyali qurilmada to'la huquqli munosabat bazasi bo'lishi juda ajoyib! (2005 yil, mobil
telefonlar hozirgi kunga qaraganda ancha zaif bo’lishgan). Natijada ular ikkita yaxshi
fikrni bir ContentProvider sinfiga birlashtirdi. Odatda dasturiy ta'minotni ishlab chiqish
jarayonida bo'lgani kabi, ikkita yaxshi g'oyani birlashtirib turish har doim ham yaxshi
natijaga olib kelmaydi. Androidda biz kontent provayderlarining bir nechta
engillashtiradigan dizayniga egamiz.
Android Service me'moriy dizayni OSGI xizmatlaridan olingan.
Xizmatlar Google tomonidan ishlaydigan dasturchilar tomonidan yaratildi, chunki
Androidning oqim modeli tufayli paydo bo'lgan mantiqiy muammo.
Activity faol va faqat uning foydalanuvchi interfeysi oldingi holatida ishlaydi.
Boshqa activity interfeysi hozirgi holatni o'zi bilan yopib qo'yadi, oxirgisi, hatto biror
narsa qilsa ham to'xtaydi. Agar operatsiyani amalga oshirish jarayonida birinchi o'rinda
bo'lmasa ham, operatsiyani bajarish kerak bo'lsa nima bo'ladi? Activityning yordami
bilan buni qila olmaysiz. Buni ContentProvider yordami bilan qila olmaysiz, chunki
ular o'zlarining sikl aylanish davrlariga ega emaslar va ularni ishlatadigan activity faol
bo'lgan holatda bajarilishi mumkin.
Bu yerda servis yordamga keladi. Ularni amalga oshirish jarayoni oldingi o'rinlarda
bo'lmasa ham amalga oshirilishi mumkin. Shunday qilib, agar siz fonda ishlashni
davom ettiradigan vaqtni qisqartiruvchi operatsiyani amalga oshirayotgan bo'lsangiz
va activityni boshlaydigan xizmatni yaratishingiz kerak.
Servis shuningdek, sikl aylanish jarayoniga ham ega. Buning ma'nosi, uni ba'zi
holatlar uchun Android ilovasi tomonidan uyg'unlashtirishi va ishga tushirishi
mumkin.
Yuqorida aytilganidek, Service ContentProvier'dan ko'ra ko'proq umumiy
maqsadlarga ega. Ma'lumotlar bazasidan foydalanishi mumkin, ammo uning APIsi
ContentProvider holidagi kabi, ma'lumotlar bazasi bilan bog'liq emas. Ko'p hollarda
xizmatlar tashqi serverlar bilan bog'lanish uchun ishlatiladi.
BroadcastReceiver sinfi va uning quyi sinflari Android arxitekturasida
qo'llaniladigan ta'sir mexanizmida ifodalanadi.
10
Albatta, Androidning ishlab chiqaruvchisi Android SDKdan kengayishi bilan
chegaralanmaydi. U istaganicha o'z sinflarini yozishi mumkin. Ammo ular Android
SDK sinflari uchun faqat yordamchi sinflar bo'lishadi.
Android manifesti.
Android Manifesti - Android dasturining yana bir muhim qismi. Idea Eclipse uchun
plugin paydo bo'lishidan kelib chiqqan.
Android manifesti XML fayli bo'lib, bir nechta vazifalarni bajaradi. Google shunday
ta'riflaydi:
java dastur paketining nomini bildiradi. Paket nomi dastur uchun yagona
identifikator;
ilovaning tarkibiy qismlari – xizmatlar va kontent provayderlarini tavsiflab
beradi. Komponentlarning har birini amalga oshiradigan va ularning qobiliyatlarini
e'lon qiluvchi sinf nomlarini belgilaydi (masalan, ular qaysi xabarni ko'rib chiqishlari
mumkin). Bular Android tizimiga qaysi komponentlarni va qaysi sharoitda ishga
tushirilishini bilish imkonini beradi;
dastur komponentlari o'z ichiga oladigan jarayonlarni oldindan belgilaydi;
ilovaning API xavfsiz qismlariga kirish va boshqa ilovalar bilan ishlashga
ruxsat berishi kerak bo'lgan ruxsatnomalarni e'lon qiladi. Bundan tashqari, dastur
komponentlariga kirish uchun zarur bo'lgan ruxsatlarni e'lon qiladi;
ilova ishlayotganda profiling va boshqa ma'lumotni ta'minlaydigan asboblar
sinflari;
bular faqat manifestda mavjud bo'lib, dastur ishlab chiqilgan va sinovdan
o'tgan;
ilova talab qiladigan Android API minimal darajasini e'lon qiladi;
ilovani bog'lash uchun kutubxonalarni ro'yxatlash zarur.
Ikkinchi xatboshiga e'tibor bering. Bu degani, muayyan sinf o'zingizning
ilovangizdagi activity, ContentProvider, BroadcastReceiver yoki xizmatni kengaytirsa,
bu sinf manifestda tasvirlanmaguncha ishlatilmaydi.
Do'stlaringiz bilan baham: |