Membuat Aplikasi Desktop Dengan Eclipse RCP


Dalam membuat sebuah aplikasi desktop, saya selalu berusaha sebisa mungkin berkonsentrasi pada domain permasalahan dan menghabiskan sedikit mungkin waktu pada permasalahan infrastruktur.   Yang saya maksud dengan domain permasalahan adalah hal-hal yang berhubungan permasalahan spesifik yang saya hadapi misalnya restoran, penjualan, pengelolaan sdm, dan sebagainya.  Biasanya domain permasalahan selalu berbeda dan itu sebabnya saya perlu membuat aplikasi baru.  Lalu apa itu permasalahan infrastruktur?  Contohnya adalah pertanyaan bagaimana menampilkan laporan, bagaimana mencetak ke printer, bagaimana membuat window MDI, bagaimana connect ke database dan sebagainya.  Permasalahan infrastruktur umumnya selalu sama dalam setiap aplikasi desktop.  Semakin saya tidak familiar pada sebuah teknologi, maka semakin banyak waktu saya yang harus terbuang pada permasalahan infrastruktur.  Beruntungnya, permasalahan infrastruktur bisa diselesaikan dengan memakai framework.

Java bisa dibilang bukanlah yang terbaik untuk pengembangan aplikasi dekstop di Windows (yup, Visual Studio tetap populer disini!).  Banyak pemula yang menyerah dalam mempelajari Swing (API GUI untuk Java).   Walaupun demikian, ada beberapa framework yang dapat dipakai untuk meringankan penderitaan  programmer Java sehingga mereka bisa lebih banyak berkonsentrasi di domain permasalahan.  Salah satunya adalah Eclipse RCP.

Eclipse RCP?  Bukankah Eclipse adalah sebuah IDE untuk berbagai bahasa pemograman terutama Java?  Itu adalah Eclipse IDE.  Tapi Eclipse RCP adalah sebuah platform (saya akan menyebutnya framework) untuk mengembangkan aplikasi desktop dengan memanfaatkan elemen tampilan yang sudah sering saya lihat di Eclipse IDE.

Untuk mengembangkan aplikasi dengan Eclipse RCP, saya akan memakai platform Eclipse Indigo SR2.  Platform yang terbaru adalah  Juno, tapi kabarnya platform ini mengalami bug  performance sehingga lebih berat dibanding Indigo.  Untuk mendownload Eclipse Indigo SR2 for RCP and RAP Developers, saya men-klik link berikut ini: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/indigo/SR2/eclipse-rcp-indigo-SR2-win32.zip.

Setelah menjalankan Eclipse for RCP and RAP Developers, saya memilih File, New, Plug-in Project.  Saya mengisi Project name dengan com.jocki.blog.aplikasi.  Setelah itu saya men-klik tombol Next.

Pada dialog berikutnya, saya mengisi dengan informasi seperti dengan yang terlihat pada gambar berikut ini:

Informasi plug-in untuk aplikasi RCP

Informasi plug-in untuk aplikasi RCP

Setelah itu, saya men-klik tombol Next.  Untuk melihat seperti apa contoh sebuah aplikasi Eclipse RCP, saya memilih RCP Mail Template dari Available Templates.  Setelah itu, saya men-klik tombol Finish.

Struktur proyek sebuah aplikasi Eclipse RCP akan terlihat seperti berikut ini:

Struktur Proyek Eclipse RCP

Struktur Proyek Eclipse RCP

File konfigurasi yang penting adalah file META-INF/MANIFEST.MF dan plugin.xml.  Sementara file kode program Java terletak di folder src.

Saya perlu mengubah plugin ini agar dapat dijalankan secara langsung seperti aplikasi desktop biasanya.  Saya mulai dengan memilih menu File, New, Product Configuration.   Pada dialog yang muncul, saya memilih proyek com.jocki.blog.aplikasi, lalu pada File name, saya mengisinya dengan aplikasi.product.   Saya memilih Use an existing product, dan memilih com.jocki.blog.aplikasi.product dari combo.  Setelah itu, saya men-klik tombol Finish.

Pada editor aplikasi.product yang muncul, saya mengisi ID dengan com.jocki.blog.aplikasi.product.

Sekarang, saya akan mencoba menjalankan aplikasi RCP tersebut.  Tetapi sebelumnya, saya akan melakukan sinkronisasi dengan men-klik link Synchronize di bagian Testing.  Setelah itu, saya men-klik link Launch an Eclipse application seperti yang terlihat pada gambar berikut ini:

Menjalankan Aplikasi RCP Dari Eclipse

Menjalankan Aplikasi RCP Dari Eclipse

Akan muncul aplikasi RCP yang terlihat seperti berikut ini:

Tampilan Aplikasi RCP dari RCP Mail Template

Tampilan Aplikasi RCP dari RCP Mail Template

Aplikasi ini hanya terdiri atas sebuah perspective dengan ID berupa com.jocki.blog.aplikasi.perspective.  Definisi perspective ini dapat dilihat di kode program /src/com/jocki/blog/aplikasi/Perspective.java.  Bila saya melihat isi kode program tersebut, saya akan menemukan bahwa pada perspective didefinisikan sebuah view dengan ID berupa com.jocki.blog.aplikasi.view yang kode programnya dapat dilihat di folder /src/com/jocki/blog/aplikasi/View.java.  Selain itu, editor tidak ditampilkan karena terdapat baris layout.setEditorAreaVisible(false).

Kode program yang membuat menu dan toolbar  dapat ditemukan di folder /src/com/jocki/blog/aplikasi/ApplicationActionBarAdvisor.java.  

Method makeActions(IWorkbenchWindow) akan mendefinisikan IAction yang ada (IAction adalah sesuatu yang mewakili aksi yang akan dikerjakan bila sebuah menu, toolbar, atau shortcut dipilih).  Action untuk exitAction, aboutAction, dan newWindowAction adalah action standar yang sudah disediakan oleh Eclipse RCP.   Hal ini bisa meringankan beban saya karena saya tidak perlu membuat semua IAction dari awal.  Method fillMenuBar(IMenuManager) akan membuat definisi menu yang dapat dipilih.  Tidak berbeda jauh, method fillCoolBar(ICoolBarManager) akan membuat definisi toolbar.

Satu hal yang perlu diperhatikan adalah extensions.  Ini adalah metode komunikasi antar-plugin di Eclipse secara deklaratif tanpa kode program (mirip seperti application context XML di Spring, bukan?).  Sebuah plugin boleh menyediakan extension point.  Plugin lain yang memakai plugin tersebut boleh mengimplementasikan extension point tersebut dalam bentuk extension.

Untuk melihat extension di proyek, saya men-double click file plugin.xml, lalu memilih tab Extensions.  Berikut ini adalah contoh tampilan extension yang didefinisikan di proyek saya:

Melihat Extension Di Proyek

Melihat Extension Di Proyek

Ok, seandainya saya telah selesai membuat aplikasi ini.  Apa yang harus saya lakukan?  Setiap aplikasi desktop di Window memiliki file exe yang bisa dijalankan.  Begitu juga dengan aplikasi yang memakai Eclipse RCP.  Saya men-double click file aplikasi.product. kemudian memilih tab Launching.  Pada bagian Program Launcher, saya mengisi aplikasi di bagian Launcher Name.  Ini akan mewakili nama file exe yang dihasilkan.  Saya juga dapat memberikan icon untuk file exe tersebut seperti yang terlihat pada gambar berikut ini:

Mengatur Launcher Untuk Aplikasi Berbasis Eclipse RCP

Mengatur Launcher Untuk Aplikasi Berbasis Eclipse RCP

Karena saya hanya menargetkan platform win32, saya tidak perlu mengkhawatirkan tab lainnya.  Walaupun demikian, Eclipse RCP dapat menghasilkan launcher untuk platform yang berbeda, dengan syarat saya harus meng-install RCP delta pack untuk masing-masing target tujuan.

Untuk menghasilkan program yang dapat didistribusikan, saya kembali membuka file aplikasi.product, lalu memilih link Eclipse Product export wizard.  Saya menentukan lokasi dan nama file tujuan di bagian Archive file seperti yang terlihat pada gambar berikut ini:

Men-export Aplikasi Berbasis Eclipse RCP

Men-export Aplikasi Berbasis Eclipse RCP

Untuk mendistribusikan aplikasi, saya hanya perlu membagi-bagikan file aplikasi.zip ke calon pengguna.  Aplikasi dapat langsung dijalankan tanpa installer.  Bila seorang pengguna men-extract file aplikasi.zip, ia akan menemukan struktur folder seperti berikut ini:

Struktur Aplikasi Yang Didistribusikan

Struktur Aplikasi Yang Didistribusikan

Pengguna hanya perlu men-double click file aplikasi.exe untuk menjalankan aplikasi yang telah saya buat dengan Eclipse RCP.

Perihal Solid Snake
I'm nothing...

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: