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:
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:
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 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:
Akan muncul aplikasi RCP yang terlihat seperti berikut ini:
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 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 tabExtensions. Berikut ini adalah contoh tampilan extension yang didefinisikan di proyek saya:
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:
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:
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:
Pengguna hanya perlu men-double click file aplikasi.exe untuk menjalankan aplikasi yang telah saya buat dengan Eclipse RCP.
0 comments:
Post a Comment