Minggu, 16 Desember 2012

Thread dan Sprite J2ME


THREAD
Thread nerupakan Salah satu fitur yang tertanam pada environment Java . Thread memungkinkan sebuah aplikasi Java untuk melakukan banyak aktifitas/operasi secara simultan (serentak). Dengan menggunakannya secara benar, thread memungkinkan User Interface sebuah aplikasi tetap responsif saat aplikasi tersebut melakukan operasi yang memakan waktu lama seperti komunikasi networking atau perhitunganperhitungan yang kompleks.

Thread adalah unit fundamental dari eksekusi program. Setiap aplikasi minimal memiliki sebuah thread untuk menjalankan kode. Aplikasi yang memiliki dua thread atau lebih, biasa disebut dengan multithreaded application. Fungsi seperti ini sering kita butuhkan dalam membuat program aplikasi/game nantinya. Misalnya, sebuah thread yang bertugas menjalankan operasi penghitungan nilai/skor game, kemudian thread yang lainnnya menjalankan operasi pendeteksi tabrakan antara obyek-obyek pada game. Kedua thread tersebut berjalan bersamaan dalam melakukan tugasnya masing-masing.

Setiap thread memiliki sebuah konteks yang berhubungan dengannya. Konteks tersebut memuat informasi tentang thread, seperti alamat dari instruksi yang sedang dieksekusi dan storage untuk variabel-variabel lokal. Konteks tersebut akan terupdate begitu thread dieksekusi. Konteks juga menyimpan state dari thread.

Thread bisa dalam state sebagai berikut:
Running, saat dimana thread sedang menjalankan kode.
Ready, saat dimana thread siap untuk mengeksekusi kode.
Suspended, saat dimana thread sedang menunggu external event. Contohnya: menunggu data yang datang dari device lain. Begitu data datang dan event terjadi (dilakukan), maka thread kembali ke state ready.
Terminated, saat dimana thread selesai mengeksekusi kode.
Thread yang dalam keadaan (state) running, ready atau suspended, adalah thread yang hidup (live thread). Sedangkan thread yang berstatus terminated adalah thread mati (dead thread).

Meskipun sebuah aplikasi boleh memiliki banyak thread, namun perlu memperhatikan kemampuan device yang ada (mobile device). Yang pada umumnya hanya memiliki kemampuan dan jumlah prosesor yang kecil (biasanya hanya mampu satu atau dua saja) untuk melakukan eksekusi kode.

berikut ini merupakan contoh sebuah thread:





SPRITE

Salah satu elemen grafik yang penting dalam game adalah sprite.
Menurut Martin Wells(2004, 0271), sprite merupakan kumpulan image yang mewakili berbagai states dalam keaatuan graphikal.
pengertian secara teratur beberapa sprite akan menghasilkan suatu animasi.
objek bergerak yang sering kita lihat dalam game, misalnya karakter game merupakan contoh dari sprite.

berikut merupkan contoh sprite:


http://info.poliseni.ac.id/index.php?load=tapdetilberita&id=178

Sabtu, 03 November 2012

PERSITENCE-RMS-Pert 5

Pertemuan ke lima, mata kuliah mobile computing, membahas materi tentang Persistance.
Persistance merupakan framework dalam pemrograman java yang dapat menyimpan data-data aplikasi secara lokal didalam device tersebut.
Record Store adalah sebuah koleksi dari record-record atau bisa disebut sebagai data base.
Untuk kali ini, saya membuat satu aplikasi berdasarkan tugas mata kuliah mobile computing.
Aplikasi ini menggunakan RMS(Record Manajemen System) sebagai record store.
Berikut adalah aplikasi menjawab soal matematika dan penilaiannya.

Source Code:


package persistance;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;
/**
 * @author kie
 */

public class Persistance extends MIDlet implements CommandListener{
                private  List Mainmenu;
                private Display display;
                private Command Exit;
                private Command Back, Hasil, cmdbalik, Simpan;
                private Form form1;
                private TextField s1, s2, s3, s4, s5, id;//variabel soal
                int n1, n2, n3, n4, n5; //variabel nilai/skor
                int nilaiakhir;
                private RecordStore rs;
                private RecordEnumeration re;
                private Alert alert;
               
