Tuesday, February 5, 2013

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 FileNewPlug-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 FileNewProduct 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 memilihcom.jocki.blog.aplikasi.product dari combo.  Setelah itu, saya men-klik tombol Finish.
Pada editor aplikasi.product yang muncul, saya mengisi ID dengancom.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 berupacom.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 berupacom.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 (IActionadalah sesuatu yang mewakili aksi yang akan dikerjakan bila sebuah menu, toolbar, atau shortcut dipilih).  Action untuk exitActionaboutAction, 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 tabExtensions.  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 fileaplikasi.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.

0 comments:

Post a Comment