Azwar

Berbagi cerita dan informasi

Tag Archives: Java

HMVC Design Patern tidak dapat menggantikan Source Code Management

Pada artikel ini saya ingin membahas mengenai Design Patern pada Software Development yang saat ini sedang naik daun, nama Design Patern itu adalah HMVC.

HMVC 结构图

HMVC adalah versi pengembangan dari Design Patern MVC (Model-View-Control). HMVC sendiri adalah singkatan dari Hierarchical Model View Control. Atau bisa kita bilang sebagai versi MVC yang diimplementasikan secara hirarkis. Hirarkis di sini maksudnya adalah hirarki folder (struktur folder) yang mana menjadi modul.

Kuncinya adalah, satu modul memiliki satu MVC, atau bisa dikatan lebih gampangnya adalah, satu modul memiliki masing2 file model, file view dan file controll. Meskipun masing-masing file tersebut tidak selamanya diperlukan, ada kalanya cuma perlu file view dan controll saja.

Contoh: Saya memiliki folder modules folder ini nantinya akan saya gunakan sebagai tempat menaruh modul-modul saya. Oke, sekarang anggaplah saya ingin membuat modul produk, maka saya buat folder produk di dalam folder modules maka struktur foldernya menjadi modules/produk, di dalam folder produk ini akan kita buat folder untuk masing-masing file MVC, dengan kata lain kita akan membuat folder bernama model, view control .

Jika digambarkan, maka struktur hirarki nya akan menjadi sebagai berikut:

-modules/
….|
…+—-produk/
…….|
……+—-model/
……+—-view/
……+—-control/

File-file model akan diletakkan dalam folder model, begitu juga file view dan file control (controller) akan diletakkan ditempatnya masing-masing sesuai nama foldernya.

Keuntungan dari design pater ini, terutama bagi aplikasi web adalah, modularitas file pada aplikasi yang dikelompokkan berdasarkan fungsinya. Contohnya, file-file yang berhubungan dengan produk ditempatkan pada modul produk (file view nya produk, file controllernya produk, dan file modelnya produk).

Maksud dari pengelompokkan folder berdasarkan fungsinya tersebut adalah agar ketika ada tambahan fungsi baru pada program, misal tadi ada fungsi produk kemudian teman kita sudah membuat fungsi user maka kita tinggal mengkopikan modul user yang telah dikerjakan oleh teman kita tersebut pada folder modules/ dengan demikian maka didalam folder modules/ sekarang ada dua folder, yaitu produk dan user. Singkatnya seperti itu.

Sampai tahap ini terlihat simpel dan mudah ketika kita melakukan kerja dalam team. Nyatanya cerita pewayangan, eh salah, cerita software development model HMVC ini belum berhenti sampai disini.

Ketika ada suatu update-an file yang sifatnya tidak spesifik pada modul, maksud saya adalah perubhan diluar folder modul, maka pada saat itu bentrok update-an akan bermunculan. Misalkan saya mengedit file style.css pada folder CSS/, maka ketika ada orang lain yang juga mengupdate file style.css tersebut dan ditimpakan pada folder CSS makan akan menimpa kepunyaan saya tadi. Dengan demikian model kolaborasi ini tidak efektif jika tidak ada komunikasi yang intens, sayangnya, kebanyakan programmer pada umumnya enggan berkomunikasi tentang update-an yang seperti ini. Kebanyakan hanya main replace-replace aja tanpa peduli versi baru file tsb. Akibatnya, ini akan menjadi bencana yang tak akan pernah reda.

Masalah lain yg timbul. Masalah lainnya adalah, jika dalam folder modul kita mengupdate file yang sama. Misalkan si A da si B bertugas mengerjakan module produk pada PC nya masing-masing. Ketika salah satu akan melakukan update source code, maka masing-masing akan saling menimpa file yang telah dibuat. Lagi-lagi tanpa komunikasi dari keduanya maka semua ini hanya akan menjadi spageti monster, alias kodingan yang acak-aduk amburadul. Dan lagi-lagi, kebanyakan enggan untuk berkomunikasi.