                public Persistance() {
                form1 = new Form ("MENU UTAMA");
                Exit = new Command("Exit", Command.EXIT, 0);
                Back = new Command("Back", Command.BACK, 1);
                cmdbalik = new Command("Kembali", Command.BACK, 1);
                Hasil = new Command("Hasil", Command.OK, 2);
                Simpan = new Command("Simpan", Command.OK, 2);
                alert = new Alert(null);
                alert.setTimeout(Alert.FOREVER);
   
                Mainmenu = new List (null, Choice.IMPLICIT);
                rs=null;
                //membuka / membuat record store
                try
                {
                                rs = RecordStore.openRecordStore("db_KodeBar", true);
                }
                catch (RecordStoreException rse)//check kalau error = exception
                {
                                alert.setString("Record Store could not open."+"appliacation will stopped");
                                alert.setType(AlertType.ERROR);
                                display.setCurrent(alert,null);
                                System.exit(1);
                }
}
                protected void destroyApp(boolean unconditional) {
                                notifyDestroyed();
                }
                protected void pauseApp() {
                                // TODO Auto-generated method stub
                }
                protected void startApp() {
                                display = Display.getDisplay(this);
                                display.setCurrent(Mainmenu);
                                menuList();
                }
                private void menuList() {
                                Mainmenu = new List("MENU UTAMA", List.IMPLICIT);
                                Mainmenu.append("UJIAN", null);
                                Mainmenu.append("NILAI TERTINGGI", null);
                                Mainmenu.append("KELUAR", null);
                                Mainmenu.setCommandListener(this);
                                display.setCurrent(Mainmenu);
                }
                public void soal_ujian(){
                                form1 = new Form("UJIAN");
                                s1 = new TextField("1. hasil dari 2+3 adalah = ?", "", 100, TextField.DECIMAL);
                                s2 = new TextField("2. hasil dari 8/2 adalah = ?", "", 100, TextField.DECIMAL);
                                s3 = new TextField("3. hasil dari 3*4 adalah = ?", "", 100, TextField.DECIMAL);
                                s4 = new TextField("4. hasil dari7-3 adalah = ?", "", 100, TextField.DECIMAL);
                                s5 = new TextField("5. hasil dari(7-3)*2 adalah = ?", "", 100, TextField.DECIMAL);
                                form1.append(s1);
                                form1.append(s2);
                                form1.append(s3);
                                form1.append(s4);
                                form1.append(s5);
                                form1.setCommandListener(this);
                                form1.addCommand(Back);
                                form1.addCommand(Hasil);
                                display.setCurrent(form1);
                }
                public void nama () {
                                form1 = new Form("SIMPAN HASIL");
                                id = new TextField ("masukkan nama anda : ", "", 100, TextField.ANY);
                                form1.append(id);
                                form1.setCommandListener(this);
                                form1.addCommand(Simpan);
                                form1.addCommand(cmdbalik);
                                display.setCurrent(form1);
                }
                public void commandAction(Command c, Displayable d){
                                if (c == Exit) {
                                                destroyApp(true);
                                }
                                if(c.getLabel()=="Simpan"){
                                                alert.setType(AlertType.INFO);
                                                if(!id.equals(null)) 
                                                {
                                                                tambahRecord(id.getString());
                                                                alert.setString("Data Lengkap !! Data disimpan di RMS");
                                                                display.setCurrent(alert);
                                                                display.setCurrent(alert, Mainmenu);
                                                }
                                                else
                                                {
                                                                alert.setString("Data Kurang! isikan data secara lengkap");
                                                                display.setCurrent(alert, form1);
                                                }
                                }
                                if(c.getLabel()=="Nilai Tertinggi"){
                                                lihatRecord();
                                }
                                else if(c==Hasil){
                                                nama();
                                }
                                else if(c==cmdbalik){
                                                soal_ujian();
                                }
                                else if(c==Back){
                                                menuList();
                       }else{
                           List menu = (List) display.getCurrent();
                           switch (menu.getSelectedIndex()){
                               case 0:
                                   soal_ujian();
                                   break;
                               case 1:
                                   lihatRecord();
                                   break;
                                  
                               case 2:
                                   destroyApp(true);
                           }
                       }
                    }
                public void tambahRecord(String id)
                {
                    int a = Integer.parseInt(s1.getString());
                    int b = Integer.parseInt(s2.getString());
                    int c = Integer.parseInt(s3.getString());
                    int d = Integer.parseInt(s4.getString());
                    int e = Integer.parseInt(s5.getString());
                    if(a == 5){
                        a=2;
                    }
                    else if(a != 5){
                        a=0;
                    }
                    if(b==4){
                        b=2;
                    }
                    else if(b != 4){
                        b=0;
                    }
                    if(c==12){
                        c=2;
                    }
                    else if(c != 12){
                        c=0;
                    }
                    if(d==5){
                        d=2;
                    }
                    else if(d !=2 ){
                        d=0;
                    }
                    if(e==10){
                        e=2;
                    }
                    else if(e != 10){
                        e=0;
                    }
               
                    nilaiakhir = a + b + c + d + e;
                  byte[] temp = null;
                  try
                  {
                      //kosntruktor baos dan dos
                      ByteArrayOutputStream baos = new ByteArrayOutputStream();
                      DataOutputStream dos = new DataOutputStream(baos);
                      //cari fungsi ini ByteArrayOutputStream dan DataOutputStream di internet
                      dos.writeUTF(id);// tulis var pada dos
                      dos.writeInt(nilaiakhir);
                      temp = baos.toByteArray();
                  }
                  catch (IOException ioe)
                  {
                      ioe.printStackTrace();
                  }
                  try
                  {
                      rs.addRecord(temp, 0, temp.length); //masukan data pada RecordStore
                  } catch (RecordStoreNotOpenException rsnoe) {
                    rsnoe.printStackTrace();
                  } catch (RecordStoreException rse) {
                    rse.printStackTrace();
                  }
                }
                public void lihatRecord() {
                    byte[] temp = null;
                    Mainmenu.setTitle("Nilai Tertinggi");
                    Mainmenu.deleteAll();
                    try
                    {
                        re = rs.enumerateRecords(null, null, false); 
                        while (re.hasNextElement()) 
                        {
                            int i = re.nextRecordId();
                            temp = rs.getRecord(i);
                            ByteArrayInputStream bais = new ByteArrayInputStream(temp);
                            DataInputStream dis = new DataInputStream(bais);
                            try
                            {
                                String id = dis.readUTF();
                                //Integer nilai akhir = dis.readUTF();
                                Mainmenu.append(id + " = "+ nilaiakhir +" \n",null);
                            }
                            catch (IOException ioe) {ioe.printStackTrace();}
                      }
                      Mainmenu.addCommand(Back);
                      Mainmenu.setCommandListener(this);
                      display.setCurrent(Mainmenu);
                    }
                    catch (InvalidRecordIDException invID) {invID.printStackTrace();}
                    catch (RecordStoreNotOpenException rsnoe) {rsnoe.printStackTrace();}
                    catch (RecordStoreException rse) {rse.printStackTrace();
                  }
                  }
                }


