Memperkenalkan: JBoss Seam Framework

Posted by: on Nov 30, 2008 | 14 Comments

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?

Google Documents, untuk Penyimpanan Referensi Online

Posted by: on Nov 26, 2008 | 11 Comments

Terkadang saya memerlukan untuk menyimpan referensi yang saya dapat di internet secara online agar bisa saya akses dari mana saja. Referensi ini biasanya dari artikel-artikel di internet baik blog ataupun sumber yang lain. Salah satu cara untuk menyimpannya paling mudah adalah menaruhnya di blog tersendiri yang berisi — let sayKumpulan Artikel-Artikel Penting dan Bermanfaat yang Dikumpulkan Oleh Galih Satria.

Namun demikian, kini ranah blog merupakan sebuah bentuk publikasi yang secara ilmiah telah diakui sebagai sebuah karya cipta, sehingga dengan demikian, mempublikasi ulang artikel dari internet harus dilakukan secara hati-hati jika tidak ingin dianggap plagiat. Mungkin menuliskan sumber referensi saja kurang cukup, harus ada beberapa patah kata dari kita sendiri, minimal kenapa kita mempublikasi ulang sumber tersebut. Maka, pilihan blog sebagai tempat penyimpanan referensi yang cepat kurang tepat bagi saya.

Box.net, saya memiliki account di sana. Ini adalah media penyimpanan file-file secara online secara gratis berjatah 1 GB. Memiliki fitur sharing visibility yang bisa kita atur apakah file-file tersebut bisa diakses orang lain ataukah khusus untuk diri sendiri. Tetapi Box.net masih terlalu ribet untuk saya. Saya harus login dulu, meng-upload, dan dengan keribetan ini, Box.net saya jarang diakses kalau tidak akan mengupload sebuah berkas tertentu.

Pilihan jatuh pada Google Docs. Ia memiliki storage khusus yang bisa diatur susunan foldernya. Entah berapa kapasitas storage-nya (ada yang tahu?). Tapi yang jelas, saya tidak harus capek-capek login karena terintegrasi dengan semua layanan Google. Singe Sign On bo’! Saya hampir sepanjang hari memonitor mailbox Gmail saya sehingga ketika memerlukan referensi yang ingin disimpan, saya tinggal sekali klik Google Documents dan menyimpannya di sana tanpa harus melalui proses login yang ribet (tambah lama pakai internet, tambah manja).

Ganti Ban Belakang

Posted by: on Nov 23, 2008 | 21 Comments

Di masa-masa akhir tugasnya, sepeda motor Tornado GS saya sering ngambek. Ban belakangnya sering sekali bocor. Bahkan, bapak-bapak security parkiran Citi Plaza sampai hapal dan menyapa dengan senyum ramah mereka,

“Bocor lagi Mas? Kok sering bocor sih?”

“Iya pak, maklumlah, motor tua,” jawab saya dalam hati sambil menggerutu walaupun saya menampilkan senyum termanis yang bisa saya tampilkan.

Malam itu merupakan malam yang cukup menjengkelkan memang. Setelah dihajar migrain parah sehari sebelumnya, hari itu giliran radang tenggorokan menyerang saya. Ini akibat kehujanan hari Senin sore waktu berangkat meeting di Medan Merdeka Barat dan terpaksa mengikuti meeting dengan baju basah. Mobil sedan hitam mewah yang terkutuk! Genangan air di depan Menara Thamrin itu sudah saya lalui pelan-pelan, tetapi mobil itu tetap meluncur dengan derasnya di samping saya — cipratan airnya mengguyur jas hujan gaya superman yang tidak berpenutup di sisi samping.

Tetapi lagi-lagi hari itu saya tidak dapat beristirahat. Ada beberapa hal yang harus saya kerjakan, sehingga, hari itu saya pulang sehabis maghrib. Sambil menahan sakit ketika menelan ludah dan saya rasa demam mulai menyerang, saya berjalan pelan-pelan ke arah motor yang saya parkir di basement 2 Citi Plaza, sebelah gedung Wisma Mulia.

Otak saya sudah dipenuhi dengan kasur empuk di bawah dinginnya hembusan udara AC di kamar saya.

Tidur… tidur… tidur…

Kenyataannya, saya harus mendorong dulu itu motor kesayangan sejauh 1 km ke tempat tukang ban. Aaaargggh…..

Oleh abang tukang ban diberi tahu kalau ban belakang sudah cacat dan perlu diganti. Karena itu, kemarin, saya meluncur ke jalan Otto Iskandar Dinata (Otista) Kampung Melayu untuk mengganti ban luar. Sekadar tahu saja, jalan ini adalah pusat asesoris motor di Jakarta Raya. Apa saja yang berhubungan dengan asesoris motor untuk modif ada di sini, mulai shock absorber (sekok), rem cakram, karburator, pelek racing, lampu-lampu, dan sebagainya.

Sempat saya berpikir untuk mengganti dengan ban racing, seperti waktu masih suka ngebut waktu zaman SMA dulu. Tapi saya tertawa geli sendiri dengan ide ini, sekarang motor ini top speed-nya cuma 70 km/jam, percuma dikasih ban racing, hahaha…

Ealah, apa ini salah satu bentuk protes si Tornado karena akan dipensiunkan dalam waktu dekat? Entahlah…

Foto: Nokia N95, Jl. Otto Iskandar Dinata, Kampung Melayu, Jakarta Timur

Wajah Pantai Prigi dalam Sudut dan Cuaca yang Berbeda

Posted by: on Nov 23, 2008 | 19 Comments

FLICKR
Lokasi: Pantai Prigi, Trenggalek, Jawa Timur
Lepas Pantai | Nikon D40 | Sigma 10-20mm HSM

Dalam rangka jalan-jalan yang bertajuk “Kado Cinta Terakhir Untuknya”, liburan lebaran yang lalu saya mengunjungi Pantai Prigi lagi. Tetapi, berbeda dengan kunjungan saya yang ini, cuaca pantai Prigi kurang fotogenik. Mendung. Maklum, musim hujan telah tiba, bukan menyesuaikan dengan suasana hati yang sedang meneriakkan kata perpisahan. Tetapi, ini justru membawa view yang berbeda dengan biasanya. Prigi yang mendung? Apakah masih oke untuk difoto?

Photo Plagiarism

Posted by: on Nov 19, 2008 | 20 Comments

Kalau soal tulisan saya diplagiat orang dan kemudian ada yang protes bahwa saya plagiat tulisan saya sendiri, itu sudah biasa. Nah, yang agak belum biasa adalah kenyataan banyak foto-foto saya yang juga diplagiat. Dicuri dari blog ini kemudian dipasang di tempat lain untuk keuntungan tertentu tanpa izin saya. Padahal saya telah memberi cap copyright Creative Commons. di footer blog ini.

Sejelek apa pun foto saya, mau tak mau, itulah hasil karya saya yang dibuat dengan penuh cinta. Minimal ada setetes dua tetes keringat yang jatuh dari ujung rambut untuk membuat foto tersebut. Saya tidak meminta macam-macam kalau ada orang yang berapresiasi dan bermaksud menggunakan foto saya. Cukuplah saya tahu dan tunjukkan penghargaan Anda terhadap hasil karya orang lain dengan menyebutkan siapa yang membuat karya foto tersebut. Syukur-syukur kalau ada backlink ke homepage saya.

Beberapa kawan memproteksi foto mereka dengan memasang watermark di foto tersebut, salah satunya fotografer ini. Tapi buat saya, penempatan watermark itu sangat menganggu. Mengurangi segi artistiknya. Mungkin buat kawan-kawan itu, cara ini sangat efektif karena mau tak mau watermark itu akan ikut kemana-mana, sang plagiator harus bekerja keras kalau ingin menghilangkan watermark. Mau di-crop saja ya nggak bisa, karena penempatan watermark itu tepat di Point of Interest-nya.

Sampai saat ini, saya masih belum menggunakan cara itu. Saya masih cukup legawa melihat foto saya ada di sebuah tempat dimana saya menemukannya dengan tidak sengaja. Toh, saya tidak mengkomersialkan foto saya. Kalau ada orang yang ingin membeli foto saya, saya selalu jawab, tidak untuk dijual. Tapi meskipun begitu, harap diingat bahwa itu copyright Creative Commons. Saya hanya minta sumbernya ditulis, demi penghargaan atas karya cipta sebuah seni.

PS: Bayangkan betapa menyedihkan para seniman yang membuat lagu-lagu bagus itu, hasil karyanya dibajak habis-habisan, didownload semena-mena, tanpa mendapatkan penghargaan atas karya komersial mereka.

The Smiling Shooter

Posted by: on Nov 17, 2008 | 10 Comments

FLICKR
Lokasi: Rancamaya, Ciawi, Bogor
Nikon D40 | Nikkor AF-S 55-200 mm VR

Seringkali Bahasa Indonesia kurang menjelaskan apa yang kita maksud dan rasakan dalam sebuah judul. The Smiling Shooter, apa padanannya yang tepat di Bahasa Indonesia? Sang Pembidik yang Tersenyum? Rasanya kok jadi kalimat, bukan judul, hehehe…

Ekspresi fotografer ketika memotret selalu menarik untuk diamati. Bahkan, bisa jadi lebih heboh daripada yang sedang dipotret. Seperti Nikonian yang sedang tersenyum ini, Pak Zaenal, hehehe… maaf fotonya diupload tanpa izin. Peace Pak!  >-

Melepas Kerinduan di Satu Sudut Jakarta

Posted by: on Nov 15, 2008 | 14 Comments

Apa yang paling saya rindukan tentang Surabaya? Mungkin salah satunya adalah Tahu Tek dan Rujak Cingurnya. Saya paling suka dengan tahu tek pojokan Gebang yang murah dan banyak. Iya, tahu tek yang terkenal dengan krupuknya yang free alias bebas mengambil sesuka hati. Hampir setiap malam, sepulang dari Data Centre ITS di lantai 6 perpustakaan pusat ITS, saya membiarkan Tornado GS hitam itu merayap pelan-pelan, melintasi gerbang utama ITS, membelok tajam di jalan Gebang Lor dengan tujuan sebuah perempatan pojokan Gebang. Di sana banyak pilihan makanan termasuk nasi goreng. Tapi kalau ada tahu tek, saya pasti pilih yang itu.

Petis, bahan utama tahu tek dan rujak cingur, ternyata endemik hanya ada di kawasan Jawa Timur. Ini membuat keberadaan dua makanan favorit ini begitu langka di Jakarta. Sampai-sampai, kalau sedang pulang kampung dengan pesawat (thus, lewat Surabaya), saya sempatkan untuk makan tahu tek di Waru, dekat bandara Juanda.

Tahu tek bukannya tidak ada di Jakarta. Thanks to Mas Aby. Ternyata, ada makanan khas Surabaya/Jawa Timur lengkap di warung tenda di depan Kantor Pos Fatmawati, Jakarta Selatan. Persis di sebelah Rumah Sakit Fatmawati. Disebut juga Fatmawati Selatan, karena di sebelah selatan tol TB Simatupang.

Ada macam-macam di sini. Tahu Campur a.k.a Tahu Tek, Rujak Cingur, segala jenis varian lontong mulai Lontong Balap hingga Lontong Kupang ada. Secara rasa, mantap! Petisnya sangat terasa. Secara kuantitas, benar-benar cocok. Ini adalah porsi Galih Satria, wkwkwkwk. Kurang puas dengan satu porsi Tahu Tek, saya nambah dengan seporsi lagi Rujak Cingur. Manstap! Kerinduan terpuaskan.

Tapi, hei… ini kan Fatmawati Selatan? Ini kan… jalur saya dulu waktu ke Pondok Cabe?

Another… … … … .. .. ..

Switch to our mobile site