HMVC adalah Design Patern, bukan Source Code Management, jadi jangan disamakan fungsinya. Jangan disamakan fungsi Gelas dan Pisau, jenisnya saja beda, yg satu alat untuk minum yang satu alat untuk mengiris. Apalagi kategorinya, gelas teh dan pisau lipat, apa pun kategorinya, keduanya tidak bisa disandingkan untuk dijadikan pengganti. Begitu juga dengan HMVC dengan misalkan GIT atau Mercurial atau sejensnya.

HMVC design patern, tidak bisa menggantikan GIT, Mercurial, SVN dll yang jenisnya adalah Source Code Management.

Saya pernah terpaksa menggunakan HMVC sebagai pengganti Source Code Management, karena ikut aturan main team.

Berdasarkan pengalaman saya HMVC tidak bisa efektif untuk dijadikan pengganti Source Code Management, karena HMVC tidak diciptakan untuk itu dan HMVC pun bukan “itu” (Source code Management).

HMVC = Design Patern
Git, Mercurial, SVN, Bazzar dll = Source Code Versioning
Github, Gitlab, Bitbucket = Source Code Repository untuk Source Code Versioning

Design Patern tidak bisa dibandingkan dg Source Code Versioning
(Design patern itu banyak jenisnya, pada umumnya orang cuma kenal MVC dan HMVC)

Semoga artikel ini berguna. Terimakasih.

Baca artikelnya dulu dari awal paragraf hingga akhir paragraf, baru boleh komentar ya…

JavaME vs JavaSE Embedded, apa perbedaannya?

Java (programming language)

Image via Wikipedia

Oktober 2010, Java mengeluarkan rilis terbarunya Java SE for Embedded 6u21 (Build 9), yaitu Platform Java untuk perangkat embedded device. Lalu apa perbedaannya dengan JavaME, bukankah JavaME juga untuk device. Awalnya waktu pertama baca, saya belum ‘ngehhh’ antara JavaME dan JavaSE Embedded. Ya memang begitu, saya baru tahu subset Java yang ini. Setelah saya baca di website resminya, akhirnya saya baru ‘ngehh’ dan sadar. “Yang namanya Mobile device dan Embedded ya beda lah… ” kira-kira begitu perkataan hati saya. Tapi saya tidak akan menulis tantang apa itu embedded device karena judul dari tulisan saya kali ini bukan itu. Anda bisa mencarinya sendiri di Google atau yg lain.

Baiklah, menurut website resminya, secara garis besar, perbedaan atara JavaME dan JavaSE Embedded adalah:

Target segemennya memang berbeda. JavaME hampir bisa dibilang spesial untuk perangkat mobile (saya bilang hampir bisa lho ya) seperti handset, cellphone serta media player, dan ini didukung oleh CLDC dan juga CDC nya JavaME.  Sedangkan JavaSE Embedded ditargetkan untuk fungsionalitas yang kaya sebagaimana yang dimilki oleh JavaSE dan di tujukan pada perangkat embedded tingkat tinggi secara keseluruhan, dan perangkat-perangkat tersebut memiliki minimal 32MB RAM dan 32MB ROM.

Sebagai catatan, turunannya juga berbeda, JavaME adalah JavaME, sedangkan JavaSE Embedded adalah bagian dari JavaSE.

Untuk lebih jelasnya, anda bisa kunjungi alamat ini: http://www.oracle.com/technetwork/java/embedded/overview/embedded-faq-159987.html.

Apple join OpenJDK

Duke, the Java Mascot, in the waving pose. Duk...

duke java

Apple bekerjasama dalam rencana pengambangan OpenJDK, apa motivasi Apple dalam hal ini ya? Kalo menurut saya, kali ini pihak Apple sedikit agresiv dan bersemangat. Saya masih penasaran apa sebenatnya yang direncanakan Apple terhadap OpenJDK untuk MAC OSX nya. Hmm… well… kita tunggu saja kabar selanjutnya, ini link blog Oracle yang membahas tentang hal ini: http://blogs.oracle.com/henrik/2010/11/oracle_and_apple_announce_openjdk_project_for_osx.html