Mengenal dalvik
Pengertian dalvik
Dalvik merupakan virtual
machine yang menjadi layer/lapisan antara aplikasi dan sistem operasi.
Dimana di dalam file aplikasi yang memiliki ekstensi .apk terdapat
beberapa tipe file, diantaranya resource, assets, xml dan dex. Nah file
dex ini lah yang asalnya diprogram dengan menggunakan bahasa Java. File
dex ini akan dijalankan oleh Dalvik Virtual Machine untuk melakukan
berbagai macam aktifitas, mulai dari menampilkan User Interface, akses
Internet, menjalankan audio, memanggil kamera, dan sebagainya.
Semua akses yang
dilakukan oleh aplikasi tersebut harus melalui Dalvik Virtual Machine
terlebih dahulu. Jadi boleh kita katakan kalau file dengan ekstensi .dex
tersebut adalah file executable untuk Android, yang bila kita berbicara
tentang sistem operasi windows, maka file .dex sama seperti file .exe
pada windows. Dapat ditarik kesimpulan bahwa:
1.Dalvik VM inilah yang menjadi tempat berjalannya aplikasi-aplikasi dari Android.
2.Core Libraries yang berada pada sistem Android sebagian besar merupakan core libraries yang terdapat pada bahasa pemrograman java.
3.Setiap aplikasi yang kita jalankan di android, memiliki proses tersendiri dan memiliki instance masing-masing pada Dalvik Virtual Machine.
4.Dengan Dalvik inilah, proses jalannya aplikasi menjadi efisien. Dalvik mengeksekusi file berekstensi dex yang disimpan dan dioptimalkan sehingga penggunaan memory di Android OS menjadi minimal.
5.Dalvik VM bergantung pada kernel Linux (android memakai Linux kernel versi 2.6 untuk core sistemnya yang terdiri dari security, memory management, process management, network stack dan driver model) untuk fungsionalitas dasar seperti threading dan low-level memory management
Dalvik Cache
File .apk sebenarnya
merupakan file arsip yang terkompresi mirip dengan format zip namun
berbeda ekstensi dan cara kerja. Seperti Kita ketahui, untuk mengakses
kontent/file yang berada pada file zip, Kita harus melakukan unzip
terlebih dahulu, Hal ini akan menyebabkan waktu untuk mengakses data di
dalamnya menjadi lama, karena itu Dalvik memiliki fasilitas untuk
melakukan cache, dimana file .dex yang berada dalam .apk tersebut akan
di-unzip dan disimpan dalam direktori dalvik-cache yang biasanya
berlokasi di "/data/dalvik-cache".
Proses unzip file .dex
tersebut akan dilakukan ketika user melakukan instalasi aplikasi yang
dimaksud. Sehingga ketika user membuka aplikasi tersebut, sistem tidak
akan mengakses data .dex pada file .apk, tapi akan langsung mengaksesnya
di dalam dalvik-cache.
Filesystem
System android bersandar
pada kernel Linux, sehingga struktur file yang digunakan sama seperti
pada linux, tapi mungkin para pengguna Android tidak menyadarinya.
Seperti halnya linux, root directory berada pada "/", semua
filesystem/partisi di mount pada sebuah direktori. Berikut adalah
beberapa filesystem yang umumnya dimiliki dalam sistem operasi ini:
- Root
- System
- Data
- Boot
- SDCard
- SD-Ext
- Dev, Tmp, Proc
- etc
Root
Device: Linux Kernel, RAM
Layaknya linux, semua filesystem akan berada di dalam Root. Tidak
seperti Windows yang memilah-milahnya ke dalam drive. Dalam linux semua
device dapat diakses melalui filesystem dan menggunakan sistem stream,
baik itu penyimpanan, display, ataupun input dan output device.
System
Mount Point: /system
Device: Internal Memory
Partisi ini berisi file-file system, dimana file-file sistem operasi
Android dan aplikasi-aplikasi bawaannya disimpan. Partisi system ini
selalu disimpan dalam Internal Storage ( storage pada ponsel ), dan
tidak dapat diubah isinya kecuali telah dilakukan rooting. Berikut
adalah beberapa file-file yang berada pada partisi ini:
/system/app - Dalam direktori ini terdapat file-file .apk untuk aplikasi system, seperti Phone Dialer, Launcher, IME/Keyboard, Mail, SMS, Settings, etc.
/system/frameworks - Dalam direktori ini terdapat file-file frameworks dengan ekstensi .jar yang menyimpan fungsi-fungsi java yang diakses oleh aplikasi android, baik itu aplikasi system atau aplikasi yang diinstall oleh user.
/system/libs - Direktori ini berisi library-library dan library kernel yang ditulis dengan menggunakan bahasa C (Native), dan memiliki ekstensi .so. Android juga mendukung pembangunan aplikasi dengan menggunakan bahasa C (Native) dengan menggunakan Android NDK (Native Development Kit), dan mendukung library-library C seperti layaknya linux. hanya saja dukungannya lebih minimalis, dimana libc yang digunakan adalah libc bionic yang telah dimodifikasi agar lebih minimalis. Tapi sebenarnya kita masih bisa memanfaatkan Glibc untuk berjalan pada Linux ini, hanya harus dilakukan compile sendiri.
/system/bin, /system/xbin - Merupakan direktori yang berisi file-file executable berbasis linux, bila .dex akan berjalan pada dalvik-cache, file-file di dalam direktori ini akan berjalan langsung di atas kernel linux. Linux pada Android mendukung perintah-perintah dasar yang biasa digunakan pada shell di linux, seperti ls, mv, cp, cat, df, dsb. Perbedaanya, bila di linux semua perintah tersebut merupakan satu executable tersendiri, sedangkan pada linux semua perintah tersebut dikerjakan oleh satu executable yang bernama busybox.
/system/etc - Direktori ini berisi file-file konfigurasi system dan konfigurasi driver, mulai dari setting gps, wifi networking, database apn, sampai pengaturan volume untuk audio.
/system/customize, /system/fonts, /system/media, /system/usr - Semua direktori ini berisi file-file untuk kustomisasi sistem, seperti gambar animasi boot, huruf untuk tampilan, wallpaper, ringtone dan audio bawaan, juga beberapa layout keyboard dan lokalisasi bahasa.
Data
Mount Point: /data
Device: Internal Memory
Berbeda dengan system. Partisi data ini merupakan partisi untuk
menyimpan data-data yang selalu berubah-ubah. Semua aplikasi yang
diinstal oleh user akan disimpan pada partisi ini. Ketika pengguna
melakukan wipe data ( reset to factory ), partisi ini akan bersihkan (di
format), sehingga data-data aplikasi yang diinstall, kontak, data sms,
dan sebagainya akan hilang. Tapi sistem masih tetap bisa berjalan
dikarenakan wipe data tidak akan menghapus partisi system.
Berikut adalah beberapa direktori yang berada pada partisi data ini:
/data/app - Berisi file-file .apk dari aplikasi-aplikasi yang diinstall, baik itu dari market atau dari aplikasi yang diinstall secara manual.
/data/data - Berisi file-file data aplikasi, baik itu aplikasi system ataupun yang diinstall oleh user. Isi direktori ini memuat berbagai macam data yang disimpan oleh aplikasi, seperti save game, database (sqlite), juga file-file assets dan resource dari aplikasi tersebut. Direktori inilah yang biasanya membesar dan bila Kita menginstall banyak aplikasi, maka Low Disk Space biasanya muncul dikarenakan isi direktori ini sudah terlalu besar.
/data/dalvik-cache - Merupakan tempat penyimpanan file-file .dex untuk dijalankan secara langsung oleh dalvik virtual machine.
Boot
Mount Point: /boot
Device: Internal Memory
Partisi ini memuat Kernel Linux dan merupakan partisi awal yang akan
menerima sinyal booting dari device. Kernel inilah yang secara langsung
mengakses hardware pada device kita.
SDCard
Mount Point: /sdcard, /mnt/sdcard
Device: MMC / External Storage
Layout: FAT32
Berbeda dengan partisi-partisi lainnya. Partisi ini adalah area bebas,
dimana kita dapat melakukan perubahan sesuai dengan keiinginan. Kita
dapat menyimpan lagu, foto, dan video di dalamnya, kita juga dapat
menggunakannya untuk penyimpanan backup data, dan dapat juga digunakan
sebagai USB drive.
SD-EXT
Mount Point: /sd-ext
Device: MMC / External Storage
Layout: EXT2, EXT3, EXT4
Merupakan modifikasi yang bisanya dilakukan pada Custom ROM, dimana bila
Internal Memory tidak mencukupi untuk memuat data-data penting sistem,
maka dilakukanlah pem-partisi-an pada memory card kita. Dimana memory
card kita akan dibagi menjadi 2 partisi, partisi pertama berformat FAT32
yang akan dijadikan sebagai /sdcard, dan partisi kedua berformat
EXT(x).
Inilah hebatnya Linux dan Android, dimana device yang memiliki umur yang
tua yang tidak dapat lagi memuat sistem Android yang semakin hari
semakin berukuran besar dan tidak dapat dimuat di dalam Internal Memory
yang memiliki keterbatasan ukuran, dapat tetap mengikuti perkembangan
zaman.
SD-EXT ini memanfaatkan fasilitas Symlink yang didukung oleh Linux, dimana kita dapat melakukan symbolic link ( melakukan pemetaan ) suatu file atau direktori dari satu partisi menuju partisi lainnya. Contohnya, kita memiliki direktori /sd-ext/app_s pada SD-EXT, dan lazimnya semua aplikasi sistem disimpan dalam /system/app, maka kita dapat melakukan symlink dari /sd-ext/app_s menuju /system/app,
sehingga ketika sistem mengakses file/direktori dari /system/app sistem
akan membaca file/direktori itu dari /sd-ext/app_s. Beberapa
pengembangan SD-EXT ini telah dilakukan oleh beberapa developer dan
custom-ROM chef, seperti app2sd, data2sd. Dimana mod-mod tersebut
memiliki fungsinya masing-masing yang sebenarnya memiliki tujuan yang
sama, yaitu memanipulasi filesystem yang terbatas agar dapat
memanfaatkan penyimpanan data system di dalam External Memory.
Dev, Tmp, Proc
Mount Point: /dev, /tmp, /proc
Device: Linux Kernel, RAM
Direktori-direktori tersebut bukanlah merupakan Storage, tapi merupakan virtual. dimana /dev merupakan direktori yang memuat semua stream hardware, /tmp merupakan penyimpanan temporary pada ram, dan /proc merupakan direktori untuk menyimpan informasi proses yang berjalan.
Seperti halnya linux pada PC, semua akses aplikasi menuju hardware dapat
dilakukan dengan mengakses stream pada /dev, seperti halnya kita
mengakses file biasa. Kita dapat mengakses framebuffer display secara
langsung pada file /dev/graphics/fb0, atau mengakses input device
secara langsung pada /dev/input. Sistem Android mengakses hardware
melalui /dev ini, dimana /dev ini lah yang diatur oleh Kernel Linux.
Kita juga dapat mengetahui ID suatu proses dan proses apa saja yang
sedang berjalan pada direktori /proc. dan dapat juga menyimpan file
temporary pada direktori /tmp untuk dilakukan proses selanjutnya.
0 komentar:
Posting Komentar