RSS

Mari Mengenali Dalvik!

03 Nov

Android sering dikaitkan dengan platform yang kurang laju, sentiasa mengalami lengah masa, dan kerap hang. Tibalah masanya untuk pengguna mengetahui apakah faktor yang menyebabkan prestasi Android tidak secekap iOS atau Windows Phone. Android merupakan sistem operasi untuk peranti skrin sentuh, dan dibina berdasarkan kernel Linux. Android diasaskan pada Oktober 2003 oleh Andy Rubin, Rich Miner, Nick Sears, dan Chris White dengan niat asalnya untuk membina sebuah sistem operasi bagi kamera digital. Setelah menyedari pasaran untuk kamera digital tidak begitu luas, pasukan pembangunnya memutuskan supaya Android ini dibina untuk telefon bimbit, sebagai saingan kepada Symbian dan Windows Mobile (Ketika ini iPhone masih lagi belum diumumkan). Projek ini kemudiannya mendapat sokongan kewangan dari Google sehinggalah Google memutuskan untuk membelinya pada 2005, dan pada tahun 2007 Android diumumkan. Telefon pertama yang dikuasakan oleh Android berada di pasaran pada Oktober 2008, kira-kira 5 tahun selepas projek ini diasaskan. Matlamat utama Android ialah untuk membina satu sistem operasi yang terbuka untuk telefon pintar, dengan memberikan akses terbuka kepada mana-mana syarikat dan pembangun untuk membangunkannya pada device mereka sendiri seperti HTC, Samsung, Sony dan sebagainya. Falsafah disebalik pembinaan Android ialah ia memfokuskan peranti yang mempunyai kekangan spesifikasi: pemprosesan ARM, RAM 128MB, storan Mini atau MicroSD, kamera CMOS 2MP, Bluetooth versi 1.2 atau 2.0 serta antaramuka USB-mini.

Kebanyakan peranti yang berada di pasaran ketika ini mempunyai spesifikasi yang jauh lebih berkuasa, tetapi dengan menyatakan spesifikasi yang disebutkan tadi ia menunjukkan bahawa Android menyasarkan lingkungan peranti yang pelbagai, device yang berkuasa rendah sehinggalah peranti yang berkuasa tinggi. Kemudian, terdapat satu lagi yang menjadi perhatian pembangun Android iaitu soal keselamatan. Memandangkan Android ini dibina dengan falsafah sumber terbuka, maka pembangun-pembangun aplikasi bebas melakukan apa sahaja dan mencipta ribuan aplikasi untuk pengguna memuat-turun dan menjalankannya pada peranti masing-masing. Untuk memastikan keselamatan setiap applikasi serta teras Android itu sendiri (iaitu kernel Linux), semua aplikasi mestilah diasingkan (sandbox) daripada aplikasi yang lain dan tidak boleh mengganggu urusan kernel. Dalam bahasa yang mudah, Android itu mestilah dapat menyokong peranti yang mempunyai lingkungan spesifikasi yang pelbagai, serta mempunyai ciri-ciri keselamatan. Jadi, bagaimanakah Google menyelesaikan masalah ini ? Pengguna peranti Android yang pernah main tukar-tukar ROM semestinya pernah berjumpa dengan Dalvik. Setelah anda kenal apa dia Dalvik dan fungsinya, anda akan faham kenapa prestasi Android kurang cekap sedikit berbanding dengan platform seperti iOS atau Windows Phone. Sebagai permulaan kepada penjelasan mengenai Dalvik, perkara pertama yang anda boleh jangkakan ketika ini ialah hadirnya Dalvik untuk menyelesaikan masalah yang dinyatakan sebentar tadi. Di jelaskan di sini bahawa Dalvik merupakan proses virtual machine.

Fungsinya ialah untuk mengasingkan aplikasi dengan memperuntukkan setiap satu aplikasi yang dijalankan pada Android satu ‘bekas’. Implementasi virtual machine ini menyelesaikan satu masalah iaitu soal keselamatan. Memandangkan setiap aplikasi diberikan ‘bekas’ miliknya sendiri (Dipanggil sebagai instance) untuk ia berjalan, maka aplikasi tersebut tidak akan mengganggu proses aplikasi lain, pada masa yang sama ia tidak akan mengganggu urusan kernel. Jika dikaji dengan lebih mendalam lagi, sekuriti dalam sistem operasi Android amat ampuh. Kernel Linux itu sendiri sudah mempunyai model sekuriti yang tinggi, antaranya melibatkan users dan permissions. Sebagai contoh, fail yang dimiliki oleh program Apache HTTPd (Apache di sini ialah user) hanya boleh dibaca dan ditulis oleh Apache sahaja. Pada sistem operasi Android, secara default, setiap aplikasi diperuntukkan satu user. Apabila aplikasi itu dijalankan, ia hanya dapat mengakses fail miliknya sahaja dan tidak boleh mengakses fail milik aplikasi lain. Google memilih Java untuk bahasa pengaturcaraan kerana umum mengetahui Java merupakan bahasa yang elegan; “write once, run everywhere”. Google memilih untuk tidak menggunakan JME dan JVM, tetapi beralih kepada teknologi lain iaitu Dalvik. Dalvik menggunakan piawaian yang berlainan dengan apa yang biasa digunakan pada JVM. Dalvik dibina supaya boleh mengendalikan banyak instance pada satu-satu masa. Dalvik menggunakan struktur register-based, berlainan dengan kelaziman JVM yang menggunakan stack-based.

