Membuat Java Servlet

Posted by: on Feb 8, 2008 | 15 Comments

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:

Java Reporting Tool

Posted by: on Jan 23, 2008 | 6 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.

Membangun Aplikasi Web-Based dengan Java Enterprise: Pendahuluan

Posted by: on Nov 28, 2007 | 20 Comments

SERI 1: PENDAHULUAN

Sekarang, aplikasi web-based sedang mengalami perkembangan yang sangat pesat, menggantikan aplikasi desktop-based. Ini dikarenakan kepraktisannya dimana pengguna tidak perlu melakukan instalasi aplikasi di desktop masing-masing – cukup buka browser dan menuju server tempat aplikasi tersebut dipasang.

Java sendiri memiliki cabang yang menangani masalah aplikasi web-based ini yang dinamakan Java Enterprise Edition. Cabang ini sebenarnya ruang lingkupnya sangat luas, yaitu ruang Enterprise yang khusus menangani aplikasi-aplikasi berskala besar dan membutuhkan reliabilitas yang tinggi. Web-based application, karena merupakan aplikasi yang multitier, tentu saja termasuk dalam cabang ini.

Apa saja kunci dari aplikasi enterprise? Paling tidak ada beberapa kunci, yaitu:

  • Reliabilitas. Ketahanan aplikasi untuk tetap tangguh melayani permintaan dalam waktu yang panjang.
  • Skalabilitas. Jumlah penggunaan aplikasi yang berkembang dengan cepat dan banyak. Skalabilitas juga bisa diartikan server-server penyusun aplikasi bisa berkembang dalam jumlah yang banyak.
  • Multitier. Satu aplikasi enterprise memerlukan lebih dari satu tier (bagian) yang menyusunnya. Misalnya, client, application server, database server, dan middle tier sebagai penghubung client dan application server.
  • Networked. Kata kunci ini muncul tidak terelakkan dengan adanya tiga kunci di atas.

Java telah memfasilitasi pembuatan aplikasi seperti ini dengan menyediakan sebuah sistem dan bingkai kerja (framework) yang khusus didesain untuk aplikasi enterprise sehingga memudahkan developer. Fitur-fitur apa saja yang disediakan oleh Java? Banyak sekali, di antaranya adalah yang saya sebutkan di bawah ini:

  1. Mekanisme komunikasi antara client dan server.
    Protokol komunikasi yang paling umum digunakan adalah HTTP. Java memiliki struktur mekanisme yang paling dasar untuk menangani protokol HTTP, yaitu Java Servlet.
  2. Kit dan berbagai komponen untuk penyajian antar muka pengguna, atau user interface.
    HTML hanya menyediakan komponen user interface yang sangat dasar. Berdasarkan komponen tersebut, Java Enterprise menyediakan komponen-komponen tambahan yang memudahkan penyajian isi, misalnya seperti validasi otomatis, komponen kalender, komponen auto-complete, dan sebagainya. Java Server Pages, adalah kunci dari nomor 2 ini.
  3. Persistent Connection dan Object Relational Mapping.
    Aplikasi enterprise nyaris tidak bisa dipisahkan dari koneksi ke database. Karena Java adalah bahasa yang sangat berorientasi objek, maka Java menyediakan mekanisme khusus untuk menangani database relasional secara object-oriented. Data-data pada database disimpan dalam objek-objek yang telah didefinisikan, sehingga sangat memudahkan kita untuk melakukan operasi database (Create, Update, Delete, Select) dengan langsung mengakses objek tersebut. Standar Java Enterprise yang mengurusi masalah ini adalah EJB (Enterprise Java Bean).

Java Enterprise Edition sebenarnya hanyalah spesifikasi-spesifikasi yang ditulis dalam standar JSR. Oleh karena itu dalam implementasinya ada beberapa model bingkai kerja Java Enterprise yang didukung oleh vendor-vendor tertentu. Apa saja implementasi standar JSR yang didukung resmi oleh vendor-vendor besar seperti Sun dan Oracle? Ada Java Server Faces, Java Server Pages, dan Enterprise Java Bean (EJB).Selain vendor-vendor resmi, beberapa komunitas juga mengembangkan standar mereka sendiri untuk membangun aplikasi enterprise. Berbasis Java, ada bingkai kerja semacam Struts 2, Spring, dan semacamnya. Aplikasi-aplikasi ini meskipun tidak mengimplementasikan JSR, telah cukup untuk membuat aplikasi enterprise. Ini yang akan saya bahas nanti.

