Memperkenalkan: JBoss Seam Framework

ANOTHER JAVA EE FRAMEWORK

Saya rasa, Java Enterprise telah memasuki masa titik jenuhnya. Hal ini ditandai dengan munculnya bermacam-macam framework dengan gaya yang berbeda-beda. Seringkali framework malah justru mempersulit kita dalam membangun sebuah aplikasi Java. Kejenuhan ini adalah keadaan yang sangat rawan ketika sebuah paradigma pemrograman baru masuk dan membawa kemudahan-kemudahan yang segar yang bisa menghajar habis Java Enterprise (RoR — Ruby on Rails, akankah ini adalah pembunuh Java?).

Kemapanan Action Based

Framework awal Java bergaya request-action-response based mengikuti tingkah laku alami dari protokol HTTP. Pemimpin sektor ini adalah Struts mulai dari Struts 1.x, dan ketika Struts ditinggal programmernya, kemapanan Struts dilanjutkan oleh Webwork yang melahirkan Struts 2.x.

Dalam perkembangannya, Struts tidak cukup menjadi sebuah framework. Di ranah Model di dalam trinitas suci paradigma Model-View-Controller, cukup merepotkan melakukan akses database dengan menggunakan generic JDBC biasa. Oleh karena itu, munculah framework iBatis yang memindahkan penulisan SQL dalam file XML sehingga ketika terjadi perubahan query, paket aplikasi tidak perlu dikompilasi ulang dan di-deploy ulang. Disamping itu, akses database juga bisa di-inject langsung ke dalam objek-objek Java Bean dengan menggunakan Object Relational Mapping (ORM). Oleh karena itu, muncul kemudian Java Persistance API (JPA), Enterprise Java Bean 3 (EJB3), dan Hibernate ORM.

Tumpukan stack framework berikutnya adalah sebuah Inversion of Control yang secara sederhana dijelaskan sebagai pengatur lalu lintas data antara Model (Hibernate ORM) dan View (Struts). Ia hidup dalam ranah Controller. Di sini framework yang paling populer adalah Spring Framework.

Masalah Klasik

Nah, sejauh ini, kita sudah memiliki tiga tumpukan framework: Struts, Spring, dan Hibernate. Dari tiga framework ini, sudah bisa ditebak bahwa masalah yang pertama kali muncul adalah, waktu set up aplikasi yang lama.

Sebenarnya, untuk membuat aplikasi enterprise berbasis web, yang perlu kita buat secara berulang-ulang (dan karenanya membosankan adalah):

  1. Membuat mapping antara database ke objek Java Bean. Bayangkan jika akan ada 15 tabel yang saling berelasi. Artinya, saya harus membuat 15 file XML yang menjelaskan detail setiap kolom, primary key, tipe kolom, relasi-relasinya dengan tabel lain…. menyakitkan kawan. πŸ™
  2. Tampilan user untuk mekanisme CRUD (Create, Update, Delete) beserta validasinya. Anda pasti mengerti kalau pernah membuat form HTML berisi textfield, combo box, tombol-tombol, kemudian membuat aliran datanya dengan request GET atau POST, membuat query SELECT, UPDATE, dan sekaligus DELETE untuk tiga halaman. Lalu memvalidasinya agar inputan user sesuai dengan spesifikasi tabel di database. Setelah itu, jika ada 15 tabel, Anda harus mengulanginya di 14 tabel lain. Total akan ada 15 * 3 = 45 pekerjaan berulang-ulang membosankan untuk Anda.

Bukankah menyenangkan sekali kalau ada sebuah tools yang melakukan otomatisasi itu semua? Membaca tabel di database dan melakukan reverse engineer. Membuatkan hibernate mapping-nya, membuat class-class Java Bean, membuatkan halaman-halaman CRUD untuk setiap tabel dan membuat validasi berdasarkan spesifikasi tabel secara otomatis dalam satu klik mouse saja?? ;;)

Seam Framework: Datang dari Event-Based Web Programming

Dunia web Java terguncang ketika Microsoft menawarkan .net framework-nya yang mengiming-imingi programmer dengan gaya event-based-nya. Halaman web tidak lagi dipandang sebagai halaman HTML yang mengirimkan request kepada server, tetapi sebagai desktop yang memiliki tombol yang bisa diklik dan memanggil method tertentu ketika sebuah komponen diberi suatu aksi. Lupakan request GET atau request POST, Anda hanya melihat komponen-komponen yang bisa diklik.

Tapestry adalah framework populer Java yang menggunakan gaya component-based ini. Kemudian muncul spesifikasi Java Server Faces yang bagi saya mirip dengan ASP.net. JSF segera populer karena didukung dan disosialisasikan oleh vendor-vendor raksasa macam Sun dan Oracle (dengan Oracle ADF-nya).

Jika Struts berangkat dari Java Server Pages (JSP), maka Seam berangkat dari JSF. Kalau Struts bicara masalah Action dan Form, maka Seam lebih banyak bicara tentang Managed Beans dan Annotations. Secara standar, Seam menyediakan semua hal secara lengkap. Di bagian model, Seam menggunakan implementasi Entity Beans milik EJB3 dengan Hibernate Annotations dan Java Persistance API (JPA). Di sisi View, Seam menggunakan JSF Facelets standar, RichFaces, dan Ajax4JSF. Controller ditangani oleh ia sendiri.

Seam-Gen

Tetapi saya tidak terlalu tertarik kalau Seam hanya menyediakan yang itu-itu saja. Just another suck frameworks, apalagi Seam terlalu tergantung dengan JBoss Application Server yang gendut. Namun demikian, satu hal yang membuat saya tertarik meliriknya adalah satu tool command line kecil bernama Seam-Gen. Tool ini sebenarnya hanyalah satu set prosedur yang berbasis Hibernate Tools yang melakukan code-generation seperti melakukan Reverse Enginner, mapping database ke objek, sekaligus membuatkan halaman-halaman CRUD dalam satu perintah. Jawaban atas impian saya di atas! Dan dengan bantuan JBoss Tools, sebuah plugin Eclipse, pekerjaan ini benar-benar menjadi satu klik saja!

Benar-benar fun! CRUD dan Validasi hanya dalam satu klik? Apakah saya berlebihan kalau saya mengatakan ini benar-benar menyenangkan? Anda harus coba ini. πŸ™‚

Silakan kunjungi: Seam Framework untuk download Seam dan ikuti roadmap-nya di Getting Started with Seam.

Bagi Anda yang sama sekali belum pernah coba pemrograman Java EE, mungkin Anda agak kesulitan memahami Seam, jadi saya sarankan untuk memahami konsep-konsep berikut ini terlebih dahulu:

PS: Am I writing in either Bahasa Indonesia or even English? πŸ™

Author: Galih Satriaji

Bookaholic, Workaholic. Chubby. That's me!

16 thoughts

  1. yet another framework. πŸ˜€

    bagi yang newbie seperti saya. belajar java sangat berat. instilahnya macem2, pilhannya macem2. eclipse x netbeans, sun jdk x open jdk, glassfish x tomcat, hibernate x ibatis, dll

    blum lagi macem2 framework yang bermunculan.

    *sekedar curhatan org yang lagi kapok bljr java* πŸ˜€

  2. Membuat mapping antara database ke objek Java Bean. Bayangkan jika akan ada 15 tabel yang saling berelasi. Artinya, saya harus membuat 15 file XML yang menjelaskan detail setiap kolom, primary key, tipe kolom, relasi-relasinya dengan tabel lainÒ€¦. menyakitkan kawan. πŸ™

    Pernah nyoba Codesmith?
    Itu aplikasi yang dipakai sama kantorku untuk generate class dan library untuk ngakses database.
    Tinggal masukin tabel, dan view yang mau digenerate, setting beberapa item. Voila, jadi solution!
    Trus dikompile jadi library yang siap pakai. Voila! Jadi deh…

    And no, setahuku itu proprietary dan mbayar. Bukan FOSS. πŸ˜›

  3. #kholis:
    Sejauh pengalamanku, saat-saat eksplorasi teknologi terbaik adalah saat kuliah. janganlah mem-fanatik-kan diri pada satu hal. Semua dilahap saja. Soalnya kalau udah bekerja begini, waktu untuk eksplorasi tidak ada lagi, pengennya cepat selesai dengan tool apapun.

    #dnial:
    Lha, yang free ya seam-gen ini πŸ˜‰

  4. Kan kantorku (dan kantormu juga) kan royal soal bayar-membayar lisensi dan library. πŸ˜›
    Hell, buat mbuka file Excel aja butuh library dari luar.

    Btw… Kalo mau eksplorasi, IMHO, masuk ke bagian RnD Software aja. Tapi biasanya in-house developer nggak ada RnD-nya dan sangat pragmatis. Ada library untuk mempermudah? Beli! πŸ˜›

    *saiki belajar untuk melihat dari sisi pragmatis bisnis dan sistem bukan teknis apalagi idealis*

  5. Hebat, uraiannya cukup detail. Ya itulah resikonya jika ingin terjun ke dunia Java. Terlalu banyak teknologi dan terminologi. Hal ini tentunya cukup membuat orang-orang yang baru belajar agak segan untuk masuk.

    Mengenai JBoss Seam, saya sedang dalam tahap eksplorasi. Nampaknya memang menjanjikan kemudahan untuk pengembangan aplikasi JEE. Kekurangan utama dari Seam adalah masih sedikit tool yang mensupport secara lengkap untuk proses pengembangan. Pengguna Eclipse mungkin punya JBoss Tool, tapi ini kan artinya harus download plugin tambahan. Sementara saya sendiri pengguna Netbeans. Di Netbeans, support Facelets pun belum terlalu baik. Semoga saja hal ini akan terpecahkan kelak.

  6. Jboss Seam tidak hanya seam-gen saja, bahkan seam-gen men-generate file2 dan settingan2 yang tidak perlu, The Best Of Seam are 1. It dispose the xml description for JSF manage bean, 2. It was the bridge between apps and EJB (you can call EJB directly from the web app) 3. It conversation scope extends the JSF capability, 4 The seam ui component very useful in many cases.

  7. Artikel dan uraian yang menarik, good..good.
    Saya belum sempet mencoba Seam, selama ini biasanya pakenya Tapestry. Baru mau mencoba πŸ™‚ yang saya kurang enjoy pakenya JBoss bener kata temen2 terlalu gemuk untuk Application Server

  8. wah artikelnya cukup buat orang tertarik untuk mengeksplore seam….kebetulan saya juga sedang bermain2 dengan seam tp lum sampe dalem2 banget, betul bgt tuh artikel d atas…bisa generate CRUD hanya dengan sekali klik pake seam-gen d eclipse tepatnya klik di seam generate entities…untuk loggingnya juga udah included dengan log4j, dll fitur menarik….dan saya bilang ini adalah framework yg memperbaiki kekurangan2 yg ada pada JSF juga deh…kl JSF kan terlalu byk bergantung ama xml file tuh, kl d seam udh d ciptakan sendiri xml2 file tsb…cm mungkin kelemahanya d REST kalee yah….

  9. Luar biasa!
    Yii Framework pun begitu…
    Sekali klik, langsung jadi CRUD untuk add, edit, delete, manage, list…

Leave a Reply

Your email address will not be published. Required fields are marked *