Register-based ini digunakan oleh Dalvik untuk menjimatkan penggunaan memori (RAM). Dalam aspek yang lain pula, Java menjalankan fail .jar, manakala Dalvik menjalankan fail .dex. Kedua-duanya lebih kurang sama (ditulis dalam bahasa Java) namun yang membezakan ialah fail .dex telah dioptimasikan untuk mengurangkan penggunaan RAM. Jadi, Dalvik ini menggunakan struktur register-based dan menjalankan fail .dex kerana nak menjimatkan penggunaan RAM. Untuk menjamin prestasi Dalvik, kedua-dua modifikasi ini adalah perlu. Sebab itu Google memilih untuk menggunakan Dalvik berbanding JVM. Pengkhususan kerja bagi Dalvik ialah sektor aplikasi. Dalvik tidak boleh mengawal hardware seperti kamera, pemacu Bluetooth, pemacu WiFi dan lain-lain. Dalvik hanya boleh menghantar isyarat kepada kernel, kemudian kernel yang akan melaksanakan arahan tersebut. Contohnya seperti Instagram nak pakai kamera. Jadi, Instagram beritahu kepada Dalvik untuk meminta Dalvik terjemahkan bahasa Java kepada binary. Kemudian Dalvik beritahu kernel yang Instagram ingin menggunakan kamera. Aplikasi yang ditulis untuk Android (sebagai contoh, Twitter) di-compile dalam bentuk fail .apk yang mengandungi fail .dex di dalamnya. Aplikasi Android ditulis dalam bahasa Java, dan ia perlu melalui Dalvik terlebih dahulu sebelum diterjemahkan ke dalam binary. Dalvik kemudiannya akan berkomunikasi dengan Kernel untuk menggunakan hardware tertentu. Setelah hardware faham apa yang aplikasi tersebut mahukan, ia akan menghantar isyarat kepada hardware yang tertentu. Dalvik bekerja dengan bantuan satu lagi entiti yang dinamakan sebagai Zygote.

Sebagaimana kelaziman setiap sistem operasi Linux, terdapat satu entiti yang dinamakan sebagai init. Ketika peranti Android dihidupkan kernel memanggil init, kemudian init akan menghidupkan processes atau unit seperti screen, speaker dan mana-mana unit yang berkaitan. Pada ketika ini, init juga menghidupkan Zygote. Setelah Zygote aktif, ia akan menghidupkan Dalvik dan memuatkan Java read-only core library classes. Library classes yang dihidupkan ini merupakan sumber yang dikongsi (shared resources) oleh semua aplikasi Android. Pada masa yang sama, Zygote menghidupkan satu instance kosong. Apabila proses memuatkan keseluruhan sistem operasi selesai, Zygote akan menunggu sebarang permintaan daripada aplikasi. Apabila satu aplikasi Android meminta satu unit instance, Zygote membuat penklonan daripada instance yang kosong tadi bagi mencipta satu instance untuk aplikasi tersebut. Pernah main Oracle VM Virtualbox takn? Untuk menghidupkan sistem operasi pada Virtualbox, ada 2 cara boleh digunakan iaitu menghidupkan sistem operasi menggunakan disk image (fail .iso), ataupun menggunakan virtual machine disk (fail .vmdk). Kalau pakai image file, samalah seperti cold boot sistem operasi tersebut, agak lambat. Kalau pakai fail vm disk, sistem operasi terus masuk ke desktop ataupun last active state. Zygote ini menggunakan implementasi vm disk untuk memastikan sistem operasi lebih responsif untuk mengaktifkan aplikasi. Android cemerlang pada bidang yang tidak mampu dikejar oleh iOS, iaitu keupayaan untuk menyesuaikan dirinya pada pelbagai device.

Android boleh dipasang pada telefon pintar, laptop (projek Android x86), TV dan tablet. Android boleh dimodifikasi oleh mana-mana pihak tanpa sebarang masalah. Dengan kehadiran Android, lanskap telefon pintar berkembang berkali-kali ganda dengan ketersediaan peranti dalam pelbagai kategori; entry-level (Xperia x10 Mini, Galaxy Y), mid-end (Galaxy W), dan high-end (HTC One). Boleh dikatakan semua orang boleh merasai apa itu telefon pintar walaupun duit tak sampai RM2k. Semua orang boleh pakai, boleh main tukar-tukar ROM. Bukan setakat boleh main tukar-tukar ROM, nak buat ROM sendiri pun boleh. Android melakukan pengorbanan dari segi prestasi untuk membolehkan semua orang merasai apa itu smartphone. Ini merupakan satu niat yang sangat murni. Tidak perlulah berkira sangat kalau telefon pintar Android anda kurang responsif, sekurang-kurangnya ramai orang boleh pakai telefon yang canggih. Untuk pengetahuan tambahan anda, kebanyakan smartpone Android agak kurang responsif dari segi prestasi adalah disebabkan bloatwares yang sudah dipramuatkan (preinstalled apps). Sebagai contoh pada telefon keluaran Samsung, sudah ada beberapa aplikasi dipasang oleh pengilang seperti Samsung Apps, ChatOn dan lain-lain (anda boleh semak sendiri). Mengikut pengalaman sebahagian pengguna, selepas bertukar daripada menggunakan Stock ROM kepada CyanogenMod, prestasi telefon meningkat berkali ganda berbanding sebelumnya. Satu lagi contoh, bandingkan Nexus 4 dengan Galaxy S3, anda akan rasa perbezaannya; Nexus 4 yang tiada bloatwares itu lagi responsif.

 
Leave a comment

Posted by on November 3, 2013 in Info ICT

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s