Aplikasi yang akan saya bangun nanti adalah sebuah aplikasi kosong yang memiliki fungsional enterprise. Framework yang saya gunakan adalah:

  1. Struts 2, framework yang mengatur hubungan antara client dan server. Struts 2 memiliki roh dari Webwork 2.
  2. Spring, framework untuk mengatur MVC (Model View Controller).
  3. Hibernate, framework untuk Object Relational Mapping. Semacam Entity EJB jika di standar Java Enterprise.

See you at the next posting

PS: Susahnya menulis teknis pemrograman aplikasi dalam bahasa yang tidak terlalu mengawang-awang *keluh…

A Little Note About Templating With Freemarker

Posted by: on Sep 17, 2007 | 2 Comments

Freemarker Template Engine is a library which is used to make a template that it can be dynamically merged with dynamic data. Actually we can generate this template by hard coded directly in hot code. But the lack of this method is that if we want to change the static side of template, we have to recompile the code.

Recompile the code? It sounds easy things to do for you? Not really. In my world, recompile the code means that we have to redeploy the application to J2EE server again. Sometimes it’s so hurting for me.

With freemarker, the static side of template can be saved in separate file. We don’t need to recompile the code conform to the template changes.

The idea is simple: You need two things, the static side of template which is saved in separate file, load your dynamic content, and “merge” this two things into one package of String by freemarker engine.

You can learn freemarker more details on: http://freemarker.sourceforge.net

Cuplikan dari catatan kecil saya tentang template engine freemarker. Jika tertarik dengan freemarker, silakan mempelajarinya di website-nya. Dokumentasinya termasuk mudah untuk dipelajari dengan cepat. Saya menuliskannya dalam bahasa Inggris, itu kebetulan saja. Nggak usah dikritik soal grammar-nya, bahasa Inggris saya memang jelek kok

Catatan tersebut bisa didownload di box saya.

Java Decompiler

Posted by: on May 6, 2007 | 21 Comments

Sebuah Java Decompiler, seringkali diperlukan untuk mengetahui source code suatu binary Java yang diakhiri dengan ekstensi *.class itu. Mungkin untuk mengetahui alur sebuah library yang tidak menyertakan source code-nya, atau juga mungkin untuk mem-bypass fungsi keamanannya hihihi… ) Berbeda dengan program-program yang dikompilasi dengan menggunakan native compiler seperti GCC atau C/C++, kode binary Java dikompilasi hingga tingkat medium (disebut byte code) yang akan di-interpretasikan oleh Java Virtual Machine. Walhasil, proses dekompilasinya akan menghasilkan sebuah source code Java yang benar-benar cantik dan mudah dibaca. Bandingkan dengan hasil dekompilasi program binary yang dikompilasi dengan native compiler, hasil maksimal decompiler adalah bahasa assembler-nya (hiii… takuut).

Saat ini, saya mengandalkan JAD sebagai decompiler yang cepat dan handal. Sebuah tool command-line-based yang cerdas, yang bisa melakukan dekompilasi sebuah source Java dengan nyaris sempurna. Lisensinya juga free. Program ini melakukan dekompilasi sebuah file *.class dan dikembalikan dalam bentuk file *.jad. File ini berisi source code Java dari *.class tersebut.

Antar Muka Grafis

Menggunakan command line, terkadang menyesakkan. Oleh karena itu, ada banyak program-program yang membuat antar muka yang nyaman untuk menjalankan program ini. Tinggal membuka file *.class dengan antar muka tersebut, maka program tersebut memerintahkan JAD untuk mendekompilasi, dan hasilnya langsung dibuka di text editor milik antar muka ini sehingga rasanya, membuka file *.class serasa membuka file teks berisi source code Java saja. Sangat nyaman.

Program antar mukanya, seperti yang di-list oleh homepage JAD, ada cukup banyak. Ada beberapa yang saya coba, di antaranya adalah DJ Java Decompiler, FrontEnd Plus, dan Cavaj Java Decompiler. Dari ketiga tools ini, menurut saya DJ-lah yang paling nyaman. Sayangnya, DJ tidak free dan harus bayar (baca: ngecrack). Untuk Cavaj, saya tak berhasil dalam instalasi sehingga tak bisa berbicara banyak mengenai antar muka ini. Paling masuk akal adalah FrontEnd Plus, ia juga free untuk digunakan. Sayangnya, program ini termasuk program Jadul dan development-nya terhenti di tahun 2001. Jadi tampilannya, sangat jadul dan jelek.