HASIL :


Sekian, Terimakasih ^_^

Jumat, 05 Oktober 2012

HIGH LEVEL USER INTERFACE

Membuat Aplikasi Input Data sederhana dengan menggunakan High level user interface.
Data yang dimasukkan: nama, jenis kelamin, alamat, no telp, email, tgl lahir,
Berikut ini hasil tampilan High level user interface:

1. Form pengisian

Source code untuk pembuatan form input data:






















2.  Form Hasil View




















3. Tampilan Alert, muncul jika data belum terisi semua

Source Code untuk menampilkan Alert:





















Untuk lebih jelasnya bisa diunduh di sini, Silahkan ^_^

Selasa, 02 Oktober 2012

Masihkah, Fai?

Dari: Riri Sardjono, Kepada Cinta hal. 155-166



Hi, Fai.

Apa kabar?
Apa kamu masih terjebak dalam dilema lebih baik tidak menikah 
daripada menikah tanpa cinta? Walaupun kamu ngerasa nyaman 
banget dengan seseorang, bersamaan dengan itu kamu juga 
meragukan kadar cinta yang kamu miliki?

Kenapa, Fai?
Kenapa kamu bisa memiliki perasaan nyaman tanpa mampu menumbuhkan cinta?


Fai,

Kenapa kamu nggak pernah mau bercermin dari aku?
Aku adalah contoh hidup dari dilema yang sedang kamu hadapi.

