SERI MEMBANGUN APLIKASI WEB-BASED DENGAN JAVA ENTERPRISE
Dalam sesi tutorial kali ini, kita akan membuat servlet sederhana dalam langkah demi langkah dengan tujuan memahami bagaimana gaya Java menangani sebuah mekanisme website (request dan response) dalam mekanisme protokol HTTP. Seperti yang telah saya tulis di panduan ini, Java Servlet memiliki beberapa kelemahan yang sangat signifikan. Tetapi saya tetap mengantarkan konsep ini daripada saya memperkenalkan cara yang lebih mudah seperti JSP. Alasan utama saya, untuk memperkenalkan kepada Anda konsep sistem Java Enterprise dengan bertumpuk-tumpuk servlet, Anda harus mengerti konsep servlet terlebih dahulu karena framework-framework tersebut sebenarnya juga tersusun dari servlet.
Tutorial ini membahas mengenai pembuatan servlet sangat sederhana dengan menggunakan IDE Eclipse Europa versi 3.3. IDE ini sangat memudahkan kita dalam melakukan development sistem Java Enterprise. Servlet yang akan kita buat hanya menampilkan form, meminta pengunjung memasukkan nama, dan menyapanya kembali dengan nama yang telah dimasukkan tersebut.
Pada bagian akhir tutorial, kita melakukan deployment pada server production dengan menggunakan Apache Tomcat.
Silakan mendownload panduan ini (dalam format PDF) di sini: Membuat Java Servlet.
Jika Anda memerlukan source code lengkap beserta hirarki directory-directory-nya, silakan download di sini (dalam format ZIP): Source Code Lengkap.
Selamat mencoba. 
Link yang mungkin terkait:
Posted in Java
8 Comments »
Setelah sekian lama berada di alam fotografi, ada rasa rindu juga untuk menulis di dunia programming. 
Ada yang kenal Crystal Report? Itu lho, reporting tool yang saya kenal dia berjaya di saat Visual Basic 6 di puncak popularitasnya. Pernah memakainya? Biasanya kita memakai reporting tool untuk memproduksi sebuah laporan yang outputnya secara fleksibel dalam berbagai format seperti PDF, dokumen MS-Word, dokumen MS-Excel, dsb.
Java memiliki banyak reporting tool, baik yang berlisensi free maupun yang propietary. Saya akan membahasnya beberapa — tentu saja, menurut subjektivitas dan sedikit pengalaman saya.
Oracle Report
Produk dari Oracle ini propietary. Anda harus membayar lisensi jika ingin menggunakannya dalam lingkungan produksi. Keunggulan utama Oracle Report adalah manajemen data source-nya. Karena produk Oracle, maka Oracle Report adalah report standar semua hal yang berbasis Oracle. Hal yang menjengkelkan dari Oracle Report adalah lembar kerja desain layout-nya. Tidak fleksibel. Sulit memindahkan sebuah field di section tertentu ke section yang lain. Salah-salah yang keluar adalah error dan celakanya, kita tidak bisa melakukan undo banyak-banyak. Karena tidak bisa kembali, seringkali solusi satu-satunya adalah memulai dari awal (hapus semua, dan buat lagi) 
Homepage: Oracle Report.
Actuate e.Report Designer
Produk dari Actuate corp. ini bersifat propietary. Saya mengenalnya karena IBM Maximo (dulu milik MRO) memakai ini sebagai report standar-nya. Sangat fleksibel. Lembar kerja actuate memakai slot-slot yang bisa diibaratkan rak-rak kosong yang bisa diisi macam-macam, mulai dari koneksi, SQL Query terpisah, bahkan SubReport yang berisi slot-slot kosong lagi. Setiap Report Section memiliki blok-blok Before Section, After Section, Page Header, Column Header, Detail, dll yang masing-masing menandakan dimana report akan ditampilkan, apakah sebagai header setiap halaman, apakah sebagai footer, tergantung penempatannya. Actuate adalah report tool yang menurut saya paling nyaman dan paling enak dipakai.
Homepage: Actuate e.Report Designer
Jasper Report
Jasper mungkin adalah reporting tool open source yang paling populer. Memiliki IDE designer terpisah yang dinamakan iReport, Jasper merupakan tool yang fleksibel, utamanya dalam hal data source. Banyak sumber data yang didukung Jasper selain database relasional via SQL, salah satunya bisa bersumber dari prosedur-prosedur Java. Jadi, Jasper bisa menerima sebuah java.util.List untuk dijadikan data source-nya. Hal ini dimungkinkan, karena Jasper bersifat embedded dan dikompilasi menjadi kode binari Java juga.
iReport Designer juga sangat mudah. iReport memperkenalkan istilah yang disebut band sebagai container dari field-field report. Ada band title, pageHeader, columnHeader, detail, columnFooter, lastPageFooter, dan summary. Meskipun fleksibel, sayangnya masih banyak hal yang tidak bisa dilakukan oleh Jasper. Misalnya dukungan terhadap format HTML. Meskipun mendukung format HTML lewat StyledText-nya, tetapi tag HTML yang didukung sangat-sangat sedikit dan jika Jasper menemukan tag yang tidak ia kenal, ia langsung mereset diri menjadi unformated text sehingga semua tag HTML akan ditampilkan seluruhnya, bukan dalam kondisi terformat. Selain itu, dalam beberapa kasus, Jasper tidak bisa mengatur data memanjang ke kanan. Ia hanya bisa scrolling down ke bawah, tapi tidak ke kanan. Kita kadang perlu membuat susunan yang memanjang ke kanan dan sayangnya hal itu tidak didukung oleh Jasper.
Dan seperti produk-produk open source lainnya, Jasper miskin dokumentasi. Sebagian besar pengetahuan saya tentang Jasper berasal dari source code-nya, bukan dokumentasi. Dokumentasi yang buruk yang tidak tersedia bebas cukup menyulitkan developer. Hanya developer yang geek yang mau membongkar kode sumber. Dan untungnya, hampir semua developer relatif geek dengan tingkat geek yang berbeda-beda. 
Homepage: Jasper Report dan iReport
Eclipse Bussiness Intelligence Reporting Tool (Eclipse BIRT)
Di bawah proyek Eclipse Foundation, BIRT yang disponsori langsung oleh Actuate corp. (pemilik Actuate e.Designer) muncul dengan pendekatan yang berbeda dan menjanjikan. Ada kemiripan dengan Actuate meskipun tidak persis sama. BIRT menggunakan IDE berbasis Eclipse dan memiliki pendekatan pendesainan seperti ketika kita mendesain halaman HTML dengan Macromedia Adobe Dreamweaver. Jadi kita diberi lembar kerja kosong, tanpa slot (istilah Actuate) atau band (istilah Jasper). Kita bebas menaruh sebuah field di mana saja.
Cukup menjanjikan. Sangat menjanjikan bahkan. Kekurangan Jasper yang tidak bisa merender HTML dan tidak bisa memanjang ke kanan diatasi oleh BIRT. Apalagi produk ini bersifat open source. Namun sayangnya, ketika saya mencoba membuat report dengan SQL yang sederhana, — tidak terlalu banyak nested SQL, hanya menampilkan 75 kolom yang dijoin dari 2 tabel –BIRT cukup terengah-engah dengan responnya yang begitu lambat. Harus melakukan beberapa kali tuning viewer (bongkar source code) baru BIRT bereaksi dengan cepat. Kalau query sederhana saja begitu lambat, apalagi query yang rumit?
Tetapi mungkin saya yang masih perlu banyak belajar tentang BIRT. Tool ini sangat menjanjikan dan bisa jadi menaklukkan popularitas Jasper Report di dunia open source reporting tool.
Homepage: Eclipse BIRT.
Posted in Java, Review
2 Comments »
Masih mengenai masalah performance tuning pada Oracle SQL Query. Dalam kasus correlated subquery, kita biasa menggunakan IN dan NOT IN. Misalnya
SELECT * FROM tabel1 a
WHERE a.kolom1 NOT IN
( SELECT b.kolom1 FROM tabel2 b)
Dalam kasus yang sama, kita juga bisa menggunakan klausa EXISTS dan NOT EXISTS. Misalnya
SELECT * FROM tabel1 a
WHERE a.kolom1 NOT EXISTS
( SELECT b.kolom1 FROM tabel2 b)
Apa beda dua statement SQL ini? Klausa IN dan NOT IN memeriksa apakah sebuah nilai terdapat dalam list (bisa array, bisa correlated subquery seperti contoh di atas) sedangkan klausa EXISTS dan NOT EXISTS hanya memeriksa keberadaan ada atau tidaknya row pada suatu list. Secara performance, tentu jauh lebih cepat EXISTS daripada IN dalam hal correlated subquery.
Kapan kita menggunakan IN? Sebisa mungkin, gunakan EXISTS, IN digunakan dalam hal seperti misalnya contoh di bawah ini:
SELECT * FROM tabel1 a
WHERE a.kolom1 IN (’1′, ‘2′, ‘3′)
Posted in Oracle
10 Comments »
Ini adalah Oracle SQL Performance Tuning tips and trick dari Mas FF. Katakanlah kita punya SQL seperti ini,
SELECT *
FROM tabel t
WHERE LOWER(t.kol)
LIKE ‘%hehe%’ AND SUBSTR(t.kol2,2,4) = ‘AB’
Terlihat familiar? Ini memang query standar kok. Tapi apakah Anda tahu implikasi fungsi LOWER dan SUBSTR di masalah kecepatan? Ternyata proses LOWER dan SUBSTR adalah me-lower-case-kan seluruh baris di kolom t.kol tersebut dan men-substring-kan seluruh baris di kolom t.kol2 sebelum membandingkannya dengan hehe dan AB. Jika jumlah barisnya terlalu banyak, tentu saja akan terjadi degradasi kecepatan yang sangat berarti (baca: signifikan).
Solusi: Gunakan fungsi-fungsi semacam LOWER dan SUBSTR secara bijak. Jika sudah yakin suatu kolom dalam lowercase, maka input sebelah kanan (dalam hal ini hehe) harus diubah ke lowercase juga. Demikian pula untuk fungsi SUBSTR.
Demikian tips dan trik singkat SQL Tuning. 
Posted in Oracle
3 Comments »