Minggu, 12 Mei 2013

JAVA2 MICRO EDITION (J2ME)


 J2ME adalah Suatu spesifikasi dan teknologi yang fokus kepada perangkat konsumen. Perangkat ini menghabiskan sedikit daya dari baterei karena memiliki jumlah memori yang terbatas, layar yang kecil dan bandwith jaringan yang rendah.Dengan perkembangbiakan perangkat mobile konsumer dari telepon, PDA, kotak permainan ke peralatan-peralatan rumah, Java menyediakan suatu lingkungan yang portable untuk mengembangkan dan menjalankan aplikasi pada perangkat ini.
          Program J2ME, seperti semua program JAVA adalah diterjemahkan oleh VM. Program-program tersebut dicompile ke dalam bytecode dan diterjemahkan dengan Java Virtual Machine(JVM).Ini berarti bahwa program-program tersebut tidak berhubungan langsung dengan perangkat. J2ME menyediakan suatu interface yang sesuai dengan perangkat. Aplikasi-aplikasi tersebut tidak harus dicompile ulang supaya mampu dijalankan pada mesin yang berbeda. J2ME terletak pada configuration dan profile-profile. Suatu configuration menggambarkan lingkungan runtime dasar dari suatu sistem J2ME. Ia menggambarkan core library, virtual machine, fitur keamanan dan jaringan.
Pengertian J2ME
          Java2 Micro Edition atau yang biasa disebut J2ME adalah lingkungan pengembangan yang didesain untuk meletakkan perangkat lunak JAVA pada barang elektronik berserta perangkat pendukungnya. Pada J2ME, jika perangkat lunak berfungsi dengan baik pada sebuah perangkat maka belum tentu juga berfungsi baik pada perangkat yang lain. J2ME membawa Java ke dunia informasi, komunikasi, dan perangkat komputasi yang lebih kecil dibandingkan dengan computer desktop. J2ME biasa digunakan pada telepon selular, pager, PDA, dan sejenisnya.
Teknologi J2ME juga memiliki beberapa keterbatasan jika diaplikasikan pada ponsel. J2ME sangat bergantung pada device yang digunakan, bisa dari merk ponsel, maupun kemampuan ponsel, dan dukungan terhadap teknologi J2ME. MIsalnya, jika sebuah ponsel tidak memiliki kamera maka jelas J2ME pada ponsel tersebut tidak dapat mengakses kamera.

Konsep program J2ME adalah sebagai berikut :

Dalam J2ME kita harus akan membuat main class turunan dari class MIDlet, main class turunan dari MIDlet tersebut yag nantinya akan dipanggil pertama kali saat applikasi kita berjalan di HP, dalam main class tersebut juga ada 3 method yang nantinya berfungsi sebagai trigger even dari HP kita. Seperti:
starApp(), method yang dipanggil apabila aplikasi kita pertama kali jalan.
pauseApp(), method yang dipanggil apabila pengguna hp mempause aplikasi kita.
destroyApp(), method yang dipanggil apabila pengguna hp menutup aplikasi kita.

Sebenernya pada dasarnya J2ME itu terdiri dari 3 bagian yaitu konfigurasi, profil dan paket-paket opsional, berikut penjelasannya.
  1. konfigurasi
    yaitu bagian yang berisi JVM dan beberapa library kelas lainnya. Ada dua jenis konfigurasi yaitu CDC (Connected Device Configuration) dan CLDC (Connected Limited Device Configuration).
  2. profile
    yaitu bagian perluasan dari konfigurasi artinya selain sekumpulan kelas yang ada di konfigurasi, terdapat juga kelas lain yang lebih spesifik yang didefinisikan di dalam profil. Oleh karena itu profil akan membantu secara fungsional dengan menyediakan kelas-kelas yang tidak terdapat di konfigurasi.

    profile yang paling populer dari Sun adalah sering disebut MIDP (Mobile Information Device Profile).
  3. paket-paket opsional
    yaitu paket tambahan yang dibutuhkan oleh aplikasi sehingga pada saat proses deployment paket-paket tersebut perlu didistribusikan sebagai bagian dari aplikasi yang bersangkutan. Perlu diingat bahwa paket-paket opsional tersebut bukan merupakan paket yang dibuat oleh perusahaan alat yang digunakan.

Gambaran J2ME

Platform JAVA
Java dibuat pada tahun 1991 oleh James Gosling. Pada awalnya diberi nama Oak, dimana untuk menghormati pohon yang ada di luar jendela Gosling. Kemudian namanya diubah ke Java karena telah ada sebuah bahasa yang diberi nama Oak.
Motivasi sesungguhnya dari Java adalah kebutuhan akan sebuah bahasa yang bisa digunakan pada berbagai platform yang bisa dimasukkan ke dalam berbagai produk elektronik seperti pemanggang roti dan lemari es. Salah satu dari proyek pertama yang dikembangkan menggunakan JAVA sebuah remote kontrol yang diberi nama Star 7. Pada saat yang sama, World Wide Web dan Internet berkembang sangat cepat. Gosling
menyadari bahwa Java dapat digunakan untuk pemrograman Internet.
Dengan keluarnya versi 1.2, platform Java telah dipilah-pilah menjadi beberapa edisi :
The Standard Edition(J2SE), Enterprise Edition(J2EE), Mobile Edition(J2ME), dan JavaCard API.
J2SE – Java 2 Platform, Standard Edition Aplikasi Desktop
J2EE – Java 2 Platform, Enterprise Edition Aplikasi enterprise dengan fokus pada pengembangan sisi webserver, termasuk
servlet,JSP,EJB, dan XML J2ME – Java 2 Platform, Micro Edition Perangkat Mobile JavaCard Smart Cards.


Dibawah ini adalah contoh program J2ME Aplikasi Biodata

Menginisialisasi properti yang dibutuhkan :

import java.util.Date;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;


public class Tugas1 extends MIDlet implements CommandListener {

private Display display; //inisialisasi variabel tampilan
private TextField tNm,tNim,tTTL,tAlmt,tNotelp; //Inisialisasi variabel TextField (komponen turunan  Item  yang menampung  teks  dan  mengedit  teks  tersebut) private Form Frmisi, FrmHasil; //Inisialisasi variabel Form
private Command Ok,Exit,Back,cmList,cmTekbok; //Inisialisasi variabel  perintah – perintah tombol private ChoiceGroup pilprod, pilkelamin; //Inisialiasi variable Choice Group (menampilkan daftar  elemen  yang  dapat  dipilih di  dalam  Form )
private int choiceGroupIndex; //Inisialisasi variabel  indeks Choice Group
private List listMataKul; // Inisialisasi variabel  list
private StringItem sNm, sNim,sKel, sTTL, sAlmt, sNotelp, sProd; //Inisialisasi  variabel Kalimat
private Ticker ticker; // Inisialisasi variabel  teks berjalan
private TextBox texbok; // Inisialisasi variabel  kotak teks
private Image img, img2; // Inisialisasi variabel  Gambar
private Gauge gauge; //Inisialisisai  variabel  Gauge
private DateField date; //Inisialisasi  variabel Tanggal


Penjelasan Source code di StartApp ( Memulai Aplikasi )

public Display getDisplay () {
return Display.getDisplay(this);
}
//memanggil manager aplikasi untuk memulai MIDlet
public void startApp(){

display = Display.getDisplay(this);

//Memasukkan gambar yang terdapat di folder src projek
try {
img=Image.createImage("/Tugas1pkg/d.jpg");
} catch (Exception e){}

//menampilkan komponen pada form
Frmisi = new Form("Biodata");

//Membuat textfield untuk mengisi data - data
tNm = new TextField ("Nama: ", "", 30, TextField.ANY);
tNim = new TextField ("NIM : ", "", 30, TextField.ANY);
tTTL = new TextField ("Tempat Tanggal Lahir: ", "", 30, TextField.ANY);
tAlmt = new TextField ("Alamat :", "", 30, TextField.ANY);
tNotelp = new TextField ("No Telepon: ", "", 30, TextField.ANY);

//membuat choice berjenis grup pop up untuk program studi
pilprod = new ChoiceGroup("Pilihan Prodi", Choice.POPUP);

//membuat pilihan - pilihan program studi yang tersedia di choice group
pilprod.append("Teknik Komputer", null);
pilprod.append("Manajemen Informatika", null);


//membuat choice berjenis eksklusif untuk program studi
pilkelamin = new ChoiceGroup ("Jenis Kelamin",Choice.EXCLUSIVE);


//membuat pilihan - pilihan jenis kelamin  yang tersedia di choice group
pilkelamin.append("Laki - laki ",null);
pilkelamin.append("Perempuan",null);

//membuat tombol yang akan digunakan dalam form
Exit = new Command("Exit", Command.EXIT, 0);
Ok = new Command("Tampil Hasil" , Command.OK, 0);
cmList= new Command("Tampil List",Command.OK,0);
cmTekbok= new Command("Tampil TextBox",Command.OK,0);
Back = new Command("Back", Command.BACK, 0);

//Membuat tampilan gambar loading(muatan)
gauge = new Gauge("Program Berjalan", false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING);

//Membuat tanggal dan waktu
date= new DateField("Tanggal & Waktu", DateField.DATE_TIME);
date.setDate(new Date());

// membuat teks berjalan
ticker = new Ticker("Aplikasi ini dibuat oleh Biondi ");
Frmisi.setTicker(ticker);
display.setCurrent(Frmisi);


Frmisi.append(img); // Menambahkan  gambar pada form isi
Frmisi.append(date);//Menambahkan tanggal pada form isi
Frmisi.append(tNm);//Menambahkan kotak isian nama pada form isi
Frmisi.append(tTTL);//Menambahkan kotak isian tempat tanggal lahir pada form isi
Frmisi.append(pilkelamin);//Menambahkan choicegrup pilihan jenis kelamin
Frmisi.append(tNim);//Menambahkan kotak isian Nomor Induk Mahasiswa
Frmisi.append(tAlmt);//Menambahkan kotak isian alamat
Frmisi.append(pilprod);//Menambahkan choicegrup pilihan program studi
Frmisi.append(tNotelp);//Menambahkan kotak isian nomor telepon
Frmisi.append(gauge);//Menambahkan gambar loading

//Menambahkan  Tombol Perintah pada form isi
Frmisi.addCommand(Exit);
Frmisi.addCommand(Ok);
Frmisi.addCommand(cmList);
Frmisi.addCommand(cmTekbok);
Frmisi.setCommandListener(this);

//membuat form hasil biodata yang telah diisi
FrmHasil = new Form("Hasil");

//Memasukkan gambar yang terdapat di folder src projek
try {
img2=Image.createImage("/Tugas1pkg/art0.jpg");
} catch (Exception e){}

//membuat string item yang digunakan untuk form hasil
sNm = new StringItem ("Nama : ", null);
sNim = new StringItem ("NIM : ", null);
sKel = new StringItem ("Jenis kelamin : ", null);
sAlmt = new StringItem ("Alamat : ", null);
sTTL = new StringItem ("Tempat Tanggal Lahir : ", null);
sNotelp = new StringItem ("No Telepon : ", null);
sProd = new StringItem ("Program Studi : ", null);

//Membuat tampilan gambar loading(muatan)
gauge = new Gauge("Program Berjalan", false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING);

//Membuat tanggal
date= new DateField("Tanggal", DateField.DATE);
date.setDate(new Date());

//Membuat Daftar kuliah bertipe eksklusif
listMataKul = new List("Mata Kuliah", List.EXCLUSIVE);
listMataKul.append("Pemrograman Visual",null);
listMataKul.append("Kecerdasan Buatan",null);
listMataKul.append("Manajemen Proyek",null);
listMataKul.append("Mikrokontroller",null);
listMataKul.append("Konsep Switching",null);

//Menambahkan tombol perintah di list
listMataKul.addCommand(Back);
listMataKul.setCommandListener(this);

FrmHasil.append(img2);//Menambahkan gambar pada form hasil
FrmHasil.append(date);//Menambahkan tanggal pada form hasil
FrmHasil.append(sNm);//Menambahkan String item nama pada form hasil
FrmHasil.append(sKel);//Menambahkan String item jenis kelamin pada form hasil
FrmHasil.append(sTTL);//Menambahkan String item tempat tanggal lahir pada from hasil
FrmHasil.append(sNim);//Menambahkan String item nim pada form hasil
FrmHasil.append(sAlmt);//Menambahkan String item alamat pada form hasil
FrmHasil.append(sProd);//Menambahkan Stringitem porgram studi pada form hasil
FrmHasil.append(sNotelp);//Menambahkan String item nomor telepon pada form hasil
FrmHasil.append(gauge);//Menambahkan gambar loading pada from hasil
FrmHasil.setTicker(ticker);/Menambahkan teks berjalan pada form hasil
display.setCurrent(Frmisi);

//menambahkan perintah untuk tombol back
FrmHasil.addCommand(Back);
FrmHasil.setCommandListener(this);

//Menambahkan Teks Box
texbok = new TextBox("TextBox"," Aplikasi ini dibuat oleh Biondi \n NIM : E3210148 ",255,TextField.ANY);
//Menambahkan tombol perintah back pada teks box
texbok.addCommand(Back);
texbok.setCommandListener(this);

}


Penjelasan tentang source code Command Action (Perintah - perintah tombol)

public void pauseApp(){

}

public void destroyApp(boolean unconditional){

}

public void commandAction(Command c, Displayable d){

//Membuat variabel string
String nama,nim,alamat,ttl,notelp,prodi,kelamin = null;

//Membuat fungsi tombol perintah Ok yang akan menampilkan isian dari form isi
if(c == Ok){

nama = tNm.getString();
nim = tNim.getString();
alamat = tAlmt.getString();
ttl = tTTL.getString();
notelp = tNotelp.getString();
prodi = pilprod.getString(pilprod.getSelectedIndex());
kelamin = pilkelamin.getString(pilkelamin.getSelectedIndex());

sNm.setText(nama);
sNim.setText(nim);
sAlmt.setText(alamat);
sKel.setText(kelamin);
sTTL.setText(ttl);
sNotelp.setText(notelp);
sProd.setText(prodi);

display.setCurrent(FrmHasil);

} else if(c == Exit){ //membuat fungsi tombol exit
destroyApp(true);
notifyDestroyed();

} else if(c == Back){ //Membuat fungsi  tombol back untuk kembali ke tampilan awal form isi
display.setCurrent(Frmisi);
} else if(c == cmList) {//Membuat fungsi tombol list yang akan menampilkan list
display.setCurrent(listMataKul);
} else if (c == cmTekbok) {//Membuat fungsi tombl yang akan menampilkan TeksBox
display.setCurrent(texbok);

}
}
}



Hasil tampilan jika source code di jalankan :
 Dibawah ini tampiplan - tampilan  form pengisian biodata  :




 Dibawah ini tampilan form hasil :
 



Dibawah ini tampilan  List Mata Kuliah :


Dibawah ini tampilan teksbox :




Daftar pustaka :

guojie,jackwin li.build your stock with j2me.ibm.com
penerbit :M.Shalahuddin



 oleh :
Helmi Mahfudhatul Harum
1100631026 / MI. A