Friday, February 26, 2010

Dependency Injection Framework Spring di Java

Di tulisan yang lalu saya menuliskan secara singkat overview dari Spring. Nah, di kesempatan kali ini saya mencoba untuk menuliskan tentang IoC. Saya dasarkan pilihan fokus ke IoC karena setiap saya membaca artikel dari internet ataupun buku-buku referensi selalu mengutamakan pemahaman IoC terlebih dahulu.

Banyak sebutan-sebutan dari IoC yang saya dapat. Mulai dari Injection of Control sampai Inversion of Control. Ada 3 tipe juga di dalam IoC ini, yaitu Constructor Injection, Setter Injection, dan Interface Injection. Saya tidak begitu hafal urutan tipe-tipenya. Dari yang saya dapat, Spring itu bisa di kategorikan sebagai tipe Setter Injection dan Constructor Injection. Tetapi Spring lebih fokus ke Setter Injection.

Banyak framework yang juga menggunakan metode IoC termasuk Spring sendiri. Ada statemen menarik yang saya kutip dari situs Martin Fowler.

When these containers talk about how they are so useful because they implement "Inversion of Control" I end up very puzzled. Inversion of control is a common characteristic of frameworks, so saying that these lightweight containers are special because they use inversion of control is like saying my car is special because it has wheels.

Thursday, February 25, 2010

My Short Autobiography

Lahir di kota Jakarta tahun 1989, tepatnya pada tanggal 8 september dengan dianugerahi nama Adi Kurniawan. Seorang anak laki-laki pertama dari pasangan Amat Sahro dan Tuginem. Terdengar tak biasa memang nama mereka, tak seperti nama-nama orang kota pada umumnya.

Ayah dan Ibu Saya adalah perantau dari desa. Ayah Saya merantau sejak lulus STM ke jakarta dengan modal seadanya, berharap bisa mencari pekerjaan yang layak di Ibukota. Ia sempat menumpang di tempat sanak saudara sebelum akhirnya memutuskan untuk menyewa kontrakan setelah mendapat pekerjaan. Berbagai pekerjaan dijalaninya, dan berkat kerja kerasnya keluarga kami bisa bertahan di kota besar sampai sekarang ini.

Belum genap Saya berumur dua tahun, Ayah Saya mendapat kesempatan untuk ikut serta dalam pelatihan kerja ke Jepang dari tempat Ia bekerja, National –Gobel (sekarang Panasonic) selama beberapa bulan. Ia terpaksa harus meninggalkan Saya dan Ibu Saya di kontrakan kecil kami. Banyak kejadian penting saat Ia berada disana, dan paling Saya ingat dari cerita Ibu Saya adalah saat Saya jatuh sakit dan tak sanggup untuk pergi ke dokter. Saat itu keadaan ekonomi kami memang sedang berada di bawah, namun beruntung kami tinggal di lingkungan dengan solidaritas yang tinggi dan akhirnya ada seorang tetangga yang berbaik hati membawa Saya ke dokter.

Beruntung Saya sempat mengenyam asyiknya taman kanak-kanak di TK Harapan Bunda. Namun tak seperti anak lain, Saya sudah mampu membaca sebelum masuk TK walaupun masih belum fasih. Disini juga Saya mendapatkan adik pertama Saya yang kebetulan berjenis kelamin laki-laki.
Di umur 6 tahun, keluarga memutuskan untuk pindah dan mencoba untuk mengangsur rumah. Kami tinggal di BTN (bayar tapi ngutang) yang beralamat di Puri Nirwana 1 Cibinong. Letaknya strategis dan jalan aksesnya sangat mudah.

Wednesday, February 24, 2010

Mencari Ide Penelitian Ilmiah

Sudah semakin dekat dengan penelitian ilmiah tetapi saya masih belum memutuskan untuk membuat apa. Pengetahuan tentang pemrograman masih sangat rendah apalagi tentang sistem operasi ataupun jaringan. Ingin merambah dunia website tetapi sangat sulit mencari koneksi internet di Indonesia.

Beruntung saya sempat mempelajari Java di semester lalu. Kemudian saya berencana untuk mengembangkan aplikasi yang pernah saya buat bersama seorang teman saya beberapa waktu yang lalu. Aplikasi ini adalah sebuah media player, tetapi saat dibuat masih sangat sederhana dan bahkan belum sempat memutar video dengan sempurna. Maklum saja, saat itu kami masih sangat baru dalam pemrograman Java dan baru saja belajar pemrograman berorientasi objek.

Tampilan grafisnya seperti di bawah ini


Tiga pilar dasar dalam Java - Inheritance, Polimorphism, Encapsulation

