SlideShare a Scribd company logo
1 of 9
Download to read offline
J2ME
Java 2 Micro Edition
J2ME dirancang untuk dapat menjalankan program Java pada perangkat-perangkat
semacam handphone dan PDA, yang memiliki karakteristik yang berbeda dengan sebuah
komputer biasa, misalnya kecilnya jumlah memori pada handphone dan PDA. 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.
Dalam J2ME dibagi menjadi dua bagian yang dikenal dengan istilah configuration
dan profile.
J2ME Configuration
J2ME Configuration mendefinisikan lingkungan kerja J2ME runtime. Oleh karena
setiap handled devices memiliki fitur-fitur yang berbeda-beda, J2ME Configuration ini
dirancang yakni menyediakan librari standar yang mengimplementasikan fitur standar dari
sebuah handled devices. Mengapa perlu J2ME Configuration bisa dikatakan merupakan JRE
pada handled devices. Lingkungan kerja yang dimaksud meliputi Java Virtual Machine yang
digunakan untuk menjalankan program Java.
Ada 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.
Perbedaan antara CLDC dan CDC adalah sebagai berikut :
CDLC CDC
Mengimplementasikan subset dari J2SE Mengimplementasikan seluruh fitur pada
J2SE
JVM yang digunakan dikenal dengan nama
KVM
JM yang digunakan dikenal dengan nama
CVM
Digunakan pada perangkat handled dengan
ukuran memori terbatas (160-512 KiloBytes)
Digunakan pada perangkat handled dengan
ukuran memori minimal 2 Mbytes
Processor 16 bit atau 32 bit Processor : 32 bit
J2ME Profile
Jika J2ME Configuration menyediakan librari-librari Java untuk implementasi fitur-
fitur standar dari sebuah handled devices, J2ME Profile menyediakan implementasi
implementasi tambahan yang sangat spesifik dari sebuah handled devices. Kemampuan
standart itulah yang diimplementasikan oleh J2ME Configuration, sedangkan kemampuan
fitur lain sangat bergantung pada jenis perangkat handled yang digunakan akan
diimplementasikan oleh J2ME Profile.
Ada lima kategori J2ME Profile saat ini, yaitu :
 Mobile Information Device Profile (MIDP)
 Foundation Profile (FP)
 Personal Profile
 RMI Profile
 Personal Digital Assitance Profile
MIDP menyediakan librari-librari Java untuk implementasi dasar antarmuka (GUI),
implementasi jaringan, database dan timer. MIDP dirancang khususnya untuk wireless
phone dan pager. Buku ini hanya akan membahas pengembangan aplikasi wireless
dengan MIDP saja yang bekerja pada CLDC.
APLIKASI MIDLET
Midlet HelloWord
Membuat sebuah project dengan nama HelloWorld. Kemudian buat sebuah file Java
bernama HelloWorld.java yang berisi listing program sebagai berikut:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HelloWorld extends MIDlet {
private Display display ;
private TextBox t ;
public HelloWorld(){
display = Display.getDisplay(this) ;
t = new TextBox"My First MIDlet","HelloWorld",256,0;
display.setCurrent(t);
}
public void startApp() {
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Simpan file diatas pada direktori /src. Selanjutnya lakukan Build. Dari MIDlet HelloWorld :
 Program Midlet mengimport paket javax.microedition.midlet dan
javax.microedition.lcdui. Paket javax.microedition.midlet
mendefinisikan MIDP dan paket javax.microedition.lcdui menyediakan
fungsi-fungsi untuk memanipulasi antarmuka GUI pada handled.
 Setiap program Midlet harus merupakan turunan dari class Midlet yang
didefinisikan pada paket javax.microedition.midlet. Hal ini mirip dengan
Applet yaitu setiap applet Java haruslah turunan dari class Applet atau JApplet.
 MIDlet haruslah mengimplementasikan fungsi-fungsi abstract pada class MIDlet,
minimal 3 fungsi berikut :
1. public void startApp()
2. public void pauseApp()
3. public void destroyApp(boolean unconditional)
 Setiap program MIDlet tidak boleh memiliki fungsi public static void
main(String args[]) selayaknya aplikasi Java non-Applet.
Menambahkan Ticker pada HelloWord
Kita akan menambahkan sebuah ticker atau sejenis tulisan yang berjalan pada MIDlet
HelloWorld yang baru saja kita buat.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HelloWorld2 extends MIDlet {
private Display display ;
private TextBox t ;
private Ticker tick ;
public HelloWorld2(){
display = Display.getDisplay(this) ;
t = new TextBox ("My First
MIDlet","HelloWorld",256,0 ;
tick = new Ticker("J2ME") ;
t.setTicker(tick);
display.setCurrent(t);
}
public void startApp() {
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Arsitektur Aplikasi Midlet
Paket 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, perhatikan kode Java di bawah ini:
package javax.microedition.midlet;
import com.sun.midp.midlet.MIDletState;
import com.sun.midp.midlet.MIDletSuite;
public abstract class MIDlet{
protected MIDlet(){
state = new MIDletProxy(this);
}
protected abstract void startApp() throws
MIDletStateChangeException{
}
protected abstract void pauseApp() {
}
protected abstract void destroyApp(boolean unconditional)
throws
MIDletStateChangeException{
}
public final void notifyDestroyed(){
state.notifyDestroyed();
}
public final void notifyPaused(){
state.notifyPaused();
}
public final String getAppProperty(String key){
return state.getMIDletSuite().getProperty(key);
}
public final void resumeRequest(){
state.resumeRequest();
}
Private MIDletProxy state ;
}
Tampak ada tiga fungsi yang bersifat abstract yaitu :
protected abstract void startApp() throws
MIDletStateChangeException{
}
protected abstract void pauseApp() {
}
protected abstract void destroyApp(boolean unconditional)
throws MIDletStateChangeException{
}
Aplikasi MIDlet sudah pasti merupakan turunan dari class MIDlet diatas, harus
mengimplementasikan tiga fungsi diatas. Itulah mengapa pada contoh MIDlet HelloWorld
diatas, Anda menemukan implementasi dari fungsi-fungsi tersebut, 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 Anda, yakni ;
 Public final void notifyDestroyed();
Digunakan oleh MIDlet untuk memberitahukan ke AMS bahwa MIDlet telah
dihancurkan dan dibersihkan dari memori. Mengenai AMS ini akan dibahas kemudian.
 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 pada fungsi getAppProperty().
 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
Merupakan aplikasi yang dijalankan pada sebuah perangkat handled. MIDlet tidak
berinteraksi langsung dengan hardware dari handphone, Palm atau perangkat handled
Anda yang lain, melainkan berinteraksi melalui Application Management Software.
AMS inilah yang akan menerima sinyal dari MIDlet bahwa MIDlet akan dijalankan atau
berhenti.
 MIDlet State
Merupakan status dari sebuah MIDlet yang akan dijelaskan kemudian.
Status Midlet
Jika Anda mengenal Java Applet, Anda akan menemukan bahwa Applet dapat berada
dalam status init(), start(), stop() dan run(). Untuk MIDlet, ada tiga status dalam daur hidup
sebuah MIDlet yaitu:
Nama satus Keterangan
Paused Status ini terjadi ketika MIDlet selesai diinisialisasi dan tidakmelakukan
aksi apapun.
Pada status ini MIDlet tidak boleh sedang mengunci suatu sumber daya,
misalnya tidak boleh sedang melakukan locking atau mengunci sebuah file
untuk ditulis yang menyebabkan proses lain tidak bisa menulis ke file
tersebut.
Secara garis besar, status MIDlet adalah paused pada saat :
 Setelah MIDlet dibuat dengan konstruktor new()
 Dari status Active, kemudian berhasil memanggil fungsi
 MIDlet.pauseApp()
 Dari status Active, kemudian berhasil memanggil fungsi
 MIDlet.notifyPaused()
 Dari status Active, namun ketika akan start() terja
Actived Status ini terjadi ketika MIDlet sedang aktif/berjalan dengan normal, yakni
setelah memanggil fungsi MIDlet.startApp()
Destroyed Status ini terjadi ketika MIDlet berhenti berjalan (identik dengan exit)
sehingga seluruh sumber daya yang digunakan akan dibebaskan. Status ini
terjadi ketika berhasil dilakukan pemanggilan fungsi MIDlet.destroyApp()
atau MIDlet.notifyDestroyed()
Eksekusi Sebuah MIDlet
Umumnya urutan eksekusi sebuah MIDlet adalah sebagai berikut:
1. AMS (Application Management Software) menginisialisasi sebuah objek MIDlet,
sehingga MIDlet berada pada status Paused.
2. Ketika AMS memutuskan bahwa MIDlet sudah waktunya dijalankan, maka AMS
memanggil fungsi MIDlet.startApp() sehingga MIDlet akan mulai aktif berfungsi.
3. Ketika AMS memutuskan bahwa MIDlet harus dinonaktifkan sementara, maka AMS
akan memanggil fungsi MIDlet.pauseApp() sehingga MIDlet akan berhenti bekerja.
4. Ketika AMS memutuskan bahwa MIDlet harus dinonaktifkan selamanya, maka AMS
akan memanggil fungsi MIDlet.destroyApp() sehingga alokasi memori yang digunakan
oleh MIDlet yang bersangkutan akan dibersihkan.
Referensi :
 Ady Wicaksono, Pemrograman Aplikasi Wireless dengan Java, Elex Media Komputindo

More Related Content

What's hot

Cara membuat simulasi lcd running text dengan menggunakan proteus
Cara membuat simulasi lcd running text dengan menggunakan proteusCara membuat simulasi lcd running text dengan menggunakan proteus
Cara membuat simulasi lcd running text dengan menggunakan proteusFilla Fidyana
 
Running Text on LCD ATMEGA 8535
Running Text on LCD ATMEGA 8535Running Text on LCD ATMEGA 8535
Running Text on LCD ATMEGA 8535Chardian Arguta
 
Lucky anugerah 1100631020
Lucky anugerah 1100631020Lucky anugerah 1100631020
Lucky anugerah 1100631020Lucky AnugerahP
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.10)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.10)Modul Praktikum Pemrograman Berorientasi Objek (Chap.10)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.10)Debby Ummul
 
Remote pemantau webcam berbasis aplikasi j2me
Remote pemantau  webcam  berbasis aplikasi j2meRemote pemantau  webcam  berbasis aplikasi j2me
Remote pemantau webcam berbasis aplikasi j2meDwi Fahmi
 
04. prak.-pemrograman-client-server
04. prak.-pemrograman-client-server04. prak.-pemrograman-client-server
04. prak.-pemrograman-client-serverAyu Karisma Alfiana
 
Jeni slides j2 me-03-high level user interface
Jeni slides j2 me-03-high level user interfaceJeni slides j2 me-03-high level user interface
Jeni slides j2 me-03-high level user interfaceUNIVERSITY Of LAMPUNG
 
MudafiqRiyan - MVC-DAO Java Desktop
MudafiqRiyan - MVC-DAO Java DesktopMudafiqRiyan - MVC-DAO Java Desktop
MudafiqRiyan - MVC-DAO Java DesktopMudafiq R. Pratama
 
Praktikum ii sistem tertanam
Praktikum ii sistem tertanamPraktikum ii sistem tertanam
Praktikum ii sistem tertanamsulaiman yunus
 

What's hot (13)

Cara membuat simulasi lcd running text dengan menggunakan proteus
Cara membuat simulasi lcd running text dengan menggunakan proteusCara membuat simulasi lcd running text dengan menggunakan proteus
Cara membuat simulasi lcd running text dengan menggunakan proteus
 
Running Text on LCD ATMEGA 8535
Running Text on LCD ATMEGA 8535Running Text on LCD ATMEGA 8535
Running Text on LCD ATMEGA 8535
 
Lucky anugerah 1100631020
Lucky anugerah 1100631020Lucky anugerah 1100631020
Lucky anugerah 1100631020
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.10)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.10)Modul Praktikum Pemrograman Berorientasi Objek (Chap.10)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.10)
 
