Pages

Kamis, 31 Maret 2011

PEMBUATAN DAN PEMBAHASAN APLIKASI KAMUS TATA SURYA

ANALISA DAN PEMBAHASAN

Gambaran Umum Aplikasi

Pengguna dari aplikasi mobile ini adalah anak-anak usia 10 sampai dengan 12 tahun. Dalam aplikasi ini user dapat melakukan kegiatan seperti melihat informasi dari planet-planet yang ada di tata surya, selain itu user juga dapat melakukan test evaluasi kemampuan terhadap hasil pembelajaran yang telah di lakukan sebelumnya dan akan apa yang telah didapat dari informasi yang terdapat pada aplikasi mobile ini.

Pada penggunaan aplikasi ini user tidak perlu memakai alat indra tambahan seperti mendengar, karena aplikasi ini hanya membutuhkan kemampuan mata sebagai alat input. Setelah informasi yang didapat diproses oleh otak user, maka pada outputnya hanya menggunakan tangan sebagai alat motorik. Selain dari itu, aplikasi ini merupakan aplikasi yang bersifat pembelajaran sehingga dibutuhkan long term memory dari user.

Aplikasi ini bersifat mobile aplication artinya permainan yang diaplikasikan pada perangkat bergerak (handphone), sehingga aplikasi ini dapat dimainkan dimana saja dan kapan saja.

Perencanaan Aplikasi Tata Surya

Hal pertama yang dilakukan penulis dalam pembuatan aplikasi ini adalah dengan menentukan alur terlebih dahulu dari aplikasi ini, kemudian penulis menentukan bentuk atau tampilan pada aplikasi ini, dalam hal ini penulis memakai tampilan ( interface ) 2 dimensi. Aplikasi ini dibuat dengan menggunakan bahasa pemrograman Java, maka bagian-bagian dari aplikasi ini harus disimpan didalam folder atau tempat yang sama dengan bagian utama, aplikasi ini tidak boleh dipisah

dari folder atau tempat script aplikasi ini karena jika bagian-bagian pendukung dari aplikasi ini tidak ada maka aplikasi tersebut tidak akan dapat bisa berjalan.

UML

Use case diagram

Diagram digunakan untuk menggambarkan pengguna aplikasi dan perilaku pengguna terhadap aplikasi. Pengguna aplikasi diwakili oleh aktor, sedangkan perilakunya diwakili oleh use case.

Class Diagram

Diagram class dari aplikasi ini menunjukkan objek-objek yang terdapat dalam system serta keterhubungan antar objek pada gambar terdapat empat class, yaitu class MenuUtama, class TampilanData, class TampilanSearch, dan class TampilanTest dimana masing-masing dari class memiliki katerhubungan dengan class MIDlet induk, dimana yang menjadi class induk di sini adalah class KamusTataSurya.java.

Activity Diagram

Pada Activity Diagram, penulis menggambarkan proses yang terjadi dari awal pada saat user memulai masuk pada halaman utama, maka user dihadapkan pada beberapa menu pilihan yaitu diantaranya menu search, Info Tata Surya, dan evaluasi. Lalu pada tiap menu pilihan user akan dibawa ke pada tampilan akan menu yang user pilih.

Membuat Project Aplikasi

Untuk mengembangkan aplikasi MIDlet, Sun Microsystem menyediakan paket bantu, yaitu Java Wireless Toolkit yang terdiri atas instalasi MIDP, KToolbar, dan beberapa simulator perangkat MID hipotetik untuk melakukan pengujian. Perusahaan pembuat perangkat MID juga menyediakan program bantu pengembangan serta simulator peralatan yang diproduksi oleh mereka yang dapat digabungkan dengan Java Wireless Toolkit milik Sun Microsystem.

Sebelum dapat menggunakan Java Wireless Toolkit, terlebih dahulu Java 2 Software Development Kit (SDK) harus sudah terinstalasi. Jika belum maka gunakan file setup Java 2 SDK yang dapat diambil secara gratis dari situs web Sun Microsystem di java.sun.com.