Bagi yang mereka yang baru mempelajari Java yang merupakan bahasa pemrograman berorientasi objek termasuk saya, pastinya akan selalu menghadapi kesulitan dalam perubahan paradigma pemrograman. Adapun perubahan itu adalah dari pradigma prosedural menuju paradigma permograman objek. Perubahan yang sangat berpengaruh terhadap pola pikir dan algoritma dalam menyusun sebuah program ataupun aplikasi. Terlihat sepele namun sebenarnya disinilah perjuangan sesungguhnya. Sebelumnya, programmer hanya menyusun program yang terdiri dari baris-baris instruksi dengan dukungan modul-modul tambahan. Program dieksekusi secara baris per baris walaupun tetap memungkinkan untuk melakukan lompatan-lompatan ke baris-baris tertentu. Namun masalah sebenarnya terjadi saat pengembangan program tersebut.

Dalam bahasa pemrograman yang berorientasi objek khususnya Java, penulisan program tak hanya mengacu pada runtutan instruksi. Inti dari program dipecah-pecah menjadi lebih sederhana dalam bentuk kelas-kelas. Kelas ini merepresentasikan sebuah struktur baru penyelesaian masalah pemrograman dimana fungsi-fungsi khusus dari program dibebankan kepadanya. Kelas inilah yang nantinya dibangun oleh Java menjadi objek.
Objek merepresentasikan suatu entitas selayaknya sebuah benda dalam dunia nyata. Sebagai contoh, dalam suatu sistem perkuliahan tentunya terdapat banyak entitas-entitas yang memiliki fungsi serta karakteristik tersendiri seperti mahasiswa, dosen, dan yang lainnya. Seperti itulah objek dalam Java dibuat. Objek memiliki karakteristik serta fungsinya tersendiri yang telah digambarkan sebelumnya oleh kelas dimana ia berasal. Kelas menyederhanakan suatu objek dengan membentuk struktur karakteristik serta fungsi-fungsi yang dimiliki objek tersebut. Misalkan seorang mahasiswa memiliki karakteristik pembeda seperti nama dan npm yang menjadi identitas unik mereka, serta memiliki fungsi atau tugas untuk belajar, bersosialisasi dan lain sebagainya.

Dalam Java karakteristik yang dimiliki oleh kelas disebut dengan atribut, dan fungsinya disebut sebagai method. Kelas dalam java dapat menurunkan sifat-sifatnya ke kelas lain (inheritance), menyembunyikan kompleksitas struktur internalnya (encapsulation), serta memiliki banyak bentuk yang berbeda (polymorphism). Tiga konsep inilah yang menjadi pilar dalam Java.

Mengapa mempelajari Bahasa Indonesia

Bahasa pada dasarnya merupakan alat komunikasi antar individu yang satu dengan individu lainnya. Dipakai untuk menyampaikan informasi agar untuk menyamakan persepsi ataupun sekedar berbincang-bincang. Namun bahasa juga dapat menjadi suatu alat pembeda, suatu karakteristik yang mencirikan golongan tertentu.
Bahasa seperti yang telah kita ketahui, sangat banyak ragamnya di Indonesia. Mulai dari bahasa Jawa, bahasa Sunda, bahasa Betawi, dan bermacam-macam bahasa daerah lainnya. Inilah yang menjadi sumber kekayaan kita bangsa Indonesia. Keanekaragaman budaya dan bahasa yang tersebar di seluruh Nusantara ini menjadi ciri khas bangsa Indonesia.

Namun keragaman yang disikapi dengan tidak baik justru berdampak pada perpecahan. Berpotensi merusak kesatuan bangsa Indonesia yang dimulai dari kebanggaan berlebih suatu suku hingga akhirnya menarik diri dari suku lain. Untuk itu diperlukan suatu pemersatu bangsa agar dapat terjalin hubungan yang harmonis antar suku-suku di Indonesia.

Friday, February 19, 2010

Pengenalan Spring

Mengapa Spring?

Desember 1996, Sun Microsystem mempublikasikan spesifikasi standar JavaBeans 1.00-A. JavaBeans itu sendiri merupakan sebuah software berupa komponen model untuk Java. Spesifikasi ini mencakup berbagai aturan standar penulisan kode program dalam Java yang memungkinkan sebuah objek dalam Java dapat digunakan kembali ataupun dimodifikasi dengan mudah untuk dikembangkan menjadi objek yang lebih kompleks lagi. 1998, Sun kemudian mempublikasikan versi pertama dari Enterprise Java Beans (EJB). EJB mampu bekerja secara server-side dan menyediakan berbagai service untuk aplikasi enterprise namun gagal memenuhi tujuan utama JavaBeans yang dibuat atas dasar kemudahan dan kesederhanaan dalam pengembangan suatu aplikasi enterprise. Namun tak dapat dipungkiri bahwa kemampuan EJB dalam model pemrograman deklaratif telah sukses dalam menyederhanakan banyak aspek insfrastruktur pengembangan aplikasi seperti pada aspek transaksi dan security. Tetapi penggunaan EJB sendiri cukup rumit dalam berbagai hal.