Ilmu Komputer dan Islam

tulisan lama, for the sake of updating blog :9

Dulu, di awal kuliah di Fakultas Ilmu Komputer UI, saya sering bertanya-tanya. Bagian mana dari ilmu yang saya pelajari ini, yang bisa membuat saya mengingat Allah? Jika dibandingkan dengan ilmu lain, saya agak-agak sulit melihat secara langsung. Bandingkan saja dengan Biologi atau Kedokteran misalnya. Ketika mereka mempelajari tentang tahapan perkembangan janin dalam rahim, mereka bisa langsung teringat ayat-ayat di surat Al-Mu’minun atau Az-Zumar yang menjelaskan tahapan tersebut. Seketika mereka pun merasakan kebesaran dan kebenaran Allah. Begitu juga dengan anak astronomi, yang mempelajari benda-benda langit dengan orbit-orbitnya. Seketika mereka pun tersadarkan bahwa Maha Besar Allah yang menciptakan semua ini, menciptakan keteraturan dalam lintasan bintang-bintang: “Demi langit yang memiliki jalan-jalan” (Adz-Dzaariyat:7). Lalu, bagaimana dengan ilmu komputer? Apa yang dapat membuat saya menjadi ingat dan semakin dekat padaNya?

Setelah menyelami samudera ilmu komputer sekian lamanya, perlahan saya menemukannya. Waktu pertama belajar programming, saya sungguh kelimpungan. Begitu sulit membuat program yang bisa melakukan tugas tertentu. Bayangkan saja, anggaplah komputer itu bodoh, dan kitalah yang harus mendefinisikan semuanya: program tersebut harus membaca apa, inputnya disimpan dalam bentuk/tipe data apa, bagaimana mengolahnya, outputnya seperti apa, dan sebagainya. Di awal itu sulit sekali membuat program yang sekedar bisa mengkonversi suhu celcius ke fahrenheit dan sebaliknya. Sementara kita mungkin hanya perlu rumus dan sedikit corat-coret. Membuat program itu perlu didefinisikan setelah ini dia harus melakukan apa, jika begini maka langkah selanjutnya apa, berapa kali langkah ini dilakukan, dan sebagainya. Lalu, ketika saya shalat maghrib, dengan mudahnya saya bisa berhenti saat raka’at mencapai tiga. Saya tau kapan harus membaca tahiyat, tau kapan harus salam. Jika direnungkan, ternyata ciptaan Allah bernama manusia itu luar biasa sekali. Dengan akal pikirannya, begitu mudahnya manusia melakukan segala macam hal.

Suatu hari saya mendapat kesempatan mengikuti kuliah umum profesor-profesor Jepang. Bidang keahlian mereka adalah Robotika. Dalam kuliah tersebut sang profesor mempresentasikan hasil riset robotikanya. Yang paling menarik menurut saya adalah riset mengenai Robotics Tactile Sensors. Profesor tersebut meneliti dan mengembangkan sensor sentuhan pada robot. Melalui video, beliau memperlihatkan hasil karyanya. Bayangkan, perlu riset bertahun-tahun untuk membuat “tangan” robot yang bisa membuka tutup botol! Permukaan “tangan” robot dibuat dengan tekstur tertentu yang membuatnya bisa “merasakan” tekstur benda yang dipegangnya. Sensor robot tersebut mengapit kedua tepi tutup botol, kemudian memutarnya untuk melonggarkan tutupannya. Sekali lagi, sungguh luar biasa akal pikiran manusia yang bisa mempelajari cara membuka tutup botol dan bahkan hal yang lebih rumit dari itu dalam waktu yang sangat singkat! Subhanallah..