Untuk membuat proyek aplikasi J2ME klik tombol New Project hingga muncul jendela seperti pada gambar 3.9 Ketikkan ”TataSurya” pada nama proyek dan nama kelas MIDlet lalu klik Create Project, nama kelas yang tersebut merupakan turunan dari MIDlet (extend MIDlet).

Setelah proses membuat proyek selesai maka pada direktori C:\Documents and Settings\Administrator\j2mewtk\2.5.2\apps akan terbentuk sebuah direktori dengan nama sesuai nama project yang baru saja dibuat. Dalam direktori tersebut akan terdapat direktori – direktori sebagai berikut :

  • Direktori bin yang merupakan tempat file MANIFEST.MF, file JAD, file JAR.
  • Direktori lib untuk meletakkan file – file library (biasanya berupa file JAR).
  • Direktori res untuk meletakkan file – file resource seperti file gambar maupun suara.
  • Direktori src untuk meletakkan file – file source code.
  • File project.properties yang menyimpan setting MIDlet.

Penulisan Kode Sumber

Pada penulisan kode sumber Java yang dibutuhkan dalam membuat MIDlet dapat mempergunakan teks editor apa saja seperti Notepad, Notepad++, JCreator, dll. Untuk membangun sebuah aplikasi ini, penulis mempergunakan editor Notepad++ dalam membuat coding aplikasi ini. Kode sumber tersebut harus disimpan pada folder ‘src’ yang berada di dalam folder project yang terletak di C:\Documents and Settings\Administrator\j2mewtk\2.5.2\apps\TataSurya. Penamaan file sumber tersebut harus sama dengan class atau interface yang terdapat didalamnya dengan akhiran “java”. Perlu diingat bahwa class utama untuk aplikasi midlet tersebut harus ada dan dideklarasikan dengan modifier “public”. Jika tidak, perangkat MID tidak dapat menjalankan aplikasi MIDlet tersebut.

Pemograman Aplikasi

Kode sumber diperlukan untuk mengimplementasikan aplikasi Kamus Tata Surya. Pada bagian ini dibahas analisis empat buah kode sumber, yaitu KamusTataSurya.java yang berperan sebagai induk, MenuUtama.java, TampilanData.java, TampilanSearch.java, TampilanTest, dan Save.java

Midlet KamusTataSurya.java

Pada kode sumber “KamusTataSurya.java” ini , merupakan Midlet induk dari aplikasi Kamus Tata Surya.

Pada kode sumber ini terdapat perintah - perintah yang akan dijelaskan menurut fungsinya, seperti :

Subclass untuk mengimplementasikan perintah pada MIDLet. Terdapat beberapa pembuatan tampilan menu berupa tulisan berjalan atau tickers serta kumpulan data dari planet yang nantinya akan terhubung dengan databasenya nanti.

public class KamusTataSurya extends MIDlet{

Display display;

private MenuUtama menu;

public KamusTataSurya() {

display = Display.getDisplay(this);

}

public void startApp(){

kumpulanData();

menu = new MenuUtama(this, display);

Ticker tic = new Ticker("Selamat datang di aplikasi kamus TataSurya (by : Samodra Rachmat Ramdhia)");

menu.setTicker(tic);

display.setCurrent(menu);

}

public void pauseApp(){

}

public void kumpulanData(){

simpan("matahari");

simpan("merkurius");

simpan("venus");

simpan("bumi");

simpan("mars");

simpan("jupiter");

simpan("saturnus");

simpan("uranus");

simpan("neptunus");

simpan("pluto");

}

Kode sumber untuk menghubungkan dengan subclass save.java

public void simpan(String data){

Save saveTataSurya = new Save("db_TataSurya", 255);

saveTataSurya.open();

saveTataSurya.saveRecord(0, data);

saveTataSurya.close();

}

}

MenuUtama.java

Kode sumber pada MenuUtama menjelaskan tentang pembuatan tampilan menu, serta membuat tombol pilihan

