Penjelasan Arsitektur Android
Dalam paket sistem operasi android tediri dari beberapa
unsur seperti tampak pada gambar di bawah. Secara sederhana arsitektur android
merupakan sebuah kernel Linux dan sekumpulan pustaka C / C++ dalam suatu
framework yang menyediakan dan mengatur alur proses aplikasi.
1. Linux Kernel
Android dibangun di atas kernel Linux 2.6. Namun secara keseluruhan android bukanlah linux, karena dalam android tidak terdapat paket standar yang dimiliki oleh linux lainnya. Linux merupakan sistem operasi terbuka yang handal dalam manajemen memori dan proses. Oleh karenanya pada android hanya terdapat beberapa servis yang diperlukan seperti keamanan, manajemen memori, manajemen proses, jaringan dan driver. Kernel linux menyediakan driver layar, kamera, keypad, WiFi, Flash Memory, audio, dan IPC (Interprocess Communication) untuk mengatur aplikasi dan lubang keamanan.
2. Libraries
Android menggunakan beberapa paket pustaka yang terdapat pada
C/C++ dengan standar Berkeley Software Distribution (BSD) hanya setengah dari
yang aslinya untuk tertanam pada kernel Linux. Beberapa pustaka diantaranya:
1. System C Library, Diturunkan dari
implementasi standard C system library (libc) milik BSD, dioptimasi untuk
piranti embedded berbasis Linux
2. Media Libraries, Berdasarkan Packet Video's
OpenCORE; library-library ini mendukung playback dan recording dari berbagai
format audio dan video populer, meliputi MPEG4, H.264, MP3, AAC, AMR, JPG, dan
PNG
3. Surface Manager, Mengatur akses pada display dan
lapisan composites 2D dan 3D graphic dan berbagai aplikasi
4. Lib Web Core, Web browser engine modern yang
mensupport Android browser maupun embeddable web view
5. SGL, Teh underlyng 2D Graphics Engine
6. 3D Libraries, Implementasi berdasarkan OpenGL ES
1.0 APIs; library ini menggunakan hardware 3D acceleration dan highly optimized
3D software restirezer.
7. FreeType, Bitmap dan vector font rendering
8. SQLite, Relational databse engine yang powerful
dan ringan tersedia untuk semua aplikasi
9. SSl dan WebKit untuk browser dan keamanan
internet.
Pustaka-pustaka tersebut bukanlah aplikasi yang berjalan sendiri, namun hanya dapat digunakan oleh program yang berada di level atasnya. Sejak versi Android 1.5, pengembang dapat membuat dan menggunakan pustaka sendiri menggunakan Native Development Toolkit (NDK).
3. Android Runtime
Pada android tertanam paket pustaka inti yang menyediakan
sebagian besar fungsi android. Inilah yang membedakan Android dibandingkan
dengan sistem operasi lain yang juga mengimplementasikan Linux. Android Runtime
merupakan mesin virtual yang membuat aplikasi android menjadi lebih tangguh
dengan paket pustaka yang telah ada. Dalam Android Runtime terdapat 2 bagian
utama, diantaranya:
·
Pustaka
Inti, android dikembangkan melalui bahasa pemrograman Java, tapi Android
Runtime bukanlah mesin virtual Java. Pustaka inti android menyediakan hampir
semua fungsi yang terdapat pada pustaka Java serta beberapa pustaka khusus
android.
·
Mesin
Virtual Dalvik, Dalvik merupakan sebuah mesin virtual yang dikembangkan oleh
Dan Bornstein yang terinspirasi dari nama sebuah perkampungan yang berada di
Iceland. Dalvik hanyalah interpreter mesin virtual yang mengeksekusi file dalam
format Dalvik Executable (*.dex). Dengan format ini Dalvik akan mengoptimalkan
efisiensi penyimpanan dan pengalamatan memori pada file yang dieksekusi. Dalvik
berjalan di atas kernel Linux 2.6, dengan fungsi dasar seperti threading dan
manajemen memori yang terbatas. [Nicolas Gramlich, Andbook, anddev.org]
4. Application Framework
Kerangka aplikasi menyediakan
kelas-kelas yang dapat digunakan untuk mengembangkan aplikasi android. Selain
itu, juga menyediakan abstraksi generik untuk mengakses perangkat, serta
mengatur tampilan user interface dan sumber daya aplikasi. Bagian terpenting
dalam kerangka aplikasi android adalah sebagai berikut [Hello Android 2nd
Edition]:
§ Activity Manager, berfungsi untuk
mengontrol siklus hidup aplikasi dan menjaga keadaan ”Backstack“ untuk navigasi
penggunaan.
§ Content Providers, berfungsi untuk
merangkum data yang memungkinkan digunakan oleh aplikasi lainnya, seperti
daftar nama.
§ Resuource Manager, untuk mengatur
sumber daya yang ada dalam program. Serta menyediakan akses sumber daya diluar
kode program, seperti karakter, grafik, dan file layout.
§ Location Manager, berfungsi untuk
memberikan informasi detail mengenai lokasi perangkat android berada.
§ Notification Manager, mencakup
berbagai macam peringatan seperti, pesan masuk, janji, dan lain sebagainya yang
akan ditampilkan pada status bar.
5. Application Layer
Puncak dari diagram arsitektur android adalah lapisan
aplikasi dan widget. Lapisan aplikasi merupakan lapisan yang paling tampak pada
pengguna ketika menjalankan program. Pengguna hanya akan melihat program ketika
digunakan tanpa mengetahui proses yang terjadi dibalik lapisan aplikasi.
Lapisan ini berjalan dalam Android runtime dengan menggunakan kelas dan service
yang tersedia pada framework aplikasi.
Lapisan aplikasi android sangat berbeda dibandingkan dengan
sistem operasi lainnya. Pada android semua aplikasi, baik aplikasi inti
(native) maupun aplikasi pihak ketiga berjalan diatas lapisan aplikasi dengan
menggunakan pustaka API (Application Programming Interface) yang sama.
Komponen Aplikasi
Fitur penting android adalah bahwa satu aplikasi dapat
menggunakan elemen dari aplikasi lain (untuk aplikasi yang memungkinkan).
Sebagai contoh, sebuah aplikasi memerlukan fitur scroller dan aplikasi lain
telah mengembangkan fitur scroller yang baik dan memungkinkan aplikasi lain
menggunakannya. Maka pengembang tidak perlu lagi mengembangkan hal serupa untuk
aplikasinya, cukup menggunakan scroller yang telah ada [developer.android.com].
Agar fitur tersebut dapat bekerja, sistem harus dapat
menjalankan aplikasi ketika setiap bagian aplikasi itu dibutuhkan, dan
pemanggilan objek java untuk bagian itu. Oleh karenanya android berbeda dari
sistem-sistem lain, Android tidak memiliki satu tampilan utama program seperti fungsi
main() pada aplikasi lain. Sebaliknya, aplikasi memiliki komponen penting yang
memungkinkan sistem untuk memanggil dan menjalankan ketika dibutuhkan.
1.
Activities
Activity merupakan bagian yang paling penting dalam sebuah
aplikasi, karena Activity menyajikan tampilan visual program yang sedang
digunakan oleh pengguna. Setiap Activity dideklarasikan dalam sebuah kelas yang
bertugas untuk menampilkan antarmuka pengguna yang terdiri dari Views dan
respon terhadap Event. Setiap aplikasi memiliki sebuah activity atau lebih.
Biasanya pasti akan ada activity yang pertama kali tampil ketika aplikasi
dijalankan.
Perpindahan antara activity dengan activity lainnya diatur
melalui sistem, dengan memanfaatkan activity stack. Keadaan suatu activity
ditentukan oleh posisinya dalam tumpukan acitivity, LIFO (Last In First Out)
dari semua aplikasi yang sedang berjalan. Bila suatu activity baru dimulai,
activity yang sebelumnya digunakan maka akan dipindahkan ketumpukan paling
atas. Jika pengguna ingin menggunakan activity sebelumnya, cukup menekan tombol
Back, atau menutup activity yang sedang digunakan, maka activity yang berada
diatas akan aktif kembali. Memory Manager android menggunakan tumpukkan ini
untuk menentukan prioritas aplikasi berdasarkan activity, memutuskan untuk
mengakhiri suatu aplikasi dan mengambil sumber daya dari aplikasi tersebut.
Ketika activity diambil dan disimpan dalam tumpukkan activity
terdapat 4 kemungkinan kondisi transisi yang akan terjadi [Reto Meier,
Profesional Android Application Development, Wiley Publishing, Canada, 2009]:
1) Active, setiap activity yang berada ditumpukan paling
atas, maka dia akan terlihat, terfokus, dan menerima masukkan dari pengguna.
Android akan berusaha untuk membuat activity aplikasi ini untuk untuk tetap hidup
dengan segala cara, bahkan akan menghentikan activity yang berada dibawah
tumpukkannya jika diperlukan. Ketika activity sedang aktif, maka yang lainnya
akan dihentikan sementara.
2) Paused, dalam beberapa kasus activity akan terlihat tapi
tidak terfokus pada kondisi inilah disebut paused. Keadaan ini terjadi jika
activity transparan dan tidak fullscreen pada layar. Ketika activity dalam
keadaan paused, dia terlihat active namun tidak dapat menerima masukkan dari
pengguna. Dalam kasus ekstrim, android akan menghentikan activity dalam keadaan
paused ini, untuk menunjang sumber daya bagi activity yang sedang aktif.
3) Stopped, ketika sebuah activity tidak terlihat, maka
itulah yang disebut stopped. Activity akan tetap berada dalam memori dengan
semua keadaan dan informasi yang ada. Namun akan menjadi kandidat utama untuk
dieksekusi oleh sistem ketika membutuhkan sumberdaya lebih. Oleh karenanya
ketika suatu activity dalam kondisi stopped maka perlu disimpan data dan
kondisi antarmuka saat itu. Karena ketika activity telah keluar atau ditutup,
maka dia akan menjadi inactive.
4) Inactive, kondisi ketika activity telah dihentikan dan
sebelum dijalankan. Inactive activity telah ditiadakan dari tumpukan activity
sehingga perlu restart ulang agar dapat tampil dan digunakan kembali.
Kondisi
transisi ini sepenuhnya ditangani oleh manajer memori android. Android akan
memulai menutup aplikasi yang mengandung activity inactive, kemudian stopped
activity, dan dalam kasus luar biasa paused activity juga akan di tutup.
2. Services
Suatu service tidak memiliki tampilan antarmuka, melainkan
berjalan di background untuk waktu yang tidak terbatas. Komponen service
diproses tidak terlihat, memperbarui sumber data dan menampilkan notifikasi.
Service digunakan untuk melakukan pengolahan data yang perlu terus diproses,
bahkan ketika Activity tidak aktif atau tidak tampak.
3. Intents
Intens merupakan sebuah mekanisme untuk menggambarkan
tindakan tertentu, seperti memilih foto, menampilkan halaman web, dan lain
sebagainya. Intents tidak selalu dimulai dengan menjalankan aplikasi, namun
juga digunakan oleh sistem untuk memberitahukan ke aplikasi bila terjadi suatu
hal, misal pesan masuk. Intents dapat eksplisit atau implisit, contohnya jika
suatu aplikasi ingin menampilkan URL, sistem akan menentukan komponen apa yang
dibutuhkan oleh Intents tersebut.
4. Broadcast Receivers
Broadcast Receivers merupakan komponen yang sebenarnya tidak
melakukan apa-apa kecuali menerima dan bereaksi menyampaikan pemberitahuan.
Sebagian besar Broadcast berasal dari sistem misalnya, Batre sudah hampir
habis, informasi zona waktu telah berubah, atau pengguna telah merubah bahasa
default pada perangkat. Sama halnya dengan service, Broadcast Receivers tidak
menampilkan antarmuka pengguna. Namun, Broadcast Receivers dapat menggunakan
Notification Manager untuk memberitahukan sesuatu kepada pengguna.
5. Content Providers
Content Providers digunakan untuk mengelola dan berbagi
database. Data dapat disimpan dalam file sistem, dalam database SQLite, atau
dengan cara lain yang pada prinsipnya sama. Dengan adanya Content Provider
memungkinkan antar aplikasi untuk saling berbagi data. Komponen ini sangat
berguna ketika sebuah aplikasi membutuhkan data dari aplikasi lain, sehingga
mudah dalam penerapannya.
Tipe Aplikasi Android
Terdapat
tiga kategori aplikasi pada android [Reto Meier, Profesional Android Application
Development, Wiley Publishing, Canada, 2009] :
1. Foreground Activity
Aplikasi yang hanya dapat dijalankan jika tampil pada layar
dan tetap efektif walaupun tidak terlihat. Aplikasi dengan tipe ini pasti
mempertimbangkan siklus hidup activity, sehingga perpindahan antar activity
dapat berlangsung dengan lancar.
2. Background Service
Aplikasi yang memiliki interaksi terbatas dengan user, selain
dari pengaturan konfigurasi, semua dari prosesnya tidak tidak tampak pada
layar. Contohnya aplikasi penyaringan panggilan atau sms auto respon.
3. Intermittent Activity
Aplikasi yang masih membutuhkan beberapa masukkan dari
pengguna, namun sebagian sangat efektif jika dijalankan di background dan jika
diperlukan akan memberi tahu pengguna tentang kondisi tertentu. Contohnya
pemutar musik.
Untuk aplikasi yang kompleks akan sulit untuk
menentukan kategori aplikasi tersebut apalagi aplikasi memiliki ciri-ciri dari
semua kategori. Oleh karenanya perlu pertimbangan bagaimana aplikasi tersebut
digunakan dan menentukan kategori aplikasi yang sesuai.
sumber : http://maxiandroid.blogspot.com/2012/03/cara-kerja-dan-arsitektur-android.html
http://educnology.web.id/open-source/arsitektur-sistem-operasi-android
Tidak ada komentar:
Posting Komentar