Pentingnya Memahami Konsep Dasar

Home / Java / Pentingnya Memahami Konsep Dasar

Sekilas kita lihat, memang dunia IT berkembang dengan sangat cepat. Bahasa pemrograman datang dan pergi dengan cepatnya. Beberapa tahun yang lalu, Blackberry adalah rajanya. Sebelum Blackberry, JavaME dan Symbian adalah platform utama di mobile. Jaman sekarang mereka semua sudah digusur oleh Android dan iPhone. Ini semua terjadi dalam kurun waktu 5 tahun saja. Jadi kalau 5 tahun yang lalu kemahiran kita dalam pemrograman JavaME membuat kita menjadi idola masyarakat, jaman sekarang kita tidak lebih dari seorang Pak Tua yang sudah mendekati usia pensiun.

Teknik implementasi bisa berubah dengan cepat, tapi konsep dasar tidak berubah.  Coba kita lihat istilah-istilah yang sedang trendi di jaman sekarang:

  • Functional Programming, Closure, Clojure, Scala, Groovy, Lambda Expression
  • Object Oriented Programming, UML
  • ORM
  • REST

Mari kita telusuri apakah benar istilah tersebut membuat skill kita kadaluarsa?

Functional Programming

Menurut Wikipedia, Functional programming sudah dikenal sejak tahun 1950. Bahasa yang terkenal adalah LISP dan Haskell.

Jadi, apa yang ngetren dengan nama Clojure di masa kini, sebetulnya sudah ada sejak tahun 1950. Kalau saja kita menguasai konsep functional programming, bukan hanya teknik pemrograman Lisp/Haskell, maka konsep yang kita pahami tersebut akan memungkinkan kita menguasai Clojure dalam waktu satu bulan saja. Demikian juga dengan bahasa pemrograman functional lain seperti Scala, Groovy, dan fitur Lambda Expression yang akan hadir di Java 8.

Object Oriented Programming

Istilah OOP mungkin tidak terdengar terlalu modern. Tapi sebetulnya dia umurnya sama dengan Functional Programming, yaitu dikenal sejak tahun 1950. Bahasa pemrograman berparadigma OOP yang terkenal antara lain adalah Smalltalk.

Untuk mendokumentasikan desain aplikasi OOP, digunakan notasi UML. Notasi ini dirumuskan pada tahun 1990.

ORM

Object Relational Mapping atau ORM, sering kita kenal dengan istilah JPA, Hibernate, Toplink, dan sebagainya, sebetulnya bukan konsep baru. ORM hanyalah library yang mengkonversi hasil query database relasional menjadi object, dan sebaliknya. Adapun istilah-istilah yang sering kita temui dalam penggunaan ORM seperti:

adalah istilah umum yang juga ditemui di SQL. Sedangkan

  • second level cache
  • lazy loading vs eager fetching

merupakan teknik optimasi pengambilan data, yang tidak hanya berlaku untuk database relasional, tapi juga semua pengambilan data dari sumber eksternal seperti:

  • file
  • web service
  • network socket
  • dan sebagainya

REST

REST, sebetulnya hanyalah satu metode untuk mengakses service yang disediakan aplikasi lain. Secara konseptual, dia tidak berbeda dengan:

  • SOAP
  • ISO-8583
  • IMAP
  • POP3
  • SMTP

Intinya adalah ada aplikasi A yang ingin menyuruh aplikasi B melakukan sesuatu. Sesuatu di sini bisa menjalankan perintah tertentu, mengambilkan data, mematikan komputer, dan apapun yang bisa kita pikirkan. Begitu kita paham intinya, menyuruh aplikasi lain bisa dilakukan dengan berbagai cara lain, misalnya:

  • mengirim SMS
  • mengirim email
  • mengirim data dengan format yang kita tentukan sendiri melalui jaringan (TCP/IP)
  • mengirim message chat melalui Yahoo Messenger, BBM, Google Hangout, Line, Whatsapp, dan apapun media lain

Framework dan Library

Kita juga sering pusing dengan cepatnya perkembangan framework dan library. Di dunia Java, kita bisa ambil contoh Spring Framework dan Java EE.

Walaupun demikian, dengan menggunakan prinsip Lan-Na-Zha, kita tidak perlu pusing. Coba kita bahas evolusinya.

Java EE

