Wednesday, June 29, 2005

Automation with Ant

Pernah bikin Java program yang lumayan komplek tapi capek compile ,gabungin dalam jar terus pengen running ? Ant adalah jawabannya. Ant merupakan build file seperti halnya make, tapi bedanya Ant dibuat pake dan untuk Java sehingga dijamin multiplatform. Dengan Ant maka kita melakukan otomasi pada development dan pendistribusiannya :D.

Ant memiliki 2 file konfigurasi yang utama , yang pertama adalah build.xml. File inilah yang dibaca oleh Ant sehingga melakukan proses compiling, jar-ing dan distributing. Disini u harus memasukkan tag2 dalam format xml. Yang kedua adalah build.properties, disini disimpan variable2 yang nantinya akan digunakan didalam build.xml. Biasanya yang ditaruh disini adalah semacam directory path, classpath dll. Setelah semua beres, dengan sekali ketik : ant maka proses otomasi akan dilakukan.

Dan menurutku pada saat ini dan masa mendatang proses otomasi dalam suatu project sangat mutlak digunakan, so belajarlah dan implement menggunakan Ant. Oke ini alamat yang kmu perlukan untuk mendapatkan info tentang Ant.

Automation makes jobs to be easier and simplier.

Tuesday, June 21, 2005

IntelliJ IDEA

IntelliJ IDEA merupakan salah satu Java IDE yang cukup populer dikalangan developer java, ya soalnya aku juga pake ini :D. Ada beberapa feature dari IDEA ini yang sangat membantu developer java dalam hal bikin program, karena akan mempermudah dan mempercepat proses coding. Dengan tampilan GUI yang sangat modern, IDEA (terbaru versi 5.0, tapi aku masih pake yang 4.5 ) memberikan code inspection dimana memberikan pesan live error ketika ada code yang tidak sesuai dengan pattern Java. Klo temen2 membutuhkan code completion , maka tidak salah pake IDEA karena banyak code completion yang disediakan, mulai dari method completion sampai class completion.

Untuk masalah refactoring, IDEA jagonya, mulai dari refactoring EJB's code sampai supporting untuk JDK 1.5. Selain itu supporting terhadap third-party juga OK, seperti Application Server (Web Logic, Tomcat), CVS, SourceSafe, StarTeam, Ant build dan JUnit. Bahkan untuk developer J2EE, disediakan hot swap debugging yaitu melakukan compile code dan langsung bisa dibaca di application server tanpa harus restart server. Ini sangat membantu banget lho :p. O ya bagi yang ga tau refactoring, refactoring adalah usaha untuk merubah struktur code program (internal behaviour) dengan tidak merubah/mempengaruhi jalannya program itu sendiri(external behaviour). Di IDEA terdapat fitur garbage collection, jadi klo memory PC temen2 udah kecil bisa langsung aja execute button di kanan bawah, maka memory akan nambah lagi .. keren banget :o.

KLo pengen tau lebih jauh , coba kunjungi IntelliJ IDEA, tapi ini ga gratis lho dan ga open-source juga. Jika pengen yang free dan open-source bisa coba IDE lain seperti Eclipse, Emacs, dan NetBeans. Masih kurang ? coba lagi deh untuk yang commersial ini JDeveloper n JBuilder. He4x... ato malahan bingung mau pake yang mana, klo gitu ini aku kasih Java IDE Comparison (PDF) biar tau kelebihan dan kekurangan masing2. Tapi yang pasti coding pake Java lho yah :D.

Monday, June 20, 2005

Oracle Toplink

Toplink adalah framework untuk mapping data dari Relational DB ke dalam Objek Java. Fungsinya hampir sama dengan tool ORM (Object/Relational Mapping) yang sering dipake saat ini seperti Hibernate dan iBATIS, dan hampir sama pula dengan standard spesifikasi dari Java yaitu JDO (Java Data Objects). Cuman perbedaannya sih hanya dalam algoritma implementasinya. Pada saat ini versi yang dipake adalah Toplink 10.1.3.

Menurut dari arsitekturnya, Toplink ini bisa dipake didalam DBMS yang berbeda, Application Server yang berbeda, dan arsitektur J2EE yang berbeda. Hmm ... jadinya bisa di sebut multi-??? ;p. Pada intinya Toplink akan support jika arsitektur yang dipake juga support JDBC karena Toplink akan menggunakannya. Dengan menggunakan Toplink maka objek dari RDBMS (Relational Database Management System) akan bisa dibaca di Java seperti Java Bean yang dalam hal ini disebut model. Jadinya nantinya kita akan bermain-main dengan setter/getter dari objek bean. Mengapa bisa terjadi ? karena Toplink punya file mapping , berupa xml, yang akan mendefinisikan konversi antara DB type dengan Java type. Toplink juga mendukung adanya constraint foreign key dengan cara merepresentasikan sebagai reference object dalam objek Java. Hmm... tapi kayaknya ga bakalan dipake klo RDBMS-nya pake MySQL (itu pun klo bisa pake Toplink) karena setauku di MySQL ga ada yang namanya foreign key :(.

Di project yang sedang aku kerjakan, aku juga pake Toplink. Tapi sayang kita cuman dikasih layer lagi berisi method2 buatan programmer Toplink untuk mengakses objek2 yang dihasilkan Toplink agar penggunaan sintaknya seragam. Meskipun begitu aku masih bica baca dari code2nya :D. Intinya didalam Toplink, session itu dimasukkan ke dalam Unit of Work, jadi paling hati2 klo main sessionnya. Misal jika session modenya Non transaction ya jangan coba2 untuk mengupdate data, trus jangan sampe dalam 1 method membikin dua session transaction karena session terakhir yang akan dipake untuk mengupdate data. Karena Toplink menyimpan perubahan dalam cache, nah setelah method selesai dikerjakan maka baru di commit, jadinya session yang sama akan tertindih dengan yang paling akhir. Dan itu merupakan kejadian paling menyusahkan ketika project memasuki phase integration :D, karena harus cross check dengan module lain. O ya klo pengen tau lebih detil coba kunjungi Oracle TopLink.
Selamat belajar dan mencoba :D.

Friday, June 17, 2005

JSPs (Java Stored Procedures )

Jangan lupa dengan huruf s kecil dibelakang, soalnya ntar keliru sama JSP (Java Server Page) meskipun masih kerabat keluarga Java :p. Apa itu JSPs ? store procedures yang memakai bahasa Java, mungkin bagi kita selama ini terbisa dengan penggunaan PL/SQL, JSPs bisa dijadikan alternatif untuk bahasa codingnya. JSPs ini didukung oracle mulai versi 8.1 , karena disitu ada JServer yang merupakan JVM dalam DBMS. Jadinya sekarang apa yang akan kita pake JSPs ato PL/SQL ? menurut pakarnya sih keduanya bisa dipake dengan disesuaikan kebutuhan. Misal jika program kita memang cuman berurusan dengan DB Object dan SQL maka kita lebih mengedepankan PL/SQL, nah klo berhubungan dengan SQL,XML, J2EE dan Web Services maka pakailah JSPs.

Gimana caranya ? Ada beberapa langkah utama yang harus dilakukan, aku coba testnya pake TOAD wizard :D, klo mau pake command line bisa merujuk pada referensi yang aku sertakan dibawah. Pertama yang harus dibikin adalah Java code, perlu diperhatikan dalam pemilihan type indentifiernya, karena ini nantinya akan diconvert ke type yang didukung oleh Oracle, Data Access and Manipulation: Oracle Types vs. Java Types. Kmu bisa bikin codenya pake notepad ato pake Java IDE seperti JBuilder, IDEA, eclipse dsb.

Yang kedua adalah melakukan load objek java kedalam DBMS, kmu bisa menggunakan loadjava tool command line ato pake DDL CREATE JAVA. Maksud disini adalah memasukkan objek java ke dalam DBMS agar nantinya bisa dipanggil lewat JVM DBMS. O ya klo di TOAD pake Java Manager :D. Setelah objek java ke load ke DBMS, langkah berikutnya adalah melakukan publish dari class java tersebut. Gunanya publish ini adalah untuk membuat wrapper PL/SQL yang digunakan untuk memanggil objek Java. Disini bisa dibuatkan package bisa juga tidak. Di dalam PL/SQL yang dihasilkan kmu dapat menambahkan implementasi method2 yang selalu ada pada objek java seperti : getClass, hashCode, toString, wait, notify dll. Nah PL/SQL inilah nantinya yang akan dipanggil oleh procedure PL/SQL yang lain.

Jika perlu memberikan privilege maka berikan kepada user2 tertentu saja yang boleh execute. Udah deh harusnya tinggal panggil aja dan cek hasilnya, klo masih belum berhasil coba baca step by step di bawah ini. Semoga bermanfaat :p.

Calling Java from PL/SQL
Simplify with Java Stored Procedures

Wednesday, June 15, 2005

PL/SQL , Using "Case"

Kemarin temen aku ada yang punya problem, misal dia punya table yang namanya TABLE_1 yang didalamnya ada 3 field yaitu A, B, dan C dengan isi terserah.
Table_1
A B C
--------------------------

Kemudian dia pengen melakukan select query untuk field A dan B dengan aturan :
1. Jika nilai B tidak sama dengan NULL maka isi B dengan '1'
2. Jika nilai B sama dengan NULL dan nilai C sama dengan NULL maka isi B dengan '2'
3. Selain itu isi B dengan '3'

Permasalahannya dia bingung bagaimana sintaknya yah ? :D
Klo menurutku sih kita bisa menggunakan sintaks CASE pada saat select query seperti di bawah ini :
SELECT T1.A,
(
CASE WHEN T1.B IS NOT NULL
THEN '1'
WHEN T1.B IS NULL
AND T1.C IS NULL
THEN '2'
ELSE
'3'
END
) B
FROM TABLE_1 T1
Dan seharusnya sih berhasil , soalnya aku udah coba dan jalan. Selamat mencoba :))