Sebenarnya ada satu lagi yang sangat menarik perhatian. Ia adalah JadClipse. Antar muka ini adalah plugin Eclipse. Jadi, dengan plugin ini, Eclipse memiliki kemampuan tambahan untuk membuka file *.class dengan Java editornya yang sangat hebat (syntax coloring, formatting, folding, dll). Sangat menggiurkan jika Eclipse memiliki fitur seperti ini. Sayangnya, saya tak berhasil melakukan instalasi plugin ini. Meskipun secara teori sudah terinstall dengan baik, namun ia tetap gagal melakukan dekompilasi. File *.class tetap dibuka oleh viewer default Eclipse, yang hanya menyajikan hasil disassembling-nya, bukan decompiling-nya. So sad Ada yang bisa bantu saya dengan share pengalaman tentang plugin ini?

Mungkin, kalau nanti ada waktu luang, saya akan membuat plugin sendiri untuk saya sendiri. Saya sangat tertarik dengan fitur ini di Eclipse.

Gateway HTTP dan SMB

Posted by: on Apr 14, 2007 | 6 Comments

Maaf, topik kali ini sangat niche. IT sentris dan Java sentris

Bagi seorang administrator web yang pernah menangani web server, pasti tahu apa yang dinamakan directory browsing dan virtual directory. Directory browsing adalah opsi untuk menampilkan isi suatu directory di dalam webroot ketika welcome file (misalnya index.html, index.php, default.asp) tidak ditemukan. Sedangkan virtual directory adalah setting yang menyebabkan suatu folder di luar webroot bisa ditampilkan dan diakses melalui HTTP.

Semua webserver mendukung fitur virtual directory ini. Apache memiliki Alias, Tomcat memiliki Context Path, dan OC4J/OAS memiliki Virtual-Directory. Akan tetapi, sebatas yang saya tahu, mereka hanya bisa melakukan mapping untuk directory yang ada di drive lokal mereka saja. Jika directory tersebut hasil mapping dari sebuah network drive melalui protokol SMB (Server Message Block — Map Network Drive (Windows), Network Neighbourhood (Win98), Samba (*nix)), maka mereka akan kehilangan kesaktiannya.

Dengan menggunakan library CIFS (Common Internet File System), spesifik ke Java application dengan JCIFS, saya membuat sebuah servlet java yang memiliki kemampuan directory browsing dengan directory yang ditampilkan berasal dari network drive dari sebuah SMB Server. Kelakuan servlet ini persis dengan directory browsing milik Tomcat.

Bagaimana detailnya, silakan download artikel di bawah ini:

Gateway untuk HTTP dan SMB

Kali ini tersimpan dalam format PDF. Office di komputer saya telah diupgrade ke Office 2007 dan MS Word telah memiliki kemampuan konversi format ke PDF (meskipun saya rasa fitur ini sangat-sangat terlambat). Selamat menikmati weekend

Administrasi Oracle Container 4 J2EE

Posted by: on Feb 23, 2007 | 10 Comments

Oracle memiliki application server yang handal bernama Oracle Application Server yang sebenarnya roh di dalamnya adalah Orion Application Server. OAS merupakan application server yang lengkap dan kokoh, mendukung servlet hingga webservice. OAS sendiri merupakan produk komersial yang mahal, namun servlet containernya yang populer disebut Oracle Container for J2EE (OC4J) didistribusikan dengan free.

Nah, kali ini aku berhasil menyusun dokumentasi semacam “getting started” yang membahas bagaimana melakukan administrasi awal OC4J. Versi mayor OC4J yang kubahas adalah versi 10.1.2.x, kompatibel dengan spesifikasi J2EE 1.3, meskipun versi mayor terbaru adalah 10.1.3.x yang kompatibel dengan J2EE 1.4. Sebabnya adalah adanya bug yang sangat menjengkelkan pada OC4J 10.1.3 sehingga membuat aplikasi gabungan maut webwork+hibernate+spring menjadi tidak berjalan semestinya.

File-nya dapat didownload di link di bawah ini, maaf menggunakan format Microsoft Word karena tidak punya Adobe PDF creator. Terima kasih untuk Mas Aby yang mengkoreksi dokumentasi ini.

Silakan, ini lho link-nyah!!

Switch to our mobile site