Jeni Intro2 Bab11 Applet
Jeni Intro2 Bab11 AppletJeni Intro2 Bab11 Applet
Jeni Intro2 Bab11 Applet
 
Jeni Web Programming Bab 9 Jsf
Jeni Web Programming Bab 9 JsfJeni Web Programming Bab 9 Jsf
Jeni Web Programming Bab 9 Jsf
 
Remote pemantau webcam berbasis aplikasi j2me
Remote pemantau  webcam  berbasis aplikasi j2meRemote pemantau  webcam  berbasis aplikasi j2me
Remote pemantau webcam berbasis aplikasi j2me
 
04. prak.-pemrograman-client-server
04. prak.-pemrograman-client-server04. prak.-pemrograman-client-server
04. prak.-pemrograman-client-server
 
Modul PBO Bab-08 - Java GUI
Modul PBO Bab-08 - Java GUIModul PBO Bab-08 - Java GUI
Modul PBO Bab-08 - Java GUI
 
MVC J2EE using servlet
MVC J2EE using servletMVC J2EE using servlet
MVC J2EE using servlet
 
Jeni slides j2 me-03-high level user interface
Jeni slides j2 me-03-high level user interfaceJeni slides j2 me-03-high level user interface
Jeni slides j2 me-03-high level user interface
 
