Dalvikvm adalah Virual Mesin yang menjalankan program java di platform android, melalui kompilasi ulang dari file *.class yg di targetkan untuk Jvm[TM] .
Cara kerjanya adalah:
Ibaratkan kita mempunyai file Main.java
Kompil Main.java source code dengan tools javac,ecj atau yang lainnya,
Cara pertama menghasilkan file *.class
Cara pertama Sudah bisa dijalankan oleh Jvm[TM] jika tidak terdapat error pada file Main.java .
Agar program dapat berjalan di android yang menggunakan Dalvikvm[TM], kita harus mengkompile Main.class ke dalvik executable (dex) file menggunakan dx tools.
Jika tidak terdapat error program sudah dapat berjalan di dakvikvm.
Gambaran:
Main.java
|----------------------- javac / ecj --(compile)
Main.class ---- Untuk JVM
|----------------------- dx --(compile)
Main.dex ------ Untuk Dalvikvm
Bagian ini terhubung dengan bagian selanjutnya agar mudah di pahami tolong perhatikan dengan seksama.
Tools yang di perlukan untuk kompilasi java di termux.
Install dengan mengetik:
apt install -y ecj dx
Praktek:
mkdir -p $HOME/workspace/java/mytools
cd !$
pwd
mkdir -p src/main/java/my/tools
perhatikan directory diatas.
src/main/java/my/tools
agar selanjutnya mudah di pahami kita bagi menjadi 2 bagian src/main/java/ dan my/tools/.
src/main/java adalah standard sourcepath.
my/tools adalah directory untuk packet/package java kita.
Karna kita bekerja di directory internal milik termux, kita tidak bisa menggunakan aplikasi external seperti Quoda, Anacode, AIDE, Droidedit atau yang lainnya.
Pengguna vim ketik:
vim src/main/java/my/tools/Main.java
Pengguna nano ketik:
nano src/main/java/my/tools/Main.java
Pengguna editor lainnya silahkan menyesuaikan dan targetkan file yang akan di edit ke src/main/java/my/tools/Main.java.
// ini komentar
/** file location: /data/data/com.termux/files/home/workspace/java/mytools/src/main/java/my/tools/Main.java */
package my.tools; // my/tools (lihat section ke 4 di atas)
/**
* Ini juga komentar.
* Text di dalam block komentar akan di buang saat kompilasi .
*/
public class Main {
public static void main(String... args) {
System.out.println("Ini program pertama saya");
}
}
Lalu save.
ecj -d ./classes -verbose -classpath $PREFIX/share/java/android.jar -sourcepath ./src/main/java/ $(find ./src/main/java -type f -name \*.java)
Keterangan:
option -d directory untuk hasil kompilasi, kita targetkan ke ./classes.
option -verbose menampilkan proses kompilasi.
option -classpath menambahkan library yang di butuhkan (di C programming di sebut include dir).
option -sourcepath memberi tahu kompiler bahwa semua file java ada di ./src/main/java directory.
Pada bagian
$(find ./src/main/java -type f -name \*.java)
adalah mencari dan menapilkan semua file yang ber-extension .java di directory ./src/main/java yg akan di kompil.
Jika tidak ada error dari kompilasi di atas seharusnya menghasilkan file Main.class di dalam directory ./classes. untuk meng-check kita bisa jalankan perintah berikut.
ls ./classes
Chapter ini baru membuat java berjalan di JVM[TM] belum bisa berjalan di Dalvikvm (android).
Agar bisa berjalan di dalvikvm kita harus translate java bytecode (class) ke dalvik executable (dex) dengan cara di bawah.
Cara ini berhubungan dengan step-step di atas. Ingat. kita sudah meng-install dx di atas. Dan sudah meng-kompilasi java menjadi java bytecode dengan ecj. Jika lupa mohon baca kembali. Kali ini kita akan membuat file dex atau men-translate java bytecode ke dalvik bytecode agar di mengerti oleh Dalvikvm. Ibarat men-translate bahasa Jawa ke bahasa Sunda agar orang sunda mengerti. Sebelumnya kita buat dulu folder ./bin:
mkdir ./bin
Setelah itu jalankan perintah:
dx --dex --verbose --output ./bin/Main.dex
Jika berhasil seharusnya menghasilkan file Main.dex di directory ./bin. Check:
ls ./bin
Jika ada artinya translate berhasil.
Ingat file dex berada di ./bin/Main.dex. Ingat java code pada bagian
package my.tools;
public class Main ....
di atas.
Ini akan berkaitan. Untuk menjalankan progran yang telah kita buat ketik command:
dalvikvm -cp ./bin/Main.dex my.tools.Main
Jika mengikuti panduan dengan benar seharusnya menampilkan output.
Ini program pertama saya
Terlihat sulit?
Tidak ada yang sulit jika kita mau belajar.
Terlalu bertele tele untuk membuat program yang sederhana?
Ya.. java memang di design untuk programmer yg bekerja Tim lebih dari 1 orang.
Karna java adalah OOP (object oriented programming).
Apa ke unggulannya?
Java di design extensible kita bisa meng-upgrade aplikasi tanpa merubah kode sebelumnya .
Dengan java kita bisa membuat web app, desktop app, command line app, Android app, dan masih banyak lagi.
java memikiki library yang banyak builtin atau pun library yang bertebarab di internet.
Java meng-klaim sama cepat dengan C.
Java meng-klaim lebih secure dari C.