Anggota Kelompok
Aang Sutrsina 14000399 Sugih Hartono 14000398 Nasrun Hadi 14000396 Jajam Haerul Jaman 14000377 Nuraini 14000391
Januari 2011
Pendahuluan
Aplikasi yang dikembangkan sebagian besar berinteraksi dengan pengguna (user). Oleh karena itu memerlukan cara agar aplikasi yang bersangkutan dapat berkomunikasi dengan para penggunanya. Sarana komunikasi aplikasi dengan penggunanya pada umumnya menggunakan berbagai komponen antarmuka berbasis grafis GUI (Graphical User Interface). Pada pemrograman Java salah satu teknologi GUI yang sering digunakan adalah Java Foundation Class (JFC) Swing. Namun demikian, teknologi ini masih cukup merepotkan bila digunakan dikarenaka hasil perancangannya masih sulit untuk dipahami dan dipelihara bila terjadi kesalahan sulit untuk dilacak. Pada teknologi ini sering kali tidak dapat digunakan kembali (unreusable). Untuk lebih mengoptimalkan proses perancangan aplikasi yang berkomunikasi dengan pengguna (user) maka dilakukan pemisahan komponen-komponen antarmuka berbasis GUI dengan logika-logika bisnisnya (business logic). Beberapa pendekatan telah dilakukan untuk memisahkan aspe presentasi dengan logika bisnis milik aplikasi, salah satunya adalah MVC (Model View Controller). MVC merupakan salah satu pendekatan pemisahan komponen presentasi dan logika bisnis yang populer digunakan pada design pattern atau arsitektur aplikasi.
Tampila n (View)
Kendali (Controller)
Model Informasi
Model MVC banyak digunakan karena memiliki banyak keuntungan dalam proses perancangan aplikasi. Beberapa keuntungan adalah: 1. Penggunaan ulang komponen-komponen antarmuka (user interface reusable component). 2. Kemampuan untuk mengembangkan aplikasi dengan antarmuka pengguna secara terpisah. 3. Kemampuan untuk melakukan pewarisan (inheritance) dari berbagai bagian yang berbeda pada suatu hierarki kelas. 4. Kemampuan untuk mendefinisikan kelas-kelas pengaturan tampilan (control style) yang menyediakan fitur-fitur umum secara terpisah dengan fitur-fitur yang akan ditampilkan oleh aplikasi yang dikembangkan. Dalam implementasinya model MVC memiliki tiga bagian yaitu, memisahkan data (Model) dari tampilan (View) dan cara bagaimana memprosesnya (Controller). Setiap bagian dapat dijelaskan sebagai
berikut: 1. Data (Model) Pola MVC memiliki layer yang disebut dengan Model yang merepresentasikan data yang digunakan oleh aplikasi sebagaimana proses bisnis yang diasosiasikan terhadapnya. Dengan memilahnya sebagai bagian terpisah, seperti penampungan data, persistence, serta proses manipulasi, terpisah dari bagian lain aplikasi. Terdapat beberapa kelebihan dalam pendekatan ini. Pertama, membuat detail dari data dan operasinya dapat ditempatkan pada area yang ditentukan (Model) dibanding tersebar dalam keseluruhan lingkup aplikasi. Hal ini memberikan keuntungan dalam proses pemeliharaan aplikasi.
Kedua, dengan pemisahan total antara data dengan implementasi interface, komponen model dapat digunakan kembali oleh aplikasi lain yang memiliki kegunaan yang hampir sama. 2. Tampilan (View) Layer ini mengandung keseluruhan detail dari implementasi user interface. Disini, komponen grafis menyediakan representasi proses internal aplikasi dan menuntun alur interaksi user terhadap aplikasi. Tidak ada layer lain yang berinteraksi dengan pengguna, hanya View. Penggunaan layer View memiliki beberapa kelebihan: Pertama, memudahkan pengabungan divisi desain dalam development team. Divisi desain dapat berkonsentrasi pada style, look and feel, dan sebagainya, dalam aplikasi tanpa harus memperhatikan lebih pada detail yang lain. Dengan memiliki layer View yang terpisah memungkinkan ketersediaan multiple interface dalam aplikasi. Jika inti dari aplikasi terletak pada bagian lain (dalam Model), multiple interfaces dapat dibuat (Swing, Web, Console), secara keseluruhan memiliki tampilan yang berbeda namun mengeksekusi komponen Model sesuai fungsionalitas yang diharapkan. 3. Cara pemprosesan (Controller) Terakhir, arsitektur MVC memiliki layer Controller. Layer ini menyediakan detail alur program dan transisi layer, dan juga bertanggungjawab akan penampungan events yang dibuat oleh user dari View dan melakukan update terhadap komponen Model menggunakan data yang dimasukkan oleh user. Kelebihan dalam penggunaan layer Controller secara terpisah: Pertama, dengan menggunakan komponen terpisah untuk menampung detail dari transisi layer, komponen view dapat didesain tanpa harus memperhatikan bagian lain secara berlebih. Hal ini memudahkan team pengembang multiple interface bekerja secara terpisah dari yang lain secara simultan. Interaksi antar komponen View terabstraksi dalam Controller. Kedua, dengan menggunakan layer terpisah yang melakukan update terhadap komponen Model, detail tersebut dihapus dari layer presentasi. Layer presentasi kembali pada fungsi utamanya untuk menampilkan data kepada user. Detail tentang bagaimana data dari user mengubah ketetapan aplikasi disembunyikan oleh Controller. Hal ini memisahkan dengan jelas antara presentation logic dengan business logic.
Java Servlet
Servlet adalah sebuah API dalam pemrograman java yang mempermudah para developer untuk menambahkan konten-konten dinamis dalam sebuah web server yang mengimplementasikan platform java. Konten yang dihasilkan dari Servlet API ini pada umumnya berupa HTML, tetapi tidak menutup kemungkinan untuk menghasilkan konten
XML dan konten-konten yang lain. Servlet sendiri dibuat untuk menandingi teknologi-teknologi konten web yang dinamis lainnya seperti PHP, CGI, ASP.NET. Servlet sebenarnya adalah sebuah object (class interface) yang menerima request, kemudian menggenerate response berdasarkan request yang diterima tadi. Sedangkan untuk spesifik HTTP, disediakan sub-class dari Servlet, yaitu HttpServlet yang didalamnya terdapat juga obyek untuk manajemen session. Sedangkan daur hidup dari sebuah Servlet sendiri ada 4 state yaitu: 1. Pada saat startup, class-class Servlet di load dalam Web Container. 2. Web Container kemudian memanggil method init(). Method ini yang bertugas menginisialisasi Servlet dan harus dipanggil sebelum Servlet melayani requests. Method init() ini hanya dipanggil sekali. Setelah method init() dipanggil, barulah Servlet bisa melayani requests. 3. Setiap request yang masuk dilayani dan ditangani oleh thread yang berbeda. Web Container memanggil method service() untuk setiap reqeust yang masuk. Method ini menetukan jenis request yang masuk, kemudian menentukan method mana yang akan menghandle request tersebut. 4. State terakhir adalah ketika Web Container memanggil method destroy(). Method ini menyerupai method init(), hanya dipanggil sekali, dan menandakan bahwa sudah tidak ada lagi layanan dari Servlet.
MVC 2 : Servlet Centric Architecture Pada arsitektur ini sebuah servlet bertugas untuk menerima request dari web browser kemudian melakukan pemrosesan model berdasarkan request tersebut. Setelah itu servlet akan meminta file JSP untuk menangani tampilan dari data-data. Dengan arsitektur ini kita dapat melakukan pengembangan seperti layaknya kita melakukan pengembangan pada aplikasi Java seperti biasanya. JSP digunakan hanya untuk memudahkan desain tampilan. Prinsip MVC suatu aplikasi dapat dikembangkan sesuai dengan kemampuan developernya, yaitu programmer yang menangani bagian model dan controller, sedangkan designer yang menangani bagian view, sehingga penggunaan arsitektur MVC dapat meningkatkan maintanability dan organisasi kode. MVC merupakan pattern yang tidak dapat langsung dipetakan menjadi kode, MVC lebih merupakan suatu rancangan konseptual atau paradigma. Seiring dengan semakin banyaknya penggunaan client side scripting, ada 3 jenis MVC yang mungkin terjadi pada suatu aplikasi web yaitu:
Server Side MVC Server Side MVC biasa terjadi pada aplikasi web tradisional, yang tidak melibatkan client side seperti Javascript, Java Applet, Flash, dll. Server Side MVC menyerahkan keseluruhan proses bisnis pada server, aplikasi pada sisi user hanya dapat menerima. MVC jenis ini terkadang disebut juga dengan nama Thin Client. Mixed Client Side and Server Side MVC Pada Mixed Client Side and Server Side MVC 1 client tidak menggunakan model sebagai jembatan untuk melakukan komunikasi pada server, dibandingkan dengan Server Side MVC, arsitektur ini memiliki tingkat kompleksitas yang lebih tinggi karena lebih banyak komponen yang terlibat. Untuk selanjutnya arsitektur ini disebut, dengan Mixed MVC 1.
Pada Mixed Client Side and Server Side MVC 2, client menggunakan model sebagai jembatan untuk melakukan komunikasi pada server, dibandingkan dengan arsitektur MVC yang lain, arsitektur ini memiliki tingkat kompleksitas yang paling tinggi karena lebih banyak komponen yang terlibat, sehingga membutuhkan sumber daya yang lebih besar pula. Untuk selanjutnya arsitektur ini disebut dengan Mixed MVC 2. Rich Internet Application MVC Application MVC Rich Internet Application (RIA) disebut juga dengan nama Fat Client, merupakan aplikasi web yang memiliki kemampuan dan fungsi hampir seperti aplikasi desktop. RIA pada sisi client, memiliki engine untuk mengambil data yang berada pada server, sehingga pada client terdapat bagian MVC sendiri dan hanya membutuhkan bagian model pada sisi server.
Implementasi pola MVC pada web berbasis Java adalah dengan menggunakan servlet sebagai controller dan JSP sebagai viewer. Beberapa Method pada servlet terdiri dari: 1. doGet, adalah method yang diwarisi dari HttpServlet. Method ini dipanggil oleh container ketika Request GET diberikan pada Servlet khusus. Request GET dikirim oleh user, jika user ingin melihat keluaran dari Servlet. 2. doPost, adalah method yang diwarisi dari HttpServlet. Method ini dipanggil oleh container ketika Request POST diberikan pada Servlet khusus. Request POST dikirim oleh user, jika user ingin melihat keluaran dari Servlet. 3. getParamater, adalah method yang digunakan untuk memperoleh parameter tertentu dari sebuah halaman/class. 4. sendRedirect, parameter yang diambil adalah sebuah String mewakili path untuk target yang kita inginkan untuk pengalihan user. Memanggil method ini secara efektif memerintahkan browser untuk mengirim dalam HTTP request yang lain ke tujuan tertentu. 5. requestDispatcher, parameter string yang diambil dalam method ini adalah lokasi dari HTML, JSP, atau servlet yang ingin kita hubungkan dengan request. Sekali kita mempunyai sebuah pengontrol pada sebuah instance dari object RequestDispatcher membuatnya menjadi sebuah bagian dari respon servlet ke user.
Referensi
Nugroho, Adi. 2009. Rekayasa Perangkat Lunak Menggunakan UML dan Java. Yogyakarta: Penerbit Andi. Widiyanto, Nur. 2010. Membangun Aplikasi Java Enterprise dengan Arsitektur Model View Controller (MVC). Yogyakarta: Penerbit Andi. Wikipedia. MVC. http://id.wikipedia.org/wiki/MVC.
Pattern.
Permana, Satria. Java Servlet. http://satriapermana.wordpress.com/2007/06/13/java-servlet/. Males Koding. Design Pattern MVC Pada Pemrograman Web JSP/Servlet. http://maleskoding.wordpress.com/2009/04/23/design-pattern-mvcpada-pemrograman-web-jspservlet/. Rahman, Muhammad Aditia. Analisis Perbandingan modifikasi Smarty Template Engine dan Framework CakePHP pada Model View Controller (MVC) untuk Aplikasi Web. http://www.ittelkom.ac.id/library/index.php? view=article&catid=20%3Ainformatika&id=518%3Amodel-viewcontroller-mvc&option=com_content&Itemid=15.