Memakai Java Web Start Pada Aplikasi Yang Dibuat Dengan Griffon


Pada aplikasi web, developer hanya perlu melakukan perubahan pada server dan pengguna akan segera memperoleh halaman terbaru. Lalu bagaimana dengan aplikasi desktop? Saya harus men-install aplikasi secara manual satu per satu pada seluruh komputer pengguna. Bila mereka tersebar dalam beberapa lantai berbeda, saya terpaksa harus naik turun tangga. Ini adalah sesuatu yang melelahkan. Beruntungnya, bila memakai Java, saya dapat menggunakan Java Web Start untuk mempermudah distribusi aplikasi desktop yang dibuat dengan Java SE. Griffon membuatnya menjadi lebih mudah lagi.

Langkah pertama yang saya lakukan adalah mengubah isi file griffon-app/conf/BuildConfig.groovy menjadi seperti berikut ini:

environments {
  ...
  production {
    ...
    signingKey {
      params {
         storepass = 'solidsnake'
         keypass = 'solidsnake'
         lazy = false
      }
    }
    ...
  }
  ...
}

Griffon secara otomatis akan melakukan signing pada JAR untuk didistribusikan melalui Java Web Start. Dengan melakukan signing pada JAR, saya menyatakan bahwa file JAR yang saya distribusikan dapat dipercaya sehingga bisa memperoleh hak akses yang lebih banyak seperti menulis file di komputer client. Karena saya tidak membeli private key dari Certificate Authority (seperti VeriSign), maka Griffon akan memakai self-signed certificate. Ini adalah sertifikat digital yang hanya dipakai untuk keperluan percobaan dan masa berlakunya terbatas. Pengguna yang menjalankan aplikasi yang menggunakan self-signed certificate melalui Java Web Start akan memperoleh peringatan keamanan.

Selain itu, saya juga perlu mengubah nilai codebase agar sesuai dengan lokasi URL yang menampung hasil distribusi, misalnya:

environments {
  ...
  production {
    ...
    griffon {
      ...
      webstart {
        codebase = 'http://myserver.com/latihan'
      }
      ...
    }
    ...
  }
  ...
}

Selanjutnya, untuk menghasilkan file yang dapat didistribusikan melalui Java Web Start, saya memberikan perintah berikut ini:

C:\proyek> griffon package webstart

Perintah di atas akan menghasilkan file pada lokasi dist/webstart. Setiap file JAR akan memiliki versi yang telah di-compress dengan tool pack200 dimana hasilnya memiliki ekstensi .pack.gz. File JAR yang telah di-compress dapat di-download lebih cepat oleh pengguna. Griffon juga telah memberikan nilai true untuk jnlp.packEnabled secara otomatis.

File yang paling penting disini adalah application.jnlp. File dalam format Java Network Launch Protocol (JNLP) ini adalah file yang perlu dikerjakan oleh pengguna. Saya melakukan sedikit perubahan pada file ini, seperti mengubah versi Java yang dibutuhkan dari 1.5+ menjadi 1.7. Selain itu, saya menghilangkan komentar pada bagian berikut ini:

<shortcut online="true">
   <desktop/>
</shortcut>
<offline-allowed/>

Tujuannya adalah agar Java Web Start menghasilkan file shortcut di desktop sehingga pengguna nantinya bisa menjalankan aplikasi langsung tanpa harus membuka browser terlebih dahulu.

Langkah berikutnya yang perlu saya lakukan adalah meletakkan file-file yang ada di dist/webstart pada sebuah web server yang dapat diakses oleh seluruh komputer pengguna. Sebagai contoh, saya akan memakai IIS bawaan Windows 7 sebagai web server. Saya men-copy isi file yang dihasilkan Griffon ke lokasi C:\inetpub\webstart. Setelah itu, saya membuat sebuah application baru dengan men-klik kanan sebuah site dan memilih menu Add Application…. Saya kemudian mengisi dialog yang muncul seperti pada gambar berikut ini:

Membuat application baru di IIS

Membuat application baru di IIS

