Hal ini tentunya sangat normal. Tetapi sayangnya, menurut saya pribadi karena kata "framework" ini sudah sedemikian sering digunakan dan dikaitkan ke berbagai konteks bisa telah kehilangan kesederhanaan definisnya dan menjadi ambigu serta klise.
Berikut saya coba mencoba memberikan definisi dilihat dari ciri framework. Definisi ini akan saya update terus untuk menjaga ketepatan dan kesederhanaan pengertiannya.
Layering
Secara sederhana, sebenarnya framework Java itu adalah lapisan yang berdiri di atas low level API (Application Programming Interface) lainnya yang umumnya adalah JSP dan Servlet.
Untuk menjelaskan, saya mengambil contoh level dari bahasa pemrograman yang umum dan terkenal (Assembly, C/C++ dan Visual Basic).
Assembly adalah bahasa programming yang dapat mengakses secara langsung ke registry-registry mikroprosesor. Tetapi untuk melakukan suatu hal yang sangat sederhana seperti membersihkan layar, instruksi codingnya akan sangat panjang.
Kemudian dikembangkan C/C++ yang mengandung perintah yang lebih 'manusiawi' atau di level yang lebih tinggi dari Assembly. Panjang codingnya biasanya jauh lebih kecil dari assembly.
Dan sampai akhirnya dikembangkan lagi bahasa atau fasilitas programming seperti Visual Basic, Delphi, dan sebagainya yang lebih 'manusiawi' lagi.
Dengan tingkat level yang makin tinggi, maka produktivitas akan meningkat tapi pada beberapa sisi fleksibilitas dan tingkat performansi akan dikorbankan.
Hal tersebut berlaku sama untuk framework Java. Lihat diagram berikut ini.
Bisa dilihat bahwa untuk web programming di Java, servlet ada di posisi paling bawah dan JSP (Java Server Pages) merupakan wrapper-nya atau di tingkat yang lebih tinggi. Di atasnya kemudian ada JSF (Java Server Faces), Spring, Struts, Webwork, dan sebagainya.
Semakin tinggi levelnya, maka produktivitas harusnya semakin tinggi tetapi fleksibilitas akan semakin rendah sehingga kadang diperlukan usaha lebih untuk mempelajari frawework ini (learning curve tinggi).
Sumber Lain
Untuk mencoba membantu menguatkan pengetahuan tentang framework ini maka saya coba kompilasi jawaban dan tulisan dari berbagai situs web baik yang berbahasa Indonesia maupun Inggris dari hasil googling. Kalau sempat ada yang mungkin bisa saya coba terjemahkan ke dalam bahasa Indonesia jika artikelnya di dalam bahasa Inggris.
Jadi jawaban untuk apa itu framework mungkin ada di situs-situs berikut ini :
- http://www.codeproject.com/KB/architecture/WhatIsAFramework.aspx
- Artikel yang bagus karena tidak mendefinisikan framework dengan kering tapi lebih kepada aspek-aspek yang melingkupi definisi dari framework. Apakah itu sebagai suatu wrapper, arsitektur, dan suatu metodologi. Dan bagusnya lagi penjelasannya disertai dengan gambar-gambar konsep yang jelas.
- Artikel ini tidak menjelaskan spesifik framework di Java tapi lebih ke framework secara umum dan saya pikir sudah bagus dan mewakili banget.
- Sayangnya artikel ini masih dalam bahasa Inggris. Ada yang tertarik menerjemahkannya ?
- http://kaqfa.blogspot.com/2008/03/programmer-produktif-dengan-framework.html
- Ini adalah blog Pak Fahri, "Harian Firdaus" yang kebetulan saya dapatkan dari hasil melakukan googling.
- Walaupun masih agak kabur tentang definisi framework tapi saya suka dengan konteks penjelasan serta perumpaannya sehingga kita bisa paham di sisi mana framework dapat membantu kita.