-
Apa itu J2EE? J2EE adalah teknologi yang dikembangkan (sekarang) oleh Oracle untuk pengembangan aplikasi skala enterprise. J2EE adalah sub dari bahasa Java. Ada kata-kata “aplikasi enterprise” di sini. Yang dimaksud aplikasi enterprise adalah aplikasi yang mempunyai karakteristik / ciri-ciri yang dijelaskan oleh Martin Fowler dalam bukunya Patterns Of Enterprise Application Architecture :
1. Persistent data. Aplikasi enterprise membutuhkan persistent untuk data. Data dalam skala enterprise biasanya besar, kompleks dan butuh disimpan dalam waktu yang relatif lama. Ini berarti aplikasi membutuhkan yang namanya storage. Storage yang paling umum digunakan adalah database. Sedangkan jenis database yang paling banyak digunakan adalah RDBMS, namun tidak menutup kemungkinan penggunaannya memakai jenis database yang lain seperti document oriented database, near time database, object model database, analytical database dll.
2. Concurrent User. Aplikasi enterprise biasanya digunakan oleh banyak user/pengguna yang mengakses data dalam waktu bersamaan. Pengaksesan data secara bersamaan dapat mengakibatkan masalah yang besar. Sebagai contoh, jika terdapat dua pengguna yang melakukan update terhadap satu data yang sama, maka dapat terjadi masalah pada data tsb. Data harus dipastikan tidak corupt dan terintegrity dengan baik. Proses lock andrelease data harus diperhatikan disini.
3. Many interfaces. Untuk memenuhi kebutuhan yang beragam dari proses bisnis maka diperlukan lebih dari satu tampilan antar muka / interface. Pertimbangan lain juga untuk kemudahan dari setiap user mengakses aplikasi berdasarkan role yang telah didefineuntuk setiap user. Jika kita bicara environment, maka interface disini tidak cuma melulu sebuah aplikasi web. Environment interfacenya bisa berupa aplikasi dekstop (terinstall di PC), mobile / smartphone ataupun sebuah embeded application.
4. Integrated with other system. Apliksi enterprise biasanya juga diintegrasikan dengan aplikasi atau sistem lain baik sistem yang ada di internal organisasi / perusahaan maupun dengan sistem dari luar organisasi. Dengan begini utility dari aplikasi kita akan bertambah dan mampu menghandle kebutuhan bisnis dengan aplikasi dari luar.
5. Bisnis proses yang rumit / kompleks. Martin Fowler juga memberikan karakteristik ini untuk sebuah aplikasi enterprise. Ya tentu kita sudah sama-sama tahu aplikasi dengan keempat ciri-ciri sebelumnya bisa dipastikan mempunyai proses bisnis yang rumit / kompleks.
Nah untuk membuat aplikasi dengan ciri-ciri diatas, bahasa pemrograman apa yang dapat memberikan kita keefektifan dan keefisiensian dalam proses pengembangannya? J2EE adalah salah satunya.
Term J2EE digunakan untuk J2EE version 1.4, sejak versi 1,5 sampai sekarang term J2EE telah diganti menjadi JEE.
JEE itu sendiri adalah kumpulan dari bermacam teknologi seperti JDBC, Java Mail, EJB, JNDI, JAXB dll. Kita tidak akan membahas satu persatu teknologi itu. Kita bicarakan saja mengenai tier dalam JEE. Penting untuk kita ketahui tier dalam JEE terbagi dalam 4 tier seperti gambar berikut:
1. Client Tier. Di tier inilah user interface dari aplikasi enterprise berada. Kita juga bisa mengatakan aplikasi di tier ini berdiri sendiri terhadap aplikasi yang ada di tier lain. Aplikasi terpisah dari application server dan diinstall di client machine dalam berbagai macam bentuk, seperti applet, aplikasi desktop, aplikasi mobile atau pun diinstall di device / hardware tertentu.
2. Web Tier. Sebenarnya kita bisa melebur tier ini ke dalam client tier. Mengapa? Karena ini adalah tier dimana kita bisa menggunakan teknologi / komponen pengembangan aplikasi web. Selanjutnya kita juga pasti tahu aplikasi web bisa merupakan “client” dari aplikasi enterprise yang kita bangun. Namun di banyak referensi atau tutorial yang ada mengenai tier JEE ini, pemisahan dari client tier umum dilakukan. Mungkin pemisahan tier ini lebih difokuskan kepada apa saja available technology dan kegunaannya di masing-masing tier. Teknologi yang kita pakai di web tier adalah JSP dan Servlet yang akan dideploy di web container/web server.
3. Business Tier. Di tier ini lah kita menyediakan komponen yang akan diakses oleh client dan atau web tier. Di dalam komponen ini kita menempatkan logic / bisnis proses aplikasi. Tentunya komponen di tier ini harus bisa mengakomodir karakteristik dari aplikasi enterprise di atas, terutama poin 2, 4 dan 5. Di sinilah inti dari JEE itu sendiri. JEE memberikan teknologi yang bisa kita gunakan untuk membangun komponen-komponen tsb. -> Enterprise Java Beans (EJB). EJB terdiri dari Session bean dan Message Driven Bean. Aplikasi kita yang menyediakan EJB harus dideploy di sebuah EJB Container. EJB Container tersedia dalam sebuah application server.
4. EIS Tier. Dari konsep pemberian 4 tier, database adalah satu tier sendiri. Kita perlu memisahkannya menjadi tier tersendiri karena secara fisik, logical dan tempat memang biasanya terpisah dengan aplikasi di tier lainnya. Di database kita bisa tanamkan aplikasi penunjang lagi (untuk aplikasi enterprise kita) seperti script untuk sinkronisasi, scheduling dll.
Setiap aplikasi enterprise yang ada, kita dapat membaginya menjadi aplikasi dalam tier yang terpisah. Untuk setiap tier di atas bisa berbeda-beda tempat nya / server nya. Aplikasi dalam 4 tier adalah hal yang bagus, supaya aplikasi kita menjadi loose coupled dan setiap aplikasi yang kita bangun di masing-masing tier jelas fungsi, scope dan tujuannya. Sebenarnya terdapat banyak kemungkinan tier yang bisa kita buat, tentu tergantung dari spesifikasi aplikasi yang mau kita bangun. Misal aplikasi yang kita bangun berupa API untuk aplikasi lain, maka kita hanya menggunakan web tier, ejb tier dan eis tier
Web Programming vs JEE Programming?
Banyak aplikasi web yang dibangun menggunakan java. AFAIK biasanya adalah aplikasi internal sebuah perusahaan seperti portal, sistem informasi, aplikasi gateway dan aplikasi yang menunjang proses bisnis mereka. Untuk aplikasi berbasis web untuk kebutuhan yang lebih “ringan” dari di atas seperti company profile, web perusahaan biasanya menggunakan teknologi scripting seperti php.
Untuk membuat aplikasi web memang banyak pilihannya, kita bisa gunakan php, asp, ruby dll. Dengan JEE kita juga bisa membuat aplikasi berbasis web / website. Rekomendasi teknologi Dari SUN / Oracle adalah JSP, JSF dan Servlet. Semua teknologi ini terdapat di JEE. Jadi web programming adalah sub dari JEE programming.
Jika kita membangun aplikasi web menggunakan java apakah aplikasi kita itu adalah aplikasi JEE? Belum tentu. Apalagi jika kita tidak menggunakan teknologi EJB atau replacing technology-nya. Misalkan aplikasi kita “hanya” terbuat dari jsp dan servlet. Berarti aplikasi ini cukup dideploy di web container saja, seperti tomcat dan jetty. Berarti aplikasi kita belom bisa dikatakan aplikasi JEE dari segi teknologi yang digunakan meskipun tidak menutup kemungkinan aplikasi “sederhana” kita ini memiliki karakteristik dari aplikasi enterprise di atas (CMIIW)
Concern utama dari JEE adalah tentang distributed object technology. Distributed object technology bisa dikatakan dengan kita mendefine sebuah method dan dapat menginvokenya dari mesin / komputer yang lain. Method kita ini sebenarnya ada di sisi server / sisi yang berbeda. Namun kita menjadikan method tsb. menjadi distributed objectsehingga seolah-olah method tsb. berada di lokal / di sisi penginvoke. Untuk versi jadul dari teknologi ini kita bisa melirik RMI :D. Distributed object technology ini berbeda dengan teknologi (yang sering kita gunakan) : mengkonsumsi data via HTTP atau web service. Perbedaan terdapat dari cara kerja, protokol yang digunakan, tujuan, kecepatan dan apa yang ditransfer ke client. Untuk lebih lengkapnya kita bisa baca di artikel ini 1, 2,3
Biasanya perkenalan JEE programming dimulai dengan kita membangun aplikasi web menggunakan JSP, Servlet dan Java Bean. Aplikasi yang kita bangun terkoneksi ke database menggunakan JDBC. Hal ini penting kita kuasai di awal. Kita juga bisa menggunakan pattern MVC dengan pembagian sbb : JSP adalah view, Servlet adalah controller dan Java Bean adalah model. Namun seiring dengan berkembangnya waktu dan teknologi maka bermunculanlah banyak framework JEE, antara lain : Spring, Oracle ADF, JBOSS Seam dll. Framework ini bisa menjadi pendukung maupun pengganti teknologi JEE yang tersedia atau direkomendasikan oleh Oracle yaitu JSP/JSF, Servlet dan EJB.
Web Server vs Application Server?
Tadi saya juga sempat memention application server. Apa bedanya dengan Web server. Application server adalah server yang memberikan layanan kepada client melalui beberapa protokol, termasuk HTTP. Application server juga haruslah mengsupport distributed transaction, transaction management, messaging, clustering, load balancing, persistence dan komponen-komponen enterprise (di java : EJB). Sedangkan web sever adalah server yg melayani request dan menggenerate response menggunakan protokol HTTP. Web server tidaklah sekompleks dari application server. EJB juga tidak bisa dideploy di sebuah web server. Untuk lebih jelasnya bisa disimak di http://www.javaworld.com/javaqa/2002-08/01-qa-0823-appvswebserver.html dan http://www.diffen.com/difference/Application_Server_vs_Web_Server
Setup Environment.
Untuk mengembangkan aplikasi JEE kita membutuhkan 2 hal yaitu adalah SDK JEE danJDK. Untuk IDE kita bisa menggunakan Eclipse, Netbeans, intellij idea dll. Jika kita menggunakan Netbeans atau Eclipse versi JEE sebagai IDE maka kita tidak perlu menginstall SDK JEE-nya karena telah dibundle di dalam IDE tsb. Untuk documentation API dari JEE bisa kita akses di sini dan bisa kita download tentunya 🙂
1 http://www.ebizq.net/topics/web_services/features/1531.html
2 http://www.allthingsdistributed.com/historical/archives/000343.html
3 http://www.pacificspirit.com/blog/2004/01/12/web_services_or_distributed_objects