Pelajaran-pelajaran dalam Ilmu Komputer, selain bisa mengingatkan kita akan kebesaran Allah, ternyata juga sangat banyak aplikasinya yang memudahkan tugas manusia sebagai khalifah di bumi ini. Misalnya Komputasi Grid, yang menurut Prof Heru Suhartanto (Dosen Fasilkom UI) bertujuan melakukan penghitungan berskala besar secara cepat dan efisien. Salah satu aplikasinya adalah untuk menghitung konsentrasi polutan. Kita mengetahui dampak buruk polusi, tetapi mengapa kita tidak menghentikannya? Mungkin jawabannya karena kita berpikir polusinya hanya sedikit. Jika kita buka QS Al-Baqarah: 11-12 kita akan temukan ayat ini, “(11) Dan apabila dikatakan kepada mereka, “Janganlah berbuat kerusakan di bumi!” Mereka menjawab, “Sesungguhnya kami justru orang-orang yang melakukan perbaikan”. (12) Ingatlah, sesungguhnya merekalah yang berbuat kerusakan, tetapi mereka tidak menyadari.” Dengan Komputasi Grid, kita dapat menghitung berapa tingkat kerusakan yang terjadi sehingga kerusakan yang parah dapat dihindari. Komputasi Grid juga bisa digunakan untuk mencegah bencana yang lebih besar seperti memperkirakan terjadinya gempa karena gerakan lempeng bumi. Bila lempeng bumi di utara bergeser sedikit saja, bisa jadi akan menghasilkan gempa luar biasa di selatan, di kemudian hari (butterfly effect). Jika dicari, akan sangat banyak aplikasi ilmu komputer yang bisa membantu tugas manusia, di antaranya termasuk dalam bidang Bioinformatics, Perolehan Informasi, Pemrosesan Bahasa Natural, Pengolahan Citra, Sistem Cerdas, E-Commerce, E-Learning, E-Governance, dan lain sebagainya.

Teknologi ibarat pedang bermata dua. Ia bisa membawa manfaat, bisa juga merugikan. Di kuliah Komputer dan Masyarakat, sering sekali didiskusikan masalah-masalah yang terjadi sehubungan dengan IT, seperti pornografi, pencurian data kartu kredit, kemudahan mencari informasi lewat search engine, dan lain sebagainya. Sering pula didebatkan apa akar masalahnya? Dan apa solusinya? Sering sekali diungkapkan bahwa sudah ada peraturan, sudah ada etika di dunia maya. Tapi ternyata masih juga ada pelanggaran. Jadi manakah yang lebih penting? Peraturan atau pengguna yang bertanggung jawab? Betapa manusia kerepotan untuk menentukan mana yang baik, mana yang benar. Meskipun ada etika dan peraturan, tetap saja ada orang aneh yang menganggap bahwa cracking software itu etis, misalnya. Jika ingin menjadi pengguna yang bertanggung jawab pun bertanya lagi, tanggung jawab terhadap apa dan peraturan yang mana? Semua serba relatif karena yang menurut seseorang salah, bisa jadi menurut orang lain benar. Dalam situasi seperti ini saya bersyukur menjadi orang Islam yang memiliki aturan menyeluruh. Bagaimana akhlaq islam juga dapat diterapkan dalam dunia maya, dan dengan berpegang pada aturan Islam tersebut, segala macam bentuk keanehan laku manusia di dunia maya dapat ditekan.

Sangat luas sebenarnya hubungan Ilmu Komputer dengan Islam, dan akan sangat panjang jika dibahas semua. Pada intinya, dengan Ilmu Komputer kita tetap bisa mentadaburi kebesaran Allah, sekaligus mengembangkan ilmunya untuk kemaslahatan umat manusia, dan dengan Islam kita dipastikan memiliki pedoman untuk menggunakan aplikasi Ilmu Komputer itu secara bertanggung jawab.

(terima kasih untuk Agung Firmansyah atas masukkanya)

let’s blog!

Yuhuuu… akhirnya jadi juga acara Imago hari ini: Kajian Seru untuk pelajar dan pemuda Bogor, yg temanya Semarak Dunia Blogger, Ngeblog Asik Penuh Manfaat.. Acara hari ini mengundang Teh Viera dan Kang MT sebagai pembicara. Lokasi acara: Kedai Telapak Bogor.

Teh Viera pembicara sesi 1

Kang MT dari Blogor, Komunitas Blogger Bogor di sesi 2

Peserta Kisru Imago dan Blogorians @ Kedai Telapak

Jadi begitu lah ya.. acaranya, alhamdulillah.. seru.. Pembicaranya keren2.. pesertanya jugak ๐Ÿ™‚

Tapi yang paling saya ingat dari hari ini, kau tau apaa? Pas capcus dari Telapak, jalan nyusurin trotoar depan Botani Square terus nyebrang ke arah tugu Kujang. Saya dan Acid emang mau bagi2 makanan yang berlebih dari acara tadi ke mamang2 jualan yang mangkal sekitar situ. Agak nyess gimana gitu sih.. pemandangannya beralih dari anak2 muda necis yang kongkow di kafe, ke pemulung renta dan anak2 yg ngamen di sekitar tugu Kujang. Setidaknya gw liat 3 orang pemulung. Dan anak2 yang kami kasih kue, berebut saat ngambil kue itu. So there are still many homeworks yah cyiiin ๐Ÿ˜‰

 