class MenuUtama extends Form implements ItemCommandListener, ItemStateListener, CommandListener{

private KamusTataSurya midlet;

private int lanjut = 1 ;

private int kapan = 0;

private int emptyRecID = 0;

private Display display;

private Command cmData, cmSearch, cmTest, cmExit;

private StringItem itemData, itemSearch,itemTest;

private Image image;

private String storageTataSurya = "db_TataSurya";

public MenuUtama(KamusTataSurya midlet, Display display){

super("MENU PILIHAN");

this.midlet = midlet;

this.display = display;

Membuat tampilan dengan gambar.

try{

image = Image.createImage("/sayang1.gif");

}

catch(java.io.IOException e){

}

append(new ImageItem(null,image,ImageItem.LAYOUT_CENTER | ImageItem.LAYOUT_NEWLINE_AFTER,null));

Kode program yang menjelaskan tentang tombol command search, info tata surya, test, dan exit.

cmData = new Command("Search", Command.SCREEN, 1);

cmSearch = new Command("InfoTataSurya", Command.SCREEN, 2);

cmTest = new Command("Test", Command.SCREEN,1);

cmExit = new Command("Exit", Command.BACK, 1);

addCommand(cmExit);

itemSearch = new StringItem(null, "Search \n", Item.BUTTON);

itemSearch.setDefaultCommand(cmSearch);

itemSearch.setItemCommandListener(this);

append(itemSearch);

itemData = new StringItem(null, "Info Tata Surya \n", Item.BUTTON);

itemData.setDefaultCommand(cmData);

itemData.setItemCommandListener(this);

append(itemData);

itemTest = new StringItem(null, "Evaluasi \n", Item.BUTTON);

itemTest.setDefaultCommand(cmTest);

itemTest.setItemCommandListener(this);

append(itemTest);

setItemStateListener(this);

this.setCommandListener(this);

}//penutup constructor

Untuk kemudian masuk ke tampilan lain jika kita mengklik tombol command dengan perintah sesuai dengan kode program.

public void itemStateChanged(Item item){

}

public void commandAction(Command c, Item item){

if(c == cmData){

TampilanData tampilan1 = new TampilanData(midlet, display);

display.setCurrent(tampilan1);

}

if(c == cmSearch){

TampilanSearch tampilan2 = new TampilanSearch(midlet, display);

display.setCurrent(tampilan2);

}

if(c == cmTest){

TampilanTest tampilan3 = new TampilanTest(midlet, display)

}

}//penutup command action

public void commandAction(Command c, Displayable s){

if(c == cmExit){

menghapus();

midlet.exitMIDlet();}

}

void menghapus(){

Save saveTataSurya = new Save(storageTataSurya, 255);

saveTataSurya.delete();

}

}

TampilanData.java

Kode program dengan pembuatan tombol command pada class lain.

class TampilanData extends Form implements ItemCommandListener, ItemStateListener, CommandListener{

private KamusTataSurya midlet;

private int kapan = 0;

private int emptyRecID = 0;

private Display display;

private Command cmNext, cmPrevious, cmBack;

private StringItem itemNext, itemPrevious;

private StringItem siPenjelasan;

private TextField tfTataSurya;

private int recIDNow = 1;

private int recIDNext, recIDPrevious;

StringBuffer sb = new StringBuffer();

StringBuffer xx = new StringBuffer();

Menghubungkan dengan class Midlet. Serta beberapa pembuatan command.

public TampilanData(KamusTataSurya midlet, Display display){

super("Tampilan Data");

this.midlet = midlet;

this.display = display;

cmNext = new Command("Next", Command.SCREEN,1);

cmPrevious = new Command("Previous", Command.SCREEN,2);

cmBack = new Command("Back", Command.BACK,1);

addCommand(cmBack);

tfTataSurya = new TextField("Planet di TataSurya","", 255, TextField.ANY);

this.append(tfTataSurya);

Kode program yang menghubungkan dengan database.

siPenjelasan = new StringItem("",readHelpText(1));

siPenjelasan.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_SMALL));

append(siPenjelasan);

Save saveTataSurya = new Save("db_TataSurya", 255);

//saveTataSurya.delete();

saveTataSurya.open();

String data = saveTataSurya.readRecord(recIDNow); //agar pada waktu start up text box langsung tampil datanya

tfTataSurya.setString(data);

saveTataSurya.close();

itemPrevious = new StringItem(null, "Previous", Item.BUTTON);

itemPrevious.setDefaultCommand(cmPrevious);

itemPrevious.setItemCommandListener(this);

append(itemPrevious);

itemNext = new StringItem(null, "Next", Item.BUTTON);

itemNext.setDefaultCommand(cmNext);

itemNext.setItemCommandListener(this);

append(itemNext);

setItemStateListener(this);

this.setCommandListener(this);

}

public void itemStateChanged(Item item){

}

public void commandAction(Command c, Item item){

kode record untuk menutup tampilan lain.

if(c == cmNext){

Save saveTataSurya = new Save("db_TataSurya", 255);

saveTataSurya.open();

recIDNext = recIDNow +1;

String data = saveTataSurya.readRecord(recIDNext);

if(!data.equals("null")){

recIDNow = recIDNext;

tfTataSurya.setString(data);

siPenjelasan.setText(readHelpText(recIDNow));

}

saveTataSurya.close();

}

kode record untuk menuju ke halaman sebelumnya.

if(c == cmPrevious){

Save saveTataSurya = new Save("db_TataSurya", 255);

saveTataSurya.open();

recIDPrevious = recIDNow - 1;

String data = saveTataSurya.readRecord(recIDPrevious);

if(!data.equals("null")){

recIDNow = recIDPrevious; //supaya gak berlanjut

System.out.println(recIDNow);

tfTataSurya.setString(data);

siPenjelasan.setText(readHelpText(recIDNow));

//setItemStateListener(this);

}

saveTataSurya.close();

}

}//penutup command action

private String readHelpText(int request) {

xx.delete(0,10000);

int penjelasan_ID = 0;

InputStream is = getClass().getResourceAsStream("help.txt");

try {

int chr, i = 0;

while ((chr = is.read()) != -1){ //baca semua file

if(chr == 35){ //jika menemukan karakter # maka jml_penjelasan akan bertambah satu

penjelasan_ID++;

}

if(penjelasan_ID==request){

//proses mencetak penjelasan yang diminta

while((chr = is.read()) != 13){xx.append((char) chr);

}

break;

}

sb.append((char) chr);

}

return xx.toString();

} catch (Exception e) {

}

return null;

}

}

TampilanSearch.java

Kode program tampilan search untuk mencari kata yang berada pada database.

