Framework, perlukah ?

Jika anda adalah seorang programmer, atau sedikitnya pernah memprogram (baca:coding), mungkin pernah mendengar kata “framework”. Pernahkah anda ?

Saya pertama kali mendengar istilah framework kali pertama ketika saya mengikuti beberapa thread diskusi di suatu mailing list yang kerapkali menyebutkan kata “framework” secara berulang-ulang. Sebanarnya, apakah framework yang dimaksud ini ?

Cari-cari di google, ikuti link dari mailing list ke situs framework yang dimaksud, saya mulai mengerti definisi framework, yang dalam hal ini yang berkaitan dengan pemrograman. Framework dalam hal ini bisa saya artikan sebagai sebuah kerangka kerja dimana kita bisa membangun aplikasi diatasnya sesuai dengan kerangka kerja yang telah ada. Jika saya melihat definisi semacam ini, pikiran saya mengacu pada kata “template”, dimana template mungkin tidak bisa menggambarkan secara tepat. Framework bisa berupa kode pemrograman yang sudah setengah jadi atau bisa berupa sebuah library, atau kedua-duanya.

Dalam sebuah paradigma RAD(Rapid Application Development), kita tidak seharusnya melakukan sesuatu yang berulang-ulang. Daripada menghabiskan waktu melakukan hal yang sama, dibuatlah metode yang memudahkan programmer dimana programmer diyakinkan untuk memrogram sesuatu yang “reusable”, yang kelak dapat digunakan. Sulit memang menciptakan sesuatu yang harus bisa dikustomisasi, namun itu perlu karena kita PASTI akan membutuhkannya di kemudian hari.

Tren dunia pengembang IT memang condong ke dunia “Object-Oriented”, “reusable”, “component-based”. Praktisi IT kini berubah dari yang dulunya melakukan coding dari awal, berubah menjadi seorang pengembang (developer) yang cenderung membangun sesuatu diatas sesuatu. Apakah sekarang kita harus mengganti istilah “programmer” dangan “developer” ?

Oke, dalam hal ini akan saya contohkan satu framework yang saya kenal. Dalam dunia pemrograman Java (Mungkin istilah ini kurang tepat, karena Java adalah sebuah spesifikasi), atau mungkin lebih tepatnya, dalam J2EE. Acapkali kita mengkorelasikan JSP termasuk dalam J2EE. Disini saya memakai Struts dalam membangun aplikasi web saya.

Menurut informasi yang saya dapatkan dari Google, Struts adalah framework “de-facto” untuk aplikasi web berbasis Java yang sudah banyak digunakan dalam level produksi. Akhirnya saya memutuskan untuk belajar framework ini. Perlu diketahui, mempelajari teknologi adalah suatu investasi yang cukup mahal. Maksud saya “mahal” dalam hal ini jika dilihat dari segi waktu (time is money, of course ;)). Saya pesimis apakah saya akan mampu menguasai beberapa framework sekaligus karena waktu yang tidak memungkinkan bagi saya untuk mendalaminya. Akhirnya satu memutuskan untuk belajar Struts dulu, seperti pepatah Jawa bilang, “Siji-siji asal kelakon”. Hmm ..

Arsitektur Struts menerapkan konsep MVC (Model View Controller) dalam pengembangannya. MVC lebih cocok disebut sebagai sebuah pendekatan (approach) ketimbang arsitektur. Hal ini dikarenakan oleh suatu fakta bahwa tidak ada sesuatu yang baru dalam MVC. MVC berusaha untuk “mengatur” sebuah aplikasi untuk terbagi manjadi 3 bagian, yaitu Controller, Model, dan View. Misalkan saja dalam aplikasi web. Ketika user melakukan request ke aplikasi, maka request ini kali pertama akan ditangani oleh Controller. Controller kemudian akan memutuskan apa yang harus dilakukan selanjutnya ( Dalam pengalaman saya, seluruh business logic yang ingin anda terapkan anda taruh di Controller ). Selanjutnya Controller akan mengambil data dari Model ( biasanya representasi dari Database ) dan mengimplementasikan hasilnya ke View yang kemudian akan ditampilkan kepada user sebagai Response.

