Modul Pengantar J2ME

14

Click here to load reader

Transcript of Modul Pengantar J2ME

Page 1: Modul Pengantar J2ME

Modul Mobile Aplication

Pengantar J2MEPerkembangan pemrograman aplikasi selama ini terfokus pada pengembangan aplikasi stand alone, kemudian berkembang lagi menjadi aplikasi client server serta aplikasi berbasis web. Dengan berkembangnya teknologi wireless seperti PDA dan handphone pada beberapa tahun terakhir ini, maka mulailah babak baru berupa aplikasi wireless.

Dengan semboyan “write once run everywhere”, teknologi Java dengan portabilitas yang tinggi, memungkinkan untuk jalan di segala sistem operasi selama disitu ada JVM (Java Virtual Machine) termasuk perangkat wireless dengan ukuran memori yang relatif kecil.

J2ME terdiri atas komponen-komponen sebagai berikut : Java Virtual Machine (JVM)

Komponen ini untuk menjalankan program program Java pada emulator atau handled devices.

Java API (Application Programming Interface)Komponen ini merupakan kumpulan librari untuk menjalankan dan mengembangkan program Java pada handled devices.

Tools lain untuk pengembangan aplikasi Java semacam emulator Java Phone, emulator Motorolla.

A. J2ME vs. WAPPerbedaan utama antara J2ME dengan WAP adalah pada J2ME aplikasi terdapat di client dan bisa juga di server (client server) tidak seperti WAP yang seluruh aplikasi terdapat di server (di client dalam WAP hanya terdapat WAP browser), sehingga dalam J2ME bisa dibuat aplikasi standalone tanpa tergantung koneksi ke operator seluler seperti pada WAP yang memerlukan koneksi ke operator seluler. Dalam J2ME juga terdapat database lokal yakni RMS (Record Management System) yang berguna untuk menyimpan data.

B. API pada J2MEAda dua kategori J2ME Configuration saat ini, yaitu :

CLDC (Connected Limited Device Configuration)Kategori ini umumnya digunakan untuk aplikasi Java pada handphone semacam Nokia, Samsung Java Phone, Motorola i85s, PDA (Personal Digital Assistant) semacam PALM, Pocket PC. Umumnya perangkat-perangkat tersebut hanya memiliki memori berukuran 160-512 KiloBytes.CDC (Connected Device Configuration)Kategori ini umumnya digunakan untuk aplikasi Java pada perangkat-perangkat handled devices dengan ukuran memori paling tidak 2 Megabytes. Contohnya adalah internet TV, Nokia Communicator dan car television atau TV pada mobil.

Subset API pada CLDC dijelaskan pada gambar di bawah ini.

Gambar API pada J2ME CLDC

Create by team java center STMIK Widya Pratama Pekalongan 1

Page 2: Modul Pengantar J2ME

Modul Mobile Aplication

Perbedaan antara CDC dan CLDC adalah sebagai berikut :

CLDC CDC

Mengimplementasikan subset dari J2SE Mengimplementasikan seluruh fitur padaJ2SE

JVM yang digunakan dikenal dengan namaKVM

JVM yang digunakan dikenal dengan namaCVM

Digunakan pada perangkat handled denganukuran memori terbatas (160-512KiloBytes)

Digunakan pada perangkat handled denganukuran memori minimal 2 Mbytes

Processor 16 bit atau 32 bit Processor : 32 bit

Create by team java center STMIK Widya Pratama Pekalongan 2

Page 3: Modul Pengantar J2ME

Modul Mobile Aplication

Pengembangan AplikasiDengan J2MEA. Perangkat pengembanganSelain JDK dalam pengembangan aplikasi dengan J2ME diperlukan juga software tambahan yakni J2ME Wireless Toolkit. Dalam Toolkit ini terdapat API J2ME dan emulator beberapa perangkat wireless. Toolkit ini berfungsi untuk mengkompile dan mensimulasikan aplikasi pada emulator.