Berbeda dengan kamu, saat memutuskan pacaran, aku hanya bermodalkan rasa suka. 
Kemudian, aku memutuskan menikah dengan modal logika.
Kamu tahu itu, kan, Fai?
Tapi, apa kamu tahu kalau perasaan nyaman yang aku rasakanlah yang menjadi salah satu 
hal logis yang menurutku perlu aku pertimbangkan.
Kenapa?
Nggak tau, Fai.
Tapi, saat itu, aku berpikir cinta yang menggebu-gebu bisa membutakan. 
Tapi, perasaan nyaman adalah pupuk cinta itu sendiri


Tapi...

Semakin dekat dengan hari pernikahan, aku malah semakin sering mendengar orang melontarkan
 ucapan seperti ini: "Emang enak kawin?" atau "Nikmati masa bulan madu kamu nanti karena setelah itu... 
welcome to the hell. Apalagi kalau kamu langsung hamil" Dan yang paling seram adalah
 pernyataan Mbak Ami yang bilang, "Gue menjalani pernikahan gue, bukan menikmatinya."
Menjalani, Fai.
Seolah-olah, pernikahan hanya memberikan dua pilihan bagi kita: bercerai atau terpaksa menjalaninya.
 Apalagi, kalau keburu punya anak.


Fai,

Waktu itu aku takut banget. Aku pikir, ngapain terikat dalam sebuah hubungan seumur hidup kalau kita 
nggak bisa menikmatinya? Menurutku, itu adalah bentuk lain dari bunuh diri.
Tapi, beberapa orang bilang, "That's life, Dear."
Yup, Fai, that's life.
Dan, aku mau enjoying my life.


Apa itu mungkin terjadi dalam pernikahan, Fai?

Atau, pertanyaan yang lebih tepat adalah, apakah pernikahan bisa dijadikan sebagai media untuk 
menemukan kabahagiaan?
Mungkin.
Kalau nggak, kenapa hampir seluruh penduduk bumi kawin?
Atau, sebenarnya, manusia sebegitu bodohnya hingga dengan sadar membiarkan dirinya masuk 
ke dalam perangkap yang sejak zaman nenek moyang telah diketahui sebagai penjara hidup. 
Apalagi, untuk kaumku, Fai. Perempuan.


Hmmm...

Kayaknya, aku tahu apa yang timbul di dalam kepala kamu saat membaca dua paragraf terakhir 
dari tulisanku di atas. Sebuah pertanyaan. Kenapa aku tetap memutuskan menikah?
Jawabannya simpel, Fai.
Karena aku nggak punya nyali untuk membatalkan sebuah rencana yang melibatkan semua orang 
yang berkuasa mengeluarkan aku dari daftar silsilah keluarga dengan alasan: 
TELAH MENCORENG NAMA BAIK KELUARGA.
Well, runaway bride cuma bisa terjadi di Amerika, kan, Fai?


Jadi...

Kalau rasa nyaman, bibit, bebet, dan bobot adalah pertimbangan logis pada awalnya,
 kesadaran akan efek dari tindakan membatalkan pernikahan menjadi pertimbangan logis berikutnya.
So, here I am, Fai.
Dengan kesadaran, aku telah mengubah status diriku di KTP dari lajang menjadi kawin.


Dan, aku mulai menyiapkan diriku untuk masuk ke dalam fase paling membosankan dalam hidupku, Fai.

Menjadi seorang istri.
Seperti nasihat Mbak Ami, aku pun berusaha meyakini diriku untuk menjalaninya. 
Bukan menikmatinya. "Nggak usah muluk-muluk." Begitu saran tambahan yang dilontarkan Mbak Ami.
 "Udah bagus nggak cerai atau jadi korban kekerasan dalam rumah tangga."
Anyway...
Aku menikah berdasarkan logika, kan?


Tapi, ternyata, dalam perjalanannya, aku menemukan sesuatu yang menakjubkan telah terjadi, Fai.



Bahwa,