MudafiqRiyan - MVC-DAO Java Desktop
MudafiqRiyan - MVC-DAO Java DesktopMudafiqRiyan - MVC-DAO Java Desktop
MudafiqRiyan - MVC-DAO Java Desktop
 
Praktikum ii sistem tertanam
Praktikum ii sistem tertanamPraktikum ii sistem tertanam
Praktikum ii sistem tertanam
 

Similar to J2ME_GUIDE

JENI-J2ME-Bab02-Memulai Pemrograman Mobile.pdf
JENI-J2ME-Bab02-Memulai Pemrograman Mobile.pdfJENI-J2ME-Bab02-Memulai Pemrograman Mobile.pdf
JENI-J2ME-Bab02-Memulai Pemrograman Mobile.pdfJurnal IT
 
Jeni j2 me-bab02-memulai pemrograman mobile
Jeni j2 me-bab02-memulai pemrograman mobileJeni j2 me-bab02-memulai pemrograman mobile
Jeni j2 me-bab02-memulai pemrograman mobileUNIVERSITY Of LAMPUNG
 
Jbptunikompp gdl-dwirezekim-21927-11-12uniko-i
Jbptunikompp gdl-dwirezekim-21927-11-12uniko-iJbptunikompp gdl-dwirezekim-21927-11-12uniko-i
Jbptunikompp gdl-dwirezekim-21927-11-12uniko-imaskens
 
Yunus martha efendy_1100631016_pengertian java me
Yunus martha efendy_1100631016_pengertian java meYunus martha efendy_1100631016_pengertian java me
Yunus martha efendy_1100631016_pengertian java meyunus martha efendy
 
Yunus martha efendy_1100631016_pengertian java me
Yunus martha efendy_1100631016_pengertian java meYunus martha efendy_1100631016_pengertian java me
Yunus martha efendy_1100631016_pengertian java meyunus martha efendy
 
J2me edwin prassetyo 1100631028
J2me edwin prassetyo 1100631028J2me edwin prassetyo 1100631028
J2me edwin prassetyo 1100631028Edwin Prassetyo
 
JENI-J2ME-Bab01-Pengembangan Aplikasi Mobile.pdf
JENI-J2ME-Bab01-Pengembangan Aplikasi Mobile.pdfJENI-J2ME-Bab01-Pengembangan Aplikasi Mobile.pdf
JENI-J2ME-Bab01-Pengembangan Aplikasi Mobile.pdfJurnal IT
 
Jeni j2 me-bab11-topik-topik tambahan
Jeni j2 me-bab11-topik-topik tambahanJeni j2 me-bab11-topik-topik tambahan
Jeni j2 me-bab11-topik-topik tambahanUNIVERSITY Of LAMPUNG
 
Tugas aplikasi internet_1100631034
Tugas aplikasi internet_1100631034Tugas aplikasi internet_1100631034
Tugas aplikasi internet_1100631034ariunmuh
 
Jeni slides j2 me-01-pengenalan thdp pembangunan apl mobile
Jeni slides j2 me-01-pengenalan thdp pembangunan apl mobileJeni slides j2 me-01-pengenalan thdp pembangunan apl mobile
Jeni slides j2 me-01-pengenalan thdp pembangunan apl mobileUNIVERSITY Of LAMPUNG
 
Jeni slides j2 me-01-pengenalan thdp pembangunan apl mobile
Jeni slides j2 me-01-pengenalan thdp pembangunan apl mobileJeni slides j2 me-01-pengenalan thdp pembangunan apl mobile
Jeni slides j2 me-01-pengenalan thdp pembangunan apl mobileeli priyatna laidan
 
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSONTutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSONDimas Prawira
 

Similar to J2ME_GUIDE (20)

JENI-J2ME-Bab02-Memulai Pemrograman Mobile.pdf
JENI-J2ME-Bab02-Memulai Pemrograman Mobile.pdfJENI-J2ME-Bab02-Memulai Pemrograman Mobile.pdf
JENI-J2ME-Bab02-Memulai Pemrograman Mobile.pdf
 
pemrograman mobile
pemrograman mobilepemrograman mobile
pemrograman mobile
 
Jeni j2 me-bab02-memulai pemrograman mobile
Jeni j2 me-bab02-memulai pemrograman mobileJeni j2 me-bab02-memulai pemrograman mobile
Jeni j2 me-bab02-memulai pemrograman mobile
 
Jbptunikompp gdl-dwirezekim-21927-11-12uniko-i
Jbptunikompp gdl-dwirezekim-21927-11-12uniko-iJbptunikompp gdl-dwirezekim-21927-11-12uniko-i
Jbptunikompp gdl-dwirezekim-21927-11-12uniko-i
 
Java mobile eition
Java mobile eitionJava mobile eition
Java mobile eition
 
1100631014
11006310141100631014
1100631014
 
Tugas aplinet 1100631048
Tugas aplinet 1100631048Tugas aplinet 1100631048
Tugas aplinet 1100631048
 
Yunus martha efendy_1100631016_pengertian java me
Yunus martha efendy_1100631016_pengertian java meYunus martha efendy_1100631016_pengertian java me
Yunus martha efendy_1100631016_pengertian java me
 
Yunus martha efendy_1100631016_pengertian java me
Yunus martha efendy_1100631016_pengertian java meYunus martha efendy_1100631016_pengertian java me
Yunus martha efendy_1100631016_pengertian java me
 
J2me edwin prassetyo 1100631028
J2me edwin prassetyo 1100631028J2me edwin prassetyo 1100631028
J2me edwin prassetyo 1100631028
 
JENI-J2ME-Bab01-Pengembangan Aplikasi Mobile.pdf
JENI-J2ME-Bab01-Pengembangan Aplikasi Mobile.pdfJENI-J2ME-Bab01-Pengembangan Aplikasi Mobile.pdf
JENI-J2ME-Bab01-Pengembangan Aplikasi Mobile.pdf
 
Materi tentang j2me
Materi tentang j2meMateri tentang j2me
Materi tentang j2me
 
Jeni J2 Me Bab11 Topik Topik Tambahan
Jeni J2 Me Bab11 Topik Topik TambahanJeni J2 Me Bab11 Topik Topik Tambahan
Jeni J2 Me Bab11 Topik Topik Tambahan
 
Jeni j2 me-bab11-topik-topik tambahan
Jeni j2 me-bab11-topik-topik tambahanJeni j2 me-bab11-topik-topik tambahan
Jeni j2 me-bab11-topik-topik tambahan
 
Tugas aplikasi internet_1100631034
Tugas aplikasi internet_1100631034Tugas aplikasi internet_1100631034
Tugas aplikasi internet_1100631034
 
Jeni slides j2 me-01-pengenalan thdp pembangunan apl mobile
Jeni slides j2 me-01-pengenalan thdp pembangunan apl mobileJeni slides j2 me-01-pengenalan thdp pembangunan apl mobile
Jeni slides j2 me-01-pengenalan thdp pembangunan apl mobile
 
Jeni slides j2 me-01-pengenalan thdp pembangunan apl mobile
Jeni slides j2 me-01-pengenalan thdp pembangunan apl mobileJeni slides j2 me-01-pengenalan thdp pembangunan apl mobile
Jeni slides j2 me-01-pengenalan thdp pembangunan apl mobile
 
Landasan teori
Landasan teoriLandasan teori
Landasan teori
 
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSONTutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON
 
Pemrograman android
Pemrograman androidPemrograman android
Pemrograman android
 