Gambar J2ME Wireless Toolkit

Beberapa menu fungsi utama J2ME Wireless Toolkit antara lain :File, New Project, tombol ini digunakan untuk memulai membuat projectFile, Open Project, tombol ini digunakan untuk membuka project yang pernah dibuatProject, Build, tombol ini digunakan untuk mengkompile source kode yang terdapat di dalam direktori /apps/nama_project/src/Project, Run, tombol ini digunakan untuk menjalankan aplikasi pada emulator sesuai pilihanProject, Package, menu ini untuk membundel aplikasi yang telah dibuat. Menu ini digunakan terakhir kali setelah semua tahapan pengembangan selesaiProject, Setting, tombol ini digunakan untuk menyeting beberapa parameter aplikasi yang dibuat

Sedangkan keterangan direktori-direktori yang ada didalam J2ME Wireless Toolkit adalah sebagai berikut :

File/Direktori Keterangan

appdb\ Direktori berisi file-file database, seperti file-file RMS fileapps\ Direktori yang berisi demo aplikasi dan aplikasi-aplikasi yang dibuat dengan

KToolbarbin\ Batch file dan file-file executable tooldocs\ Direktori yang berisi dokumtasi APIlib\midpapi.zip Arsip kelas-kelas API CLDC dan MIDP. File-file ini digunakan

pada proses kompilasi dan preverificationsessions\ Direktori default yang berisi profiling, monitoring memori dan session file pada

monitoring networkwktlib\devices\ Direktori yang berisi file-file properti device-device yang digunakan pada

emulator

Create by team java center STMIK Widya Pratama Pekalongan 3

Page 4: Modul Pengantar J2ME

Modul Mobile Aplication

B. Tahapan pengembanganPengembangan aplikasi dengan J2ME memerlukan tahapan-tahapan seperti yang dijelaskan dalam gambar dibawah ini

Setelah semua fungsional aplikasi sesuai dengan yang direncanakan, aplikasi perlu disimulasikan ke beberapa emulator sesuai dengan target usernya. Secara umum semua perangkat wireless yang telah mensupport Java(J2ME) maka aplikasi yang kita buat akan bisa dijalankan di perangkat tersebut, namun terkadang untuk tiap devais target mempunyai kekhususan seperti lebar dan tinggi layar/display, sehingga mungkin kita perlu membuat beberapa versi distribusi aplikasi kita yang disesuaikan dengan devais targetnya.

Gambar Tahapan pengembangan aplikasi dengan J2ME

Gambar Aplikasi J2ME yang dijalankan pada emulator

Create by team java center STMIK Widya Pratama Pekalongan 4

Page 5: Modul Pengantar J2ME

Modul Mobile Aplication

MIDlet Dasar

A. Siklus hidup sebuah MIDletMIDlet (Mobile Information Device Applet) mempunyai 3 kemungkinan kondisi : pause, active dan destroyed. Ketika MIDlet mulai dijalankan, maka MIDlet berada pada kondisi aktif. Jika terdapat interupsi seperti adanya panggilan pada ponsel maka MIDlet berada pada kondisi pause. Dan ketika selesai menjalankan MIDlet maka diperlukan metodh untuk membunuh MIDlet dengan destroyApp(). Ketiga kondisi ini digambarkan pada diagram di bawah ini :

Gambar Siklus hidup sebuah MIDlet

B. MIDlet sederhanaUntuk memulai belajar J2ME ini kita ambil contoh program HelloStmik yang akan menampilkan tulisan "Hello Stmik in Java", melalui TextBox. Pertama yang perlu dilakukan adalah membuat project baru dan memberi nama HelloStmik, kemudian salinlah kode berikut dan simpan ke dalam file “HelloStmik.java” di dalam direktori /apps/HelloStmik/src/.

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class HelloStmik extends MIDlet {

private Display display;public HelloStmik(){

display = Display.getDisplay(this);}public void startApp(){

TextBox t = new TextBox("Stmik","Hello Stmik in Java",256,0);display.setCurrent(t);

}public void pauseApp(){}public void destroyApp(boolean unconditional){}

}