Lafzi, Pencari Lafaz dalam Al-Qur’an

Zaman digital begini, pastinya udah banyak ya Al-Qur’an digital beserta terjemah dan fitur pencariannya. Tapi kebanyakan fitur pencarian itu kan hanya bisa mencari arti ayatnya aja, gak bisa lafazh Qur’annya langsung. Terus gimana dong kalo pengen tahu ayatnya, sedangkan kita cuma inget bahasa Arabnya.. Nah, ternyata ada nih search engine yang bisa langsung nyari lafazh Al-Qur’an melalui tranliterasinya. Jadi kita gak perlu masukin tulisan Arabnya, cukup transliterasinya. Misalnya kita masukan queryfashbir shobron jamiila“. Lafzi akan mengembalikan hasil yang relevan, yaitu QS Al-Ma’arij ayat 5.

Contoh pencarian pada Lafzi

Seru ya! Ini hasil skripsi anak Ilkom IPB lho.. namanya Abrari. Kalo pengen tau gimana caranya buatnya, cek aja blognya ini. Selamat mencoba ๐Ÿ™‚

oh i wish i could conduct a CS research related to Qur’an ๐Ÿ™‚

ICSIIT 2010

Hmm.. sebenernya event ini udah kelewat cukup lama, tapi baru cerita sekarang. Gpp lah ya, semoga bisa nambah2 info buat para pembaca.

Jadi.. ICSIIT itu adalah sebuah konferensi internasional di bidang ilmu komputer yang diadain sama Universitas Kristen Petra. Tahun ini ICSIIT diadain di hotel Hard Rock Kuta Bali tanggal 1-2 Juli 2010.

Nah gimana ceritanya gw bisa nyasar ke situ? Jadi itu semua adalah gara2 TA gw (dan dosen pembimbingnya. haha.. ampun Pak). Sebenernya sih gw udah males berurusan sama TA, tapi disuruh bikin paper dan submit ya udah lah dikerjain aja. Nothing to loose, bisa nambah2 pengalaman, meskipun awalnya maleees bgt.. hehe. Baru translate paper ke B.Ing di hari deadline dan submit kl ga salah jam 23.57 *it’s so typically me*

So… jadilah gw berangkat ke Bali tanggal 30 Juni. Sendirian T_T Awalnya deg2an banget karena blm pernah ke bandara sendirian. Tapi pas udah check in udah legaaa. Pas udah nyampe Ngurah Rai Bali, perasaan deg2an khawatir berubah jadi excited. Horee.. petualangan baru! Dari bandara Bali itu dijemput sama Mbak Vera, alumni Fasilkom UI 2004 yang kerja di Mitrais. Terus naik motor dia deh keliling2 Bali.. he.. enggak deng, nyari makan malem aja plus nganterin ke kosan Mbak Welly. Nah jadi selama di Bali ini gw numpang nginep di kosan Mbak Welly, seorang pegawai Mitrais juga yang dulu kerja bareng Mbak Atin Fasilkom 2003. Ternyata Mbak Welly dah familiar sama Bogor karena dia dulu mahasiswa Ilkom IPB angkatan 43.

Besoknya pas tanggal 1 Juni gw harus berangkat ke Hard Rock Hotel. Kosan Mbak Welly di.. apa ya nama daerahnya gw lupa, pokoknya deket banget sama bandara.. oh ya, kl gak salah Tuban. Karena di sana gak ada bis atau angkot, jadi terpaksa naik ojek taksi. Kalo naik taksi beneran kan pasti mahal. Nah ini ada ojek taksi, jadi ojek motor yang bisa dipesen via telp kayak taksi gitu. Ongkosnya sih katanya 15rb kalo dalam kota. Muahal kan?

Pas nyampe Hard Rock masih jam 8 kurang deh kl ga salah. Masih sepiii pesertanya. Terus lama2 berdatangan, dan taulah gw kl ternyata orang Fasilkom yang ikutan juga lumayan banyak. Ada Pakde (Hadaiq) yg lagi ngambil S2 sekaligus asisten riset, Diko yang baru lulus S2, Mbak Syandra, Pak Toba, dan Pak Yaya yang lagi S3 plus jadi dosen di berbagai universitas. Haha.. gw paling cupu deh. Di antara 6 orang itu gak ada yang berangkat bareng, jam berangkatnya beda2 dari Jakarta.

ICSIIT

gw, Mbak Syandra, Hadaiq, Pak Yaya, Diko

Hardrock Hotel

Kata Pak Yaya: habis peluncuran album perdana The Fuzzy Band.. wkwkwk

Gw kebagian presentasi hari itu di sesi ke-3. Yah skip aja ya. Standar aja itu mah. Conference hari itu selesai jam 5 deh kalo gak salah. Malemnya jam 7 ada gala dinner. Tadinya yang punya kupon gala dinner cuma gw doang, karena yg lain bayar sbg mahasiswa jadi gak dpt kupon. Eh secara menakjubkan yang lain pada dapet kupon aja dong, dikasih sama rekan dosen lainnya. Akhirnya semua ke gala dinner kecuali Pak Toba. Sambil nunggu gala dinner, tentu saja kita jalan2 ke pantai yang tinggal nyebrang doang dari Hard Rock Hotel. Lumayan lah bisa ngerasain pantai Kuta. Tapi kalo kata gw sih biasa aja ah, kayak pantai Anyer gitu ๐Ÿ˜›

Kuta Beach

Kuta Beach

Upacara Adat di Kuta

Lagi ada upacara adat di Kuta

Saltum

saltum tum

Di hari kedua gw JALAN KAKI dong dari kosan Mbak Welly ke Hard Rock. Kira2 makan waktu sejam ๐Ÿ˜„ Abisnya mo nyari warnet gak nemu, terus ya udah sekalian jalan2 aja. Hari kedua itu cuma ada 2 sesi aja karena ternyata banyak peserta yang udah ngirim paper tp gak dateng. Berhubung Mbak Syandra dan Pakde pulang ntar malemnya, jadi sisa hari itu dipake buat jalan2 deh. Untungnya Diko punya saudara di sana yang katanya sih biasanya nganter2 turis. Jadilah kita dianterin saudaranya Diko ke Dreamland. Tadinya mo ke GWK (Garuda Wisnu Kencana) yang ada patung-gede-banget-tapi-belum-jadi itu. Tapi sayang karena bayarnya mahal dan gak banyak yang bisa dilakukan juga di sana. Akhirnya ke pantai Dreamland, kurang lebih 1 jam dari Kuta. Nah, ini baru pantai. Kereeeen! ^^d

Pantai Dreamland

Pantai Dreamland

Tentang conferencenya..ย  hmm.. gimana ya. Kayaknya gw gak begitu suka ikutan conference gitu. Mungkin karena temanya terlalu luas ya, meskipun udah dipisahin per bidang kayak Fuzzy System, Text Processing. Maksudnya, kalo gw sih gak terlalu ngerti presentasi2nya. Nah mau nanya juga bingung. Udah gitu sering di suatu sesi presentasi ada yang gak nanya sama sekali. Seolah2 presenter itu cuma peduli sama presentasinya sendiri, asal gw selesai presentasi beres. Kalo gw sih gpp kayak gitu, kan gw abal2, dosen bukan, mahasiswa bukan ๐Ÿ˜› Tapi kalo akademisi beneran kan harusnya gak gitu ya.

Jadi ya mungkin, menjadi akademisi bukan jalan yang akan gw pilih. Ribet2 ngurusin paper gitu, ngejar KUM, ngajar mahasiswa, nilai tugas dan ujian. Ugh. Kayaknya gak terlalu suka deh gw. Kalo riset dan nulis paper sih masih lumayan suka. Lagipula gw pengen bebaaaaass.. Jadi pengusaha aja ah. Biar kayak A’ Elang gitu terus bikin yayasan bidang sosial. Tapi jadi pengusaha apa ya. Jualan beras? Sembako? Mobil? Motor? Gorengan? Jamu?

Haha.. udah ah, jadi ngaco nih

Kenalan sama Spring

Spring adalah salah satu application framework untuk aplikasi berbasis Java, tepatnya J2EE. Apakah application framework itu? Setelah disarikan dari berbagai macam sumber bacaan, gw simpulkan application framework itu adalah sekumpulan aturan atau standar yang disertai dengan library, yang digunakan untuk mempermudah, mempercepat atau membuat pengembangan aplikasi secara rapi sehingga bisa dikembangkan lagi dengan mudah di kemudian hari. Sedangkan J2EE –sekarang disebut Java EE– oleh situs Sun Microsystem dijelaskan sebagai

Java Platform, Enterprise Edition (Java EE) builds on the solid foundation of Java Platform, Standard Edition (Java SE) and is the industry standard for implementing enterprise-class service-oriented architecture (SOA) and next-generation web applications“.

Sederhananya, ini adalah edisi Java yang dipakai untuk mengembangkan aplikasi berskala besar atau enterprise. Edisi lainnya, Java SE (Standard Edition) adalah Java yang selama ini gw pakai untuk mengembangkan aplikasi desktop kecil2an). Dan satunya lagi, Java ME (Micro Edition) sesuai namanya, untuk mengembangkan aplikasi untuk perangkat kecil seperti PDA, handphone, dll. Jadi alih2 menggunakan Java SE yang selama ini gw pakai, sekarang gw akan mulai belajar dan menggunakan Java EE. Pak Endy Muhardin berbaik hati memberikan tips bagaimana mulai belajar Java EE di sini.

Sekarang balik lagi ke Spring. Ketika bicara tentang Spring, maka akan sering sekali terdengar istilah Inversion of Control (IoC) dan Dependency Injection. Gw sebagai pendatang baru dalam dunia Spring ini tentu saja bingung dengan kedua istilah itu. Untunglah ada forum berbahasa Indonesia yang membahas mengenai hal2 tersebut. Ada juga contoh yang bagus dari http://www.devx.com/Java/Article/21665. Jadi mari lihat contoh berikut ini.

Misalnya gw mo buat suatu class yang bertugas memproses data, dalam arti membaca data dari suatu file dan memberikan data dari file tersebut pada class yang memanggilnya. Namanya class DataProcessor.

class DataProcessor
{
public Result processData()
{
FileDataReader dataReader = new FileDataReader(“/data/file1.data”);
Data data = dataReader.readData(); //membaca data
return data.calculateResult(); //mengembalikan data pada class yang memanggilnya
}
}

Ini dia potongan class yang memanggil si DataProcessor (disebut client code).

//client code:
DataProcessor fileDataProcessor = new DataProcessor(); //membuat objek DataProcessor
Result result = fileDataProcessor.processData(); //meminta data dari hasil pembacaan file

Di sini terlihat DataProcessor bergantung atau dependent pada FileDataReader. Kalau mau membaca data dari sumber lain, misalnya database, class DataProcessor harus direfactor, biar bisa menerapkan pembacaan data yang lebih general. Salah satu caranya dengan menggunakan interface.

interface DataReader {
public Data readData(); }

class DataProcessor
{
private DataReader dataReader;

public DataProcessor(DataReader reader) {
this.dataReader = reader; }

public Result processData() {
Data data = dataReader.readData();
return data.calculateResult(); }
}

//client code:
FileDataReader dataReader = new FileDataReader(“/data/file1.data”);
DataProcessor fileDataProcessor = new DataProcessor(dataReader);
Result result = fileDataProcessor.processData();

DataProcessor tidak lagi beroperasi pada objek FileDataReader, melainkan pada interface DataReader yang diimplementasikan oleh FileDataReader sehingga lebih generic dan reusable. Masalahnya, setiap client code yang mau memproses data harus membuat objek data reader sendiri dan me-link objeknya dengan DataProcessor. Daripada begitu, kita bisa menginjeksikan kebergantungan (inject the dependency) antara DataReader dengan DataProcessor dengan factory class. Factory ini istilah yang baru gw kenal juga. Jadi ditambahankanlah class DataProcessorFactory ini dan client code-nya menggunakan jasa si factory untuk membuatkan reference ke DataProcessor.

class DataProcessorFactory
{
public static DataProcessor getFileDataProcessor()
{
DataReader reader = new FileDataReader(“/data/file1.data”);;
DataProcessor dataProcessor = new DataProcessor(reader);
return dataProcessor;
}
}

//client code:
DataProcessor fileDataProcessor = DataProcessorFactory.getFileDataProcessor();
Result result = fileDataProcessor.processData();

Si factory-lah yang membuatkan objek dari DataProcessor untuk client. Client tinggal meminta objek dan data hasil baca file melalui factory. Dengan ini telah terjadi apa yang namanya Inversion of Control dengan cara Dependency Injection (DI). Bentuk IoC yang lain adalah Dependency Pull, tapi gw belum ngerti itu.