I'm in love with my husband... saat menyadari kalau beberapa kali dia telah ngebiarin aku tetap
 tidur saat dia sudah bangun pagi. Dia cuci muka, terus bikinin aku teh hangat.


I'm in love with my husband... saat aku lagi masak dan tanpa bertanya dia langsung ngambil beras,

 mencucinya, dan masak nasi di rice cooker.


I'm in love with my husband... saat aku yang nggak bisa masak tetap ngotot nyoba masak buat dia. 

Aku mencoba masakan dengan bahan instan, seperti, sosis, chicken nugget, daging asap, 
kentang goreng, mi instan, bahakan sup asparagus, yang tnggal dicemplungin di air mendidih.
 Kemudian, dia komentar, "Aku seneng makan kenyang, tapi istriku nggak usah capek. 
Ternyata, orang bule emang pintar, ya. Mereka nyiptain masakan siap saji dan siap diangetin doang.
 Soalnya, aku butuh istri bukan cuma buat masak doang."


I'm in love with my husband... saat pagi sebelum berangkat kerja dia bilang, "Biar aku yang nyuci jeans 
dan semua pakaian yang berat. Kamu nyuci yang ringan-ringan saja, ya."



I'm in love with my husband... karena setiap akhir bulan dia transfer semua gajinya ke rekeningku dan bilang,

 "Aku, tuh, boros banget. Makanya, kamu yang ngatur keuangan kita, ya."
 Dan saat aku tunjukin jumlah uang tabungan di bank, dia langsung tertegun dan bertanya,
 "Kamu nabung sebanyak ini?" Raut mukanya terlihat sedih saat dia bilang,
 "Kamu boleh, kok, belanja, beli baju atau melakukan sesuatu. 
Jangan hanya dipakai buat kebutuhan sehari-hari dan sisanya ditabung. 
Aku, kan, senang kalau bisa ngebeliin kamu barang-barang yang kamu suka."


I'm in love with my husband... saat dia ngajak aku beli ponsel baru, tapi aku tolak dengan alasan 

baru membeli laptop dan itu berarti tabungan berkurang. 
Terus, dia bilang, "Aku sedih nggak bisa beliin istriku ponsel baru yang mahal."


I'm in love with my husband... saat beberapa orang pria didekat rumah sempat gangguin aku,

 reaksi dia adalah mencari orang keamanan kompleks dan bilang, 
"Gue nggak mau ada siapa pun yang ganggu istri gue.
 Kalo elo nggak bisa menyelesaikan ini dengan cara lo, gue akan menyelesaikan ini dengan cara gue."


I'm in love with my husband... saat aku melihat hasil test pack-ku yang kesejuta kalinya dan berkata,

 "Aku gagal hamil lagi." Dia ketawa sambil ngejitak kepalaku.
 Kemudian, bilang, "Kita coba buat anak lagi, yuk?"


I'm in love with my husband... and I want to continue in love with him in many ways.



Fai,

Rasa nyaman itu sudah berubah menjadi rasa cinta!
Padahal, suamiku nggak pernah ngasih candlelight dinner,
atau ngasih aku bunga,
atau ngasih aku puisi cinta,
atau ngasih aku kartu Valentine yang romantis,
atau ngasih aku berlian,
atau ngasih aku surprise dengan ngajak nonton opera.
Dia cuma bikinin aku teh,
nyuci celana jeans,
nyuci beras,
atau percayain uangnya ke aku.


Tapi, kata Mbak Ami, "Jelas aja. Elo, kan baru kawin dua tahun.

 Coba, deh, kalo udah kawin selama lima tahun. Gue pengin dengar komentar lo."
Fai,
Masa, sih, suamiku nggak mau bikinin aku teh setelah lima tahun?
Masa, sih, suamiku nggak mau nyuci jeans setelah lima tahun?
Masa, sih, suamiku nggak mau nyuci beras setelah lima tahun?
Masa, sih, suamiku nggak mau percayain uangnya ke aku setelah lima tahun?
Atau
masa, sih, aku nggak bisa menghargai hal-hal kecil yang dia lakukan setelah lima tahun?


Marriages maybe made in heaven,

but a lot of the details have to be worked out here on earth.
Dan, di bumi,
segalanya adalah sesuatu yang nyata, Fai.
Bahkan, cinta.
Seperti dialog Meryl Streep dalam salah satu adegan film Prime, "Love is Work."
Perlu sebuah usaha untuk mencintai.
Perlu sebuah usaha untuk merasa jatuh cinta
Perlu sebuah usaha untuk bisa dicintai.
Tapi, menurutku, yang paling penting adalah, perlu sebuah usaha untuk bisa menghargai.
So, apa sih, cinta?
Kamu bisa mengartikan cinta dengan apa saja, Fai.
Tapi, satu yang harus kamu sadari, cinta bisa datang dari hal yang sangat sederhana.


Bagiku, cinta adalah... when your man look at you as a person.

Not a partner, not a wife, not a mother of his child, not even a woman.
But as person.
Kalau kita melihat seseorang sebagai "seseorang", itu berarti kita akan memberi penghargaan akan 

segala perbedaan yang ada di antara diri kita dan dirinya.


Fai,

Aku menikah tanpa cinta, Tapi, dalam perjalanannya, suamiku telah berhasil membuatku jatuh cinta 
karena aku merasa dicintai.
Karena aku merasa dibiarkan menjadi diriku yang berbeda dengann dirinya.
Karena aku merasa dia menghargai, bahkan untuk sekobokan beras yang aku cuci untuknya.


Fai,

Apakah aku nggak bisa membuat suamiku jatuh cinta denganku karena dia merasa dicintai?
Karena dia merasa diberi ruang, bahkan untuk meragukan perasaannya untukku?
Karena aku menghargai dirinya yang merasa nyaman denganku dan hanya merasa nyaman?


Fai,

Mungkin, sesekali, kamu harus mencoba untuk berhenti melogikakan cinta.
Mungkin, sebaiknya, kamu belajar manikmatinya saja.
Dan, terutama, membiarkannya dia datang menyapa hatimu.
Seperti yang aku lakukan selama dua tahun ini dalam perjalanan perkawinan kita.


Happy anniversary, Faizan.
Love,Adita

Rabu, 26 September 2012

Pembangunan Aplikasi Mobile

Karakteristik Mobile:

  • Berukuran kecil, 
  • Perangkat mobile memiliki ukuran yang kecil. Konsumen menginginkan perangkat yang terkecil untuk kenyamanan dan mobilitas mereka.
  • Keterbatasan memori
    Perangkat mobile juga memiliki memory yang kecil, yaitu primary (RAM) dan secondary (disk). Pembatasan ini adalah salah satu faktor yang mempengaruhi penulisan program untuk berbagai jenis dari perangkat ini. 
  • Keterbatasan sumber energi
  • Rendahnya konsumsi energi
    Perangkat mobile harus menghemat daya karena mereka berjalan pada keadaan dimana daya yang disediakan dibatasi oleh baterai-baterai.
  • Terbatasnya koneksi jaringan
    Perangkat mobile memiliki bandwith rendah, beberapa dari mereka bahkan tidak tersambung. Kebanyakan dari mereka menggunakan koneksi wireless.
  • Terbatasnya waktu hidup
    Perangkat-perangkat konsumen ini menyala dalam hitungan detik kebanyakan dari mereka selalu menyala.

Arsitektur J2ME




- Configuration menggambarkan:
● Subset bahasa pemrograman JAVA
● Kemampuan Java Virtual Machine(JVM)
● Core platform libraries
● Fitur sekuriti dan jaringan

- Profile

Suatu profile menggambarkan set-set tambahan dari API dan fitur untuk pasar tertentu, kategori perangkat atau industri. Sementara configuration menggambarkan library dasar, profile-profile menggambarkan library yang penting untuk membuat aplikasi-aplikasi efektif. Library ini memasukkan user interface, jaringan dan penyimpanan API.

CLDC


The Connected Limited Device Configuration (CLDC) menggambarkan dan menunjuk pada area berikut ini:
● Fitur Bahasa Java dan Virtual Machine(VM)
● Library dasar(java.lang.*,java.util.*)
● Input/Output(java.io.*)
● Kemanan
● Jaringan
● Internationalization


Fitur tertentu dari J2SE yang dipindahkan dari CLDC adalah :
● Finalization of class instances
● Asynchronous exceptions
● Beberapa error classes
● User-defined class loaders
● Reflection
● Java Native Interface (JNI)
● Thread groups dan daemon threads

Verifikasi Class

Spesifikasi CLDC memerlukan semua class untuk melewati proses verifikasi dua tingkat.
Verifikasi pertama dilaksanakan diluar perangkat sebelum instalasi pada perangkat. Verifikasi kedua terjadi pada perangkat selama runtime dan dilaksanakan oleh KVM.



Generic Connection Framework
The Generic Connection Framework menyediakan API dasar untuk koneksi dalam CLDC.
Framework ini menyediakan suatu pondasi umum untuk koneksi seperti HTTP, Socket, dan Datagrams.GCF menyediakan suatu set API yang umum dan biasa yang memisahkan semua jenis koneksi. Perlu dicatat bahwa tidak semua jenis koneksi dibutuhkan untuk diterapkan oleh perangkat MIDP.



CDC

Connected Device Configuration (CDC) adalah super set dari CLDC. CDC menyediakan
 Java runtime yang lebih luas dibandingkan CLDC dan lebih dekat kepada lingkungan J2SE.

Semua class yang terdapat dalam CDC datang dari package ini:
● java.io
● java.lang
● java.lang.ref
● java.lang.math
● java.net
● java.security
● java.security.cert
● java.text
● java.util
● java.util.jar
● java.util.zip

JTWI


The Java Technology for the Wireless Industry (JTWI) menetapkan satu set jasa dan spesifikasi standar. Berdasar spesifikasi JTWI, kata kuncinya adalah “untuk memperkecil fragmentasi API di dalam pasar telepon mobile, dan untuk mengirim spesifikasi yang dapat diprediksi,spesifikasi yang jelas untuk perangkat pabrik, operator, dan pengembang aplikasi”.


MIDP
The Mobile Information Device Profile (MIDP) berada di atas dari CLDC.


Spesifikasi MIDP menggambarkan suatu perangkat MID yang memiliki karakteristikkarateristik ini sebagai batas minimum:
Tampilan:
• Ukuran Layar: 96x54
• kedalaman tampilan: 1-bit
• Ketajaman pixel: sekitar 1:1

Masukan:
• Satu atau lebih mekanisme user-input: satu keybboard, dua keyboard, atau
touch screen

Memory:
• 256 kilobytes of non-volatile memory untuk implementasi MIDP.
• 8 kilobytes of non-volatile memory for application-created persistent data
• 128 kilobytes of volatile memory for the Java runtime (e.g., the Java heap)

Jaringan:
• dua jalur, wireless, bandwidth terbatas

Sound:
• Kemampuan untuk memainkan nada-nada


MIDlet
Suatu aplikasi MIDP disebut MIDlet. Perangkat application management software (AMS) berinteraksi langsung dengan MIDlet dengan method MIDlet create, start, pause, dan destroy.
MIDlet adalah bagian dari package javax.microedition.midlet. Sebuah MIDlet harus di-extend dengan class MIDlet. Dan dapat meminta parameter dari AMS seperti dirumuskan dalam application descriptor (JAD). Suatu MIDlet tidak harus memiliki (dan memang harus tidak mempunyai) sebuah method public static void main(String[] argv).Method tersebut tidak akan dikenal lagi oleh AMS sebagai titik awal sebuah program.




Siklus MIDlet
Kehidupan MIDlet dimulai ketika di-instantiate oleh AMS. MIDlet pada awalnya masuk status “Pause” setelah perintah baru dibuat. AMS memanggil constructor public tanpa argumen dari MIDlet. Jika sebuah exception terjadi dalam constructor, MIDlet memasuki status “Destroyed” dan membuangnya segera. MIDlet masuk ke dalam status “Active” atas pemanggilan method startUp() oleh AMS. MIDlet masuk ke dalam status “Destroyed” ketika AMS memanggil method destroyApp(). Status ini juga kembali diakses ketika method notifyDestroyed() kembali dengan sukses kepada aplikasi. Dengan catatan bahwa MIDlet hanya bisa memasuki status “Destroyed”
sekali dalam masa hidupnya.


Refeensi:











Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | ewa network review