Selain itu, saya juga memilih MIME Types dan menambahkan MIME untuk JNLP seperti berikut ini:

Mendaftarkan MIME untuk JNLP

Mendaftarkan MIME untuk JNLP

Agar lebih mudah dipakai, saya mengubah iisstart.htm menjadi seperti berikut ini:

<html>
<body>
<a href='latihan/application.jnlp'>Klik disini</a> untuk menjalankan aplikasi terbaru kita.
</body>
</html>

Sekarang, bila saya membuka URL di web server seperti http://myserver.com, saya dapat menjalankan aplikasi melalui Java Web Start seperti yang terlihat pada gambar berikut ini:

Menjalankan Aplikasi Dari Browser

Menjalankan Aplikasi Dari Browser

Bila saya memilih Ok, maka Java Web Start Launcher akan men-download file yang dibutuhkan dari server dan menyimpannya sebagai cache di komputer pengguna. Karena saya memakai self-signed certificate yang tidak aman, akan muncul pesan peringatan seperti pada gambar berikut ini:

Pesan Peringatan

Pesan Peringatan

Saya memberi tanda centang pada I accept the risk dan men-klik tombol Run. Aplikasi akan dijalankan. Java Web Start Launcher juga akan membuat sebuah shortcut di Desktop sehingga lain kali, saya dapat menjalankan aplikasi ini tanpa harus membuka browser terlebih dahulu.

Apa yang terjadi bila web server dimatikan? Apakah aplikasi tetap dapat dijalankan? Yup, tetap bisa! Hal ini karena Java Web Start menyimpan aplikasi secara lokal. Untuk membuktikannya, saya membuka Control Panel, Java. Pada bagian General, saya men-klik tombol View…. Saya akan memperoleh tampilan seperti pada gambar berikut ini:

Melihat Aplikasi Yang Ada Di Cache

Melihat Aplikasi Yang Ada Di Cache

Pada dialog di atas, saya juga bisa menghapus cache yang sudah ada, menjalankan aplikasi, atau membuat kembali shortcut yang terhapus.

Lalu, bagaimana bila saya melakukan perubahan pada kode program dan ingin perbaharuan dilakukan pada seluruh klien yang sudah memiliki cache aplikasi di komputer lokal mereka?

Saya tidak perlu khawatir karena setiap kali aplikasi dijalankan, Java Web Start akan men-download ulang seluruh JAR dan memakai JAR yang terbaru. Bila sedang tidak dapat terhubung ke server, maka apa yang ada di cache akan dipakai (dengan catatan konfigurasi di file JNLP membolehkan aplikasi bekerja secara offline).

Untuk menghemat waktu download, JNLP juga memiliki fasilitas version-based download protocol. Dengan version-based download protocol, Java Web Start tidak perlu men-download seluruh JAR melainkan hanya JAR yang versinya berubah atau tidak ada di cache. Namun, sepertinya Griffon belum menghasilkan nama file JAR dan isi JNLP yang mendukung version-based download protocol.

Perihal Solid Snake
I'm nothing...

2 Responses to Memakai Java Web Start Pada Aplikasi Yang Dibuat Dengan Griffon

  1. herudi sahimar mengatakan:

    gan jnlp ko ga bisa pake mysql ya ?

    • Solid Snake mengatakan:

      Pastikan komputer yang program-nya di-install secara JNLP memiliki akses ke komputer yang menjalankan MySQL Server. Periksa apakah JDBC URL sudah sesuai dengan lokasi server. Kamu juga bisa menghapus cache JNLP dengan membuka Java Control Panel di Control Panel dan men-klik View.. di bagian Temporary Internet Files. Ini menyebabkan file JAR di-download kembali dari awal saat aplikasi JNLP di-launch.

      Bila masih bermasalah, jalankan griffon package zip untuk menghasilkan file ZIP yang bisa kamu copy secara manual ke komputer client. Pastikan distribusi yang di-install secara manual juga bisa mengakses database tersebut.

Apa komentar Anda?

Please log in using one of these methods to post your comment:

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: