Memperkenalkan, Webwork Java Enterprise Framework

Webwork, adalah yet another java framework, sebuah ruang kerja untuk pengembangan sistem enterprise berbasis Java. Webwork adalah alternatif framework yang bisa dipilih selain Jakarta Struts dan JSF (Java Server Faces). JSF tampaknya memiliki masa depan yang cerah karena didukung oleh vendor-vendor besar seperti Sun dengan Sun Java Creator dan Netbeans-nya, dan Oracle yang habis-habisan dengan JDeveloper-nya. Ketika Struts yang begitu populer ditinggalkan pengembangnya yang beramai-ramai pindah ke JSF (versi terakhir adalah 1.3.5), muncullah versi Struts berikutnya (versi 2.0) yang berganti baju dengan…. Webwork 2!

Bicara tentang framework baru di antara begitu banyaknya framework yang sudah mapan, tentunya kita akan bertanya: Apa sih keunggulan framework ini?

Wah… saya sendiri juga baru mengenal dan belum terlalu dalam membedah framework ini. Tapi berdasarkan apa yang saya ketahui tentang Struts dan JSF, saya mungkin dapat mengemukakan hal-hal yang cukup menarik perhatian saya mengenai Webwork. Tentu saja, review ini sangat bersifat subjektif. Jadi, CMIIW (Correct Me If I’m Wrong).

Hal yang paling menarik dari Webwork adalah kemampuannya untuk diintegrasikan dengan berbagai macam library dan framework lain. Webwork adalah sebuah web-application -framework, ia bekerja pada level aplikasi dan menyediakan cara yang “nyaman” dalam mengurusi aliran data dan presentasi dan memisahkannya. Sangat mirip dengan Struts. Ia memiliki sebuah class Action (Terminologi webwork disebut interceptor, sedangkan terminologi struts disebut action) yang menangani pertukaran komunikasi antara data model, request, dan response yang diberikan yang selanjutnya akan dilemparkan kepada sebuah halaman (bisa JSP, HTML, atau halaman apapun) sebagai view. Untuk itu, webwork telah menyediakan cukup banyak built-in tag-library baik merupakan user interface maupun data model.

Arsitektur Webwork

Data Model

Untuk di level data model, Webwork bisa diintegrasikan dengan framework yang menangani masalah ini seperti misalnya Hibernate, iBatis, ataupun Entity Beans EJB. Framework ini membebaskan developer untuk berdarah-darah dalam menangani masalah koneksi ke database, pengaturan pengumpulan koneksi (connection pooling – bahasa indonesia-ne opo yo?), pengaturan koneksi-koneksi tembolok (cache connections – nah, iki opo meneh) secara hardcoded. Maklum, dalam sistem enterprise yang biasanya mengurusi data yang lebih dari 50.000 records, kita tak bisa mengaksesnya semudah dengan menggunakan JDBC (Java Database Connectivity) biasa saja. Untuk tetap menjaga agar aplikasi tetap berjalan dengan cepat — apalagi dalam sistem berbasis web yang selalu dihantui dengan connection timed out — kita mesti membuat penanganan data seefisien mungkin. Nah, di sinilah framework semacam Hibernate akan membantu.

Inversion of Control (IoC)

Dalam representasi suatu proses bisnis dalam sebuah sistem, kita biasa memisahkan antara data dan presentasi dalam sebuah konsep MVC (Model View Controller). Penanganan data ditangani oleh Model sedangkan penanganan penyajian kepada layar (screen) ditangani oleh View. Controller bertugas untuk menangani hubungan antara keduanya. Namun demikian, konsep ini membuat sebuah Controller harus sering hidup diantara kedua dunia Model dan View. Desain yang buruk bahkan akan membuat ketiga bagian ini memiliki ketergantungan (dependency) antara satu sama lain. Nah, untuk mengatasi hal ini, sebuah container digunakan untuk benar-benar memisahkan antara mana yang Model, mana yang Controller, mana yang View. Ketiganya menjadi benar-benar terpisah namun tetap berkomunikasi dengan baik, sehingga konsep MVC menjadi jelas terlihat. Framework tingkat IoC ini paling populer adalah Spring, dan Webwork secara default merekomendasikan Spring untuk dijadikan sebagai IoC baginya.

Integrasi Lainnya

Dalam hal integrasi dengan library-library lain, Webwork sangat terbuka. Dalam hal layout templating, Webwork dapat diintegrasikan dengan Sitemesh. Dalam hal templating untuk meng-generate text output, Webwork dapat diintegrasikan dengan Freemarker atau Velocity. Dalam hal pengaturan tampilan dengan menggunakan tabel (paging, sorting, dll), Webwork bisa diintegrasikan dengan DisplayTag. Dan masih banyak lagi….

Itulah Webwork. Jika ada waktu yang lebih luang, saya akan membahas semua teknologi yang telah saya sebutkan tadi dalam sebuah buku Java Enterprise. Sudah lama saya tidak menulis buku (mengingat kenangan Secangkir Kopi Java). Doakan saja saya sempat untuk menulisnya yach… 🙂 Salam…

By Galih Satriaji

Bookaholic, Workaholic. Chubby. That's me!

14 comments

  1. sik mas, durung tak woco sampe’ enthek. Sebelumnya denger2 tentang webwork di milis JUG-indonesia, tak lewati mbacanya soalnya gak sebegitu tertarik. Liat potingannya mas Galih ini jadi penasaran, apa sich webwork… sik setelah sholat Isya’ InsyaAllah tak baca. Lek mumet ku wis mari…. 🙂

  2. saya suka webwork karena:
    1. ndak perlu nulis bean.. err.. ActionForm itu lho.
    2. tag-nya lebih simple ketimbang struts.

    Cuma ada ndak enaknya. Stack of interceptor-nya menurut saya masih terlalu banyak. Coba saja itu didebug, duh, rasane koyok diuncal-uncalno ke beberapa layer sebelum ngelakuin action (execute) sebenarnya.

  3. #d-nial, buchin:
    Bukan semakin mbulet, malah tambah semakin terstruktur dengan cara-cara tertentu yang seragam untuk semua modul. Ini akan menyebabkan sistem dibuat akan jauh lebih susah di awal-awal pengerjaan, namun akan lebih mudah dan nyaman ketika enhancement dan maintenance. jadi kalau aplikasinya cuma sekali jadi doang, jangan pernah pakai framework! :p

  4. #andry:
    sebenarnya sih ga perlu perhatikan stack-nya..
    yang penting saat debugging adalah last known error, baru trace back. toh biasanya yang salah kita sendiri.. hehehe..

    #galih:
    semoga ga telat bikin bukunya 😛
    mendingan langsung aja ke struts 2 yang lebih membumi dibanding webwork yang hanya menjadi engine (baca: xwork) bagi struts 2.

    note lagi buat galih:
    .content{
    overflow-x:scroll
    }
    —-> jelek nih.. masa’ harus scroll ke kanan kalo page-nya overflow… mana scroll-nya ada di bottom lagi.. 🙁

  5. cobain tapestry deh lih,

    http://tapestry.apache.org
    kalo webwork action oriented (sama seperti Struts), tapestry lebih ke komponen oriented (sama seperti JSF or Wicket). Bedanya mungkin JSF dibuat ma Sun sbg standart pengembangan j2ee nya.

    kalo aq sih prefer ke tapestry. bukan karena apa2…cuman lebih nyaman kalo pas coding. Tapestry 5 (preview release) malah sepertinya bakal lebih cool…

    untuk IDE, tapestry ada banyak pilihan kok
    mo pake eclipse, netbeans atau IDEA.

    selamat mencoba…

Leave a comment

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