Semakin besar aplikasi yang dibuat, semakin banyak factory class yang diperlukan. Ini gak menguntungkan karena kebanyakan factory itu merupakan singleton sederhana, yang tugasnya membuat dan menghubungkan objek2, nggak bisa di-inherit sehingga banyak duplikasi. Kelebihan DI dengan Spring, menurut DevX.com adalah
… its ability to act as a factory to create objects. Spring reads a schematic defined in an external configuration file, creates and wires the objects together using reflection, and then passes the objects back to you. Think of Spring as a factory that you don’t have to write any code for.

Intinya, Spring membuatkan dan menghubungkan objek2 melalui skema yang didefiniskan di configuration file eksternal, dalam hal ini file XML (gw gak tau hanya bisa XML file apa bisa yang lain). Langsung aja ke contoh kodenya. Client code akan menjadi seperti ini.

//client code:
InputStream is = new FileInputStream(“src/examples/spring/beans.xml”);
BeanFactory factory = new XmlBeanFactory(is);

DataProcessor dataProcessor = (DataProcessor) factory.getBean(“fileDataProcessor”);
Result result = dataProcessor.processData();

dan file XMLnya seperti ini.

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “http://www.springframework.org/dtd/spring-beans.dtd”&gt;

<beans>
<bean name=”fileDataProcessor”
class=”examples.spring.DataProcessor”
singleton=”true”>
<constructor-arg>
<ref bean=”fileDataReader”/>
</constructor-arg>
</bean>
<bean name=”fileDataReader”
class=”examples.spring.FileDataReader”
singleton=”true”>
<constructor-arg>
<value>/data/file1.data</value>
</constructor-arg>
</bean>
</beans>

Selalu dibungkus dengan tag <beans></beans>, di dalamnya bisa ada banyak tag <bean>, yang merepresentasikan objek di code Java yang kita buat. Contohnya pada code XML di atas, bean name yang pertama adalah “fileDataProcessor”, ini adalah identifier untuk objek bertipe DataProcessor (class=”examples.spring.DataProcessor”). Singleton = true artinya gw rasa mirip2 static di Java, jadi setiap kali ada request dari client, Spring akan selalu memberikan instance yang sama. Kalau singleton diset false, Spring akan membuat bean (instance kali ya maksudnya) yang berbeda untuk setiap request. Dalam tag <constructor-arg>, <ref bean=”fileDataReader”/> berarti passing objek dengan id “fileDataReader” untuk constructornya. Dari tag bean yang kedua bisa kita lihat bahwa “fileDatReader” ini nama instance dari class FileDataReader. Bean yang kedua ini mempassing nilai ke constructornya (lihat <value>/data/file1.data</value>).

Sampai saat ini itulah yang gw pahami. Masih belum mengerti hal2 lain seperti AOP, DAO, dan ORM. Kesimpulan tentang Spring, katanya sih framework yang satu ini sangat mantep sekali. Ini garis besarnya

  • Spring bertujuan untuk meminimalkan dependency antar komponen aplikasi dan menyediakan plug-in architecture. Mungkin inilah yang mendukung terjadinya dynamic workflow seperti yang dijelaskan supervisor KP gw kemaren. Jadi kita bisa pasang komponen aplikasi saat runtime tanpa perlu bongkar kode Java-nya.
  • Object linking di Spring didefinisikan di file XML, jadi kita bisa memasang komponen atau konfigurasi yang berbeda saat runtime.
  • Berbeda dengan factory yang invasive, di mana client sangat tergantung pada factory karena meminta objek ke sana, Spring menyediakan reference objek ke client yang membutuhkan. Spring secara aktif merangkai dependency dari objek yang gak kenal satu sama lain menjadi aplikasi yang utuh.
  • Kemampuannya ini berguna banget buat Test-Driven-Development di Xtreme Programming (gw gak terlalu ngerti ini). Tapi mungkin artinya adalah bisa memudahkan untuk testing sana sini. Karena kode2 gak saling kenal, tp kalo mau disatuin juga gampang. Client gak perlu membuat objek baru (gak pernah membuat reference dengan keyword new), gak perlu lookup ke factory, Spring yang menyediakan dependency-nya secara runtime–dengan real maupun mock object.
  • Unit testing jadi mudah dilakukan karena gak ada dependecy yang hard-code, class2 yang ada saling gak kenal satu sama lain.

sumber2 bacaan:
http://dotnet.netindonesia.net/?0::21357
http://www.devx.com/Java/Article/21665
http://arfan86.blogspot.com/2007/02/chating-tentang-spring-framework.html