Senin, 16 November 2009

Pengantar Java Web Start

Alkisah ada seorang programmer di suatu perusahaan yang ditugaskan untuk membuat suatu aplikasi desktop berbasis multi user. Dengan gagah berani programmer itu menjalankan tugasnya dengan penuh tanggung jawab demi perusahaan yang telah membayarnya. Setelah selesai aplikasi tersebut ditunjukkan kepada manager bagian. "Hmmm bagus-bagus, OK sekarang silahkan diinstall pada seluruh karyawan.", "OK boss 36 computer client dalam waktu sehari semua beres". Akhirnya Programmer itu menjalankan tugasnya dan kembali untuk mengerjakan tugas berikutnya.

Beberapa minggu kemudian saat sedang sibuknya mengerjakan tugas dari client, programmer tersebut mendapat telefon dari bagian marketing. "Mas Programmer, ini tolong programnya ditambah ini, trus yang ini kalau bisa begini, begitu dan seterusnya...", "OK segera dikerjakan", mas programmer melakukan modifikasi sourcenya meng-compile, kemudian didistribusikan ke 36 client tersebut satu-persatu. Besoknya lagi ditelfon lagi, "Maaaas programmer ini tolong tambahkan modul buat menghitung bla bla bla...". Modifikasi lagi, compile, pergi ke ke 36 client satu-satu diinstall lagi. Mending kalo usernya cantik-cantik, lha ini galak-galak gini, "Gimana sich loe, gua lagi sibuk nich, installnya besok aja, lagian gua juga hari ini ga make!!", Programmer menjawab, "Lah mumpung saya disini mbak, besok saya harus balik lagi, jadi ini sekalian", "Halah itu mah derita loe.. kacian dech jadi programmer!!". Cape deeech.. inilah derita jadi satu-satunya programmer di perusahaan, "Ya Tuhan berilah kesabaran dan solusi", setelah berdoa dia
browsing2 di internet dan menemukan Java Web Start. "Ya Tuhan engkau benar-benar mengabulkan doa orang yang teraniaya.."

Kisah diatas hanya fiktif belaka, jika ada kemiripan ya itu urusan loe hehe.. Ga usah protes ga usah didebat, yang penting kita ambil hikmah dari cerita dia atas aja.

Dari cerita dia atas, kita butuh solusi gimana ya biar kita bisa menciptakan aplikasi yang agile tanpa harus bersusah payah bolak-balik ke client. Kalau berbasis web sih kita tinggal modifikasi di sisi server, client yang tinggal menggunakan web browser, ga masalah biarpun client ada di ujung dunia sekalipun. Pendekatan ini bisa diterapkan dengan Java Web Start.

Java Web Start atau dikenal juga dengan JavaWS adalah framework yang dikembangkan oleh Sun Microsystems untuk memulai aplikasi berbasis platform java langsung dari internet menggunakan web browser. (wikipedia.org)


Tetapi framework ini tidak harus melalui internet (yang mana kita harus menginstall web server), bisa juga melalui jaringan yang menggunkan file server, sehingga aplikasi bisa diletakkan di file server, dan client bisa mendownloadnya.

OK langsung saja kita terapkan ga perlu banyak teori. Misalkan kita sudah membuat aplikasi yang siap di distribusikan dengan nama file Application.jar dan beberapa library, misal saja mysql-connector-java-5.1.7-bin.jar, jika kita akan menggunakan web server, maka masukkan di folder misal "jnlp_app" dan letakkan folder tersebut ke default web server host, misal kalau apache di "var/www/" apabila di linux atau "di "$APACHE_BASE_DIR/htdocs/" kalau di windows. Buat file .jnlp dalam folder tersebut misal mulai.jnlp sehingga bisa kita panggil melalui browser dengan alamat
http://namasitus/jnlp_app/mulai.jnlp

atau bisa melalui console dengan perintah
javaws http://namasitus/jnlp_app/mulai.jnlp

Lah lalu apa isi dari file .jnlp tersebut. Sabar, berikut isi minimal file .jnlp. Untuk konfigurasi yang lebih lengkap silahkan lihat-lihat and coba-coba sendiri di sun's javaws guides

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://namasitus/jnlp_app/"
href="mulai.jnlp">
<information>
<title>JNLP Test</title>
<vendor>Dicky Inc.</vendor>
<homepage href="http://www.dickyaw.com" />
<description>Test JNLP Application</description>
</information>
<resources>
<j2se version="1.6+" />
<jar eager="true" href="Application.jar"/>
<jar href="mysql-connector-java-5.1.7-bin.jar" />
</resources>
<application-desc main-class="coba.Main" />
</jnlp>


Lalu katanya tadi bisa lewat file server, gimana caranya. File server kan intinya sama dengan file local saja, jika fileserver kita mempunyai alamat IP "192.168.0.3" dan kita letakkan pada folder jnlp_app maka file .jnlp perlu kita rubah pada bagian :

<jnlp spec="1.0+" codebase="http://namasitus/jnlp_app/" href="mulai.jnlp">

menjadi

<jnlp spec="1.0+" codebase="file:////192.168.0.3/jnlp_app/" href="mulai.jnlp">

dan kita panggil melalui command prompt :

javaws //192.168.0.3/jnlp_app/mulai.jnlp


Ada kalanya aplikasi yang kita buat membutuhkan access file ke dalam sistem file workstation client, secara default java akan menolak demi keamanan. Untuk itu kita perlu menambahkan tag security pada file .jnlp agar nantinya ada konfirmasi bagi user apakah aplikasi diijinkan untuk mengakses file system pada workstation-nya.

<security>
<all-permissions/>
</security>

Apakah ini cukup, belum, bila ini dijalankan maka akan terdapat error bahwa file2 jar is not signed. Maka kita perlu men-sign semua file jar termasuk librarynya. Langkah pertama kita buat file kunci, masuk ke console ketikkan :

keytool -genkey -keystore myKeys -alias jdc

Maka akan keluar perintah yang mengharuskan kita mengisi beberapa isian misal nama, password, dsb. Setelah file kunci tersebut berhasil dibuat maka kita sign-kan semua file jar dengan kunci tersebut :

jarsigner -keystore myKeys Application.jar jdc

Jangan lupa semua library juga kita sign:

jarsigner -keystore myKeys mysql-connector-java-5.1.7-bin.jar jdc

Demikian seterusnya sampai semua file jar berhasil di-sign.

Demikian tutorial ini semoga membantu, jika ada salah mohon kritik dan sarannya.

9 komentar:

  1. kocak bos pengantarnya

    BalasHapus
  2. Pengalaman pribadi hehehe...

    BalasHapus
  3. keren gan sangat membantu tapi ane mw tanya nie kok ane gini ya kluar nya : waktu mw masukin file.jar
    Enter Passphrase for keystore:
    jarsigner error: java.lang.RuntimeException: k
    ys (The system cannot find the file specified)

    BalasHapus
    Balasan
    1. Pastikan file keystore-nya ada.. kalo dari contoh diatas filenya namanya mKeys

      Hapus
  4. kang misalkan saya punya aplikasi desktop java se sudah jadi. apakah bisa di buat menjadi java web startnya?

    BalasHapus
    Balasan
    1. tentu saja bisa, caranya sama seperti diatas, jangan lupa dengan librarynya

      Hapus
    2. file jnlp sudah sukses jalan di pc client, tapi masalahnya jika saya mau cetak report/create excel. tidak bisa. seakan akan dia tidak menemukan folder tempat penyimpannya. net.sf.jasperreports.engine.JREXception: java.io.FileNotFoundException: src\id\ptmsa\co\id\report\TestReport.jasper

      Hapus
  5. gan kl masukin ke consolenya itu gmn seh kaya cmd gt?

    BalasHapus
  6. ms dicky bisa mint CP nya saya mau tanya masalh JWS

    BalasHapus