class TampilanSearch extends Form implements ItemCommandListener, ItemStateListener, CommandListener{

private KamusTataSurya midlet;

private Display display;

private Command cmSearch,cmBack;

private StringItem itemSearch;

private StringItem siPenjelasan;

private TextField tfTataSurya;

private boolean cetak = false;

Perintah alert untuk memberitahukan bahawa kata yang telah dimasukkan tidak berada pada database.

private Alert a1;

private Image image;

StringBuffer sb = new StringBuffer();

StringBuffer xx = new StringBuffer();

public TampilanSearch(KamusTataSurya midlet, Display display){

super("Input Telepon");

this.midlet = midlet;

this.display = display;

cmSearch = new Command("Search", Command.SCREEN,1);

cmBack = new Command("Back", Command.BACK,1);

addCommand(cmBack);

Muncul gambar jika kata yang dicari tidak berada pada database.

try{

image = Image.createImage("/gambar_gak_ketemu.gif");

}

catch(java.io.IOException e){

}

tfTataSurya = new TextField("Planet di TataSurya","", 255, TextField.ANY);

this.append(tfTataSurya);

siPenjelasan = new StringItem("","");

append(siPenjelasan);

itemSearch = new StringItem(null, "Search", Item.BUTTON);

itemSearch.setDefaultCommand(cmSearch);

itemSearch.setItemCommandListener(this);

append(itemSearch);

setItemStateListener(this);

this.setCommandListener(this);

}

public void itemStateChanged(Item item){

}

Kode program untuk membuat tombol search untuk mencari kata yang ada pada database dan tombol command back untuk kembali ke menu utama.

public void commandAction(Command c, Item item){

if(c == cmSearch){

siPenjelasan.setText("");

if(!tfTataSurya.getString().equals("")){

Save saveTataSurya = new Save("db_TataSurya", 255);

if(siPenjelasan.getText().equals("")){

a1=new Alert("ALARM", "MAAF, KATA YANG ANDA CARI TIDAK ADA !!!",null,AlertType.ALARM);

a1.setTimeout(2000);

a1.setImage(image);

display.setCurrent(a1);

}

saveTataSurya.close();

}

}

}//penutup command action

Kembali ke menu utama

public void commandAction(Command c, Displayable s){

if(c == cmBack){

MenuUtama tampilan1 = new MenuUtama(midlet, display);

display.setCurrent(tampilan1);

}

}

private String readHelpText(int request) {

xx.delete(0,10000);

int penjelasan_ID = 0;

InputStream is = getClass().getResourceAsStream("help.txt");

try {

int chr, i = 0;

while ((chr = is.read()) != -1){ //baca semua file

if(chr == 35){

//jika menemukan karakter # maka jml_penjelasan akan bertambah satu

penjelasan_ID++;

}

if (penjelasan_ID==request){

//apabila penjelasan_ID sama dengan permintaan user maka status cetak berubah menjadi true

cetak = true;

}

if(cetak){

//proses mencetak penjelasan yang diminta

TampilanTest.java

Kode program untuk membuat pertanyaan pada tes dengan s dinyatakan sebagai jawaban yang nanti dip roses dengan kode program lainnya.

class TampilanTest implements CommandListener {

private Form Nilai,Eval;

private ChoiceGroup p1,p2,p3,p4,p5,p6,p7,p8,p9,p10;

private KamusTataSurya fTS;

private Command cmPilih,cmBack;

private KamusTataSurya midlet;

private Display display;

private String[] s1={"A. Jupiter","B. Mars","C. Pluto","D. Bumi"};

private String[] s2={"A. Pluto","B. Uranus","C. Neptunus","D. Jupiter"};

private String[] s3={"A. Venus","B. Bumi","C. Pluto","D. Mars"};

private String[] s4={"A. Mars","B. Bumi","C. Jupiter","D. Merkurius"};

private String[] s5={"A. Uranus dan Pluto","B. Merkurius dan Bumi","C. Mars dan Saturnus","D. Jupiter dan Uranus"};

private String[] s6={"A. 1847","B. 1842","C. 1848","D. 1846"};

private String[] s7={"A. 3.396,2 dan 362","B. 6.371 dan 365,26","C. 4.642 dan 388,21","D. 6.264 dan 436,24"};

private String[] s8={"A. Tata Surya","B. Bintang","C. Meteor","D. Planet"};

private String[] s9={"A. Saturnus","B. Neptunus","C. Uranus","D. Merkurius"};

private String[] s10={"A. Merkurius","B. Neptunus","C. Jupiter","D. Uranus"};

Kode untuk membuat pertanyaan yang di tunjukkan dengan p.

public void tampilpertanyaan(int i){

this.i=i;

p1= new ChoiceGroup("Planet terbesar di tata surya adalah...",List.EXCLUSIVE,s1,null);

p2= new ChoiceGroup("Urutan planet setelah Saturnus...",List.EXCLUSIVE,s2,null);

p3= new ChoiceGroup("Planet dengan revolusi terlama adalah...",List.EXCLUSIVE,s3,null);

p4= new ChoiceGroup("Planet apa yang tidak mempunyai satelit?",List.EXCLUSIVE,s4,null);

p5= new ChoiceGroup("Neptunus adalah planet yang terdapat antara...dan...",List.EXCLUSIVE,s5,null);

p6= new ChoiceGroup("Neptunus di temukan pertama kali pada tahun?",List.EXCLUSIVE,s6,null);

p7= new ChoiceGroup("Bumi mempunyai Jari-jari...km dan Revolusi... hari",List.EXCLUSIVE,s7,null);

p8= new ChoiceGroup("Benda langit yang dapat mengeluarkan cahaya sendiri disebut?",List.EXCLUSIVE,s8,null);

p9= new ChoiceGroup("Planet di Tata Surya yang memiliki keistimewaan berupa cincin yaitu",List.EXCLUSIVE,s9,null);

p10= new ChoiceGroup("Planet yang memiliki 27 buah satelit yaitu",List.EXCLUSIVE,s10,null);

Eval=new Form("EVALUASI");

cmPilih=new Command("Pilih",Command.OK,1);

cmBack=new Command("Back",Command.BACK,1);

Eval.addCommand(cmPilih);

Eval.addCommand(cmBack);

Eval.setCommandListener(this);

Membuat total perhitungan nilai yang nantinya diproses jawaban kita.

Total=Nilai1+Nilai2+Nilai3+Nilai4+Nilai5+Nilai6+Nilai7+Nilai8+Nilai9+Nilai10;

if(Total==100){

Nilai.append("100");

}

else if(Total==90){

Nilai.append("90");

}

else if(Total==80){

Nilai.append("80");

}

else if(Total==70){

Nilai.append("70");

}

else if(Total==60){

Nilai.append("60");

}

else if(Total==50){

Nilai.append("50");

}

else if(Total==40){

Nilai.append("40");

}

else if(Total==30){

Nilai.append("30");

}

else if(Total==20){

Nilai.append("20");

}

else if(Total==10){

Nilai.append("10");

}

else{

Nilai.append("0");

}

break;

}

}

Perhitungan nilai jawaban yang benar

public void commandAction(Command c, Displayable d) {

if(c==cmPilih){

if(p1.getSelectedIndex()==0){

Nilai1=10;

}

if(p2.getSelectedIndex()==1){

Nilai2=10;

}

if(p3.getSelectedIndex()==2){

Nilai3=10;

}

if(p4.getSelectedIndex()==3){

Nilai4=10;

}

if(p5.getSelectedIndex()==0){

Nilai5=10;

}

if(p6.getSelectedIndex()==3){

Nilai6=10;

}

if(p7.getSelectedIndex()==1){

Nilai7=10;

}

if(p8.getSelectedIndex()==1){

Nilai8=10;

}

if(p9.getSelectedIndex()==0){

Nilai9=10;

}

if(p10.getSelectedIndex()==3){

Nilai10=10;

}

i++;

tampilpertanyaan(i);

}

else if(c==cmBack){

MenuUtama tampilan1= new MenuUtama(midlet,display);

display.setCurrent(tampilan1);

}

}

}

3.6.6 save

untuk mengetahui jumlah recID

int lastRecID(){

try{

berapa = store.getNumRecords(); //untuk mengetahui jumlah recID

}

catch(RecordStoreException rse){}

return berapa;

}

boolean open(){

try{

store = RecordStore.openRecordStore(storage,true);

}

catch(RecordStoreException rse){

}

if(store == null)

return false;

return true;

}

Kode program untuk menutup fom ini

void close(){

try{

if(store != null)

store.closeRecordStore();

}

catch(RecordStoreException rse){

}

}

void delete(){

try{

store.deleteRecordStore(storage);

}

catch(RecordStoreException rse){

}

}

Method destroy

if(store.getNumRecords() > 0){

int i = 1;

RecordEnumeration re = store.enumerateRecords(null, null, false);

while(re.hasNextElement()){

store.getRecord(re.nextRecordId(), recData,0);

rec = rec + strmDataType.readUTF() + strmDataType.readUTF() + "\n";

strmBytes.reset();

}

//re.destroy();

Kompilasi, Pengujian, Dan Pemaketan

setelah semua file umber telah dibuat, proses selanjutya bisa kita lakukan yaitu proses kompilasi da pemaketan. Proses kompilasi ini yaitu proses penerjemahan file sumber Java menjadi bentuk bytecode Java. Sedangkan pemaketan adalah penggabungan file-file bytecode hasil kompilasi beserta resource yang disertakan dalam project tersebut kedalam satu file Java Archive (JAR).

Berikut ini adalah langkah-langkah untuk melakukan kompilasi program yang telah dibuat.

1. Kita buka project pada wireless tool kit, maka buka project tersebut dengan memilih tombol ‘Open Project’ atau dengan memilih menu File>Open Project.

2. Pilih project yang akan dibuka.

3. Lakukan kompilasi dengan menekan tombol Build. Jika program sukses di kompilasi maka akan muncul pesan.

Setelah proses kompilasi selesai, penulis melakukan pengujian terhadap program yang telah dibuat dengan langkah-langkah sebagai berikut:

1. Lakukan pengujian dengan menjalankan program dengan menekan tombol “RUN.

2. Kemudian akan muncul tampilan simulator sebagai berikut:

Jika aplikasi telah berjalan dengan baik, maka dapat dilakukan pemaketan dengan langkah langkah sebagai berikut:

1. Pilih menu Project>Package>Create Package.

2. Pada layar konsol akan tampil informasi proses kompilasi. Jika terdapat kesalahan, maka pesan kesalahan tersebut akan tampil pula pada layar konsol ini. Jika proses pemaketan berhasil, akan tampil informasi seperti berikut ini:

Proses kompilasi dan pemaketan akan menghasilkan dua berkas. Yang pertama yaitu berkas JAR yang merupakan berkas yang berisi seluruh bytecode class yang dipergunakan dalam aplikasi midlet tersebut beserta resource-nya. Yang kedua adalah berkas JAD yang berisi keterangan mengenai paket JAR itu sendiri. Keterangan itu berupa nama midlet, penulis, versi, ukuran, dan lain sebagainya.

Berkas JAD inilah yang pertama kali akan dibaca oleh perangkat MID ketika melakukan proses download. Jika disetujui oleh pengguna, maka dilanjutkan dengan pengambilan berkas JAR-nya.

Spesifikasi Kemampuan Perangkat

Dalam membuat aplikasi permainan dengan J2ME, perlu diperhatikan perangkat dimana aplikasi permainan tersebut akan dijalankan. Hal ini untuk mendapatkan informasi mengenai kemampuan apa saja yang mungkin untuk dimanfaatkan dari perangkat tersebut yang sangat bervariasi. Hal yang patut diperhatikan dari kemampuan perangkat yang akan digunakan adalah :

1. Resolusi layar.

2. Jumlah warna yang mampu ditampilkan.

3. Ukuran maksimum dari aplikasi yang diperkenankan.

4. Susunan dari tombol pada perangkat tersebut.

Aplikasi permainan yang dibangun ini tidak diperuntukan untuk spesifik pada satu model ponsel saja, melainkan dapat dijalankan pada bermacam-macam model ponsel yang memiliki spesifikasi sebagai berikut :

1. Java MIDP 2.0.

2. Resolusi layar minimum 176X220.

3. Ruang kosong pada memori sekitar 150KB.

4. Layout keypad Alphanumeric.

Namun tidak tertutup kemungkinan, bahwa aplikasi ini dapat berjalan pada ponsel dengan layout keypad QWERTY, karena penulis sukses menguji-coba aplikasi ini pada ponsel Sony Ericsson G502.

Instalasi Pada Ponsel

Untuk melakukan instalasi pada ponsel Sony Ericsson G502, penulis tidak mempergunakan aplikasi apapun, hanya menggunakan kabel data Sony Ericsson yang disambungkan ke port USB pada PC. Ketika ponsel dihubungkan dengan PC, ponsel meminta penulis untuk menentukan mode sambungan USB, yang akan menentukan fungsi ponsel yang terbaca oleh PC. Penulis memilih mode “Mass Storage”, yang membuat ponsel terdeteksi sebagai media penyimpanan tidak tetap, karena penulis hanya ingin menyalin file .jar-nya saja yang merupakan file installer aplikasi ini dari PC penulis ke kartu memori ponsel.

Setelah file instalasi selesai disalin ke kartu memori, penulis melepaskan sambungan kabel data ponsel ke PC. Kemudian dengan bantuan program file manager yang ada pada ponsel, penulis melakukan instalasi program pada ponsel.