J2ME_GUIDE

  • 1. J2ME Java 2 Micro Edition J2ME dirancang untuk dapat menjalankan program Java pada perangkat-perangkat semacam handphone dan PDA, yang memiliki karakteristik yang berbeda dengan sebuah komputer biasa, misalnya kecilnya jumlah memori pada handphone dan PDA. 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. Dalam J2ME dibagi menjadi dua bagian yang dikenal dengan istilah configuration dan profile. J2ME Configuration J2ME Configuration mendefinisikan lingkungan kerja J2ME runtime. Oleh karena setiap handled devices memiliki fitur-fitur yang berbeda-beda, J2ME Configuration ini dirancang yakni menyediakan librari standar yang mengimplementasikan fitur standar dari sebuah handled devices. Mengapa perlu J2ME Configuration bisa dikatakan merupakan JRE pada handled devices. Lingkungan kerja yang dimaksud meliputi Java Virtual Machine yang digunakan untuk menjalankan program Java. Ada 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.
  • 2.  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. Perbedaan antara CLDC dan CDC adalah sebagai berikut : CDLC CDC Mengimplementasikan subset dari J2SE Mengimplementasikan seluruh fitur pada J2SE JVM yang digunakan dikenal dengan nama KVM JM yang digunakan dikenal dengan nama CVM Digunakan pada perangkat handled dengan ukuran memori terbatas (160-512 KiloBytes) Digunakan pada perangkat handled dengan ukuran memori minimal 2 Mbytes Processor 16 bit atau 32 bit Processor : 32 bit J2ME Profile Jika J2ME Configuration menyediakan librari-librari Java untuk implementasi fitur- fitur standar dari sebuah handled devices, J2ME Profile menyediakan implementasi implementasi tambahan yang sangat spesifik dari sebuah handled devices. Kemampuan standart itulah yang diimplementasikan oleh J2ME Configuration, sedangkan kemampuan fitur lain sangat bergantung pada jenis perangkat handled yang digunakan akan diimplementasikan oleh J2ME Profile. Ada lima kategori J2ME Profile saat ini, yaitu :  Mobile Information Device Profile (MIDP)  Foundation Profile (FP)  Personal Profile  RMI Profile  Personal Digital Assitance Profile MIDP menyediakan librari-librari Java untuk implementasi dasar antarmuka (GUI), implementasi jaringan, database dan timer. MIDP dirancang khususnya untuk wireless phone dan pager. Buku ini hanya akan membahas pengembangan aplikasi wireless dengan MIDP saja yang bekerja pada CLDC.
  • 3. APLIKASI MIDLET Midlet HelloWord Membuat sebuah project dengan nama HelloWorld. Kemudian buat sebuah file Java bernama HelloWorld.java yang berisi listing program sebagai berikut: import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloWorld extends MIDlet { private Display display ; private TextBox t ; public HelloWorld(){ display = Display.getDisplay(this) ; t = new TextBox"My First MIDlet","HelloWorld",256,0; display.setCurrent(t); } public void startApp() { } public void pauseApp() { } public void destroyApp(boolean unconditional) { } } Simpan file diatas pada direktori /src. Selanjutnya lakukan Build. Dari MIDlet HelloWorld :  Program Midlet mengimport paket javax.microedition.midlet dan javax.microedition.lcdui. Paket javax.microedition.midlet mendefinisikan MIDP dan paket javax.microedition.lcdui menyediakan fungsi-fungsi untuk memanipulasi antarmuka GUI pada handled.  Setiap program Midlet harus merupakan turunan dari class Midlet yang didefinisikan pada paket javax.microedition.midlet. Hal ini mirip dengan Applet yaitu setiap applet Java haruslah turunan dari class Applet atau JApplet.  MIDlet haruslah mengimplementasikan fungsi-fungsi abstract pada class MIDlet, minimal 3 fungsi berikut : 1. public void startApp() 2. public void pauseApp()
  • 4. 3. public void destroyApp(boolean unconditional)  Setiap program MIDlet tidak boleh memiliki fungsi public static void main(String args[]) selayaknya aplikasi Java non-Applet. Menambahkan Ticker pada HelloWord Kita akan menambahkan sebuah ticker atau sejenis tulisan yang berjalan pada MIDlet HelloWorld yang baru saja kita buat. import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloWorld2 extends MIDlet { private Display display ; private TextBox t ; private Ticker tick ; public HelloWorld2(){
  • 5. display = Display.getDisplay(this) ; t = new TextBox ("My First MIDlet","HelloWorld",256,0 ; tick = new Ticker("J2ME") ; t.setTicker(tick); display.setCurrent(t); } public void startApp() { } public void pauseApp() { } public void destroyApp(boolean unconditional) { } } Arsitektur Aplikasi Midlet Paket 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, perhatikan kode Java di bawah ini:
  • 6. package javax.microedition.midlet; import com.sun.midp.midlet.MIDletState; import com.sun.midp.midlet.MIDletSuite; public abstract class MIDlet{ protected MIDlet(){ state = new MIDletProxy(this); } protected abstract void startApp() throws MIDletStateChangeException{ } protected abstract void pauseApp() { } protected abstract void destroyApp(boolean unconditional) throws MIDletStateChangeException{ } public final void notifyDestroyed(){ state.notifyDestroyed(); } public final void notifyPaused(){ state.notifyPaused(); } public final String getAppProperty(String key){ return state.getMIDletSuite().getProperty(key); } public final void resumeRequest(){ state.resumeRequest(); } Private MIDletProxy state ; } Tampak ada tiga fungsi yang bersifat abstract yaitu : protected abstract void startApp() throws MIDletStateChangeException{ } protected abstract void pauseApp() { } protected abstract void destroyApp(boolean unconditional) throws MIDletStateChangeException{ }
  • 7. Aplikasi MIDlet sudah pasti merupakan turunan dari class MIDlet diatas, harus mengimplementasikan tiga fungsi diatas. Itulah mengapa pada contoh MIDlet HelloWorld diatas, Anda menemukan implementasi dari fungsi-fungsi tersebut, 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 Anda, yakni ;  Public final void notifyDestroyed(); Digunakan oleh MIDlet untuk memberitahukan ke AMS bahwa MIDlet telah dihancurkan dan dibersihkan dari memori. Mengenai AMS ini akan dibahas kemudian.  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 pada fungsi getAppProperty().  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 Merupakan aplikasi yang dijalankan pada sebuah perangkat handled. MIDlet tidak berinteraksi langsung dengan hardware dari handphone, Palm atau perangkat handled Anda yang lain, melainkan berinteraksi melalui Application Management Software. AMS inilah yang akan menerima sinyal dari MIDlet bahwa MIDlet akan dijalankan atau berhenti.  MIDlet State Merupakan status dari sebuah MIDlet yang akan dijelaskan kemudian.
  • 8. Status Midlet Jika Anda mengenal Java Applet, Anda akan menemukan bahwa Applet dapat berada dalam status init(), start(), stop() dan run(). Untuk MIDlet, ada tiga status dalam daur hidup sebuah MIDlet yaitu: Nama satus Keterangan Paused Status ini terjadi ketika MIDlet selesai diinisialisasi dan tidakmelakukan aksi apapun. Pada status ini MIDlet tidak boleh sedang mengunci suatu sumber daya, misalnya tidak boleh sedang melakukan locking atau mengunci sebuah file untuk ditulis yang menyebabkan proses lain tidak bisa menulis ke file tersebut. Secara garis besar, status MIDlet adalah paused pada saat :  Setelah MIDlet dibuat dengan konstruktor new()  Dari status Active, kemudian berhasil memanggil fungsi  MIDlet.pauseApp()  Dari status Active, kemudian berhasil memanggil fungsi  MIDlet.notifyPaused()  Dari status Active, namun ketika akan start() terja Actived Status ini terjadi ketika MIDlet sedang aktif/berjalan dengan normal, yakni setelah memanggil fungsi MIDlet.startApp() Destroyed Status ini terjadi ketika MIDlet berhenti berjalan (identik dengan exit) sehingga seluruh sumber daya yang digunakan akan dibebaskan. Status ini terjadi ketika berhasil dilakukan pemanggilan fungsi MIDlet.destroyApp() atau MIDlet.notifyDestroyed() Eksekusi Sebuah MIDlet Umumnya urutan eksekusi sebuah MIDlet adalah sebagai berikut: 1. AMS (Application Management Software) menginisialisasi sebuah objek MIDlet, sehingga MIDlet berada pada status Paused. 2. Ketika AMS memutuskan bahwa MIDlet sudah waktunya dijalankan, maka AMS memanggil fungsi MIDlet.startApp() sehingga MIDlet akan mulai aktif berfungsi. 3. Ketika AMS memutuskan bahwa MIDlet harus dinonaktifkan sementara, maka AMS akan memanggil fungsi MIDlet.pauseApp() sehingga MIDlet akan berhenti bekerja.
  • 9. 4. Ketika AMS memutuskan bahwa MIDlet harus dinonaktifkan selamanya, maka AMS akan memanggil fungsi MIDlet.destroyApp() sehingga alokasi memori yang digunakan oleh MIDlet yang bersangkutan akan dibersihkan. Referensi :  Ady Wicaksono, Pemrograman Aplikasi Wireless dengan Java, Elex Media Komputindo