Dalam perkembangannya, MVC dapat digolongkan menjadi dua, yaitu MVC Model 1 dan Model 2. Model 1 cenderung mengindahkan fungsi controller dan menaruhnya dalam satu dengan Model dan View. Dalam hal ini saya contohkan Model 1 sebagai aplikasi web berbasis Java yang menggunakan hanya JSP. Masalah yang kemudian timbul, muncul keluhan bahwa menaruh business logic, controller, kode HTML dalam satu halaman sangatlah semrawut ( Semrawut dalam hal ini diartikan susah dibaca ). Kemudian muncul Model 2, yang dalam hal ini adalah konsep MVC yang sebenarnya. Jika dalam Java, Servlet kemudian digunakan sebagai Controller karena sifat dari Servlet sendiri yang berbentuk sebuah Class ketimbang sebuah Scripting Page.

Servlet sendiri pada dasarnya adalah sebuah Class Java yang mendukung HTTP. Namun dalam penggunaannya cenderung sulit untuk memasukkan HTML didalamnya karena kita harus mengeluarkan statement “out.println(..)” berulangkali dan hal ini sangat merepotkan. Akhirnya muncullah JSP yang bisa dikatakan adalah sebuah ekstensi dari Servlet yang lebih “ramah” terhadap penggunakan HTML namun tidak pada kode Java. Hal inilah yang mendasari kenapa Servlet digunakan sebagai Controller bersama-sama dengan JSP yang digunakan sebagai View. Bagaimana dengan modelnya ? Biasanya digunakan JavaBean untuk melakukan enkapsulasi objek dari sebuah database dan mereferensikannya ke Controller (jika memerlukan). Anda bisa gunakan Plain JDBC atau ORM (Object-Relational Mapping) seperti Hibernate.

Untuk penjelasan Struts yang lebih dalam mungkin akan saya bahas di postingan selanjutnya karena kita sedang membahas framework secara umum.

Apakah framework benar-benar diperlukan oleh seorang programmer ? Jawabannya bisa ya, bisa tidak. Itu semua tergantung dari seberapa besar minat dan keperluan anda. Jika anda seorang pemula di bahasa pemrograman tertentu, belajar framework bukanlah saat yang tepat bagi anda. Namun bagi para programmer yang sudah “banyak makan garam”, terlibat dalam berbagai projek, menghasilkan banyak aplikasi, mungkin anda bisa mempertimbangkan untuk memakai framework. Framework menawarkan beberapa hal, a.l. :

  • Speed of Development : Kecepatan dalam pengembangan aplikasi
  • Robustness : Seberapa “tangguh” aplikasi tersebut. “Tangguh” bisa diartikan dalam performa maupun keamananan aplikasi.
  • Simple : Kode dan logika yang ada dalam aplikasi dapat tertata rapi, terjaga tetap teratur, mudah dibaca sehingga mudah untuk di-maintanance

Namun yang perlu diperhatikan, framework juga mempunyai beberapa kelemahan, a.l. :

  • High Curve of Learning : Sistem belajar anda haruslah “berakit-rakit ke hulu, berenang-renang ke tepian”. Artinya, proses awal belajar anda akan sulit dan payah. Namun hal ini akan terbayarkan oleh kecepatan dan kemudahan saat anda telah menguasainya.
  • Large Resource (?) : beberapa pihak mengklaim bahwa penggunaan framework dapat berpengaruh pada performa aplikasi karena banyaknya Library yang dibutuhkan dan arsitektur framework yang “sophisticated” (kompleks).

Kelemahan ini bisa anda siasati dengan memperhatikan kelebihan yang ada.

Berdasar atas pengetahuan saya, hingga kini terdapat banyak sekali framework untuk Java. Mungkin sekitar 40-an framework yang tersedia untuk bahasa pemrograman PHP. Anda harus lebih bijak dalam memilah dan menggunakannya untuk level produksi.

Jadi, apakah anda akan memakai framework untuk pengembangan aplikasi anda ?

5 thoughts on “Framework, perlukah ?

  1. Struts yang benar-benar Struts telah selesai di versi 1.3. Kini developernya ada yang mendukung framework baru yang didukung vendor2 besar, JSF dan sebagian lagi ada yang meneruskan ke versi 2 dengan engine webwork sebagai workflow-nya.

  2. mau buat aplikasi ecommerce berbasis java bagusnya pake framework apa ya (lagi melirik JSF) ??
    tapi, saya juga masih niubi ttg java nih.. jadi gimana??
    Ada saran ga mas??

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s