Jaman dulu namanya J2EE, beberapa jargon yang kita dengar adalah:

  • Container Managed Transaction (CMT) : programmer tidak perlu begin-commit/rollbacksendiri, diurus appserver
  • Enterprise Java Beans (EJB) : object yang diinisialisasi, dimaintain, dan dibersihkan oleh appserver
  • Session Beans : EJB yang bertugas menampung proses bisnis
  • Entity Beans : EJB yang bertugas menjadi mapping dari Java ke tabel database
  • Message Driven Beans : EJB yang bertugas menunggu message JMS dan beraksi begitu ada message

Teknik implementasinya adalah sebagai berikut:

  1. Coding Session Beans, Entity Beans, Message Driven Beans menggunakan Java
  2. Deklarasikan objectnya di file XML
  3. Bila object tersebut saling terkait, tulis juga hubungannya di file XML
  4. Konfigurasi CMT di file XML juga

Jaman sekarang namanya JEE. Implementasinya beda, seperti ini:

  1. Coding Session Beans, Entity Beans, Message Driven Beans menggunakan Java
  2. Tambahkan annotation @Stateless, @Stateful, @Entity, @MessageDrivensupaya EJB dikelola oleh appserver
  3. Bila object tersebut saling terkait, tulis juga hubungannya menggunakan @Inject
  4. CMT sudah diaktifkan by-default. Konfigurasi tambahan bisa dilakukan menggunakan @TransactionAttribute

Konsepnya tetap sama.

  • Container Managed Transaction (CMT) : programmer tidak perlu begin-commit/rollbacksendiri, diurus appserver
  • Enterprise Java Beans (EJB) : object yang diinisialisasi, dimaintain, dan dibersihkan oleh appserver
  • Session Beans : EJB yang bertugas menampung proses bisnis
  • Entity Beans : EJB yang bertugas menjadi mapping dari Java ke tabel database
  • Message Driven Beans : EJB yang bertugas menunggu message JMS dan beraksi begitu ada message

Seperti kita lihat, kalau kita menghafalkan implementasi (konfigurasi XML), maka skill J2EE kita akan kadaluarsa begitu JavaEE 6 dirilis. Tapi kalau kita pahami benar-benar konsepnya (CMT, EJB), maka pemahaman tersebut masih relevan di JavaEE 5, JavaEE 6, dan kemungkinan besar juga di JavaEE 10 beberapa tahun yang akan datang 😉

Spring Framework

Bagi aliran non JavaEE, biasanya pakai Spring Framework. Di sinipun tidak jauh berbeda. Dulunya konfigurasi menggunakan XML, sekarang bisa pakai Annotation dan JavaConfig.

Implementasi jaman dulu:

  • inisialisasi (menewkan object) ada di XML
  • transaction management dilakukan menggunakan AOP, juga di XML

Implementasi jaman sekarang:

  • inisialisasi dilakukan melalui annotation
  • transaction management dikonfigurasi di annotation

Walaupun kode programnya berubah sama sekali, konsepnya tidak berubah dalam kurun waktu 7 tahun, yaitu:

  • Dependency Injection
  • Aspect Oriented Programming

Kesimpulan

Kita tidak perlu khawatir dengan cepatnya perkembangan teknologi di dunia IT. Bila kita paham konsep dan prinsip dasarnya, kita tidak akan tertinggal. Teknik implementasi, bahasa pemrograman, platform, format data, protokol komunikasi, memang akan terus berubah sepanjang jaman. Tapi prinsip yang mendasarinya akan tetap berpulang pada konsep klasik dan akal sehat.

Jadi, bila kita belajar sesuatu, tidak hanya di dunia IT, jangan cepat puas begitu kita tahubagaimana cara melakukannya. Gali terus sampai kita memahami tujuan kenapa kita melakukan hal tersebut dan berbagai cara lain untuk mencapai tujuan yang sama. Jangan puas begitu kita bisa insert data menggunakan ORM. Tapi gali terus sampai kita paham mengapa ORM dibuat dan bagaimana cara kerja/isi perut ORM.

Menurut Peter Norvig, belajar pemrograman butuh waktu 10 tahun.

Setelah paham, latih terus pemahaman konsep tersebut sampai kita mahir. Jangan berhenti ketika merasa sudah mahir, karena semua skill dan teknik perlu maintenance supaya tidak hilang

Di sadur dari sini

Leave a Reply

Your email address will not be published. Required fields are marked *