Create by team java center STMIK Widya Pratama Pekalongan 5

Page 6: Modul Pengantar J2ME

Modul Mobile Aplication

Contoh kode diatas akan menampilkan sebuah TextBoox yang diberi label Stmik dan didalamnya terdapat kata “Hello Stmik in Java”. Ketika program dipanggil maka state MIDlet berada pada active dengan memanggil metodh startApp() dan pada state inilah sebuah TextBoox dibuat (instantiasi) untuk kemudian menampilkan string Hello Stmik in Java.

Setiap MIDlet harus mempunyai minimal 3 method : startApp(), pauseApp() dan destroyApp(boolean unconditional). Output program diatas seperti pada gambar di bawah ini

Gambar MIDlet Dasar, Hello Stmik

Arsitektur Aplikasi MIDletPaket memiliki class MIDlet yang mendefinisikan MIDP (Mobile Information Device Profile) dan interaksinya dengan perangkat handled yang bersangkutan. Class ini merupakan class utama dalam sebuah MIDlet, yaitu semua aplikasi MIDlet harus merupakan turunan dari class ini. Class ini merupakan class abstract, sehingga class turunannya harus mengimplementasikan fungsi-fungsi abstract di dalamnya.

Aplikasi MIDlet sudah pasti merupakan turunan dari class MIDlet dan harus mengimplementasikan tiga fungsi seperti pada contoh MIDlet HelloStmik diatas, sekalipun implementasi fungsi tersebut tidak melakukan apa-apa.Fungsi-fungsi yang tidak abstract pada class MIDlet bisa Anda gunakan karena otomatis diturunkan ke aplikasi MIDlet sepert :

public final void notifyDestroyed();Digunakan oleh MIDlet untuk memberitahukan ke AMS bahwa MIDlet telah dihancurkan dan dibersihkan dari memori. public final void notifyPaused();Digunakan oleh MIDlet untuk memberitahukan ke AMS bahwa MIDlet telah dinonaktifkan sementara (paused).public final String getAppProperty(String key);Digunakan oleh MIDlet untuk mengambil informasi properti dari AMS sesuai parameter key public final void resumeRequest();Digunakan oleh MIDlet untuk meminta ke AMS agar diaktifkan kembali.

Ada beberapa istilah penting dalam daur hidup sebuah MIDlet, yaitu:• Application Management Software

MIDlet berjalan dalam sebuah perangkat handled. Application Management Software ini merupakan software atau program bawaan yang ada dalam perangkat handled tersebut untuk mengatur manajemen aplikasi MIDlet yang ada.

• MIDlet

Create by team java center STMIK Widya Pratama Pekalongan 6

Page 7: Modul Pengantar J2ME

Modul Mobile Aplication

Merupakan aplikasi yang dijalankan pada sebuah perangkat handled. MIDlet tidak berinteraksi langsung dengan hardware dari handphone, Palm atau perangkat handled yang lain, melainkan berinteraksi melalui Application Management Software. AMS inilah yang akan menerima sinyal dari MIDlet bahwa MIDlet akan dijalankan atau berhenti.

• MIDlet StateMerupakan status dari sebuah MIDlet.

Create by team java center STMIK Widya Pratama Pekalongan 7

Page 8: Modul Pengantar J2ME

Modul Mobile Aplication

Event HandlingEvent berguna untuk menangani interaksi user dengan program, misalnya user memilih sebuah menu dalam aplikasi MIDlet.Untuk menangani event perlu mengimplementasikan interface CommandListener dan atau ItemListener.

CommandListener berfungsi untuk menangani jika user memilih Command tertentu sedangkan ItemListener berfungsi untuk menangani jika user mengubah nilai seperti misalnya mengubah pilihan pada ChoiceGroup.

Untuk memberikan gambaran sebuah event bekerja, perhatikan contoh berikut :

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class HelloStmik2 extends MIDlet implements CommandListener{private Command cmdExit;private Display display;

public HelloStmik2(){

display = Display.getDisplay(this);cmdExit = new Command("Exit", Command.SCREEN,1);

}public void startApp(){

TextBox t = new TextBox("Stmik","Hello Stmik in Java",155,0);t.addCommand(cmdExit);t.setCommandListener(this);display.setCurrent(t);

}public void pauseApp(){}public void destroyApp(boolean unconditional){}public void commandAction(Command cmd,Displayable disp){

if(cmd==cmdExit){

destroyApp(false);notifyDestroyed();

}}

}

Pada contoh kedua ini, kita tambahkan sebuah Command untuk keluar dari aplikasi yang telah kita buat pada contoh 1. Ketika program pertama kali dipanggil, maka state berada pada Aktif, disini sebuah TextBox dan Command dibuat. Kemudian program menunggu respon dari user dengan mengimplementasikan CommandListener. Ketika user menekan Command “cmdExit” maka program memanggil metodh(destroyApp) untuk membunuh MIDlet.

Create by team java center STMIK Widya Pratama Pekalongan 8

Page 9: Modul Pengantar J2ME

Modul Mobile Aplication

Gambar Penggunaan event

Create by team java center STMIK Widya Pratama Pekalongan 9

Page 10: Modul Pengantar J2ME

Modul Mobile Aplication

User InterfaceDalam sebuah aplikasi seringkail membutuhkan user interface seperti misalnya dibutuhkan input pada aplikasi yang akan dibangun. Contoh di bawah ini mendemonstrasikan input dengan sebuah TextField dan output dengan StringItem.

import javax.microedition.midlet.*;import javax.microedition.lcdui.*;

public class Converter extends MIDlet implements CommandListener{private Display display;private Command cmdExit;private Command cmdConvert;private Command cmdOK;private Form form1;private Form form2;private TextField input;private StringItem hasil;

public void startApp(){

display = Display.getDisplay(this);cmdConvert = new Command("Convert",Command.SCREEN,1);cmdExit = new Command("Exit",Command.EXIT,1);cmdOK = new Command("OK",Command.SCREEN,1);form1 = new Form("Converter");input = new TextField("Input:",null,256,TextField.ANY);form1.addCommand(cmdConvert);form1.addCommand(cmdExit);form1.setCommandListener(this);form1.append(input);form2 = new Form("Hasil");hasil = new StringItem(null,null);form2.append(hasil);form2.addCommand(cmdOK);form2.setCommandListener(this);display.setCurrent(form1);

}public void pauseApp(){}public void destroyApp(boolean unconditional){} public void commandAction(Command cmd,Displayable disp){

String displayString = null;{

if(cmd==cmdExit){

destroyApp(false);notifyDestroyed();

}

Create by team java center STMIK Widya Pratama Pekalongan 10

Page 11: Modul Pengantar J2ME

Modul Mobile Aplication

else if(cmd==cmdConvert){

String s = input.getString();displayString = convert(s);hasil.setText(displayString);display.setCurrent(form2);

}else if(cmd==cmdOK){

input.setString(null);display.setCurrent(form1);

}}

}private String convert(String s){

return s.toUpperCase();}

}

Contoh diatas mendemonstrasikan penggunaan user interface dalam hal ini TextField yang digunakan sebagai media input dan input string tersebut diproses dalam fungsi untuk mengkonversi menjadi huruf kapital yakni dengan metodh String.toUpperCase() untuk kemudian dikeluarkan melalui StringItem. Dalam pengoperasian fungsi-fungsi diatas tentunya dilengkapi dengan Command-Command yang mengimplementasikan CommandListener.Output program diatas tampil pada gambar di bawah ini.

Gambar Input konverter karakter Gambar Output konverter karakter

Create by team java center STMIK Widya Pratama Pekalongan 11