JAVA 2 MICRO EDITIONAndino MaselenoDiterbitkan pertama kali tahun 2003
Bab 1 – Pemrograman JavaBab 1Pemrograman Java        Bahasa Java awalnya bernama Oak, yakni bagian dari projek Green yang ...
Bab 1 – Pemrograman Java8. Interpreter   Interpreter Java dapat mengeksekusi kode byte Java secara langsung pada komputer-...
Bab 1 – Pemrograman Javaprogram Java dirancang untuk menghasilkan kode yang netral terhadap semua arsitektur perangkatkera...
Bab 1 – Pemrograman Java    Java Networking merupakan sekumpulan API yang menyediakan fungsi-fungsi untuk aplikasi    jari...
Bab 1 – Pemrograman Java        Lingkungan kerja teknologi Java dapat digambarkan seperti gambar 1.2 dibawah ini:         ...
Bab 1 – Pemrograman Java            char           A single character                   16-bit Unicode character          ...
Bab 1 – Pemrograman Java   Operator Relasional   Operator Kondisional   Operator Shift dan Lojik   Operator Assignment...
Bab 1 – Pemrograman Java//ArithmeticDemo.javapublic class ArithmeticDemo {    public static void main(String[] args) {    ...
Bab 1 – Pemrograman Java //SortDemo.java public class SortDemo {     public static void main(String[] args) {         int[...
Bab 1 – Pemrograman Java             op1 >=      Menghasilkan true jika op1 lebih besar atau    >=              op2       ...
Bab 1 – Pemrograman Java /RelationalDemo.java public class RelationalDemo {     public static void main(String[] args) {  ...
Bab 1 – Pemrograman Java            op1 ||           Menghasilkan true jika op1 atau op2, salah satunya bernilai boolean |...
Bab 1 – Pemrograman JavaBitwise ANDBitwise AND akan menghasilkan bit “1” jika kedua operator bernilai bit “1”.Tabel 2.8 Bi...
Bab 1 – Pemrograman Java //BitwiseDemo.java public class BitwiseDemo {     static final int VISIBLE = 1;     static final ...
Bab 1 – Pemrograman Java                        >>=        op1 >>= op2          op1 = op1 >> op2                        >>...
Bab 1 – Pemrograman Java                                            if (kondisi){                                         ...
Bab 1 – Pemrograman Java//NumberCheck1.javapublic class NumberCheck1{  public static void main(String[] args)  {    int nu...
Bab 1 – Pemrograman Java//LetterCheck1.javapublic class LetterCheck1{   public static void main(String args[])   {      ch...
Bab 1 – Pemrograman Java //LetterCheck3.java public class LetterCheck3 {    public static void main(String args[])    {   ...
Bab 1 – Pemrograman Java //SwitchDemo2.java public class SwitchDemo2 {     public static void main(String[] args) {       ...
Bab 1 – Pemrograman JavaContoh program //WhileDemo.java class WhileDemo{      public static void main(String args[]){     ...
Bab 1 – Pemrograman Java //DoWhileLoop.java public class DoWhileLoop {   public static void main(String[] args)   {     in...
Bab 1 – Pemrograman Java//ForLoop2.javapublic class ForLoop2{   public static void main(String[] args)   {      int limit ...
Bab 1 – Pemrograman Java//Factorial1.javapublic class Factorial1{  public static void main(String[] args)  {    long limit...
Bab 1 – Pemrograman Java//BilanganPrima.javapublic class BilanganPrima{   public static void main(String[] args)   {      ...
Bab 2 – Java 2 Micro EditionBab 2Java 2 Micro Edition        Java 2 Micro Edition (J2ME) merupakan bagian dari teknologi J...
Bab 2 – Java 2 Micro Edition    masukan tombol ponsel dan menyimpan file3. Tools lain untuk pengembangan aplikasi java, se...
Bab 2 – Java 2 Micro Editionkerja J2ME configuration yang dimaksud meliputi java virtual machine (JVM) digunakan untukmenj...
Bab 2 – Java 2 Micro Editionnamun menambahkan beberapa Application Programming Interface (API) khusus agar dihasilkansebua...
Bab 2 – Java 2 Micro EditionTabel 2.2 Kelas-kelas pada J2SE yang ada pada CLDC.      Nama Paket (Java Package)            ...
Bab 2 – Java 2 Micro EditionJava.lang         ArithmeticException                  StringBuffer                  SecurityE...
Bab 2 – Java 2 Micro Edition Java.util                                    Calendar                                        ...
Bab 2 – Java 2 Micro Edition             Gambar 2.3 Ktoolbar, lingkungan pengembangan Java MIDP(MIDlet)Emulator       Dala...
Bab 2 – Java 2 Micro Edition                           Gambar 2.4 Emulator DefaultGrayPhoneEmulator DefaultColorPhone tamp...
Bab 2 – Java 2 Micro Edition                            Gambar 2.5 Emulator DefaultColorPhoneMIDLET    Midlet merupakan ap...
Bab 2 – Java 2 Micro Editionyaitu menyangkut lifecycle, Graphical user interface (GUI), dan Application Descriptor .LifeCy...
Bab 2 – Java 2 Micro Edition        new( )      Paused                                       destroyApp( )     pauseApp( )...
Bab 2 – Java 2 Micro EditionGraphical User Interface (GUI)   Perangkat handheld semacam handphone memiliki berbagai keterb...
Bab 3 – Pemrograman GUIBab 3Pemrograman GUI        Berbeda dengan sebuah komputer desktop,         perangkat handheld sema...
Bab 3 – Pemrograman GUImengakses display dari handheld yang dapat diakses dengan kelas javax.microedition.lcdui.Display.Ob...
Bab 3 – Pemrograman GUI        }        public void startApp(){                display = Display.getDisplay(this);        ...
Bab 3 – Pemrograman GUIScreen         Objek screen menyediakan fungsionalitas untuk interaksi antara pengguna denganperang...
Bab 3 – Pemrograman GUI        t = new Ticker("This is Ticker");        List l = new List("Simple Choice", Choice.EXCLUSIV...
Bab 3 – Pemrograman GUIandinomaseleno@yahoo.com3. TextField.NUMERICArtinya, hanya bisa memasukkan teks berupa angka saja.4...
Bab 3 – Pemrograman GUI    public textBoxDemo(){    }    public void startApp(){        display = Display.getDisplay(this)...
Bab 3 – Pemrograman GUI    Merupakan array dari elemen list yang akan ditampilkan   Image[] listImage    Merupakan array ...
Bab 3 – Pemrograman GUI        display.setCurrent(myList);    }    public void pauseApp() {    }    public void destroyApp...
Bab 3 – Pemrograman GUIKonstruktor pertama secara sederhana menyediakan sebuah form dengan judul form sepertiparameter tit...
Bab 3 – Pemrograman GUI    Menetapkan item ke-numItem menjadi objek Item sesuai parameter itm.   public void insert(int n...
Bab 3 – Pemrograman GUI    Untuk memberikan title pada daftar pilihan yang ditampilkan.   int choiceType    Tipe pilihan ...
Bab 3 – Pemrograman GUIimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class choiceGroupDemo e...
Bab 3 – Pemrograman GUI    Menghasilkan nilai jumlah elemen dalam daftar pilihan.DateField        Kelas DateField (javax.m...
Bab 3 – Pemrograman GUI          DateField d = new DateField("Todays date", DateField.DATE);          f.append(d);        ...
Bab 3 – Pemrograman GUIpublic class gaugeDemo extends MIDlet {    private Display display;    public gaugeDemo() {    }   ...
Bab 3 – Pemrograman GUIStringItemObjek StringItem digunakan untuk meletakkan objek teks string yang tidak bisa diubah oleh...
Bab 3 – Pemrograman GUI   public void setLabel(String lbl)    Menetapkan label pada objek StringItem sesuai parameter lbl...
Bab 3 – Pemrograman GUIArtinya, hanya bisa memasukkan teks yang berupa nomor telepon saja, misalnya +628156864651,08156864...
Bab 3 – Pemrograman GUI   public int size()    Menghasilkan jumlah karakter yang saat ini telah dimasukkan dalam TextFiel...
Bab 3 – Pemrograman GUI    }    public void startApp() {        display = Display.getDisplay(this);        try {          ...
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Andino Maseleno - Modul J2ME
Upcoming SlideShare
Loading in …5
×

Andino Maseleno - Modul J2ME

1,622 views
1,498 views

Published on

Java 2 Micro Edition e-book

Published in: Technology, News & Politics
2 Comments
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
1,622
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
96
Comments
2
Likes
0
Embeds 0
No embeds

No notes for slide

Andino Maseleno - Modul J2ME

  1. 1. JAVA 2 MICRO EDITIONAndino MaselenoDiterbitkan pertama kali tahun 2003
  2. 2. Bab 1 – Pemrograman JavaBab 1Pemrograman Java Bahasa Java awalnya bernama Oak, yakni bagian dari projek Green yang dikembangkanoleh Sun Microsystem untuk memprogram perangkat-perangkat elektronik rumah tangga semacamtelevisi. Namun pada perkembangannya, bahasa Oak ini menjadi bahasa yang bisa digunakan untukpemrograman secara umum dan dikenal menjadi bahasa Java saat ini. Java sebagai bahasa pemrograman dikenal sebagai bahasa pemrograman tingkat tinggidengan kriteria sebagai berikut:1. Sederhana(Simple) Java dirancang untuk mudah dipelajari, terutama bagi programmer-programmer yang telah mengenal C/C++ akan mudah sekali untuk berpindah ke Java.2. Berorientasi Objek(Object Oriented) Rancangan berorientasi objek merupakan suatu teknik yang memusatkan rancangan pada data(objek) dan interface. Java merupakan bahasa pemrograman berorientasi objek.3. Terdistribusi(Distributed) Java memiliki library rutin yang luas untuk dirangkai pada protokol TCP/IP dengan mudah.4. Kuat(Robust) Java dirancang sebagai bahasa pemrograman yang handal. Java dimaksudkan untuk membuat suatu program yang benar-benar dapat dipercaya dalam berbagi hal. Java banyak menekankan pada pengecekan awal untuk kemungkinan terjadinya masalah, pengecekan pada saat run time dan mengurangi kemungkinan timbulnya kesalahan(error).5. Aman(Secure) Java dirancang sebagai bahasa pemrograman yang aman. Java membuat suatu sistem yang mekanisme keamanannya benar-benar sulit dikecoh.6. Netral Arsitektur(Arsitecture Neutral) Java Compiler yang digunakan untuk mengkompilasi kode program Java dirancang untuk menghasilkan kode yang netral terhadap semua arsitektur perangkat keras.7. Portable Dengan semboyan write once run everywhere, Java dirancang untuk dapat dijalankan di semua platform. 1Andino Maseleno
  3. 3. Bab 1 – Pemrograman Java8. Interpreter Interpreter Java dapat mengeksekusi kode byte Java secara langsung pada komputer-komputer yang memiliki interpreter.9. Kinerja Tinggi(High Performance) Java dirancang untuk menghasilkan aplikasi dengan performansi yang terbaik.10. Multithreaded Multithreading adalah kemampuan sebuah program untuk melakukan lebih dari satu pekerjaan sekaligus.11. Dinamis Java adalah bahasa pemrograman yang dinamis. Java dirancang untuk beradaptasi dengan lingkungan yang terus berkembang.Alasan Java digunakan untuk aplikasi wireless Ada beberapa alasan mengapa harus Java dipilih untuk aplikasi komunikasi bergerak:1. Java merupakan bahasa pemrograman yang aman. Hal ini disebabkan karena kode Java harus selalu dieksekusi dengan Java Virtual Machine(JVM), yang menyediakan lingkungan yang aman untuk eksekusi kode yang telah di-download. Sebuah aplikasi biner dapat mengacaukan sebuah peralatan(misalnya tampilan bue screen pada handphone) namun aplikasi Java, dalam hal yang paling buruk, hanya dapat mengacaukan Virtual Machine-nya saja.2. Bahasa pemrograman Java adalah bahasa yang kokoh. Penggunaan Garbage Collector akan mengurangi waktu yang diperlukan oleh programer untuk menemukan kebocoran dalam penggunaan memori. Demikian pula penggunaan mekanisme exception pada Java mampu meningkatkan kemampuan programmer dalam membuat aplikasi yang kokoh.3. Portabilitas Java sangat berguna dalam aplikasi-aplikasi wireless. Pertama, dengan menulis sebuah program saja, aplikasi tersebut dapat dijalankan di berbagai peralatan. Alasan kedua karena aplikasi-aplikasi tersebut dapat dikirimkan kesebuah peralatan melalui jaringan wireless(proses ini sering dinamakan Over-the-air, atau OTA provisioning).Java Virtual Machine (JVM) Kode program Java dapat ditulis menggunakan editor teks seperti Notepad, Textpadmaupun JCreator dan lain sebagainya. Java compiler yang digunakan untuk mengkompilasi kode 2Andino Maseleno
  4. 4. Bab 1 – Pemrograman Javaprogram Java dirancang untuk menghasilkan kode yang netral terhadap semua arsitektur perangkatkeras(hardware) yang disebut sebagai Java bytecode(*.class). Java Virtual Machine (JVM) menjadi bagian dari teknologi Java yang menyediakan mediauntuk menjalankan aplikasi Java(Java bytecode). Java bytecode dapat dianggap sebagai kode-kodemesin dari JVM. Selanjutnya JVM akan menginterpretasikan kode-kode tersebut menjadi kodenative atau kode mesin dari arsitektur yang bersangkutan. Java dirancang untuk dapat dijalankan disemua platform baik itu Linux, Windows, Netware maupun Macintosh serta dapat dijalankan padaarsitektur perangkat keras yang berbeda, seperti Intel, AMD, Sun Sparc, PowerPC dan lainsebagainya. Jadi, aplikasi Java tidak perlu dikompilasi ulang jika telah dikompilasi di suatuplatform dan akan dijalankan di platform yang berbeda dengan platform saat dikompilasi, karenaaplikasi Java dijalankan di atas JVM. *.java Java Compiler *.class Java Interpreter Native Code Executed Computer Gambar 1.1 Proses Kompilasi Kode JavaJava Application Programming Interface (Java API)Ada berbagai fitur yang ditawarkan oleh Java API untuk mengembangkan aplikasi Java, antara lainsebagai berikut :1. Applet Java Applet merupakan program Java yang berjalan di atas browser. Penggunaan applet ini akan membuat halaman HTML lebih dinamis dan menarik.2. Java Networking 3Andino Maseleno
  5. 5. Bab 1 – Pemrograman Java Java Networking merupakan sekumpulan API yang menyediakan fungsi-fungsi untuk aplikasi jaringan. Java Networking menyediakan akses untuk TCP, UDP, IP Address dan URL. Java Networking tidak menyediakan akses untuk ICMP, karena alasan sekuritas dan pada kondisi umum hanya administrator yang dapat memanfaatkan protokol ICMP.3. Java Database Connectivity(JDBC) JDBC menyediakan sekumpulan API untuk mengatur keamanan mengakses database seperti Oracle, MySQL, PostgreSQL, Microsoft SQL Server.4. Java Server Pages(JSP) JSP adalah suatu teknologi web berbasis bahasa pemrograman Java dan berjalan pada platform Java. JSP merupakan pengembangan dari Servlet serta merupakan bagian dari teknologi Java 2 Platform, Enterprise Edition(J2EE).5. Java Card Java Card digunakan untuk aplikasi-aplikasi pada smart card, sebagai contoh yaitu SIM Card pada handphone.Teknologi Java1. Java 2 Platform, Standard Edition (J2SETM) Platform digunakan untuk menjalankan dan mengembangkan aplikasi Java pada levelPersonal Computer (PC). Platform ini berisi class-class inti pada Java dan Graphical User Interface(GUI).2. Java 2 Platform, Micro Edition (J2METM) Platform ini digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Javapada handheld devices atau perangkat-perangkat semacam handphone, Personal DigitalAssistance(PDA) dan PocketPC.3. Java 2 Platform, Enterprise Edition (J2EETM) Platform ini berupa paket yang berisi class-class dan interface-interface yang digunakanuntuk menjalankan dan mengembangkan aplikasi Java berbasis web, seperti class-class Servlet,Java Server Pages(JSP) dan Enterprise Java Beans(EJB) serta Java CORBA. 4Andino Maseleno
  6. 6. Bab 1 – Pemrograman Java Lingkungan kerja teknologi Java dapat digambarkan seperti gambar 1.2 dibawah ini: Gambar 1.2 Platform Java 2Variabel pada JavaVariabel merupakan container yang digunakan untuk menyimpan suatu nilai pada sebuah programdengan tipe tertentu. Pada dasarnya ada dua macam tipe variabel data dalam bahasa Java, yakni tipeprimitif dan tipe reference. Tabel di bawah ini menunjukkan tipe primitif pada Java. Tabel 2.1 Tipe primitif pada Java Keyword Description Size/Format (integers) byte Byte-length integer 8-bit twos complement short Short integer 16-bit twos complement int Integer 32-bit twos complement long Long integer 64-bit twos complement (real numbers) float Single-precision floating point 32-bit IEEE 754 double Double-precision floating point 64-bit IEEE 754 (other types) 5Andino Maseleno
  7. 7. Bab 1 – Pemrograman Java char A single character 16-bit Unicode character boolean A boolean value (true or false) true or falseContoh program //MaxVariablesDemo.java public class MaxVariablesDemo { public static void main(String args[]) { // integer byte largestByte = Byte.MAX_VALUE; short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE; long largestLong = Long.MAX_VALUE; // real float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE; char aChar = S; boolean aBoolean = true; System.out.println("Nilai terbesar byte :" + largestByte); System.out.println("Nilai terbesar short :“ + largestShort); System.out.println("Nilai terbesar integer : " + largestInteger); System.out.println("Nilai terbesar long : " + largestLong); System.out.println("Nilai terbesar float : " + largestFloat); System.out.println("Nilai terbesar double : " + largestDouble); if (Character.isUpperCase(aChar)) { System.out.println("The character " + aChar + " is upper case."); } else { System.out.println("The character " + aChar + " is lower case."); } System.out.println("Nilai boolean : " + aBoolean); } }Sedangkan tipe data variabel berupa reference terdiri atas tipe variabel data: tipe class tipe array tipe interfaceOperator pada JavaOperator pada Java dibedakan menjadi beberapa jenis, yaitu: Operator Aritmetika 6Andino Maseleno
  8. 8. Bab 1 – Pemrograman Java Operator Relasional Operator Kondisional Operator Shift dan Lojik Operator Assignment Operator lainnyaOperator Aritmetika Tabel 2.2 Operator aritmatika Operator Penggunaan Deskripsi + op1 + op2 Menambahkan op1 dengan op2 - op1 - op2 Megurangkan op1 dengan op2 * op1 * op2 Mengalikan op1 dengan op2 / op1 / op2 Membagi op1 dengan op2 % op1 % op2 Menghasilkan sisa hasil bagi antara op1 dengan op2Contoh program 7Andino Maseleno
  9. 9. Bab 1 – Pemrograman Java//ArithmeticDemo.javapublic class ArithmeticDemo { public static void main(String[] args) { int i = 37; int j = 42; double x = 27.475; double y = 7.22; System.out.println("Nilai variabel..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" x = " + x); System.out.println(" y = " + y); System.out.println("Penambahan..."); System.out.println(" i + j = " + (i + j)); System.out.println(" x + y = " + (x + y)); System.out.println("Pengurangan..."); System.out.println(" i - j = " + (i - j)); System.out.println(" x - y = " + (x - y)); System.out.println("Perkalian..."); System.out.println(" i * j = " + (i * j)); System.out.println(" x * y = " + (x * y)); System.out.println("Pembagian..."); System.out.println(" i / j = " + (i / j)); System.out.println(" x / y = " + (x / y)); System.out.println("Sisa hasil bagi..."); System.out.println(" i % j = " + (i % j)); System.out.println(" x % y = " + (x % y)); //mixing types System.out.println("Mixing types..."); System.out.println(" j + y = " + (j + y)); System.out.println(" i * x = " + (i * x)); }} 8Andino Maseleno
  10. 10. Bab 1 – Pemrograman Java //SortDemo.java public class SortDemo { public static void main(String[] args) { int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076, 2000, 8, 622, 127 }; for (int i = arrayOfInts.length; --i >= 0; ) { for (int j = 0; j < i; j++) { if (arrayOfInts[j] > arrayOfInts[j+1]) { int temp = arrayOfInts[j]; arrayOfInts[j] = arrayOfInts[j+1]; arrayOfInts[j+1] = temp; } } } for (int i = 0; i < arrayOfInts.length; i++) { System.out.print(arrayOfInts[i] + " "); } System.out.println(); } }Operator Increment/DecrementTabel 2.3 Operator increment/decrement Operator Penggunaam Deskripsi ++ op++ op dinaikkan nilainya 1 setelah dilakukan operasi pada op ++ ++op op dinaikkan nilainya 1 sebelum dilakukan operasi pada op -- op-- op diturunkan nilainya 1 sebelum dilakukan operasi pada op -- --op op diturunkan nilainya 1 setelah dilakukan operasi pada opOperator RelasionalOperator relasional pada Java dapat digunakan untuk membandingkan antara dua variabel data,lebih lengkapnya dapat dilihat dalam tabel berikut ini:Tabel 2.4 Operator relasional Operator Penggunaan Deskripsi op1 > Menghasilkan true jika op1 lebih besar dari > op2 op2 9Andino Maseleno
  11. 11. Bab 1 – Pemrograman Java op1 >= Menghasilkan true jika op1 lebih besar atau >= op2 sama dengan dari op2 op1 < Menghasilkan true jika op1 lebih kecil dari < op2 op2 op1 <= Menghasilkan true jika op1 lebih kecil atau <= op2 sama dengan dari op2 op1 == == Menghasilkan true jika op1 sama dengan op2 op2 op1 != Menghasilkan true jika op1 tidak sama dengan != op2 op2Contoh program 10Andino Maseleno
  12. 12. Bab 1 – Pemrograman Java /RelationalDemo.java public class RelationalDemo { public static void main(String[] args) { int i = 37; int j = 42; int k = 42; System.out.println("Nilai variabel..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" k = " + k); System.out.println("Lebih besar dari..."); System.out.println(" i > j = " + (i > j)); System.out.println(" j > i = " + (j > i)); System.out.println(" k > j = " + (k > j)); System.out.println("Lebih besar atau sama dengan..."); System.out.println(" i >= j = " + (i >= j)); //false System.out.println(" j >= i = " + (j >= i)); //true System.out.println(" k >= j = " + (k >= j)); //true System.out.println("Kurang dari..."); System.out.println(" i < j = " + (i < j)); //true System.out.println(" j < i = " + (j < i)); //false System.out.println(" k < j = " + (k < j)); //false System.out.println("Kurang dari atau sama dengan..."); System.out.println(" i <= j = " + (i <= j)); //true System.out.println(" j <= i = " + (j <= i)); //false System.out.println(" k <= j = " + (k <= j)); //true System.out.println("Sama dengan..."); System.out.println(" i == j = " + (i == j)); //false System.out.println(" k == j = " + (k == j)); //true System.out.println("Tidak sama dengan..."); System.out.println(" i != j = " + (i != j)); //true System.out.println(" k != j = " + (k != j)); //false } }Operator KondisionalOperator kondisional dalam Java ada enam macam sebagaimana digambarkan pada tabel di bawah:Tabel 2.5 Operator kondisional Operator Penggunaan Deskripsi op1 && Menghasilkan true jika op1 dan op2, keduanya && op2 bernilai boolean true 11Andino Maseleno
  13. 13. Bab 1 – Pemrograman Java op1 || Menghasilkan true jika op1 atau op2, salah satunya bernilai boolean || op2 true Menghasilkan true jika op bernilai boolean ! ! op false op1 & Bitwise AND, menghasilkan true jika op1 dan & op2 op2 bernilai true op1 | Bitwise OR, menghasilkan true jika op1 atau op2 salah satunya | op2 bernilai true op1 ^ Menghasilkan true jika salah satu diantara op1 atau op2 bernilai ^ op2 true, namun tidak keduanyaOperator Shift dan Lojik Tabel 2.6 Operator shift dan lojik Operator Penggunaan Deskripsi >> op1 >> op2 Menggeser bit op1 ke kanan sejauh op2 << op1 << op2 Menggeser bit op1 ke kiri sejauh op2 >>> op1 >>> op2 Menggeser bit op1 ke kiri sejauh op2Operator BitwiseOperator bitwise dalam Java juga digunakan untuk memanipulasi bit. Tabel 2.7 Operator Bitwise Operator Penggunaan Deskripsi & op1 & op2 Bitwise AND | op1 | op2 Bitwise OR ^ op1 ^ op2 Bitwise xor ~ ~op2 Bitwise complement 12Andino Maseleno
  14. 14. Bab 1 – Pemrograman JavaBitwise ANDBitwise AND akan menghasilkan bit “1” jika kedua operator bernilai bit “1”.Tabel 2.8 Bitwise AND op1 op2 op1 & op2 0 0 0 0 1 0 1 0 0 1 1 1Bitwise ORBitwise OR akan menghasilkan bit “1” jika salah satu operator bernilai bit “1”.Tabel 2.9 Bitwise OR op1 op2 op1 | op2 0 0 0 0 1 1 1 0 1 1 1 1Bitwise XORBitwise XOR akan menghasilkan bit “1” jika kedua operator memiliki nilai bit yang berbedaTabel 2.10 Bitwise XOR op1 op2 op1^op2 0 0 0 0 1 1 1 0 1 1 1 0Contoh program 13Andino Maseleno
  15. 15. Bab 1 – Pemrograman Java //BitwiseDemo.java public class BitwiseDemo { static final int VISIBLE = 1; static final int DRAGGABLE = 2; static final int SELECTABLE = 4; static final int EDITABLE = 8; public static void main(String[] args) { int flags = 0; flags = flags | VISIBLE; flags = flags | DRAGGABLE; if ((flags & VISIBLE) == VISIBLE) { if ((flags & DRAGGABLE) == DRAGGABLE) { System.out.println("Flags are Visible and Draggable."); } } flags = flags | EDITABLE; if ((flags & EDITABLE) == EDITABLE) { System.out.println("Flags are now also Editable."); } } }Operator AssignmentOperator assignment pada Java digunakan untuk memberikan sebuah nilai ke sebuah variabel.Operator assignment hanya berupa „=‟, Tabel 2.11 Operator Assignment Operator Penggunaan Ekivalen dengan += op1 += op2 op1 = op1 + op2 -= op1 -= op2 op1 = op1 - op2 *= op1 *= op2 op1 = op1 * op2 /= op1 /= op2 op1 = op1 / op2 %= op1 %= op2 op1 = op1 % op2 &= op1 &= op2 op1 = op1 & op2 |= op1 |= op2 op1 = op1 | op2 ^= op1 ^= op2 op1 = op1 ^ op2 <<= op1 <<= op2 op1 = op1 << op2 14Andino Maseleno
  16. 16. Bab 1 – Pemrograman Java >>= op1 >>= op2 op1 = op1 >> op2 >>>= op1 >>>= op2 op1 = op1 >>> op2Operator Lainnya Tabel 2.12 Operator lainnya Operator Deskripsi ?: Shortcut if-else statement [] Used to declare arrays, create arrays, and access array elements . Used to form qualified names ( params ) Delimits a comma-separated list of parameters ( type ) Casts (converts) a value to the specified type new Creates a new object or a new array instanceof Determines whether its first operand is an instance of its second operandContoh program //ConditionalOp.java public class ConditionalOp { public static void main(String args[]) { int nBuku = 1; // jumlah buku System.out.println("Saya mempunyai " + nBuku + " buku" + (nBuku == 1 ? "." : "s.")); nBuku++; // Increment jumlah buku System.out.println("Saya mempunyai " + nBuku + " buku" + (nBuku == 1 ? "." : "s.")); } }Controlflow pada JavaOperasi KondisionalIf-Else Statement if-else digunakan untuk mengeksekusi sebuah blok jika memenuhi sebuahkondisi tertentu. Sintaks penggunaannya adalah : 15Andino Maseleno
  17. 17. Bab 1 – Pemrograman Java if (kondisi){ statement }Contoh program //IfDemo1.java class ifDemo1{ public static void main(String args[]){ int idx = 2; if(idx>9){ System.out.println(“Idx lebih besar dari 10”); } } }Ada kalanya kita menginginkan dua pencabangan, yakni jika suatu kondisi terpenuhi, lakukan aksiA, jika tidak, lakukan aksi B. Dua percabangan ini dimungkinkan dengan menggunakan if-else()sebagai berikut : if (kondisi){ statement1 }else{ statement2 }Pada pernyataan di atas, jika kondisi bernilai true, statement 1 akan dijalankan. Sebaliknya, jikakondisi bernilai false, statement 2 yang akan dijalankan.Contoh program //IfDemo2.java class ifDemo2{ public static void main(String args[]){ int idx=0; if(idx>9) System.out.println(“Idx lebih besar dari 9”); }else{ System.out.println(“Idx tidak lebih besar dari 10”); } } } 16Andino Maseleno
  18. 18. Bab 1 – Pemrograman Java//NumberCheck1.javapublic class NumberCheck1{ public static void main(String[] args) { int number = 0; number = 1+(int)(100*Math.random()); if(number%2 == 0) System.out.println("Anda memperoleh bilangan genap, " + number); else System.out.println("Anda memperoleh bilangan ganjil, " + number); }}//NumberCheck2.javapublic class NumberCheck2{ public static void main(String[] args) { int number = 0; number = 1+(int)(100*Math.random()); if(number%2 == 0) { if(number < 50) System.out.println("Anda memperoleh bilangan genap < 50, " + number); } else System.out.println("Anda memperleh bilangan ganjil, " + number); // It isodd }} 17Andino Maseleno
  19. 19. Bab 1 – Pemrograman Java//LetterCheck1.javapublic class LetterCheck1{ public static void main(String args[]) { char symbol = A; symbol = (char)(128.0*Math.random()); if(symbol >= A) { if(symbol <= Z) System.out.println("Anda memiliki huruf besar " + symbol); else if(symbol >= a) if(symbol <= z) System.out.println("Anda memiliki huruf kecil " + symbol); else System.out.println( "Kode lebih besar dari a, tetapi ini bukan huruf"); else System.out.println( "Kode lebih kecil dari a dan bukan huruf"); } else System.out.println("Kode lebih kecil dari A dan bukan huruf!!"); }}//LetterCheck2.javapublic class LetterCheck2{ public static void main(String args[]) { char symbol = A; symbol = (char)(128.0*Math.random()); if(symbol >= A && symbol <= Z) System.out.println("Anda memiliki huruf besar " + symbol); else if(symbol >= a && symbol <= z) System.out.println("Anda memiliki huruf kecil " + symbol); else System.out.println("Kode ini bukan huruf!!"); }} 18Andino Maseleno
  20. 20. Bab 1 – Pemrograman Java //LetterCheck3.java public class LetterCheck3 { public static void main(String args[]) { char symbol = A; symbol = (char)(128.0*Math.random()); if(Character.isUpperCase(symbol)) System.out.println("Anda memiliki huruf besar " + symbol); else if(Character.isLowerCase(symbol)) System.out.println("Anda memiliki huruf kecil " + symbol); else System.out.println("Kode ini bukan huruf!!"); } }Switch-CaseStatement switch-case digunakan untuk mengeksekusi sebuah blok jiak memenuhi sebuah kondisitertentu.Contoh program //SwitchDemo.java public class SwitchDemo { public static void main(String[] args) { int month = 8; switch (month) { case 1: System.out.println("Januari"); break; case 2: System.out.println("Februari"); break; case 3: System.out.println("Maret"); break; case 4: System.out.println("April"); break; case 5: System.out.println("Mei"); break; case 6: System.out.println("Juni"); break; case 7: System.out.println("Juli"); break; case 8: System.out.println("Agustus"); break; case 9: System.out.println("September"); break; case 10: System.out.println("Oktober"); break; case 11: System.out.println("November"); break; case 12: System.out.println("Desember"); break; } } } 19Andino Maseleno
  21. 21. Bab 1 – Pemrograman Java //SwitchDemo2.java public class SwitchDemo2 { public static void main(String[] args) { int month = 2; int year = 2000; int numDays = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6: case 9: case 11: numDays = 30; break; case 2: if ( ((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0) ) numDays = 29; else numDays = 28; break; } System.out.println("Jumlah hari = " + numDays); } }Operasi PengulanganWhileStatement while digunakan untuk mengeksekusi sebuah blok secara berulang selama memenuhikondisi tertentu. Sintaks penggunaannya adalah sebagai berikut: while (ekspresi) { statement }Pada pernyataan di atas, selama ekspresi menghasilkan nilai true, statement yang ada akandieksekusi secara terus menerus. 20Andino Maseleno
  22. 22. Bab 1 – Pemrograman JavaContoh program //WhileDemo.java class WhileDemo{ public static void main(String args[]){ String str1 = “Welcome”; int idx = 0; while(idx<str1.length()){ System.out.println(“Karakter ke : “ +idx+”=”+str1.charAt(idx)); idx++; } } } //WhileLoop.java public class WhileLoop { public static void main(String[] args) { int limit = 20; int sum = 0; int i = 1; while(i <= limit) sum += i++; System.out.println("sum = " + sum); } }Do-WhileSama halnya dengan while, statement do-while digunakan untuk mengeksekusi sebuah blok secaraberulang sampai tidak memenuhi kondisi tertentu. Pada penggunaan while, ekspresi diperiksa padasaat awal, jadi ada kemungkinan blok statement dalam while tidak pernah dieksekusi. Padapenggunaan do-whilw, ekspresi tidak diperiksa pada saat awal eksekusi, jadi minimal blokstatement do-while akan dieksekusi sekali. Sintaks penggunaannya sebagai berikut: do{ statement }while (ekspresi) {Contoh program 21Andino Maseleno
  23. 23. Bab 1 – Pemrograman Java //DoWhileLoop.java public class DoWhileLoop { public static void main(String[] args) { int limit = 20; int sum = 0; int i = 1; do { sum += i; i++; } while(i <= limit); System.out.println("sum = " + sum); } }For Statement for digunakan untuk mengeksekusi sebuah blok secara berulang dalam sebuahrange tertentu. Sintaks penggunaannya adalah sebagai berikut: for (inisialisasi;terminasi;increment) { statement }Increment dalam for merupakan ekspresi yang dieksekusi pada awal eksekusi for. Terminasidigunakan untuk menentukan kapan pengulangan akan dihentikan. Increment merupakan ekspresiyang akan dieksekusi setiap selesai melakukan satu looping (pengulangan). Perlu diperhatikanbahwa ketiga bagian di dalam for() bersifat opsional, jadi boleh tidak ada. Namun, jika ketigabagian di atas kosong, akan menyebabkan terjadinya pengulangan tanpa henti (loop forever).Contoh program //ForLoop1.java class ForLoop1{ public static void main(String args[]){ for (int idx=0;idx<10;idx++){ System.out.println(idx +” ”); } System.out.println(“”); } } 22Andino Maseleno
  24. 24. Bab 1 – Pemrograman Java//ForLoop2.javapublic class ForLoop2{ public static void main(String[] args) { int limit = 20; int sum = 0; for(int i = 1; i <= limit; i++) sum += i; System.out.println("sum = " +sum); }}//ForLoop3.javaclass ForLoop3{ public static void main(String args[]){ int idx=0; for(;idx<10;){ System.out.println(idx +” “); idx++; } System.out.println(“”); }}//ForLoop4.javapublic class ForLoop4{ public static void main(String[] args) { int limit = 20; int sum = 0; for(double radius = 1.0; radius <= 2.0; radius += 0.2) { System.out.println("radius = " + radius + " area = " +Math.PI*radius*radius); } }} 23Andino Maseleno
  25. 25. Bab 1 – Pemrograman Java//Factorial1.javapublic class Factorial1{ public static void main(String[] args) { long limit = 20; long factorial = 1; for(int i = 1; i <= limit; i++) { factorial = 1; int j =2; while(j <= i) factorial *= j++; System.out.println(i + "!" + " adalah " + factorial); } }}//Factorial2.javapublic class Factorial2{ public static void main(String[] args) { long limit = 20; long factorial = 1; OuterLoop: for(int i = 1; i <= limit; i++) { factorial = 1; for(int j = 2; j <= i; j++) { if(i > 10 && i % 2 == 1) continue OuterLoop; factorial *= j; } System.out.println(i + "!" + " adalah " + factorial); } }} 24Andino Maseleno
  26. 26. Bab 1 – Pemrograman Java//BilanganPrima.javapublic class BilanganPrima{ public static void main(String[] args) { int nValues = 50; boolean isPrime = true; for(int i = 2; i <= nValues; i++) { isPrime=true; for(int j = 2; j < i; j++) { if(i % j == 0) { isPrime = false; break; } } if(isPrime) System.out.println(i); } }} 25Andino Maseleno
  27. 27. Bab 2 – Java 2 Micro EditionBab 2Java 2 Micro Edition Java 2 Micro Edition (J2ME) merupakan bagian dari teknologi Java 2, seperti yang terlihatpada Gambar 2.1, yang digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Javapada handheld devices atau perangkat-perangkat semacam ponsel, Palm, PDA, dan PocketPC. Gambar 2.1 Java 2 Flatform Java 2 micro edition berguna untuk membangun sebuah aplikasi pada peralatan denganjumlah memori dan kapasitas penyimpanan yang terbatas, serta kemampuan user interface yangterbatas seperti perangkat komunikasi bergerak yaitu handphone dan PDA, yang memilikikarakteristik berbeda dengan sebuah personal komputer. Java 2 micro edition terdiri atas komponen-komponen sebagai berikut:1. Java Virtual Machine (JVM) JVM yang ada pada paket J2ME dirancang agar bisa dijalankan pada berbagai perangkat handheld yang kompatibel dengan java dan komponen ini untuk menjalankan program-program java pada emulator.2. Java API (Application Programming Interface) Komponen ini kumpulan dari librari untuk menjalankan dan mengembangkan program java pada handheld devices, misalnya kelas-kelas java untuk manipulasi layer ponsel, mendeteksi 26Andino Maseleno
  28. 28. Bab 2 – Java 2 Micro Edition masukan tombol ponsel dan menyimpan file3. Tools lain untuk pengembangan aplikasi java, semacam emulator Motorolla. Java 2 micro edition memiliki dua jenis aplikasi yaitu:1. Walled garden application, yaitu aplikasi yang berdiri sendiri atau stand-alone pada handphone tanpa perlu mengakses sumber data eksternal melalui jaringan pembawa atau carrier network. contoh aplikasi ini adalah kalkulator, organizer.2. Network aware application. Aplikasi ini memiliki kemampuan untuk mengakses sumber data eksternal. contoh aplikasi e-mail yang berada didalam handphone. Java 2 Micro Edition dibagi menjadi dua buah bagian yang dikenal dengan istilahconfiguration dan profiles, seperti yang terlihat pada Gambar 2.2. Configuration adalah spesifikasiyang menjelaskan tentang sebuah virtual machine dan Application Programming Interface dasaryang dapat digunakan dalam class-class tertentu. Profile menyediakan implementasi-implementasitambahan yang spesifik dari sebuah handheld devices. Sebuah profile dibangun dalam sebuahconfiguration, namun menambahkan beberapa Application Programming Interface khusus agardihasilkan sebuah lingkungan yang lengkap untuk membangun aplikasi. Gambar 2.2 Configuration dan Profile pada J2ME ApplicationJava 2 Micro Edition Configuration Java 2 micro edition configuration mendefinisikan lingkungan kerja J2ME runtime. karenasetiap handheld devices memiliki fitur berbeda, J2ME configuration dirancang untuk menyediakanlibrari standar yang mengimplementasikan fitur standar dari sebuah handheld devices. lingkungan 27Andino Maseleno
  29. 29. Bab 2 – Java 2 Micro Editionkerja J2ME configuration yang dimaksud meliputi java virtual machine (JVM) digunakan untukmenjalankan program java, dan java virtual machine pada J2ME yang berbeda dengan J2ME padajava development kit (JDK) karena hanya fitur-fitur penting berkaitan dengan perangkat wirelessyang diimplementasikan. Ada dua kategori J2ME configuration saat ini yaitu:1. CLDC (Connected Limited Device Configuration). Kategori ini umumnya digunakan untuk aplikasi java pada handphone seperti Nokia, Samsung, Motorola, dan PDA (Personal Digital Assistants) Umumnya peralatan wireless untuk perangkat tersebut memiliki kapasitas memori yang kecil berukuran 160-512 KiloBytes dan dengan koneksi jaringan yang tidak tetap2. CDC (Connected Device Configuration) Kategori ini umumnya digunakan untuk aplikasi java pada perangkat-perangkat handheld devices dengan kapasitas memori yang lebih besar berukuran minimal 2 Mbytes dan dengan koneksi jaringan yang lebih kokoh contohnya internet television, nokia communicator, TV pada mobil dan lain-lain. Perbedaan antara CLDC dan CDC dapat dilihat pada tabel 2.1Tabel 2.1 Perbedaan CLDC dan CDC CLDC CDC Mengimplementasikan subset dari J2SE Mengimplementasikan seluruh fitur pada J2SE Processor 32 Bit Processor 16 Bit JVM yang digunakan dikenal dengan nama JVM yang digunakan dikenal dengan nama connected virtual machine (CVM) Kilobyte virtual machine (KVM)Java 2 Micro Edition Profile J2ME profile menyediakan implementasi-implementasi tambahan yang sangat spesifik darisebuah handheld devices. contohnya sebuah ponsel memiliki kemampuan standar dari sebuahponsel yaitu untuk berkomunikasi, namun setiap ponsel memiliki fitur-fitur tersendiri misalnyaSiemens bisa menyimpan mp3 dan nokia memiliki game dan lain sebagainya, kemampuan standaritulah yang diimplementasikan oleh J2ME configuration sedangkan kemampuan atau fitur lainnyadiimplementasikan oleh J2ME profile. Jadi sebuah profile dibangun dalam sebuah configuration 28Andino Maseleno
  30. 30. Bab 2 – Java 2 Micro Editionnamun menambahkan beberapa Application Programming Interface (API) khusus agar dihasilkansebuah lingkungan yang lengkap untuk membangun aplikasi. Ada lima kategori J2ME profile saat ini yaitu Mobile Information Device Profile (MIDP),Foundation Profile (FP), Personal Profile, RMI Profile, Personal Digital Assistance Profile.Connected Limited Device Configuration (CLDC) CLDC digunakan untuk implementasikan program java pada perangkat-perangkat keras denganukuran memori yang sangat terbatas, akibatnya fitur-fitur yang kurang penting untukdiimplementasikan dalam handheld devices yang bersangkutan dari java 2 harus dibuang. Fitur-fituryang dibuang tersebut antara lain:1. Tidak ada dukungan untuk floating point Kelas-kelas untuk perhitungan floating point, yakni java.lang.Float dan java.lang.Double dibuang dari CLDC.2. Tidak ada dukungan untuk finalisasi objek Garbage collector digunakan untuk “bersih-bersih memori” membuang fungsi finalize pada kelas java.lang.Object, sekalipun fungsi ini penting pada Java 2.3. Tidak ada dukungan untuk JNI (Java Native Interface) Kelas JNI yang memungkinkan Java mengakses library yang dibuat dengan bahasa selain Java seperti C, C++, dan Basic , tidak didukung oleh CLDC.4. Penanganan kesalahan/exception yang terbatas CLDC hanya mendefisinikan tiga kelas untuk penanganan kesalahan / exception yaitu kelas java.lang.Error, Kelas java.lang.OutOfMemory, Kelas java.lang.virtual Machine Error. Kelas-kelas standar bawaan java 2 standard edition (J2SE) yang didukung oleh CLDC adalahsebagai berikut: 29Andino Maseleno
  31. 31. Bab 2 – Java 2 Micro EditionTabel 2.2 Kelas-kelas pada J2SE yang ada pada CLDC. Nama Paket (Java Package) Nama Kelas (Java Class) Java.io DataInput DataOutput DataInputStream InputStream DataOutputStream OutputStream InputStreamReader OutputStreamWriter Reader Writer EOFException IOException PrintStream InterruptedException UnsupportedEncodingException UTFDataFormatException ByteArrayInputStream ByteArrayOutputStream 30Andino Maseleno
  32. 32. Bab 2 – Java 2 Micro EditionJava.lang ArithmeticException StringBuffer SecurityException Exception InterruptedException Runnable RuntimeException Runtime NullpointerException Character InstantiationException Boolean ClassCastException Integer ClassNotFoundException System IllegalAccessException Object IllegalArgumentException Byte NumberFormatException Thread ArrayStoreException String OutOfMemoryError Throwable VirtualMachineError Error IllegalThreadStateException Long IndexOutOfBoundException Math IllegalMonitorStateException Class 31Andino Maseleno NegativeArraySizeException
  33. 33. Bab 2 – Java 2 Micro Edition Java.util Calendar Date Enumeration Hastable Random Stack Time Vector EmptyStackException NoSuchElementException Kelas-kelas tambahan yang tidak ada dalam java 2 standard edition (J2SE) adalahjavax.microedition, yang menyediakan API (Application Programming Interface) untukimplementasi program pada handheld devices.KToolbar KToolbar merupakan lingkungan pengembangan yang disediakan oleh J2ME WirelessToolkit untuk pengembangan MIDlet. Aplikasi yang kita buat terdiri atas direktori-direktori berikut:1. src Berisi file-file kode Java.2. bin Berisi file-file JAD, JAR, dan manifest.3. lib Berisi file-file yang diperlukan dalam format JAR atau ZIP.4. res Berisi file-file resource.Berikut adalah gambar Ktoolbar dari J2ME Wireless Toolkit: 32Andino Maseleno
  34. 34. Bab 2 – Java 2 Micro Edition Gambar 2.3 Ktoolbar, lingkungan pengembangan Java MIDP(MIDlet)Emulator Dalam membuat aplikasi MIDlet kita tidak perlu mencobanya langsung ke perangkathandheld device. Kita bisa mencobanya terlebih dahulu dengan menggunakan sebuah emulator.Disini kita menggunakan 2 jenis emulator, yaitu emulator DefaultGrayPhone dan emulatorDefaultColorPhone. Perbedaan dari keduanya adalah terletak pada layarnya. Pada emulatorDefaultGrayPhone hanya memiliki warna hitam dan putih layaknya handphone biasa yang tidakberwarna. Beda dengan emulator DefaultColorPhone yang memiliki layar berwarna.Gambar berikut menunjukkan emulator DefaultGrayPhone: 33Andino Maseleno
  35. 35. Bab 2 – Java 2 Micro Edition Gambar 2.4 Emulator DefaultGrayPhoneEmulator DefaultColorPhone tampak seperti gambar 2.5 dibawah ini: 34Andino Maseleno
  36. 36. Bab 2 – Java 2 Micro Edition Gambar 2.5 Emulator DefaultColorPhoneMIDLET Midlet merupakan aplikasi yang dibuat menggunakan java 2 micro edition dengan profileMobile Information Device Profile (MIDP). Midlet berjalan dalam sebuah perangkat handheldtetapi midlet tidak berinteraksi langsung dengan hardware dari ponsel atau perangkat handheld yanglainnya melainkan berinteraksi melalui application management software (AMS). Terdapat 3 buah tool untuk membuat sebuah aplikasi MIDlet maupun J2ME lainnya. Tool-tooltersebut yaitu Java Development kit (JDK) versi 1.3 atau yang lebih tinggi, J2ME Wireless Toolkitatau J2MEWTK yang merupakan paket-paket tool yang mudah digunakan dalam membuat maupunmenguji sebuah aplikasi Midlet, dan sebuah Text editor seperti Notepad, Ultraedit, JEdit dansebagainya. Secara umum terdapat beberapa hal penting dalam membuat sebuah aplikasi MIDlet, 35Andino Maseleno
  37. 37. Bab 2 – Java 2 Micro Editionyaitu menyangkut lifecycle, Graphical user interface (GUI), dan Application Descriptor .LifeCycle Midlet Lifecycle dari sebuah midlet ditangani oleh Application Management Software (AMS). AMS iniadalah sebuah lingkungan tempat siklus dari sebuah midlet mampu diciptakan, dijalankan,dihentikan, maupun dihilangkan. AMS juga merupakan program bawaan yang ada dalam perangkathandheld tersebut yang berguna untuk mengatur manajemen aplikasi midlet yang ada. Ada tiga status dalam Lifecycle sebuah midlet, yang terdapat pada tabel berikut ini:Tabel 2.3 Status Lifecycle sebuah Midlet Nama Status Keterangan Pause Status ini terjadi ketika midlet selesai diinisialisasi dan tidak melakukan aksi apapun. Secara garis besar, status midlet adalah pause pada saat : 1. Setelah midlet dibuat dengan konstruktor new( ) . 2. Dari status Active, kemudian berhasil memanggil fungsi MIDdlet.pauseApp( ). 3. Dari status Active, kemudian berhasil memanggil fungsi MIDlet.notifyPaused( ). 4. Dari status Active, namun ketika akan start( ) terjadi kesalahan berupa exception : MIDletStateChangeException Active Status ini terjadi ketika midlet sedang aktif / berjalan dengan normal, yakni setelah memanggil fungsi MIDlet.startApp( ) Destroyed Status ini terjadi ketika midlet berhenti berjalan atau exit, sehingga seluruh sumber daya yang digunakan akan dibebaskan. Status ini terjadi ketika berhasil dilakukan pemanggilan fungsi MIDlet.destroyApp( ) atau MIDlet.notifyDetroyed( ). Jika digambarkan, perubahan status dalam daur hidup (lifecycle) dalam sebuah midlet dapatdilihat pada gambar 2.6 36Andino Maseleno
  38. 38. Bab 2 – Java 2 Micro Edition new( ) Paused destroyApp( ) pauseApp( ) Destroyed startApp( ) Active destroyApp( ) Gambar 2.6 LifeCycle dan perubahan status sebuah MidletEksekusi MIDlet Umumnya urutan eksekusi sebuah MIDlet adalah sebagai berikut:1. AMS (Application Management Software) menginisilisasi 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 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( ) sehinggax alokasi memori yang digunakan oleh midlet yang bersangkutan akan dibersihkan. 37Andino Maseleno
  39. 39. Bab 2 – Java 2 Micro EditionGraphical User Interface (GUI) Perangkat handheld semacam handphone memiliki berbagai keterbatasan, keterbatasan-keterbatasan ini menyebabkan perlunya ada teknik pemrograman GUI yang berbeda dengan teknikpemrograman yang umumnya digunakan pada aplikasi-aplikasi yang dijalankan pada sebuahkomputer. Connected Limited Device Connection (CLDC) tidak menyediakan fungsi-fungsi untukGUI, namun fungsi-fungsi ini ditangani oleh Mobile Information Device Profile (MIDP). Semua fungsi-fungsi untuk antarmuka berbasis window (GUI) ditangani oleh paketjavax.microedition.lcdui. Graphical user interface yang disediakan oleh MIDP terbagi atas dua levelyaitu High Level dan Low Level. Pada level pemrograman yang rendah (low level) fungsionalitasnyalebih spesifik ke jenis handheld yang digunakan hal ini memungkinkan kurangnya portabilitasmidlet yang dibuat, misalnya midlet pada handheld Motorola, midlet tersebut belum tentu bisadijalankan dengan baik pada handheld lain. Mirip dengan game-game pada ponsel Nokia contohnyasnake, yang jika dijalankan pada ponsel siemens tidak akan jalan dikarenakan keperluan gamemembutuhkan fungsi-fungsi untuk menggambar dan mengolah sesuatu yang levelnya sudah pixel-pixel gambar. Kelas-kelas untuk pemrograman GUI pada level yang rendah diimplementasikan olehkelas javax.microedition.lcdui.canvas. Pada level pemrograman yang tinggi (high level) merupakan level pemrograman yangdianjurkan karena aplikasi midlet akan lebih portable dengan banyak perangkat handheld yangberbeda. Misalnya untuk mengembangkan sebuah form-form windows midlet pada handheldmotorola maka jika dijalankan aplikasi midlet pada handheld lain hasilnya akan sama. Kelas-kelasuntuk manajemen pemrograman yang tinggi akan diimplementasikan oleh kelasjavax.microedition.lcdui.screen.Application Descriptor Aplikasi wireless dikemas dalam sebuah kemasan yang berekstensi *.JAR. Selain itu dikenalpula file *.JAD yang disebut sebagai application descriptor yang berguna untuk mendeskripsikanisi dari file JAR tadi. Kedua file ini haruslah di-upload ke ponsel pengguna agar aplikasi dapatdijalankan. 38Andino Maseleno
  40. 40. Bab 3 – Pemrograman GUIBab 3Pemrograman GUI Berbeda dengan sebuah komputer desktop, perangkat handheld semacam handphone,Palm, dan organizer memiliki berbagai keterbatasan, misalnya ukuran layar yang jauh lebih kecildan masukan input yang tidak berupa mouse. Keterbatasan-keterbatasan ini menyebabkan perlunyaada teknik pemrograman GUI yang berbeda dengan teknik pemrograman yang umumnya digunakanpada aplikasi-aplikasi yang dijalankan pada sebuah komputer. CLDC (Connected Limited DeviceConnection) tidak menyediakan fungsi-fungsi untuk GUI, namun fungsi-fungsi ini akan ditanganioleh MIDP (Mobile Information Device Profile).Jenis Fungsi-fungsi API pada MIDP untuk GUI Fungsi-fungsi untuk pembuatan antarmuka berbasis Window (GUI) yang disediakan olehMIDP terbagi atas dua level, yakni highlevel dan lowlevel. Semua fungsi-fungsi untuk antarmukaberbasis window ini dilakukan oleh paket javax.microedition.lcdui. Pada level pemrograman yanglebih tinggi (highlevel) yang merupakan level pemrograman yang dianjurkan, aplikasi MIDlet akanlebih portabel dengan banyak perangkat handheld yang berbeda. Jadi, misalnya mengembangkansebuah form–form window MIDlet pada handheld Siemens SL45i, jika dijalankan aplikasi MIDlettersebut pada handheld lain, hasilnya akan sama. Kelas-kelas untuk manajemen pemrograman yanglebih tinggi akan diturunkan dari javax.microedition.lcdui.Screen. Pada level pemrograman yang lebih rendah (lowlevel), akan didapatkan fungsionalitas yanglebih spesifik ke jenis handheld yang digunakan. Hal ini memungkinkan kurangnya portabilitasMIDlet yang dibuat, misalnya membuat MIDlet pada handheld Motorola i_85s, MIDlet tersebutbelum tentu bisa dijalankan dengan baik pada handheld lain. Menyerupai dengan game-game padahandphone Nokia 5110, misalnya Snake, yang jika coba dijalankan pada handphone Ericson T10Stidak akan jalan. Kelas-kelas untuk pemrograman GUI pada level yang lebih rendah inidiimplementasikan oleh kelas javax.microedition.lcdui.Canvas danjavax.microedition.lcdui.Graphics.Model Pemrograman GUI pada MIDP Untuk menampilkan sesuatu pada layar, misalnya tulisan, form, dan sebagainya harus 39Andino Maseleno
  41. 41. Bab 3 – Pemrograman GUImengakses display dari handheld yang dapat diakses dengan kelas javax.microedition.lcdui.Display.Objek kedua adalah screen, yang berbeda dengan display. Screen digunakan untuk menanganikomponen-komponen GUI, misalnya window, form, dialogbox, dan menangani masukan daripengguna misalnya dari keypad. Objek screen ini direpresentasikan dengan kelasjavax.microedition.lcdui.Screen. Pada setiap waktu hanya satu objek screen yang bisa ditampilkanoleh objek Display, untuk menampilkan digunakan fungsi setCurrent() pada objek Display.Ada tiga tipe screen pada MIDlet, yakni: Complex Screen ObjectTipe ini mengatur komponen-komponen GUI yang sudah tidak bisa ditambahi oleh komponenscreen yang lain. Misalnya, screen yang berisi objek ListBox untuk meminta masukan user, tidakakan bisa kemudian diisi dengan objek lain. Generic Screen ObjectTipe ini mengatur komponen-komponen GUI Form, yang bisa ditambahi oleh komponen screenyang lain. Misalnya, screen yang berisi objek Form. Low Level Screen ObjectDigunakan oleh subkelas javax.microedition.lcdui.Graphics dan javax.microedition.lcdui.ScreenHighLevel API untuk Pembuatan GUI Kelas-kelas yang menyediakan fungsionalitas untuk pembuatan GUI pada Java MIDP adapada paket javax.microedition.lcdui. pada paket tersebut ada tiga interface dan 21 kelas.Display Kelas Display merupakan kelas yang menyediakan fungsi-fungsi untuk manajemen layarpada perangkat handheld, menampilkan objek screen, dan meyediakan informasi tentang propertidari perangkat handheld yang digunakan. Akses ke layar dapat diacu dengan statik getDisplay()pada kelas Display. public static Display getDisplay(MIDlet m)Penggunaan fungsi ini umumnya dilakukan di dalam fungsi startApp() dimana sebuah MIDlet akanmenjadi aktif, seperti ini:public class yourMIDletName extends MIDlet{ Display display = null; //Konstruktor public yourMIDletName(){ 40Andino Maseleno
  42. 42. Bab 3 – Pemrograman GUI } public void startApp(){ display = Display.getDisplay(this); } public void pauseApp(){} public void destroyApp(Boolean unconditional){}} Fungsi-fungsi lain dalam kelas javax.microedition.lcdui.Display adalah sebagai berikut: public Displayable getCurrent(); Menghasilkan objek screen – Displayable yang sedang ditampilkan ke layar. public boolean isColor(); Menghasilkan nilai true jika perangkat handheld yang digunakan mendukung warna atau nilai false jika hanya mendukung grayscale. public int numColors(); Menghasilkan jumlah warna yang didukung oleh perangkat handheld yang bersangkutan. Berikut contoh programnya://Program HelloWorld.javaimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class helloworld extends MIDlet { private Display display; private Alert alert = new Alert("MyAlert"); public helloworld() { display = Display.getDisplay(this); } public void startApp() { TextBox t = new TextBox("Screen Object", "HelloWorld", 256, 0); alert.setType(AlertType.WARNING); alert.setString("This is Alert"); display.setCurrent(alert, t); } public void pauseApp() {} public void destroyApp (boolean unconditional) {}} 41Andino Maseleno
  43. 43. Bab 3 – Pemrograman GUIScreen Objek screen menyediakan fungsionalitas untuk interaksi antara pengguna denganperangkat handheld. Objek screen ini memiliki empat jenis objek turunan yang umum digunakan,yakni TextBox, Alert, List, dan Form. Kelas javax.microedition.lcdui.Screen merupakan kelasabstrak dengan dua karakteristik, yaitu objek screen bisa memiliki title dan ticker. Fungsi-fungsidalam objek javax.microedition.lcdui.Screen yang digunakan untuk manajemen properti title danticker adalah: public void setTitle(String s); Untuk menetapkan properti title dari objek screen public String getTitle(); Menghasilkan string properti title dari objek screen public void setTicker(Ticker x); Untuk menetapkan properti ticker dari objek screen public Ticker getTicker(); Menghasilkan objek Ticker yang sedang aktif pada objek screenTicker Ticker merupakan teks yang berjalan pada bagian atas layar aplikasi MIDlet. Sebuah tickerdapat ditempatkan pada objek-objek turunan kelas Screen yang telah disebutkan, yakni TextBox,List, Form, Alert. Berikut contoh program kelas javax.microedition.lcdui.Ticker://Program tickerDemo.javaimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class tickerDemo extends MIDlet { private Display display; private Ticker t; public tickerDemo(){ } public void startApp() { display = Display.getDisplay(this); 42Andino Maseleno
  44. 44. Bab 3 – Pemrograman GUI t = new Ticker("This is Ticker"); List l = new List("Simple Choice", Choice.EXCLUSIVE); l.append("Choice 1",null); l.append("Choice 2",null); l.setTicker(t); display.setCurrent(l); } public void pauseApp() { } public void destroyApp(boolean unconditional) { }}TextBox Kelas TextBox merupakan kelas turunan dari kelas abstrak javax.microedition.lcdui.Screen.TextBox menyediakan media untuk menerima masukan teks dari keypad pengguna handheld. Jadijika aplikasi MIDlet Anda membutuhkan masukan dari pengguna, misalnya password, nama, alamatdan informasi berbasis teks lainnya Anda akan menggunakan objek TextBox ini. Konstruktor darikelas TextBox ini adalah:public TextBox(String title, String text, int maxSize, int constraints)parameter-parameter: String title Untuk memberikan title pada Screen String text Untuk memberikan nilai awal pada TextBox int maxSize Untuk memberikan batasan maksimal jumlah karakter yang bisa diterima oleh TextBox. Jadi Anda tidak akan bisa memasukkan karakter yang jumlahnya melebihi batas maksimal ini. int constraint Ada beberapa nilai yang bisa digunakan untuk parameter ini, yakni:1. TextField.ANYArtinya, bisa memasukkan sembarang karakter teks2. TextField.EMAILADDRArtinya, bisa memasukkan teks yang merupakan alamat email. Misalnya : 43Andino Maseleno
  45. 45. Bab 3 – Pemrograman GUIandinomaseleno@yahoo.com3. TextField.NUMERICArtinya, hanya bisa memasukkan teks berupa angka saja.4. TextField.PHONENUMBERArtinya, hanya bisa memasukkan teks berupa nomor telepon saja, misalnya +628156037413,08122311345.5. TextField.URLArtinya, bisa memasukkan teks berupa alamat web atau URL lain, misalnyahttp://andinomaseleno.net6. TextField.PASSWORDArtinya memasukkan password pada saat login ke Windows, masukan akan ditampilkan dengankarakter tertentu, misalnya ‘*’. Tipe batasan ini bisa digunakan dengan tipe batasan yang laindengan menggunakan operator ‘|’ sehingga menambah kemampuan pembatasan yang ada.Fungsi penting dalam kelas TextBox lainnya adalah : public int size() Menghasilkan jumlah karakter yang saat ini telah dimasukkan dalam TextBox. public void delete(int offset, int length); Menghapus karakter dari posisi offset sepanjang jumlah karakter = length. public int getCarerPosition(); Menghasilkan posisi kursor pada TextBox saat ini. public String getString(); Menghasilkan string yang saat ini ada pada TextBox. public void setString(String str); Menetapkan string pada TextBox menjadi str pada parameter fungsi di atas. public void insert(String str, int position); Memasukkan string str pada parameter fungsi di atas pada TextBox mulai dari posisi position. Berikut contoh programnya://Program textBoxDemo.javaimport javax.microedition.midlet.*;import javax.microedition.Textbox.*;public class textBoxDemo extends MIDlet { private Display display; 44Andino Maseleno
  46. 46. Bab 3 – Pemrograman GUI public textBoxDemo(){ } public void startApp(){ display = Display.getDisplay(this); TextBox t = new TextBox("This is TextBox","",256,TextField.ANY); Integer maxSize = new Integer(t.getMaxSize()); String toPrint = "Jumlah maksimal karakter"; t.setString(toPrint +"="+maxSize.toString()); display.setCurrent(t); } public void pauseApp() { } public void destroyApp(boolean unconditional){ }}List Kelas list (javax.microedition.lcdui.List) merupakan kelas turunan dari kelas abstrakjavax.microedition.lcdui.Screen yang menyediakan masukan pilihan (multiple choice) pada layar.Konstruktor dari kelas List ini ada dua, yakni:public List (String title, int listType)public List (String title, int listType, String[] listElement, Image[]listImages)Parameter-parameter: String title Untuk memberikan title pada list Int listType Tipe list yang diberikan dapat berisi 1. Choice.EXCLUSIVE Berarti setiap saat hanya bisa dipilih 1 buah pilihan] 2. Choice.IMPLICIT Sama halnya dengan Choice.EXCLUSIVE, namun penampilannya berbeda 3. Choice.MULTIPLE Berarti pengguna bisa memilih lebih dari 1 pilihan String[] listElement 45Andino Maseleno
  47. 47. Bab 3 – Pemrograman GUI Merupakan array dari elemen list yang akan ditampilkan Image[] listImage Merupakan array dari gambar (javax.microedition.lcdui.Image) elemen list yang akan ditampilkan.Jika menggunakan konstruktor yang pertama public List(String title, int listType), akan dibuatsebuah list kosong yang kemudian bisa menambahkan, menyisipkan, atau mengganti pilihan dalamlist. Fungsi-fungsi yang berkaitan dengan hal ini adalah: public int append(String element, Image image) Menambahkan satu elemen pada daftar pilihan dengan gambar tertentu. Jika tidak akan menampilkan gambar, parameter image bisa di set null. Fungsi ini menghasilkan nilai integer yang menunjukkan indeks lokasi dimana elemen baru saja ditambahkan. public void insert(int index, String element, Image image) Menyisipkan satu elemen pada daftar pilihan dengan gambar tertentu pada lokasi yang ditentukan oleh nilai parameter index. Jika tidak akan menampilkan gambar, parameter image bisa di set null. public void set(int index, String element, Image image) Menetapkan satu elemen pada daftar pilihan di lokasi yang ditentukan oleh nilai parameter index dengan gambar tertentu. Jika tidak akan menampilkan gambar, parameter image bisa di set null. Contoh penggunaan kelas list sebagai berikut://Program listDemo.javaimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class listDemo extends MIDlet{ private Display display; public listDemo(){ } public void startApp() { display = Display.getDisplay(this); List myList = new List("This is List", Choice.IMPLICIT); myList.append("Choice 1",null); myList.append("Choice 2",null); myList.append("Choice 3",null); myList.insert(1,"Inserted Choice",null); 46Andino Maseleno
  48. 48. Bab 3 – Pemrograman GUI display.setCurrent(myList); } public void pauseApp() { } public void destroyApp(boolean unconditional) { }}Fungsi penting dalam kelas List lainnya adalah: public Image getImage(int index) Jika objek List menggunakan gambar, fungsi ini menghasilkan objek Image yang digunakan pada lokasi seperti yang disebutkan parameter index. public String getString(int index) Menghasilkan string teks yang ada pada objek List pada lokasi ke index public boolean isSelected(int index) Menghasilkan nilai true jika elemen ke-index dipilih oleh pengguna, jika tidak maka akan menghasilkan nilai false. public void delete(int index) Menghapus elemen ke-index pada daftar pilihan yang ada. public int getSelectedIndex() Menghasilkan nilai indeks lokasi dimana sebuah elemen dipilih. public int size() Menghasilkan nilai jumlah elemen dalam listForm Bekerja dengan form memungkinkan untuk menampilkan beberapa komponen GUIsemacam daftar pilihan, masukan teks (textbox) dalam stu layar. Form diimplementasikan olehkelas javax.microedition.lcdui.Form. Form dapat menampung komponen-komponen yang disebutitem dalam satu layar, yaitu item-item tersebut adalah textfields, gauge, dan choice groups. Item-item tersebut merupakan implementasi dari kelas turunan Item (javax.microedition.lcdui.Item). Adadua konstruktor form yang umum digunakan, yakni:Public Form(String title)Public Form(String title, Item[] items) 47Andino Maseleno
  49. 49. Bab 3 – Pemrograman GUIKonstruktor pertama secara sederhana menyediakan sebuah form dengan judul form sepertiparameter title yang diberika, sedangkan konstruktor yang kedua juga mendefinisikan item-item apasaja yang akan ada di form yang akan dibuat. Sebagai gambaran, berikut contoh programnya://Program formDemo.javaimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class formDemo extends MIDlet { private Display display; public formDemo() { } public void startApp() { Display display = Display.getDisplay(this); Form f = new Form("Empty Form"); display.setCurrent(f); } public void pauseApp() { } public void destroyApp(boolean unconditional) { }}Fungsi-fungsi berikut adalah fungsi-fungsi penting dalam kelas Form: public int append(Image img) Menambahkan gambar ke form yang dibungkus dalam kelas javax.microedition.lcdui.Image. public int append(Item itm) Menambahkan item ke form yang merupkan kelas-kelas turunan Item (javax.microedition.lcdui.Item). public int size() Menghasilkan nilai integer yang merupakan jumlah item dalam form. public void delete(int numItem) Menghapus elemen atau item ke-numItem pada form. public Item get(int numItem) Menghasilkan objek Item pada form yang merupakan item ke numItem. public void set(int numItem, Item itm) 48Andino Maseleno
  50. 50. Bab 3 – Pemrograman GUI Menetapkan item ke-numItem menjadi objek Item sesuai parameter itm. public void insert(int numItem, Item itm) Menyisipkan item pada item ke-numItem dengan objek Item sesuai parameter itm.Kelas Item (javax.microedition.lcduiKomponen-komponen yang bisa diletakkan dalam sebuah form merupakan komponen-komponenyang memiliki kelas yang merupakan kelas turunan dari kelas abstrak javax.microedition.lcdui.Item.Komponen-komponen tersebut adalah: ChoiceGroup Kelas ini menyediakan komponen yang mirip dengan list, yakni untuk menyediakan daftar pilihan. DateField Kelas ini menyediakan komponen untuk memasukkan informasi tanggal dan waktu. Gauge Kelas ini menyediakan komponen grafik horizontal yang biasanya digunakan untuk memberikan gambaran berapa persen proses berjalan. Image dan ImageItem Kelas ini menyediakan komponen grafik untuk manipulasi gambar. StringItem Kelas ini menyediakan komponen teks string yang tidak bisa diedit oleh pengguna. TextField Kelas ini menyediakan komponen untuk masukan teks string oleh pengguna.ChoiceGroupKelas ChoiceGroup (javax.microedition.lcdui.ChoiceGroup) merupakan kelas turunan dari kelasabstrak javax.microedition.lcdui.Item yang menyediakan masukan pilihan (multiple choice) padalayar. Konstruktor dari kelas ChoiceGroup ini ada dua, yakni:public ChoiceGroup(String title, int choiceType)public ChoiceGroup(String title, int choiceType, String[] choiceElement, Image[]choiceImages)Parameter-parameter: String title 49Andino Maseleno
  51. 51. Bab 3 – Pemrograman GUI Untuk memberikan title pada daftar pilihan yang ditampilkan. int choiceType Tipe pilihan ini yang digunakan, dapat berisi: 1. Choice.EXCLUSIVE Berarti setiap saat hanya bisa dipilih 1 buah pilihan saja. 2. Choice.MULTIPLE Berarti pengguna bisa memilih lebih dari 1 pilihan. String[] choiceElement Merupakan array dari elemen pada daftar pilihan yang akan ditampilkan. Image[] choiceImages Merupakan array dari elemen gambar (javax.microedition.lcdui.Image) yang akan ditampilkan pada daftar pilihan. Jika menggunakan konstruktor yang pertama public.ChoiceGroup(String title, intchoiceType), maka akan dibuat sebuah daftar pilihan kosong yang kemudian bisa menambahkan,menyisipkan, atau mengganti pilihan dalam list. Fungsi-fungsi yang berkaitan dengan hal iniadalah: public int append(String element, Image image) Menambahkan satu elemen pada daftar pilihan dengan gambar tertentu. Jika tidak akan menampilkan gambar, parameter image bisa di set null. Fungsi inio menghasilkan nilai integer yang menunjukkan indeks lokasi dimana elemen baru saja ditambahkan. public void insert(int index, String element, Image image) Menyisipkan satu elemen pada daftar pilihan dengan gambar tertentu pada lokasi yang ditentukan oleh nilai parameter index. Jika tidak akan menampilkan gambar, parameter image bisa di set null. public void set(int index, String element, Image image) Menetapkan satu elemen pada daftar pilihan di lokasi yang ditentukan oleh nilai parameter index dengan gambar tertentu. Jika tidak akan menampilkan gambar, parameter image bisa ditetapkan null. Contoh penggunaan kelas ChoiceGroup (javax.microedition.lcdui.ChoiceGroup) adalahsebagai berikut://Program choiceGroupDemo.java 50Andino Maseleno
  52. 52. Bab 3 – Pemrograman GUIimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class choiceGroupDemo extends MIDlet { private Display display; public choiceGroupDemo() { } public void startApp() { display = Display.getDisplay(this); Form f = new Form("Pilih yang Anda inginkan"); ChoiceGroup cg = new ChoiceGroup("Pilihan Makanan", Choice.EXCLUSIVE); cg.append("Ayam",null); cg.append("Ikan",null); cg.insert(1,"Telur",null); f.append(cg); display.setCurrent(f); } public void pauseApp() { } public void destroyApp(boolean unconditional) { }}Fungsi penting dalam kelas ChoiceGroup lainnya adalah: public Image getImage(int index) Jika objek ChoiceGroup menggunakan gambar, maka fungsi ini menghasilkan objek Image yang digunakan pada lokasi seperti yang disebutkan parameter index. public String getString(int index) Menghasilkan string teks yang ada pada objek ChoiceGroup pada lokasi ke-index. public boolean isSelected(int index) Menghasilkan nilai true jika elemen ke-index dipilih oleh pengguna, jika tidak, akan menghasilkan nilai false. public void delete(int index) Menghapus elemen ke-index pada daftar pilihan yang ada. public int getSelectedIndex() Menghasilkan nilai indeks lokasi sebuah elemen dipilih public int size() 51Andino Maseleno
  53. 53. Bab 3 – Pemrograman GUI Menghasilkan nilai jumlah elemen dalam daftar pilihan.DateField Kelas DateField (javax.microedition.lcdui.DateField) merupakan kelas turunan dari kelasabstrak javax.microedition.lcdui.Item yang menyediakan masukan berupa waktu atau tanggal untukMIDlet. Konstruktor dari kelas DateField ini ada 2 buah yakni:public DateField(String title, int mode)public DateField(String title, int mode, TimeZone timezone)Parameter-parameter: String title Untuk memberikan title pada masukan tanggal/waktu yang ditampilkan. Int Mode Tipe masukan yang digunakan, dapat berisi: 1. DateField.TIME Berarti digunakan untuk mengambil masukan waktu. 2. DateField.DATE Berarti digunakan untuk mengambil masukan tanggal. 3. DateField.DATE_TIME Berarti digunakan untuk mengambil masukan waktu/tanggal. TimeZone timezone Untuk memberikan informasi zona waktu yang akan digunakan. Kelas TimeZone ada dalam paket java.util. Berikut adalah kode Java untuk menampilkan informasi tanggal pada perangkat handheld://Program dateDemo.javaimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class dateDemo extends MIDlet { private Display display; public dateDemo() { } public void startApp() { display = Display.getDisplay(this); Form f = new Form("Date Information"); 52Andino Maseleno
  54. 54. Bab 3 – Pemrograman GUI DateField d = new DateField("Todays date", DateField.DATE); f.append(d); display.setCurrent(f); } public void pauseApp() { } public void destroyApp(boolean unconditional) { }}Gauge Objek Gauge merepresentasikan grafik batang yang disusun secara horizontal yang dapatdigunakan dalam form untuk merepresentasikan jalannya sebuah proses dan lain sebagainya. ObjekGauge diimplementasikan oleh kelas Gauge(javax.microedition.lcdui.Gauge) yang merupakankelas turunan dari kelas abstrak javax.microedition.lcdui.Item. Konstruktor dari kelas Gauge iniadalah:public Gauge (String title, boolean interactive, int maxValue, int initialValue)Parameter-parameter: String title Untuk memberikan title pada Gauge yang ditampilkan. boolean interactive Apakah akan ditampilkan secara interaktif atau tidak? Jika modenya interaktif, user bisa mengubah progress bar yang ada dan jika modenya tidak interaktif, user tidak bisa mengubah progress bar yang ada. int maxValue Nilai maksimum yang diperbolehkan, dimana nilai ini harus > 0. int initialValue Nilai awal yang digunakan, nilainya antara 0 sampai dengan nilai maksimum yang telah didefinisikan. Agar lebih jelas perhatikan contoh sederhana berikut ini://Program gaugeDemo.javaimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;import java.util.Date; 53Andino Maseleno
  55. 55. Bab 3 – Pemrograman GUIpublic class gaugeDemo extends MIDlet { private Display display; public gaugeDemo() { } public void startApp() { display = Display.getDisplay(this); Form f = new Form("What is Gauge ?"); Gauge g1 = new Gauge("This is a Gauge",false,15,1); f.append(g1); display.setCurrent(f); } public void pauseApp() { } public void destroyApp(boolean unconditional) { }} Untuk mendapatkan informasi apakah progress bar yang dibuat bersifat interaktif atau tidakdengan menggunakan fungsi: public boolean isInteractive() Jika dikembalikan nilai true, progress bar bersifat interactive. Dari objek Gauge ini, bisa diperoleh nilai yang sedang ada sekarang, nilai maksimal yangdiperbolehkan dengan fungsi-fungsi berikut: public int getValue() Menghasilan nilai integer dari progress bar yang ada public int getMaxValue() Menghasilkan nilai maksimum dari progress bar yang ada Selain itu, bisa ditetapkan nilai yang sedang ada sekarang, nilai maksimal yangdiperbolehkan dengan fungsi-fungsi berikut: public void setValue(int val) Menetapkan nilai integer dari progress bar yang ada. public void setMaxValue(int maxval) Menetapkan nilai maksimum dari progressbar yang ada. Bisa juga diubah label judul dari progress bar yang ada menggunakan fungsi: public void setLabel(String str) Menetapkan label progress bar yang ada dengan teks string pada parameter. 54Andino Maseleno
  56. 56. Bab 3 – Pemrograman GUIStringItemObjek StringItem digunakan untuk meletakkan objek teks string yang tidak bisa diubah olehpengguna secara langsung pada form. Kelas StringItem diimplementasikan oleh kelas StringItem(javax.microedition.lcdui.StringItem) yang merupakan kelas turunan dari kelas abstrakjavax.microedition.lcdui.Item. Konstruktor dari kelas StringItem ini adalah:public Gauge(String label, String content)Parameter-parameter: String title Untuk memberikan title pada objek teks string yang ditampilkan. String content Isi dari teks yang akan ditampilkan pada form. Berikut contoh programnya://Program stringItemDemo.javaimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class stringItemDemo extends MIDlet { private Display display; public stringItemDemo() { } public void startApp() { display = Display.getDisplay(this); Form f = new Form("Greeting"); StringItem si = new StringItem("I say: "Hi Girls"); f.append(si); display.setCurrent(f); } public void pauseApp() { } public void destroyApp(boolean unconditional) { }}Fungsi-fungsi yang ada di dalam kelas ini adalah: public void setText(String teks) Menetapkan teks sesuai parameter teks yang diberikan pada objek StringItem 55Andino Maseleno
  57. 57. Bab 3 – Pemrograman GUI public void setLabel(String lbl) Menetapkan label pada objek StringItem sesuai parameter lbl yang diberikan. public String getText() Menghasilkan teks string yang ada pada objek public String getLabel() Menghasilkan label yang ada pada objek StringItem.TextFieldObjek TextField digunakan untuk meletakkan objek teks string yang bisa diubah oleh penggunasecara langsung pada form. Jadi, objek ini mirip dengan objek TextBox. Objek TextFielddiimplementasikan oleh kelas TextField (javax.microedition.lcdui.TextField) yang merupakan kelasturunan dari kelas abstrak javax.microedition.lcdui.Item. Konstruktor dari kelas TextField iniadalah:public TextField(String title, String text, int maxSize, int constraints)Parameter-parameter:String titleUntuk memberikan title pada TextField yang aktif.String textUntuk memberikan nilai awal pada TextField.int maxSizeUntuk memberikan batasan maksimal jumlah karakter yang bisa diterima oleh TextField. Jadi tidakakan bisa memasukkan karakter yang jumlahnya melebihi batas maksimal ini.int constraintAda beberapa nilai yang bisa digunakan untuk parameter ini, yakni:TextField.ANYArtinya, bisa memasukkan sembarang karakter teks.TextField.EMAILADDRArtinya, bisa memasukkan teks yang merupakan alamat email, misalnyaandinomaseleno@yahoo.comTextField.NUMERICArtinya, hanya bisa memasukkan teks berupa angka saja.TextField.PHONENUMBER 56Andino Maseleno
  58. 58. Bab 3 – Pemrograman GUIArtinya, hanya bisa memasukkan teks yang berupa nomor telepon saja, misalnya +628156864651,08156864651.TextField.URLArtinya, bisa memasukkan teks berupa alamat Web atau URL lain, misalnyahttp://andinomaseleno.netTextField.PASSWORDArtinya, seperti memasukkan password pada saat logi ke Windows, masukkan akan ditampilkandengan karater tertentu, misalnya ‘*’. Tipe batasan ini bisa digunakan dengan tipe batasan yang laindengan menggunakan operator ‘|’ sehingga menambah kemampuan pembatasan yang ada. Berikut contoh programnya://Program textFieldDemo.javaimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class textFieldDemo extends MIDlet { private Display display; public textFieldDemo() { } public void startApp() { display = Display.getDisplay(this); TextField lname = new TextField("LoginName","andinomaseleno",25,TextField.ANY); TextField pval = newTextField("Password","secret",45,TextField.ANY|TextField.PASSWORD); Form f = new Form("Sign on"); f.append(lname); f.append(pval); display.setCurrent(f); } public void pauseApp() { } public void destroyApp(boolean unconditional) { }}Fungsi penting dalam kelas TextField lainnya adalah: 57Andino Maseleno
  59. 59. Bab 3 – Pemrograman GUI public int size() Menghasilkan jumlah karakter yang saat ini telah dimasukkan dalam TextField public void delete(int offset, int length) Menghapus karakter dari posisi offset sepanjang jumlah karakter = length. public int getCaretPosition() Menghasilkan posisi kursor pada TextField saat ini. public String getString() Menghasilkan string yang saat ini ada pada TextField. public void setString(String str) Menetapkan string pada TextField menjadi str pada parameter fungsi di atas. public void insert(String str, int position) Memasukkan string str pada parameter fungsi di atas pada TextField mulai dari posisi position.Image Objek Image digunakan untuk meletakkan objek gambar yang bisa bersifat immutable ataumutable. Gambar yang bersifat immutable artinya tidak bisa diubah-ubah oleh aplikasi, danumumnya berupa gambar yang diambil dari sebuah file gambar, URL atauu tempat lain. Sebaliknyagambar yang bersifat mutable bisa diubah-ubah oleh aplikasi. Konstruktor dari kelas Image inibersifat statik, sehingga tidak menggunakan operator new untuk membuat sebuah objek Imagemelainkan mengacu ke fungsi createImage() pada objek Image ini:public static void createImage(String name)public static void createImage(Image img)public static void createImage(int width, int height)Konstruktor pertama dan kedua digunakan untuk membuat objek Image yang bersifat immutable.Perlu diketahui bahwa jenis file gambar yang didukung saat ini hanya file dengan format PNG(Portable Network Graphics). Berikut contoh programnya://Program imageDemo.javaimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;import java.io.*;public class imageDemo extends MIDlet { private Display display; public imageDemo() { 58Andino Maseleno
  60. 60. Bab 3 – Pemrograman GUI } public void startApp() { display = Display.getDisplay(this); try { Image myimg = Image.createImage("/Andino.png"); Form f = new Form("Andino"); f.append(myimg); display.setCurrent(f); } catch (IOException e) { } } public void pauseApp() { } public void destroyApp(boolean unconditional) { }}Fungsi-fungsi penting dalam kelas Image ini adalah: public Graphics getGraphics() Menghasilkan objek Graphics yang bersesuaian dari objek Image yang bersangkutan. public int getHeight() Menghasilkan tinggi/panjang objek gambar yang ada. public int getWidth() Menghasilkan lebar objek gambar yang ada. public boolean isMutable() Menghasilkan nilai true jika objek gambar bersifat mutable.ImageItem Objek ImageItem digunakan untuk mengotrol objek Image yang ada pada form atau alert.Konstruktor dari kelas ImageItem ini adalah:public void ImageItem(String label, Image img, int layout, String altText)Parameter-parameter: String label Untuk memberikan judul pada objek ImageItem yang aktif. String altText 59Andino Maseleno

×