Entries Categorized as 'Java'
November 28, 2007
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:
- 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.
- 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.
- 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:
- Struts 2, framework yang mengatur hubungan antara client dan server. Struts 2 memiliki roh dari Webwork 2.
- Spring, framework untuk mengatur MVC (Model View Controller).
- 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…
Posted in Java
13 Comments »
September 17, 2007
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.
Posted in Java
2 Comments »
May 6, 2007
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. 
Posted in Java, Review
17 Comments »
April 14, 2007
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 
Posted in Java
6 Comments »
February 23, 2007
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!! 
Posted in Developer, Java, Oracle
7 Comments »