Pengenalan Java EE dengan Wildfly

dokumen-dokumen yang mirip
Pemanggilan RESTful Web Service Java dari Client PHP

Pembuatan RESTful Web Service Hello World dengan PHP & Java. Husni

MODUL 3 Servlet dan JavaBean

BS603 PENGEMBANGAN APLIKASI ENTERPRISE Niko Ibrahim, S.Kom, MIT

Membuat JSP dan Servlet Sederhana

PENERAPAN JAVA SERVER FACES UNTUK DESIGN PATTERN WEB

I. Pengenalan Play Framework

Generated by Foxit PDF Creator Foxit Software For evaluation only. 17/09/ :33

MODEL INTERAKSI APLIKASI WEB PADA TEKNOLOGI JAVA

SERVLET. 5.1 Membuat Program Servlet

3.1 APLIKASI YANG DITANGANI OLEH CODE GENERATOR

BAB II TINJAUAN PUSTAKA

MI2193 PEMROGRAMAN WEB LANJUT PHP FRAMEWORK. Created by MTA Revised by HPU

Pemrograman dengan Java

PRAKTIKUM. Rekayasa Web. Modul 6: Restful API Server & Client Codeigniter. Laboratorium Teknik Informatika Universitas Pasundan

BAB 3 LANDASAN TEORI

BAB III METODE PENELITIAN. ini, diantaranya adalah dengan langkah-langkah sebagai berikut :

BAB III LANDASAN TEORI

BAB III LANDASAN TEORI. user management seperti yang diuraikan oleh definisi-definisi berikut.

Membuat Aplikasi Berbasis Web Di Device Android Mobile

Bab 1. Pengenalan JSP POKOK BAHASAN: TUJUAN BELAJAR: 1.1 Dasar JSP

M.Octaviano Pratama

BAB III LANDASAN TEORI

Enterprise Java Beans (EJB)

BAB 3 LANDASAN TEORI

Membuat Java Servlet WEB.XML. Java Servlet, Apakah Itu? Oleh: Galih Satriaji (

Membangun Aplikasi Berbasis Web Dengan CodeIgniter Framework. Helmy Faisal Muttaqin

BAB III LANDASAN TEORI

DAF WebProjector. Dynamic Application Form. Application Server. Service Control Manager (SCM) DB Connector RDBMS

BAB II LANDASAN TEORI

MODUL 1 INSTALASI PAKET JAVA DAN PROGRAM SEDERHANA

AJAX Framework. Pemrograman Web 1. Genap

BAB 3 Landasan Teori

Pemrograman Berbasis Objek. Pengenalan Java. Yuliana Setiowati. Politeknik Elektronika Negeri Surabaya

FRAMEWORK. Dengan framework seorang web programmer dapat membangun aplikasi

APLIKASI BERBASIS WEB PEMETAAN INFORMASI PADA GAMBAR BITMAP

Arsitektur Aplikasi Web

BAB III LANDASAN TEORI

CODEIGNITER 3. Belajar Mandiri. Zamah Sari

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI. sebuah sistem pencarian lokasi kuliner berbasis mobile web untuk wilayah

BAB II KAJIAN PUSTAKA. lengkap, terbuka, dan bebas.

Object OOP. Polymor phism

Pemrograman Berbasis Objek. Pengenalan Java. Entin Martiana. Politeknik Elektronika Negeri Surabaya

BAB II LANDASAN TEORI

BAB I PENDAHULUAN 1.1 Latar Belakang

BAB IV HASIL DAN PEMBAHASAN

BAB V IMPLEMENTASI SISTEM DAN PENGUJIAN SISTEM

Pengenalan Framework Jakarta Struts

BAB III LANDASAN TEORI

BAB II LANDASAN TEORI. Internet adalah singkatan dari Interconnection network, merupakan

Tugas Rekayasa Perangkat Lunak Berorientasi Obyek Review IDE untuk Java (NetBeans, Eclipse, Intellij IDEA)

Konsep Pemrograman Berorientasi Obyek. Maria Ulfah S Nurochman

BAB I PENDAHULUAN I.1 Latar Belakang

Mengenal Pemrograman Web Dengan JSP

BAB III LANDASAN TEORI

PEMROGRAMAN I. By : Sri Rezeki Candra Nursari

BAB 1 Pengenalan Pemrograman WEB

Generated by Foxit PDF Creator Foxit Software For evaluation only. 16/09/ :50

Bab 2. Tinjauan Pustaka

BAB II TINJAUAN PUSTAKA. Bab ini membahas teori-teori yang dijadikan acuan tugas akhir ini.

BAB IV IIMPLEMENTASI DAN PENGUJIAN. Implementasi merupakan tahap pengembangan dimana hasil analisis dan

Bab 2 Tinjauan Pustaka

: MODUL 1 BASIC PHP

Score : Persentase : % ~ u ~ Generated by Foxit PDF Creator Foxit Software For evaluation only.

BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI

BAB I PERSYARATAN PRODUK

Arsitektur Aplikasi Web

BAB III TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI. bahasa pemrograman java dan bersifat open source. Yang mana artinya aplikasi

5.2 Keuntungan dan Kelemahan Cookie

BAB II. KAJIAN PUSTAKA

Oleh : Dosen Pembimbing : Umi Laili Yuhana, S.Kom, M.Sc Hadziq Fabroyir, S.Kom

29 Februari Introduction Of Java

BAB III LANDASAN TEORI

BAB III LANDASAN TEORI

BAB II LANDASAN TEORI. bidang media komunikasi dan informasi. Internet adalah suatu jaringan komputer

Implementasi Rest Web Service Pada Game Kuis Ensiklopedia Indonesia Berbasis Android

Pertemuan XI Database Connectivity Fak. Teknik Jurusan Teknik Informatika. Caca E. Supriana, S.Si.,MT.

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI. dilakukan dengan menggunakan teknologi yang berbeda beda. Selain itu terdapat

Pada akhir pembahasan, peserta diharapkan dapat :

BAB II KAJIAN PUSTAKA. bimbingan kepada dosen pembimbing tugas akhir, kartu konsultasi digunakan

PENDAHULUAN TENTANG NETBEANS

MERANCANG SISTEM ABSENSI KESISWAAN SMS GATEWAY

BAB III LANDASAN TEORI

BAB II KAJIAN PUSTAKA. menyediakan pihak luar tertentu dengan laporan-laporan yang dibutuhkan.

BAB IV IMPLEMENTASI DAN PENGUJIAN

By : Agung surya permana ( )

BAB 2 LANDASAN TEORI

BAB II LANDASAN TEORI

3 BAB III LANDASAN LANDASAN TEORI

INTRODUCTION TO NETBEANS IDE

ABSTRACT. Keywords: JSF, Primefaces, Spring Framework, Java, ibatis, Property Reservation, MVC, Java Enterprise Edition, Web Mobile, PDA.

BAB III LANDASAN TEORI

BAB II LANDASAN TEORI Konsep Dasar Membangun Aplikasi Berbasis Web

BAB II KAJIAN PUSTAKA. seluler (mobile) seperti telepon pintar (smartphone) dan komputer tablet. Android

BAB III LANDASAN TEORI

BAB II LANDASAN TEORI

Hal yang harus diperhatikan dalam penggunaan AJAX adalah: XHTML dan CSS digunakan untuk menandai dan mempercantik tampilan informasi.

Teknik Informatika S1

Transkripsi:

Pengenalan Java EE dengan Wildfly Disusun oleh: Iwan Agus Fatahi Dwi Anindyani Rochmah 1/26

Daftar Isi Pendahuluan... 4 Latar belakang...4 Tools dan aplikasi yang digunakan...5 Java JDK...5 Eclipse...5 Wildfly...6 Modul Wildfly...6 Mengenal J2EE (Java 2 Platform Enterprise Edition)...7 Infrastruktur Teknologi J2EE...7 Teknologi Servlet...7 Teknologi EJB (Enterprise Java Bean)...8 Teknologi JPA (Java Persistence API)...8 Teknologi JMS (Java Messaging Service)...8 JBoss AS 7...8 Instalasi...8 Eksekusi...9 Administrasi...9 Aplikasi Multitier dengan Java...10 Presentation-tier...11 Implementasi dengan Java...11 Application-tier...11 Implementasi dengan Java...11 Data-tier...11 Implementasi dengan Java...12 Web Dinamis dan Servlet...13 Struktur aplikasi web dengan Java...13 Struktur direktori...13 web.xml...14 Servlet...14 Pengiriman data dari form HTML...14 Contoh kode servlet...15 Aplikasi Client dengan Java...16 Client dengan metode GET...16 Client dengan metode POST...16 EJB (Enterprise Java Beans)...18 Modularitas EJB...18 Interface...19 Implementasi...19 Implementasi EJB dengan Java dan Jboss AS 7...19 Interface...19 Implementasi...20 Akses (dari Servlet)...20 Layering dengan EJB...20 JPA (Java Persistence API)...22 Beberapa keuntungan JPA...22 Sebuah Entity adalah POJO (Plain Old Java Object), tidak ada logika...22 2/26

Menggunakan anotasi untuk mempersingkat penulisan...22 Menggunakan relasi-relasi yang ada dalam teori graph...23 Contoh Entity dengan JPA...23 Entity dengan ORM...23 Test...23 JMS (Java Messaging Service)...24 Membuat JMS...24 Mendefiniskan Destination pada Wildfly...24 Membuat sebuah service JMS...24 Membuat client JMS...24 EAR (Enterprise Archive)...25 Daftar Pustaka... 26 3/26

Pendahuluan Buku ini akan membahas tentang Java 2 Platform Enterprise Edition (J2EE) sebuah sebuah platform standard yang banyak digunakan oleh aplikasi-aplikasi modern. Secara definisi J2EE adalah sebuah ekosistem aplikasi yang berbasis Java dengan beberapa teknologi referensi terstandardisasi dan memiliki kemampuan untuk berjalan di segala sistem operasi. J2EE tidak hanya berfungsi untuk membuat aplikasi, tetapi juga menyediakan ekosistem (library) untuk menjalankan aplikasi tersebut. Dan secara khusus J2EE menyediakan dukungan yang baik untuk aplikasi berbasis web. Singkat kata J2EE adalah teknologi yang terdiri dari kumpulan servis, API serta protokol yang memungkinkan terwujudnya sebuah aplikasi dengan struktur multi tier. Selain poin-poin tersebut J2EE juga mengatur spesifikasi bagaimana mengkoordinasi item-item tersebut, sehingga aplikasi bisa mengakses library yang dibutuhkan tanpa harus menambahkan library tersebut secara langsung ke dalam program buatan kita. Contoh diagram di bawah ini menggambarkan posisi J2EE terhadap aplikasi yang kita bangun. My Application Client My Module My Web My API Browser Others J2EE Application Server (Libraries, Protocol, API) Drawing 1: Model pemrograman dalam sebuah "application server" Untuk mendukung anda dalam memahami isi buku dengan lebih mudah, maka dalam edisi ini kami sediakan juga beberapa link terhadap program utama yang diperlukan untuk membangun ekosistem J2EE dan tools untuk pengembangan aplikasinya. Beberapa aplikasi contoh juga kami sertakan yang akan menyesuaikan dengan pokok bahasan masing-masing. Program-program itu antara lain: Oracle Java (www.oracle.com), Wildfly (www.wildfly.org), serta Eclipse (www.eclipse.org). Latar belakang J2EE saat ini boleh dibilang sebagai sebuah platform aplikasi yang paling banyak digunakan 4/26

untuk membuat dan menjalankan aplikasi bisnis berbasis web di dunia. Hampir semua aplikasi semisal ERP, CRM, Core Banking yang digunakan oleh perusahaan-perusahaan besar menggunakan platform J2EE. Sehingga sangat wajar apabila tenaga-tenaga ahli yang menguasai J2EE menjadi programmer yang paling dicari saat ini. Meskipun demikan tetap saja programmer yang menguasai teknologi J2EE masih sangat langka terutama di Indonesia. Dengan latar belakang seperti ini diharapkan buku ini bisa membantu pembaca untuk menjadi pengisi kelangkaan ini, dan bisa menjadi inspirasi untuk ikut terjun dalam dunia J2EE. Salah satu hambatan besar untuk belajar sistem seperti J2EE yang dirasakan penulis saat ini adalah kebiasaan programmer di Indonesia yang senang dengan proses-proses programming dengan menggunakan tools RAD (Rapid Application Development) seperti Visual Basic, Delphi dan sejenisnya. Kebiasaan ini menjadikan para pembuat aplikasi tidak terbiasa berpikir secara sistematis dalam kerangka programming yang lebih besar. Dalam tulisan ini penulis ingin mengajak pembaca untuk mencoba membangun kerangka pemrograman yang lebih besar, terstruktur dan mengikuti standar kelas enterprise. Tools dan aplikasi yang digunakan Tools yang akan digunakan dalam buku ini semuanya merupakan aplikasi free dan bahkan beberapa merupakan produk open source yang bisa diunduh dari internet. Harapannya dengan menggunakan sistem-sistem berbasis open source selain untuk mendapatkan keuntungan secara finansial (tanpa lisensi) juga mengurangi ketergantungan terhadap vendor tertentu. Penjelasan masing-masing tools akan kami rangkum secara singkat sebagai berikut : Java JDK Java JDK merupakan tools dasar yang digunakan untuk membuat dan menjalankan programprogram berbasis Java. Java merupakan salah satu bahasa pemrograman berbasis OOP yang memiliki kemampuan berjalan di berbagai sistem operasi. Semua program yang ditulis dengan bahasa Java, setelah dikompilasi bisa dijalankan di semua OS tanpa harus merubah kode pemrograman di dalamnya. Tentu saja dalam OS tersebut haru terinstall JRE (Java Runtime Environment) terlbeih dahulu. Java JDK merupakan aplikasi yang bisa diunduh secara gratis di laman website Oracle. Meskipun sifatnya free, tools yang tersedia di sana bukanlah program yang bersifat open source. Bagi pengguna Linux maka penulis sarankan untuk menggunakan OpenJDK, yang memiliki standard seperti Oracle dan berbasis open source. Beberapa distribusi Linux juga sudah menyediakan OpenJDK sebagai repositori standar, sehingga proses instalasi akan menjadi semakin mudah. Eclipse Eclipse merupakan sebuah IDE (Integrated Development Environment) yang ditulis dengan bahasa Java dan keandalannya sudah diakui dunia. Dengan program Eclipse ini kita bisa membuat program dan kemudian menjalankannya tanpa harus berpindah-pindah ke program lain. Program seperti ini sangat membantu dalam proses coding karena kemampuannya yang terintegrasi. Secara struktur Eclipse merupakan aplikasi modular yang memungkinkan untuk menambah fungsionalitasnya dengan cara menambah plugins. Tersedia banyak sekali plugins untuk membantu proses pemrograman, dan mempermudah konfigurasi aplikasi Java yang dibuat. 5/26

Secara umum masing-masing plugins mewakili sebuah fungsi baik untuk akses ke server ataupun untuk pembuatan modul-modul tertentu. Wildfly Wildfly boleh dikatakan sebagai salah satu application server yang paling tua saat ini. Sejarah pengembangannya bahkan mempengaruhi perkembangan J2EE secara keseluruhan. Kelengkapan sistem serta stabilitas APInya membuat server ini dipakai oleh banyak organisasi/perusahaan dan menjalankan proses-proses kritis yang ada dalam bisnis mereka. Sebelumnya untuk mengetahui sejarah dari pengembangan Wildfly, penulis sarankan untuk mengunjungi situs resmi mereka di www.wildfly.org. Untuk proses pengembangan aplikasi Wildfly menyediakan plugins tambahan untuk Eclipse, yang berguna untuk memudahkan programmer dalam membuat modul-modul. Hanya saja plugins ini harus diunduh dan kemudian dipasang ke dalam Eclipse. Plugins eclipse ini akan membantu proses pekerjaan harian programer seperti pembuatan project, debugging dan proses-proses lainnya. Modul Wildfly Modul wildfly yang biasanya dibutuhkan adalah reporting, konektor database dan modulmodul lain yang spesifik terhadap aplikasi kita. Biasanya modul-modul ini merupakan kumpulan file.jar yang kemudian di gabungkan dalam satu folder dan ditambah dengan konfigurasi internal wildfly. Keuntungan penggunaan modul wildfly adalah kemudahan manajemen server dan deployment, sehingga programmer langsung bisa menggunakan modul tersebut dengan hanya menambahkan konfigurasi keterkaitan (dependency) ke dalam aplikasinya. 6/26

Mengenal J2EE (Java 2 Platform Enterprise Edition) Teknologi J2EE memungkinkan sebuah program didisain sedemikian rupa sehingga struktur yang digunakan merupakan lapisan-lapisan terkait satu sama lain dengan model ikatan yang longgar. Ikatan-ikatan ini biasanya dihubungkan dengan protokol ataupun antarmuka program yang di standardisasi. Untuk menggambarkan struktur sebuah program sesuai dengan spesifikasi J2EE, perhatikan diagram di bawah ini. Database App Server Client Servlet Browser EJB Other Server Others JSON, XML, Direct Links, Other protocols Drawing 2: Model pemrograman multitier dengan J2EE Dengan metode antarmuka seperti ini, akhirnya memungkinkan bagi pengguna untuk menggabungkan fungsi-fungsi dari aplikasi-aplikasi yang ada dan menjadikannya sebuah aplikasi besar yang terintegrasi. Struktur ini memberi kesempatan untuk berkembangnya aplikasi-aplikasi khusus sesuai dengan kebutuhan pengguna, dan secara bersamaan memanfaatkan kemampuan aplikasi-aplikasi lain yang sudah teruji. Infrastruktur Teknologi J2EE Teknologi Servlet Teknologi Java Servlet merupakan komponen arsitektur J2EE yang berada dalam sebuah server sehingga memberikan sebuah mekanisme tambahan bagi Web Server dan bisa diakses oleh pengguna. Dengan mekanisme tersebut programmer bisa membuat sebuah program 7/26

khusus yang bisa diakses langsung oleh pengguna melalui browser maupun secara tidak langsung melalui program lain. Teknologi servlet memungkinkan pembuatan sebuah program yang lebih simpel dan konsisten secara struktural. Teknologi servlet menjadi antarmuka terdepan bagi sebuah aplikasi Java, baik antarmuka yang bisa diakses dengan browser (Web UI) ataupun antarmuka yang berhubungan dengan program lain (Web Services, JSON). Teknologi EJB (Enterprise Java Bean) Teknologi EJB adalah sebuah teknologi yang menjadi komponen arsitektur J2EE yang berada di dalam sebuah server dan menjadi pusat terjadinya proses. Dengan teknologi ini programmer hanya perlu untuk berpikir bagaimana proses bisnis yang terjadi dalam sebuah organisasi ataupun perusahaan di terjemahkan dalam bentuk program. Sehingga sistem yang tercipta bisa lebih memenuhi kebutuhan pengguna. EJB menjadi pusat dari teknologi J2EE dan memiliki akses ke database (melalui JPA), serta menjadi sistem pemroses terhadap input dari luar (Servlet, JMS, Server lain). Karena fungsinya yang sangat penting ini maka EJB dilengkapi dengan mekanisme pendukung seperti manajemen transaksi, serta fungsi-fungsi lain. Teknologi JPA (Java Persistence API) Teknologi JPA adalah sebuah teknologi yang juga menjadi bagian arsitektur J2EE yang menghubungkan bisnis proses dengan penyimpanan data (data store). JPA memungkinkan programmer untuk membuat program yang tidak tergantung pada database tertentu, sehingga ketika pengguna ingin memanfaatkan server database yang sudah ada, maka program hanya perlu di konfigurasi ulang, tanpa perlu melakukan perubahan pada kodenya. Teknologi JMS (Java Messaging Service) Teknologi JMS juga merupakan bagian arsitektur J2EE yang mengimplementasikan fungsi middleware dan memediasi pengiriman message dari satu client ke client yang lain ataupun dari client ke server dan sebaliknya. Dengan adanya JMS kita bisa menangani model antrian (queue) sehingga data masuk yang jumlahnya besar bisa ditangani secara proporsional oleh server dan menghasilkan sebuah sistem lebih terpercaya. JBoss AS 7 JBoss AS merupakan sebuah server yang mengimplementasikan spesifikasi J2EE 6 secara lengkap dan sudah memperoleh sertifikasi dari konsorsium Java. Secara historis proyek Jboss menjadi salah satu faktor penentu perkembangan teknologi J2EE yang ada saat ini. Dalam rilis versi 7 saat ini, Jboss menawarkan kelengkapan konfigurasi yang lebih baik dari versi-versi sebelumnya. Administrasi sistem berbasis web bawaan Jboss sudah cukup baik untuk mencukupi kebutuhan konfigurasi maupun monitoring dasar sistem secara keseluruhan. Instalasi Untuk memasang Jboss AS anda cukup dengan mengunduh aplikasinya dari situs www.jboss.org yang tersedia dalam bentuk file terkompresi. Untuk menginstallnya juga cukup dengan membuka/dekompress file tersebut, dan mengkopi isinya ke dalam sebuah direktori tertentu. Tentu saja sebelumnya program Java (versi JDK) sudah terpasang di komputer 8/26

tersebut. Dalam konfigurasi defaultnya Jboss AS 7, membutuhkan Java versi 7. Tetapi dalam beberapa praktek yang sudah dilakukan dengan menggunakan Java 6-pun Jboss AS 7 bisa dijalankan dengan baik. Eksekusi Setelah proses instalasi berjalan dengan sukses (seperti pada pada sub bab di atas), maka selanjutnya anda bisa menjalankan server Jboss di komputer lokal. Untuk menjalankan server Jboss kita cukup memanggil perintah : <direktori instalasi>/bin/standalone.sh atau di Windows dengan perintah pada cmd: <direktori instalasi>\bin\standalone.bat Selanjutnya setelah perintah di atas dijalankan maka Jboss akan bisa diakses dari alamat http://localhost:8080. Ketika kita mengakses alamat ini, yang akan muncul adalah halaman depan aplikasi Jboss. Administrasi Untuk memudahkan proses administrasi, server Jboss juga dilengkapi dengan konsol administrasi berbasis web yang bisa diakses dengan browser melalui alamat http://localhost:9990. Tetapi sebelum anda bisa mengakses halaman ini anda harus memasukkan dulu nama user admin dan password-nya menggunakan konsol admin. 9/26

Aplikasi Multitier dengan Java Dalam rekayasa perangkat lunak istilah multitier (atau biasa juga disebut n-tier) digunakan untuk menandai struktur aplikasi client server yang memisahkan secara logika bagian tampilan, bagian pemrosesan, dan bagian manajemen data. Dengan model seperti ini programmer bisa membuat bagian-bagian aplikasi yang lebih fleksibel dan bisa digunakan kembali untuk aplikasi lain (reusable). Dengan pemisahan bagian-bagian tampilan, proses, serta manajemen data memungkinkan programmer untuk melakukan perubahan pada bagianbagian tertentu saja tanpa harus mengubah keseluruhan disain. Untuk memperjelas konsep multi tier perhatikan diagram di bawah ini, dan akan dijelaskan dalam sub bab masing-masing. Presentation-tier Cari public void oncari() { criteria = getfromui; result = find(criteria); sendtoui(result); } Application-tier List<Result> find(string criteria) Data-tier SELECT * FROM TABLE_X Keunggulan dari sisi modularitas ini tidak serta merta menjadi keunggulan pula dalam hal proses pembuatan aplikasi. Di perlukan kejelian dan ketelitian yang lebih dalam mendisain tier-tier ini sehingga modularitas yang didapat tetap bisa menghasilkan kecepatan proses keseluruhan program. Tier yang paling sering digunakan dan paling populer adalah model struktur 3-Tier, dimana struktur tersebut terdiri dari presentation tier, logic tier, data tier. Sekilas struktur 3-Tier memiliki kemiripan dengan model-model pemrograman seperti MVC (Model-View-Controller) ataupun MVP (Model-View-Presenter). Tetapi sesungguhnya terdapat perbedaan yang mendasar antara keduanya, yaitu pada sisi aliran data. Pada struktur 3-Tier tidak pernah ada aliran data langsung dari tampilan menuju data tier ataupun sebaliknya. Sedangkan pada MVC ataupun MVP proses itu lebih bersifat triangular. Jadi komponen model bisa melakukan update secara langsung terhadap view. 10/26

Presentation-tier Presentation-tier merupakan bagian yang menghubungkan aplikasi dengan pengguna. Bagian ini menjadi bagian yang tampil di depan pengguna dan menerima input yang dimasukkan oleh pengguna. Semua masukan / input ini kemudian diteruskan kepada proses-tier dan selanjutnya tier ini akan menampilkan hasil dari pengolahan data tersebut. Saat ini aplikasi-aplikasi sekelas enterprise menggunakan pattern MVC ataupun MVP dalam presentation-tier mereka. Jenis aplikasi tampilan bisa diimplementasikan dalam bentuk web maupun aplikasi desktop biasa, yang tersambung dengan server. Untuk menjembatani komunikasi data antara presentation dengan application biasa digunakan protokol-protokol tertentu seperti RPC, WebServices, JSON, ataupun protokol propiteri yang lain. Implementasi dengan Java Presentation-tier di Java diwakili dengan beberapa bentuk aplikasi, antara lain : 1. Aplikasi berbasis web, biasanya diwujudkan dengan menggunakan aplikasi dynamic web yang memiliki banyak sekali komponen, seperti java servlet, JSP dan juga HTML. 2. Aplikasi desktop, bisa diwujudkan dengan bantuan library seperti Swing, SWT. 3. Aplikasi downloadable desktop JNLP Pada buku ini implementasi yang kita bahas secara mendalam adalah aplikasi berbasis web, terutama dengan teknologi yang ditawarkan Google yaitu GWT (Google Web Toolkit). Tentu saja pembahasan tentang java servlet akan kita lakukan dengan sangat detail, karena teknologi servlet-lah yang menjadi tulang punggung implementasi aplikasi berbasis web di Java. Application-tier Bagian application-tier merupakan bagian pengolah data yang telah dikirim oleh presentationtier dan juga sebaliknya memberikan data hasil olahan yang diminta oleh bagian tampilan. Data hasil olahan bisa juga diteruskan lagi ke bagian manajemen data untuk disimpan. Di sinilah biasanya proses bisnis aplikasi diimplementasikan dan disesuaikan dengan kebutuhan pengguna. Salah satu syarat penting dari bagian ini adalah fleksibilitas yang tinggi, dan bisa digunakan kembali (reuseable). Karena kepentingan fleksibilitas inilah maka, konsorsium Java memberikan spesifikasi khusus yang terangkum dalam J2EE dan diwujudkan dalam bentuk application server. Implementasi dengan Java Implementasi application-tier di Java biasanya diwujudkan dalam sebuah aplikasi yang sudah jadi dan di satukan dalam bentuk application server. Teknologi utama yang mewakili application-tier dalam Java terangkum dalam EJB. Setiap application server memiliki bagian ini dengan implementasi komunikasi yang standar, meskipun diprogram secara berbeda. Data-tier Bagian ini merupakan bagian terakhir dari struktur multi-tier yang bertugas untuk menyimpan dan mengambil data. Dalam prakteknya bagian data-tier ini bisa berupa database, file ataupun bentuk penyimpanan yang lain. Data yang tersimpan dalam sistem manajemen data belum tentu memiliki struktur yang sama dengan model data yang digunakan dalam application-tier. 11/26

Untuk itu biasanya programmer perlu melakukan penyesuaian-penyesuaian ataupun konversi sehingga data yang di ambil dari penyimpanan data bisa digunakan. Begitu juga sebaliknya data yang akan disimpan ke dalam sistem manajemen data juga harus disesuaikan tipenya sesuai dengan yang diijinkan oleh sistem tersebut. Implementasi dengan Java Bagian dari data-tier ini diwakili oleh teknologi JPA (Java Persistence API). Meskipun JPA secara teknis memiliki fitur yang lebih dari sekedar akses data. Karena itu penjelasan tentang JPA akan dilakukan dalam bab tersendiri. 12/26

Web Dinamis dan Servlet Sebuah aplikasi web dengan Java terdiri dari file html, jsp, dan aplikasi servlet yang biasanya diorganisasikan dalam sebuah file war. Susunan file html yang bisa dimengerti oleh server web java sama persis dengan html standard yang biasa kita kenal. Kemampuan lain yang dimiliki oleh web server Java adalah fitur skripting yang langsung disediakan oleh server web, berupa bahasa pemrograman JSP. JSP ini kalau boleh dikatakan mirip dengan PHP, hanya saja tidak perlu tambahan program khusus untuk menjalankan JSP. Sebuah kelebihan lain yang dimiliki oleh sistem web dengan Java, adalah tersedianya komponen servlet, yang berfungsi seperti plugins dan memiliki kemampuan sangat tinggi, karena dia mengadop bahasa Java untuk realisasnya. Selain untuk keperluan pembuatan web dinamis, servlet juga bisa memberikan kemungkinan program untuk berkomunikasi dengan server menggunakan protokol http, tanpa harus menggunakan html. Struktur aplikasi web dengan Java Seperti telah dijelaskan di bagian pembuka, ada 3 komponen dasar sebuah aplikasi web dengan Java. Dalam sub bab ini akan kami uraikan bagaimana realisasi dari sebuah aplikasi web dengan Java, khususnya dengan menggunakan JBoss. Struktur direktori Sebuah apikasi web dengan java memiliki susunan dorektori seperti di bawah ini root (dir) index.html xxxxxxx.html images (dir) WEB-INF (dir) web.xml lib (dir) classes (dir) Pada bagian root direktori biasanya terdapat sebuah file index.html atau file apapun yang niasanya digunakan sebagai welcome file. Susunan selanjutnya untuk file html tergantung dari kebutuhan misalnya direktori images untuk meletakkan gambat-gambar. Bagian yang penting selanjutnya untuk setiap aplikasi web dalam Java adalah direktori WEB- INF yang didalamnya terdapat file konfigurasi global (web.xml) sebuah aplikasi. Dalam file web.xml ini terdapat parameter-parameter yang mengatur perilaku aplikasi, seperti file mana yang akan ditampilkan pertama kali ketika aplikasi tersebut dijalankan oleh server. Dalam direktori WEB-INF juga terdapat sebuah direktori yang penting lagi yaitu direktori lib. Di dalam dorektori lib ini terdapat library-library yang dibutuhkan oleh aplikasi kita ketika berjalan. Biasanya servletlah yang membutuhkan library-library seperti itu. Karena tingkat kompleksitasnya, maka bahasan tentang servlet akan kita bahas dalam sub bab tersendiri. 13/26

web.xml Sebuah susunan web.xml dalam bentuk yang lengkap bisa anda lihat di bawah ini. <?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"> <!-- Servlets --> <servlet> <servlet-name>systemservlet</servlet-name> <servlet-class>org.kembang.module.server.systemserviceimpl</servletclass> </servlet> <servlet-mapping> <servlet-name>systemservlet</servlet-name> <url-pattern>/gladmin/system</url-pattern> </servlet-mapping> <!-- Default page to serve --> <welcome-file-list> <welcome-file>gladmin.html</welcome-file> </welcome-file-list> </web-app> Karena perilaku sebuah aplikasi web ditentukan oleh konfigurasinya, maka perlu secara hatihati menset nilai-nilai yang ada di dalamnya. Untuk sebuah aplikasi yang sering kita gunakan dalam contoh di buku ini, konfigurasi umum seperti pada contoh di atas sudah sangat mencukupi. Servlet Servlet merupakan sebuah komponen dinamis dalam senuah aplikasi web dengan bahasa Java. Penamaan servlet sendiri merujuk pada teknologi yang lain yaitu applet. Dalam dua teknologi ini, ada sebuah rencana besar dari para disainer bahasa Java yaitu applet digunakan untuk mengakomodir aplikasi client, sedangkan servlet merupakan aplikasi yang berjalan di server. Servlet bisa diakses dari browser dengan cara memanggil namanya, seperti halaman web biasa. Cara lain untuk mengakses servlet adalah dengan cara membuat program kecil yang berfungsi sebagai http client, dan mengakses ke halaman servlet tersebut. Pengiriman data dari form HTML Untuk mengirim data dari client ke server, protokol http mendefinisikan dua cara akses, yaitu dengan metode GET dan POST. Biasanya proses pengiriman data dilakukan oleh sebuah form dalam html seperti dalam contoh berikut : 14/26

<form action= test method= GET > <input type= text name= data ></input> <input type= submit value= Kirim ></input> </form> Pada contoh di atas, kita meminta supaya data yang kita input dari html bisa dikirim ke server melalui aplikasi / servlet yang bernama test (lihat bagian form action). Selanjutnya parameter yang akan dikirim adalah data dan isi parameter tersebut adalah apa yang kita ketikkan pada inputan. Contoh kode servlet Di bawah ini adalah sebuah contoh kode sebuah servlet yang sangat sederhana, dan mewakili segala servlet yang nanti akan kita buat. // Import required java libraries import java.io.*; import javax.servlet.*; import javax.servlet.http.*; // Extend HttpServlet class public class HelloWorld extends HttpServlet { private String message; public void init() throws ServletException { // Do required initialization message = "Hello World"; } public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setcontenttype("text/html"); } // Actual logic goes here. String data = request.getparameter("data"); PrintWriter out = response.getwriter(); out.println("<h1>" + data + "</h1>"); } public void destroy() { // do nothing. } 15/26

Pada contoh servlet yang ada di atas, kita menggunakan response doget untuk menerima request dari client. Kita memilih menggunakan doget karena method yang digunakan oleh client (form method) adalah perintah GET. Ketika client menggunakan metode POST maka response yang digunakan adalah dopost. Untuk memudahkan kita dalam proses pengetesan biasanya contoh-contoh yang kita buat lebih sering menggunakan perintah GET, yang bisa langsung dilihat / diakses dengan menggunakan browser. Aplikasi Client dengan Java Pada contoh berikut kita akan mencoba membuat sebuah aplikasi yang mengakses servlet dari sebuah aplikasi client. Untuk keperluan ini kita perlu sebuah library yang disediakan oleh proyek Apache, yaitu http-client. Ada dua jenis apliakasi contoh yang akan kita buat, yaitu yang menggunakan metode GET, dan yang lainnya menggunakan metode POST. Client dengan metode GET HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet("http://localhost:8080"); HttpResponse response = client.execute(request); // Get the response BufferedReader rd = new BufferedReader (new InputStreamReader(response.getEntity().getContent())); String line = ""; while ((line = rd.readline())!= null) { textview.append(line); } Client dengan metode POST HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost("http://localhost:8080/register"); try { List<NameValuePair> namevaluepairs = new ArrayList<NameValuePair>(1); namevaluepairs.add(new BasicNameValuePair("registrationid","123456789")); post.setentity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = client.execute(post); BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); String line = ""; while ((line = rd.readline())!= null) { System.out.println(line); } } catch (IOException e) { e.printstacktrace(); } 16/26

17/26

EJB (Enterprise Java Beans) EJB (Enterprise Java Beans) merupakan konsep Java untuk mewujudkan sebuah lapisan proses pengolahan data yang standar. Standar merupakan kata kunci yang sangat penting dalam disain EJB, sehingga semua komponen yang dibuat dengan menggunakan konsep EJB bisa di mengerti oleh semua server. Inilah salah satu syarat dari tier proses yang paling penting yaitu fleksibilitas dan dapat digunakan kembali (reusable). Ada beberapa fitur EJB yang sangat membantu untuk meciptakan aplikasi yang sangat modular yaitu : 1. Dilengkapi dengan interface yang memungkinkan untuk proses pemrograman terdistribusi. 2. Memungkinkan untuk menyembunyikan implementasi proses, dan memisahkannya dari interface. Gambaran sebuah modul EJB adalah sebagai berikut : Interface Modul EJB Ada dua jenis EJB yang sekarang sering digunakan (EJB 3.1) yaitu : 1. Session Bean : Statefull, Stateless, Singleton 2. Message Bean Dalam buku ini yang akan banyak digunakan adalah Session Bean yang Stateless, dan Message Bean pada beberapa bagian. Modularitas EJB Teknologi EJB muncul dikarenakan adanya tuntutan untuk membuat aplikasi yang bisa memanfaatkan model proses terdistribusi. Modularitas EJB didisain untuk bisa mencapai taraf modular secara binary, sehingga secara teoritis, sebuah modul yang sudah dikompilasi bisa dipakai oleh modul lain tanpa harus mengkompilasi ulang. Dengam metode seperti ini dimungkinkan untuk mengggabungkan modul-modul yang sudah jadi ke dalam sebuah aplikasi yang kita rancang. Metode modular binary ini akan sangat meningkatkan efektifitas proses coding dan mengurangi munculnya bug yang berulang-ulang. 18/26

Skenario dan gambaran besar sebuah aplikasi yang menggunakan basis EJB bisa dilihat pada diagram di bawah ini: Web App EJB 1 EJB 2 Interface Interface menggambarkan sambungan-sambungan yang bisa diakses oleh modul ataupun aplikasi lain. Apabila program lain ingin mengakses fungsi di dalam modul tersebut, maka program tersebut harus mengakses melalui interface yang telah didefinisikan. Interface sebuah EJB bisa dikatakan berfungsi juga sebagai sebuah API. Karena itu biasanya kita mendefinisikan sebuah interface EJB dalam sebuah proyek tersendiri, sehingga bisa di ekspor sebagai file jar, dan bisa di gunakan oleh orang lain. Implementasi Bagian implementasi EJB merupakan isi program yang sebenarnya dari sebuah modul, dan tersimpan dalam bentuk binary di dalam application server. Dengan mekanisme akses yang disiapkan oleh library EJB, modul lain bisa mengakses dari luar melalui interfacenya. Ketika implementasi EJB sudah di masukkan ke dalam server, maka semua aplikasi yang ada dalam server tersebut bisa menggunakan modul itu dengan syarat ada akses interface yang disediakan oleh EJB tersebut. Implementasi EJB dengan Java dan Jboss AS 7 Dalam sub bab ini kita akan coba bahasa lebih mendalam sebuah modul EJB berdasarkan contoh. Interface Interface IExample { public String getmessage(string name); } 19/26

Implementasi @Stateless @Remote(IExample.class) public class Example implements Iexample { public String getmessage(string name) { return Hallo +name+!!! ; } } Akses (dari Servlet) @EJB IExample example; public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setcontenttype("text/html"); } // Actual logic goes here. String data = request.getparameter("data"); data += example.getmessage(data) PrintWriter out = response.getwriter(); out.println("<h1>" + data + "</h1>"); Layering dengan EJB Salah satu ide lain untuk membuat sistem yang modular secara binary, programmer dituntut untuk membuat sebuah layer lagi yang menghubungkan modul-modul lain yang kita impor. Layer ini memiliki tugas utama sebagai koordinator / integrator dari layer-layer yang ada dibawahnya. Layer inilah yang melayani permintaan aplikasi tampilan (UI) ataupun aplikasi lain dari luar untuk proses pengolahan data. Layer tambahan ini biasanya kita sebut dengan layer proses bisnis, karena berisi logika-logika dari alur proses. 20/26

Untuk memperjelas konsep ini perhatikan bagan di bawah ini: Integrator Modul 1 Modul 2 Integrator pada dasarnya adalah sebuah EJB juga, yang mengakses ke EJB-EJB dibawahnya sehingga secara akses dia memiliki akses dari berbagai fungsi, maupun struktur. Dengan demikian maka EJB pada level Integrator ini tidak memiliki struktur data tersendiri, karena struktur data yang dibutuhkan sudah disediakan oleh EJB pada layer di bawahnya. 21/26

JPA (Java Persistence API) Sebuah persistence entity adalah sebuah kelas java yang sederhana yang tersambung dengan sebuah tabel pada database tertentu. Sehingga instance dari sebuah kelas entity memiliki korespondensi langsung dengan isi tabel / record. Beberapa entity bisa memiliki relasi antar satu dengan yang lain, yang bisa digambarkan dengan object atau metadata relasi. Selanjutnya cara menggambarkan relasi ini bisa dilakukan dengan anotasi ataupun dengan sebuah file xml tambahan. Para programmer java enterprise biasanya lebih memilih untuk menggunakan framework object persistence yang disediakan oleh bermacam-macam proyek opensource daripada menggunakan teknologi entity bean yang disediakan oleh teknologi EJB. Situasi ini dipicu oleh cara penggunaan teknologi entity bean EJB yang rumit, dan dinilai sangat berat. Karena itulah maka akhirnya teknologi framework persistence ini akhirnya di adopsi oleh tim J2EE dan menjadi standar bagi manajemen persistence object pada EJB, dan dituangkan dalam JPA. Java Persistence API hanya berisi spesifikasi teknologi penyimpanan data ke dalam sistem basis data relasional. Inilah fokus utama JPA yaitu membuat map obyek ke dalam tabel basis data atau dikenal dengan istilah ORM. Dan fokus ini di jelaskan dengan sangat gamblang dalam dokumentasi spec. Beberapa keuntungan JPA Ketika kita berinteraksi dengan data, biasanya yang langsung tergambar di benak kita adalah penggunaan RDBMS (Relational Database Management System). Karena biasanya sebuah sistem RDBMS menyediakan banyak kemudahan dan standardisasi dalam proses penyimpanan dan pengambilan data. Hanya saja karena model struktur yang berbeda, maka biasanya seorang programmer akan memiliki tambahan pekerjaan dalam pembuatan proses konversi dari tabel di sebuah database menjadi sebuah struktur data dalam bahasa pemrograman. Karena permasalahan inilah maka lahir ide dari sebuah persistence object, dan salah satu teknologi yang paling sering digunakan dalam Java adala JPA. Ada beberapa keuntungan atas penggunaan JPA yang akan kita bahas dalam sub bab berikut ini. Sebuah Entity adalah POJO (Plain Old Java Object), tidak ada logika Dalam JPA sebuah Entity digambarkan / dimodelkan dengan menggunakan POJO, sebuah obyek Java yang primitive. Kelas yang mewakili sebuah Entity benar-benar kelas dasar tanpa harus menjadi turunan dari kelas lain. Karena itu maka sebuah entity bisa juga digunakan pada operator new, dan perlakuan-perlakuan lain layaknya kelas dalam Java. Menggunakan anotasi untuk mempersingkat penulisan Untuk memudahkan penulisan maka sebuah kelas yang digunakan untuk menjadi entitas ditandai dengan anotasi @Entity. Sebuah anotasi merupakan fitur yang mulai diperkenalkan sejak J2SE 5, dan terdiri dari tanda @ dan diikuti dengan tipe anotasi. 22/26

Menggunakan relasi-relasi yang ada dalam teori graph JPA memanfaatkan nama relasi-relasi secara apa adanya dengan bantuan anotasi, seperti @OneToOne, @OneToMany, @ManyToOne. Dengan menandai sebuah member entity dengan anotasi seperti ini langsung tergambar bagaimana hubungan antara satu kelas dengan yang lainnya. Penggunaan anotasi seperti ini sangat membantu programmer dalam mengimplementasikan model yang menggambarkan perilaku sistem secara keseluruhan. Contoh Entity dengan JPA Sebuah contoh sederhana kelas (POJO) yang dijadikan entity adalah sebagai berikut : @Entity public class Customer { @Id long id; String code; String name;... getters dan setters } Entity dengan ORM Test 23/26

JMS (Java Messaging Service) Membuat JMS Mendefiniskan Destination pada Wildfly Membuat sebuah service JMS Membuat client JMS 24/26

EAR (Enterprise Archive) Sebuah modul aplikasi dalam konteks Jboss AS bisa terdiri dari beberapa komponen pembentuk, yaitu EJB, Applet. 25/26

Daftar Pustaka 1. Oracle Java, http://www.oracle.com/us/technologies/java 2. Eclipse, http://www.eclipse.org 3. JBoss, http://www.jboss.org 4. Wikipedia, http://www.wikipedia.org 5. 26/26