IKVM.NET (Java On .NET)

Pernahkah anda membayangkan menggunakan JDBC(Java Database Connection) dalam sebuah aplikasi database .NET atau membuat program pada .NET dengan hanya berbekal bahasa java dan Java API. Jika ya berarti sekarang bayangan anda tersebut telah menjadi kenyataan dengan adanya Ikvm.net. Ikvm.net memiliki kemampuan menggabungkan library Java dengan library .NET untuk membuat sebuah aplikasi Java yang berjalan di atas CLR(virtual machine .NET) . Selain itu jika anda seorang yang fanatik java tetapi ingin membuat program .NET maka Ikvm.net lah solusinya.

Instalasi

Untuk menjalankan Ikvm.net anda memerlukan runtime .NET seperti Mono(http://www.mono-project.com) dan Portabel .NET untuk GNU/Linux atau Microsoft .NET Framework dan Mono untuk sistem operasi Windows. Jadi pastikan salah satu runtime .NET tersebut sudah terinstall di komputer anda sebelum mencoba menggunakan ikvm.net. Selain itu juga dibutuhkan kompiler dan runtime Java seperti Sun JDK(java.sun.com) atau jikes(http://oss.software.ibm.com/developerworks/opensource/jikes/). Saat tutorial ini ditulis versi java yang didukung oleh ikvm.net adalah java 1.4 ke bawah.

Binary ikvm.net beserta sourcenya dapat didownload pada website resmi ikvm.net, http://www.ikvm.net. Karena sifatnya yang free anda dapat mendownload, memodifikasi, atau mendistribusikan source dan binarynya secara gratis dan legal. Instalasi ikvm.net tidaklah sulit tinggal mengekstraknya pada salah satu direktori maka ikvm.net sudah bisa digunakan. Tetapi jika menggunakan sistem operasi GNU/Linux diperlukan beberapa konfigurasi tambahan. Buka sebuah editor teks, di linux bisa menggunakan Kwrite, Kedit,Gedit, atau yang tradisional seperti Vi dan Joe.

Buat tiga file di bawah ini

mono /mnt/win_d/Master/linuxmaster/ikvm.net/bin/ikvm.exe “$@”

simpan dengan nama “ikvm.net”.

mono /mnt/win_d/Master/linuxmaster/ikvm.net/bin/ikvmc.exe “$@”

simpan dengan nama “ikvm.netc”.

mono /mnt/win_d/Master/linuxmaster/ikvm.net/bin/ikvmstub.exe “$@”

simpan dengan nama “ikvm.netstub”.

Path /mnt/win_d/Master/linuxmaster dapat diganti dengan path tempat binary ikvm.net disimpan.

Pada contoh file di atas runtime .NET yang digunakan adalah Mono, anda dapat menggantinya dengan runtime .NET yang lainnya sesuai dengan yang terinstall pada komputer anda. Ketiga file tersebut sebaiknya disimpan di tempat binary ikvm.net berada, untuk contoh di atas maka simpanlah di “/mnt/win_d/Master/linuxmaster/ikvm/bin”.

Untuk mempermudah penggunaan ikvm.net di sistem operasi manapun saya menyarankan menambahkan path ke direktori ikvm/bin sehingga ikvm.net bisa digunakan di mana saja, untuk Linux edit file ~/.bash_profile(file .bash_profile terletak pada direktori paling atas seorang user, misalkan untuk user Dida maka file yang harus diedit adalah

/home/Dida/.bash_profile sedang untuk root pada /root/.bash_profile).

Contoh file .bash_profile sebelum diedit

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startup programs

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

JAVA_HOME=/usr/java/jdk1.5.0_03

PATH=/usr/java/jdk1.4.0_03/bin/:$PATH:$HOME/bin

export PKG_CONFIG_PATH

export LD_LIBRARY_PATH

export JAVA_HOME

export PATH

unset USERNAME

setelah diedit maka file harus menjadi seperti ini(asumsikan path binary ikvm.net ada pada

/mnt/win_d/Master/linuxmaster/ikvm/bin/)

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startup programs

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

JAVA_HOME=/usr/java/jdk1.5.0_03

PATH=/usr/java/jdk1.4.0_03/bin/:$PATH:$HOME/bin:/mnt/win_d/Master/linuxmaster/ikvm/bin

export PKG_CONFIG_PATH

export LD_LIBRARY_PATH

export JAVA_HOME

export PATH

unset USERNAME

sedang untuk Windows XP klik kanan MyComputer, pilih tab advanced, lalu klik tombol Environment Variables, pada user variables pilih “Path” lalu klik tombol edit yang ada di bawahnya tambahkan path dengan didahului tanda titik koma.

Setelah proses instalasi selesai anda dapat mengetes ikvm.net dengan membuka sebuah terminal lalu mengetikkan ikvm, jika yang muncul bukan pesan error maka anda sudah siap melangkah ke bagian selanjutnya dari tutorial ini.

IKVM, IKVMC, dan IKVMSTUB

Dalam paket ikvm.net terdapat tiga komponen program yang masing masing memiliki fungsi yang berbeda. Yang pertama adalah ikvm, ikvm berfungsi untuk menggantikan runtime java di atas CLR. Dengan komponen ini class class yang telah dibuat dengan java dapat langsung dijalankan di atas .NET. Jadi misal anda memiliki class “Hello.class”, jika pada lingkungan java class tersebut dijalankan dengan mengetikkan “java Hello”, maka dengan ikvm.net anda bisa mengetikkan “ikvm Hello”. Hal yang sama pun berlaku pada class class yang telah dipaketkan ke dalam file jar, untuk menjalankan paket “Hello.jar” di atas .NET cukup dengan mengetikkan “ikvm -jar Hello.jar”.

Komponen kedua adalah ikvmc, komponen ini berfungsi mengkonversi kode java menjadi kode .NET dalam bentuk *.dll atau *.exe. Terakhir adalah ikvmstub, ikvmstub digunakan untuk menghasilkan kelas java dari kelas kelas yang dibuat dengan kompiler .NET.

CONTOH PENGGUNAAN

Kode kode pada contoh ini dibuat pada sistem operasi GNU/Linux menggunakan Mono bundle 1.1.7, Sun Java versi 1.4, dan editor teks favorit saya Kwrite.

Ketikkan kode di bawah lalu simpan dengan nama DariJava.java

public class DariJava

{

public void halo(){

System.out.println(“Kelas dari Java”);

}

public static void main(String [] args){

DariJava dj = new DariJava();

dj.halo();

}

}

kompile file tersebut dengan perintah “javac DariJava.java” jika sukses maka akan menghasilkan file DariJava.class.

Buat class .NET dengan mengetikkan “ikvmc DariJava.class”,

jika perintah ini tidak bekerja tambahkan reference ke direktori bin ikvm.net, jika anda menginstallnya di /mnt/win_d/Master/linuxmaster/ikvm/ maka perintahnya menjadi “ikvmc -reference:/mnt/win_d/Master/linuxmaster/ikvm/bin/IKVM.GNU.Classpath.dll”. Perintah “ikvmc” ini juga bisa digunakan pada paket jar , misal anda memiliki paket jar DariJava.jar , maka perintahnya adalah

ikvmc DariJava.jar”.

Perintah perintah di atas akan otomatis menghasilkan library .NET dengan nama DariJava.exe, jika anda ingin menentukan sendiri output file yang akan dihasilkan tinggal menambahkan parameter “-out:<file name>” tanpa tanda petik. Class “DariJava” yang dibuat tadi sekarang telah dikonversi ke .NET, untuk mengujinya silahkan ketik “Mono DariJava.exe”.

Andapun bisa menggabungkan kelas hasil konversi dari ikvm.net dengan class native yang dibuat dengan bahasa .NET. Disini saya akan contohkan pembuatan program yang menggunakan library class DariJava dengan bahasa C#.

class JavaClassUsed{

static void Main(){

DariJava d = new DariJava();

d.halo();

}

Ketik kode di atas lalu simpan dengan nama JavaClassUsed.cs. Compile dengan mengetikkan mcs -reference:DariJava.exe JavaClassUsed.cs.(mcs adalah kompiler C# pada Mono). Ingat file DariJava.exe harus berada pada direktori yang sama dengan file JavaClassUsed.cs. Jika sukses maka akan muncul file JavaClassUsed.exe. Anda bisa menjalankan file tersebut dengan mengetikkan mono JavaClassUsed.exe.

Pada contoh yang kedua saya akan memperlihatkan bagaimana menggunakan .NET API pada lingkungan Java. Ada beberapa hal yang harus diperhatikan saat mengkonversi class dari .NET ke Java.

Yang pertama untuk menghindari konflik class, maka setiap namespace kelas .NET(dalam .NET package kelas dinamakan namespace) yang dikonversi ke Java menggunakan ikvmstub akan ditambahkan cli di depan namespace tersebut. Jadi jika pada .NET menggunakan using System.Windows.Forms;, maka setelah dikonversi ke Java untuk mengimport library tersebut digunakan import cli.System.Windows.Forms.*;. Yang kedua class class yang telah menggunakan library dari .NET hanya dapat dijalankan dengan ikvm tidak bisa menggunakan java. Yang ketiga karena java tidak mengenal properti maka properti pada .NET diakses dengan aturan berikut:

Properti C#

public tipedata namaproperti{

get { … }

set { … }

}

Setelah dikonversi ke Java menjadi

public tipedata get_namaproperti( ) { … }

public void set_namaproperti(tipedata nilai) { … }

untuk lebih jelasnya perhatikan perbandingan kode .NET(C#) dan Java dibawah

C#

Java

Ketik file di bawah lalu simpan dengan nama CSWindow.java

import cli.System.Windows.Forms.*;;

public class CSWindow extends Form{

public CSWindow(){

this.set_Visible(true);

this.set_Text(“Form .NET”);

}

public static void main(String [] args ){

Application.Run(new CSWindow());

}

}

Anda tidak dapat langsung mengkompile file di atas karena cli.System.Windows.Forms belum ada dalam classpath anda. Library library yang dibutuhkan harus dikonversi lebih dahulu. Selain System.Windows.Forms.dll dibutuhkan juga System.dll dan mscorlib.dll. Ketiga file di atas ada pada

direktori lib instalasi Mono anda. Jika anda menginstallnya di /usr/local maka library library tersebut ada pada /usr/local/lib/mono/1.0. Setelah ketiga file tersebut dikopikan maka file di atas sudah bisa dikompile. Ketikkan pada konsol ketiga perintah berikut

ikvmstub /usr/local/lib/mono/1.0/System.Windows.Forms.dll

ikvmstub /usr/local/lib/mono/1.0/System.dll

ikvmstub /usr/local/lib/mono/1.0/mscorlib.dll

Ketiga perintah di atas akan menghasilkan file System.Windows.Forms.jar, System.jar, dan mscorlib.jar pada direktori dimana perintah tersebut diketikkan.

Sekarang compile kode CSWindow.java dengan perintah javac -classpath System.Windows.Forms.jar:System.jar:mscorlib.jar CSWindow.java atau anda cukup mengkopikan file System.Windows.Forms.jar, System.jar, dan mscorlib.jar ke direktori instalasi java pada folder jre/lib/ext. Lalu kompile dengan perintah javac CSWindow.java.

Jika proses kompilasi di atas berhasil maka anda class CSWindow sudah bisa dijalankan dengan perintah ikvm -classpath .:System.Windows.Forms.jar:System.jar:mscorlib.jar CSWindow atau cukup dengan ikvm CSWindow jika sebelumnya library yang dibutuhkan sudah dikopi ke direktori jre/lib/ext.

Sekian dulu tutorial kali ini untuk penggunaan Ikvm.net yang lebih luas anda bisa browsing langsung ke http://www.ikvm.net atau tanyakan pada kakek serba tahu dunia maya “mbah Google”.

Catatan:

Interoperabilitas Java di atas .NET sebenarnya cukup terbatas, salah satu hal yang saat ini masih menjadi kelemahan ikvm.net adalah penggunaaan library swing dan awt, ikvm.net masih belum dapat mengkonversi kedua library ini sehingga bisa digabungakan dengan .NET.

1 Komentar »

  1. budi_mulyana said,

    tutorial Bagus…!
    tapi bagi aku
    pusing juga ya JAVA..
    aku mu belajar
    tapi step awal nya dari mana ya mas…
    pake slackware 12.2


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: