suhe arie's pages

Programmer juga manusia

Java Enterprise, mulai dari mana ?

Java Enterprise, J2EE, Java EE adalah istilah-istilah yang mungkin sulit dimengerti oleh sebagian orang, bahkan programer Java (yang baru) sekalipun. Di artikel kali ini, saya akan berusaha memberikan gambaran, apa itu Java Enterprise, dan bagaimana kita bisa memanfaatkannya dalam membangun sebuah aplikasi.

J2EE adalah singkatan dari Java 2 Enterprise Edition, dan sejak versi 5 berubah menjadi Java EE atau cukup Java Enterprise Edition. Java EE adalah sebuah spesifikasi, bukan berupa product berwujud nyata. Ada banyak vendor software atau komunitas opensource membuat software berupa application server yang mengikuti standard Java EE sehingga disebut Java EE compliant application server.

Application server ini memungkinkan kita untuk membuat aplikasi berskala enterprise dengan lebih mudah karena application server sudah menyediakan berbagai fasilitas yang siap untuk digunakan sebagai pendukung aplikasi kita.
Full Java EE compliant application server menyediakan berbagai service seperti web container, messaging, web service, mail, directory service, database connectivity, distributed transaction, remoting, persistence, dan lain lain.

Contoh application server adalah Glassfish, Oracle AS, JBoss, IBM Websphere, JRun, JOnAS, dll. Apache Tomcat adalah salah satu webserver/webcontainer untuk aplikasi web Java yang cukup terkenal, tapi bukan termasuk Java EE application server karena tidak menyediakan semua service yang ada di spesifikasi Java EE. Jika kita membuka website sun.java.com, dan menuju halaman tentang Java EE, maka kita bisa mendownload salah satu produk implementasi Java EE yang dibuat di bawah kendali Sun Microsystem, yaitu Sun Java System Application Server, yang sebenarnya adalah nama lain dari Glassfish application server.

Mengapa perlu ada Java EE ?

Continue reading

Advertisements

August 26, 2008 Posted by | Java, Java Enterprise | , | 12 Comments

Statement vs PreparedStatement vs Batch, Security and Performance

Jika kita membuat aplikasi yang memanipulasi database dengan plain JDBC, Statement dan PreparedStatement object mempunyai peranan yang penting. Keduanya sama-sama dapat digunakan untuk mengirim perintah query ke database. Sekarang, kita akan coba melihat apa yang membuat mereka berbeda.

Note: Source code untuk class DBManager bisa didapat disini.

1. Security attack: SQL Injection

Yang pertama, dilihat dari sudut pandang keamanan, khususnya terhadap serangan yang disebut SQL injection. Penyerang biasanya mencoba untuk menembus sistem dengan cara merusak SQL query yang kita buat. Triknya adalah dengan menggunakan susunan karakter, yang bila digabungkan dengan query sebenarnya akan menghasilkan nilai yang berbeda.

Berikut adalah tabel yang akan kita gunakan untuk percobaan.

CREATE TABLE `myblog`.`user_security` (
  `username` VARCHAR(50) NOT NULL DEFAULT '',
  `pswd` VARCHAR(255) NOT NULL DEFAULT '',
  PRIMARY KEY(`username`)
)
ENGINE = InnoDB;

Isi dengan sample data:

Dengan kode berikut, kita akan mencoba untuk menjalankan test menggunakan Statement dan PreparedStatement dengan input yang sama, yaitu:

username: aaa
pswd: bbb’ OR ‘1’=’1
Continue reading

August 21, 2008 Posted by | Database, Java | , , , , , , | 12 Comments

Pengolahan database dengan Java ? No problem

Aplikasi dan database adalah dua hal yang sangat berkaitan. Hampir mustahil rasanya jika kita membuat sebuah aplikasi yang cukup besar, tanpa adanya database. Sebaliknya, dengan database yang besar, tapi tidak ada aplikasi, user akan mengalami kesulitan saat akan melakukan pengolahan data. Untuk ini semua, kita membutuhkan bahasa pemrograman yang menyediakan fasilitas untuk melakukan pengolahan database dengan mudah.

Java menyediakan fitur pengolahan database ini dengan cukup baik melalui teknologi yang dinamakan Java Database Connectivity (JDBC). JDBC ini sebenarnya adalah sebuah spesifikasi yang mengatur bagaimana sebuah database server dapat diolah dari aplikasi Java. Implementasi dari JDBC ini dibuat oleh masing-masing vendor database berupa sebuah library yang berisi kumpulan class yang mengikuti standar/spesifikasi JDBC, biasanya disebut juga sebagai JDBC driver. Oleh karena itu, masing-masing database mempunyai driver JDBC sendiri seperti Oracle menamainya SQLJ/JDBC, MySQL menamainya MySQL Connector/J.

Lho ? Jadi cara akses databasenya beda-beda, sesuai dengan database yang digunakan ?
Untungnya tidak demikian, jangan khawatir. Idealnya, kita bisa menggunakan konsep yang sama, cara pengolahan yang sama, source code yang sama, class yang sama untuk mengolah berbagai macam database yang sudah memiliki implementasi JDBC driver. Jadi jika kita ingin menghubungkan aplikasi Java kita dengan database lain, kita cukup mengubah JDBC driver dan connection propertiesnya saja.

Pada contoh kali ini kita akan melakukan pengolahan data sederhana menggunakan database MySQL. Untuk ini, kita membutuhkan MySQL versi 5 dan MySQL JDBC Driver versi 5.0. Silahkan install MySQL servernya, jika belum terinstall. Ada baiknya anda menginstall MySQL GUI Tools juga untuk memudahkan administrasi database. Untuk Java nya, Anda dapat menggunakan IDE apa saja, saya menggunakan Eclipse IDE.

Continue reading

August 21, 2008 Posted by | Database, Java | , , | 12 Comments

Eclipse – Java IDE, untuk apa ?

Kenapa kita butuh yang namanya IDE ?

Kita bisa membuat sebuah aplikasi Java, hanya dengan bermodalkan notepad, textpad, editplus, vi, vim, dan berbagai macam editor teks lainnya untuk mengetik source code kemudian meng-compile nya dengan menggunakan shell/command prompt. Tidak ada yang salah dengan metode ini, malah saya sangat menganjurkan pada setiap teman-teman yang baru belajar untuk memulai pembelajarannya dengan metode seperti ini. Tujuannya, agar kita bisa paham tentang semua yang kita kerjakan sampai ke low level, sebelum kita menggunakan perangkat lain yang serba otomatis dan canggih. Sehingga, jika suatu saat kita menghadapi masalah dengan perangkat otomatis tersebut, kita bisa mencari penyebabnya dan menyelesaikannya sendiri.

Jika kita hanya membuat aplikasi yang berskala kecil, mungkin kurang dari 10 file source code, dengan 100 baris per file nya, metode di atas masih bisa dilakukan. Tapi, jika project yang akan dikerjakan adalah project besar, terdiri dari ratusan file source code, total ratusan ribu baris kode, dengan puluhan library, maka kita membutuhkan perlengkapan perang yang bisa mengatur semua itu dengan baik dan menyediakan berbagai fasilitas untuk mempermudah kita dalam membangun aplikasi. Perangkat itulah yang disebut sebagai Integrated Development Environment (IDE).

Di Java, kita mempunyai banyak pilihan IDE, di antaranya Eclipse, Netbeans, IntelliJ IDEA, Borland JBuilder, Oracle JDeveloper, dan lain lain. Eclipse dan Netbeans adalah IDE yang banyak digunakan karena gratis dan open source.

Kali ini, kita akan mencoba membuat sebuah aplikasi sederhana dengan menggunakan Eclipse sebagai IDEnya. Langkah-langkahnya sebagai berikut: Continue reading

August 16, 2008 Posted by | Java | , , , , | 29 Comments

Blank waktu TA, salah siapa ?

Saya baru saja baca posting seseorang di salah satu forum programmer. Sebenarnya, bukan sebuah posting yang luar biasa tapi tulisan tersebut mengingatkan saya pada beberapa posting senada yang saya pernah baca sebelumnya. I don’t want to offense or attack someone in this blog. I just want to share, and hope less people will do this embarrassing thing.

Topiknya adalah seorang mahasiswa yang akan memulai project tugas akhir / skripsinya. Permasalahannya ada pada kenyataan bahwa sang mahasiswa yang akan mengerjakan tugas akhir (TA) ini ternyata tidak memahami sama sekali alias nge-blank tentang apa yang harus dikerjakannya sebagai project TA.

Ada beberapa posting yang menarik perhatian saya.

1. Brainstorming.
Ini yang paling saya suka. Kalau ada mahasiswa akan memulai TA nya, tapi masih bingung dengan topik yang diambil, kemudian meminta masukan dari para forumer. Banyak kepala banyak ide, meskipun belum tentu masukannya diterima, tapi paling tidak bisa menambah wawasan si mahasiswa dan menjadi bahan pertimbangan untuk mengambil topik untuk TA nya.

2. Posting lowongan.
Posting berisi lowongan parttime programmer untuk project kecil. Ternyata ini adalah lowongan untuk programmer yang bersedia untuk menjadi mentor untuk TA si mahasiswa. Yang lebih parah, ada yang minta dibuatkan aplikasi dari nol sampai jadi. Continue reading

August 14, 2008 Posted by | Inside my mind | , , | 6 Comments

Lebih dari sekedar HelloWord

Artikel ini merupakan lanjutan dari artikel sebelumnya, yang berhenti sampai membuat dan manjalankan aplikasi yang terkenal, HelloWorld. Sekarang kita akan belajar apa itu classpath, imports, file java, file class, file jar, swing, dan hal-hal yang berkaitan erat dengan pemrograman Java lebih dalam daripada sekedar HelloWorld.

Saya akan tetap menggunakan editor sederhana seperti notepad dan melakukan semuanya secara manual. Mengapa tidak langsung pakai editor seperti Eclipse, Netbeans atau IDE canggih yang lain ?
Alasan pertama, karena ini akan membuat kita memahami “behind the scene things”, yang merupakan fundamental dari Java, sehingga ketika kita menggunakan IDE yang canggih, kita sudah mengetahui, apa yang sebenarnya terjadi.
Alasan kedua, supaya saya bisa berbagi tentang eclipse atau netbeans di artikel berikutnya… Hehe, it’s not a real reason friend 😀

Tipe Data

Java mengenal 2 macam tipe data. Yang pertama adalah tipe data primitif, yaitu byte, short, char, int, long, float, dan double. Yang kedua adalah tipe data object. Ini adalah tipe yang dibuat dari definisi class. Root class di Java adalah class Object, semua class yang ada di library java maupun yang kita buat sendiri adalah turunan dari class Object.

Ok, mari kita mulai dengan membuat aplikasi Kalkulator. Direktori kerja saya saat ini adalah C:\Java. Buka notepad, kemudian ketik kode berikut (saya tetap berpendapat bahwa mengetik lebih baik daripada copy and paste).

package suhearie.blog.morehelloworld;

public class Kalkulator {

public static void main(String[] args) {
if (args.length < 2) { System.out.println("Penggunaan: java Kalkulator operand1 operand2"); } else { System.out.println("Hasil: 5"); } } } [/sourcecode]

Continue reading

July 19, 2008 Posted by | Java | , , , | 9 Comments

Mencoba mengerti OOP

Pemrograman berorientasi objek atau Object Oriented Programming (OOP) menjadi sebuah fenomena yang mempunyai dampak sangat besar di dunia komputasi, terlebih setelah munculnya Java sebagai bahasa pemrograman yang mengimplementasikan konsep ini secara penuh. Artinya, di Java, segala sesuatu yang menyusun aplikasi terdiri atas kumpulan objek. Tidak ada satu komponenpun di Java yang dapat berjalan tanpa melibatkan objek. Ini berbeda dengan beberapa bahasa lain yang sebenarnya berkonsep prosedural, tapi menyelipkan konsep OOP di dalamnya. Beberapa persepsi yang tidak tepat tentang OOP, antara lain:

  • Menyebut hasil kompilasi dengan sebutan object, kemudian menyebut bahasa tersebut sebagai OOP
  • Menganggap event-driven programming adalah OOP, misalnya seperti yang ada di VB.

Melalui artikel ini, saya mencoba untuk menggambarkan secara sederhana seperti apakah konsep OOP tersebut dan memberi contoh implementasinya dalam bahasa Java. Jika Anda belum familiar dengan Java, artikel “Belajar Java, mulai dari mana” mungkin bisa membantu.

Continue reading

July 5, 2008 Posted by | Java | , | Leave a comment

Belajar Java, mulai dari mana ?

Java, my world, my passion..

Java is in the golden age, every programmer hears about “write once, run everywhere”. The promises are platform independent, open standard, pure object oriented, high performance, rapid development, managed environment, safe, etc, etc..

Pertanyaan ini sangat sering saya temui, baik di mailing list, di forum programmer, atau dari teman-teman. Biasanya orang bertanya hal ini karena sering mendengar tentang Java, teman-teman pakai Java, kemudian ingin tahu apa itu Java, tapi bingung apa yang harus dipelajari pertama kali. Umumnya, orang yang ingin  belajar Java akan bingung harus mulai dari mana. Ini cukup dapat dimaklumi, karena Java sedikit berbeda dengan bahasa pemrograman yang lain.

Sebagai contoh, kalau mau belajar Visual Basic, pasti install Visual Basic dulu, kemudian baca help atau cari tutorial. Mau belajar PHP, tinggal download PHP, install, baru coba-coba. Mau belajar Dot Net, install dulu Visual Studionya. Almost all are quiet straightforward, tidak banyak pilihan, yang akan membuat kita sedikit kebingungan, seperti yang biasa ditemui orang saat akan belajar Java. Di Java, kita akan selalu berhadapan dengan pilihan-pilihan. Untuk yang sudah berpengalaman, hal ini sangat bagus, karena kita bebas memilih arsitektur, platform, tools yang sesuai dengan kebutuhan kita. Tapi buat yang baru akan belajar, ini memang bisa menjadi mimpi buruk, dan akhirnya membatalkan niat untuk belajar Java, bahkan sebelum dia mulai belajar. Saya harap, Anda tidak termasuk golongan yang terakhir ini, hehe..

Ok, kita mulai dengan “Java” nya. Java adalah general purpose programming language, artinya bahasa pemrograman yang bisa digunakan untuk membangun aplikasi dengan tujuan umum seperti aplikasi desktop, web, mobile, sampai ke aplikasi skala enterprise. Jadi dengan bahasa yang sama, yaitu bahasa Java, kita bisa membuat berbagai jenis aplikasi dengan menggunakan peralatan dan library yang tepat untuk tujuan kita tersebut. Java adalah bahasa dengan konsep Object Oriented Programming (OOP) murni, bukan OOP setengah-setengah seperti yang ada di beberapa bahasa lain yang ingin menyelipkan konsep OOP di pemrograman yang dasarnya adalah prosedural.

Continue reading

July 5, 2008 Posted by | Java | , , | 21 Comments

Journey to get here, got the right one (part 3)

Perjuangan masih berlanjut…

Dari beberapa company yang menelepon saya, ada satu yang cukup membuat saya bersemangat, karena perusahaan ini bergerak di bidang yang mirip dengan perusahaan tempat saya bekerja waktu itu.

Telepon pertama, cuma berisi konfirmasi mengenai identitas dan overview dari apa yang saya tulis di CV saya.

Telepon kedua, technical interview, hehe.. Otak berpikir keras untuk menjawab semua pertanyaan yang diajukan oleh interviewer dengan baik. Pertanyaan yang diajukan cukup bervariasi, mulai dari konsep OOP tentang abstraction, encapsulation, inheritance, polymorphism. Kemudian menuju ke design pattern, singleton dan teman teman. Konsep MVC, EJB, ORM dan masih banyak lagi. Sesi ini berlangsung sekitar 30 menit, phiew…

Telepon ketiga akhirnya datang juga. Sesi ini lebih cenderung kepada pengetahuan tentang business domain yang saya kerjakan saat ini (banking world). Kemudian dilanjutkan dengan membahas beberapa project yang sudah pernah saya kerjakan, peran saya di project tersebut, dan teknologi yang digunakan. Di akhir interview, ternyata tidak pakai lama, langsung negosiasi gaji. Intinya perusahaan ini tidak keberatan dengan gaji yang saya cantumkan di resume saya. Setelah itu saya jadi berpikir, kok dia langsung setuju ya ? apa harusnya saya minta lebih dari itu ? Hmm, tapi sudahlah, yang penting bisa diterima dulu, dan gaji yang saya harapkan bisa terpenuhi, thanks GOD. Dia berjanji akan mengirim offer letter dan surat kontrak secepatnya.

Continue reading

July 1, 2008 Posted by | My Days | , , , , , | 5 Comments

Journey to get here, the process (part 2)

Ini adalah lanjutan dari posting saya sebelumnya, jika anda belum baca part 1, monggo silahkan dibaca dulu.

Setelah mendapat sertifikat Java tersebut, saya mulai mencoba untuk membuat daftar riwayat hidup, atau orang biasa menyebutnya dengan sebutan Curriculum Vitae (CV) atau resume. Saya buka kembali file-file lama saya, melihat-lihat, apakah ada yang bisa saya ambil untuk membuat CV yang baik. Dengan bantuan tips dari jobstreet dan banyak situs-situs lain, saya mencoba untuk membuat CV yang kira-kira good enough untuk dipajang di job portal.

Kesimpulan sederhana saya tentang sebuah CV adalah:

  1. Bear in mind, jangan asal-asalan, beri perhatian serius saat menulis CV. Ini adalah modal pertama untuk mendapatkan perhatian dari calon employer. Mereka akan melihat dan men-judge kita pertama kali berdasarkan CV kita, tentu karena mereka sama sekali tidak kenal kita (hal yang sangat logis).
  2. Tulis semua yang berkaitan dengan diri kita secara ringkas, rapi, dengan bahasa inggris yang baik. Jangan mencantumkan hal-hal yang tidak relevan seperti hobi, tokoh idola, tinggi dan berat badan, dll. Ini akan membuat CV kita seolah-olah tidak ber-“isi”.
  3. Uraikan secara singkat tentang apa yang jadi modal (kekuatan) kita, dan obsesi kita di masa yang akan datang. Tonjolkan semua yang bisa kita berikan untuk perusahaan, jika mereka akhirnya meng-hire kita.
  4. Cantumkan prestasi yang sudah kita peroleh. Di poin ini, saya cuma bisa menyertakan sertifikat SCJP dan beberapa sertifikat yang saya peroleh dari hasil online test di brainbench.
  5. Kalau Anda bekerja di bidang IT seperti saya, list of projects will be a strong magnet to attract the employer. Oleh karena itu, cantumkan project-project yang pernah kita lakukan beserta dengan deskripsi singkat tentang lingkup project dan peran kita di project tersebut.

Continue reading

June 29, 2008 Posted by | My Days | , , , , , , | Leave a comment