Escolar Documentos
Profissional Documentos
Cultura Documentos
POLITEKNIK TELKOM
BANDUNG
2009
Politeknik Telkom Mobile Application
Tim Penulis:
Budi Laksono Putro
Dedy Rahman Wijaya
KATA PENGANTAR
Assalamu’alaikum Wr. Wb
Segala puji bagi Allah SWT karena dengan karunia-Nya courseware ini dapat
diselesaikan.
Tak ada gading yang tak retak, di dunia ini tidak ada yang sempurna, oleh
karena itu kami harapkan para pengguna buku ini dapat memberikan masukan
perbaikan demi pengembangan selanjutnya.
Christanto Triwibisono
Wakil Direktur I
iii
Politeknik Telkom Mobile Application
DAFTAR ISI
vi
Politeknik Telkom Mobile Application
vii
Politeknik Telkom Mobile Application
1 INTRODUCTION J2ME
Overview
Tujuan
Intro J2ME 1
Politeknik Telkom Mobile Application
2 Intro J2ME
Politeknik Telkom Mobile Application
Java 2
Intro J2ME 3
Politeknik Telkom Mobile Application
4 Intro J2ME
Politeknik Telkom Mobile Application
Applet
Java Applet merupakan program Java yang berjalan di atas browser.
Penggunaan applet ini akan membuat halaman HTML lebih
dinamis dan menarik.
Java Networking
Sekumpulan API (Application Programming Interface) yang
menyediakan fungsi – fungsi untuk aplikasi – aplikasi jaringan,
seperti penyediaan akses untuk TCP, UDP, IP Adrress dan URL.
Tetapi Java Networking tidak menyediakan akses untuk ICMP
dikarenakan alasan sekuriti dan pada kondidi umum hanya
administrator ( root ) yang bisa memanfaatkan protokol ICMP.
Java Security
Java Security menyediakan sekumpulan API untuk mengatur
security dari aplikasi Java baik secara high level atau low level,
seperti public/private key management dan certificates.
Java Swing
Java Swing menyediakan sekumpulan API untuk membangun
aplikasi – aplikasi GUI (Graphical User Interface) dan model GUI
yang diinginkan bisa bermacam – macam, bisa model Java, model
Motif/CDE atau model yang dependent terhadap platform yang
digunakan.
Intro J2ME 5
Politeknik Telkom Mobile Application
Java RMI
Java RMI menyediakan sekumpulan API untuk membangun
aplikasi – aplikasi Java yang mirip dengan model RPC (Remote 4
Procedure Call) jadi object - object Java bisa di call secara remote
pada jaringan komputer.
Java 2D/3D
Java 2D/3D menyediakan sekumpulan API untuk membangun
grafik – grafik 2D/3D yang menarik dan juga akses ke printer.
Java Sound
Java Sound menyediakan sekumpulan API untuk manipulasi
sound.
k. Java IDL + CORBA Java IDL (Interface Definition Language)
menyediakan dukungan Java untuk implementasi CORBA
(Common Object Request Broker) yang merupakan model
distributed-Object untuk solusi aplikasi besar di dunia
networking.
Java Card
Java Card utamanya digunakan untuk aplikasi – aplikasi pada
smart card, yang sederhana wujudnya seperti SIM Card pada
handphone.
6 Intro J2ME
Politeknik Telkom Mobile Application
Intro J2ME 7
Politeknik Telkom Mobile Application
1.3 Configuration
Suatu configuration menggambarkan fitur minimal dari lingkungan
lengkap Java runtime. Untuk menjamin kemampuan portabilitas dan
interoperabilitas optimal diantara berbagai macam perangkat yang
dibatasi sumber dayanya(memory, prosesor, koneksi yang dibatasi),
configuration tidak menggambarkan fitur tambahan. Suatu
configuration J2ME menggambarkan suatu komplemen yang minimum
dari teknologi JAVA. Adalah merupakan tugas profile-profile untuk
menggambarkan tambahan library untuk suatu kategori perangkat
tertentu.
configuration menggambarkan:
Subset bahasa pemrograman JAVA
Kemampuan Java Virtual Machine(JVM)
Core platform libraries
Fitur sekuriti dan jaringan
1.4 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.
8 Intro J2ME
Politeknik Telkom Mobile Application
Intro J2ME 9
Politeknik Telkom Mobile Application
10 Intro J2ME
Politeknik Telkom Mobile Application
Terdapat tiga nama OS untuk mobile devices yang popular yaitu Palm
dengan PalmOS-nya, Symbian dengan EPOC-nya, dan Microsoft
dengan Pocket PC/ Windows CE-nya. Dalam hubungan OS mobile
device dengan teknologi J2ME (yang selama ini menjadi perhatian)
adalah tampak pada gambar 1.4 dibawah ini:
Intro J2ME 11
Politeknik Telkom Mobile Application
Symbian (EPOC)
Saat tulisan ini dibuat, versi terbaru dari Symbian adalah Symbian OS
v7.0s yang menyediakan berbagai layanan yang sangat sesuai dengan
berbagai functionality platform 3G market. Fitur utama dari versi ini
adalah :
– Lightweight multi-threaded multimedia framework.
– Support for W-CDMA.
– Java MIDP 2.0 enabled.
– Support for multiple primary/ secondly PDP contents.
– Support bi-directional text (Thai, Arabic, and Hebrew)
12 Intro J2ME
Politeknik Telkom Mobile Application
Palm (PalmOS)
Intro J2ME 13
Politeknik Telkom Mobile Application
14 Intro J2ME
Politeknik Telkom Mobile Application
Rangkuman
Intro J2ME 15
Politeknik Telkom Mobile Application
16 Intro J2ME
Politeknik Telkom Mobile Application
Intro J2ME 17
Politeknik Telkom Mobile Application
Pilihan Ganda
a. 1,2,3,4 c. 1,2
b. 1,2,3 d. 1
18 Intro J2ME
Politeknik Telkom Mobile Application
Intro J2ME 19
Politeknik Telkom Mobile Application
Latihan
20 Intro J2ME
Politeknik Telkom Mobile Application
Overview
Anda jangan berharap dapat memprogram dengan platform J2SE dan dapat
me-load-nya pada mobile devices, tentu saja berbeda terutama pada hal
prosesor computing dan memory-nya. Jika pada J2SE anda menggunakan
interpreter JVM, pada platform J2ME anda mempergunakan Kilo Virtual
Machine (KVM) yang “ditanam” dalam handheld devices. Sebagai informasi
bahwa J2EE merupakan superset dari J2SE, sebaliknya J2SE merupakan
superset bagi J2ME. Apa artinya? API yang ada pada J2ME sebagian
mengadopsi yang ada pada API J2SE, selain juga mengimplementasikan API
spesifik untuk teknologi J2ME itu (javax.microedition.*).
Tujuan
2.3.1 CLDC
2.3.2 CDC
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”.
Configuration
JSR Name URL
30 Connected Limited Device http://jcp.org/jsr/detail/30.jsp
Configuration (CLDC) 1.0
139 Connected Limited Device http://jcp.org/jsr/detail/139.jsp
Configuration (CLDC) 1.1
36 Connected Device http://jcp.org/jsr/detail/36.jsp
Configuration (CLDC) 1.0.1
218 Connected Device http://jcp.org/jsr/detail/218.jsp
Configuration (CLDC) 1.1
Profile
JSR Name URL
37 Mobile Information Device http://jcp.org/jsr/detail/37.jsp
Profile 1.0
118 Mobile Information Device http://jcp.org/jsr/detail/118.jsp
Profile 2.0
75 PDA Profile 1.0 http://jcp.org/jsr/detail/75.jsp
46 Foundation Profile 1.0 http://jcp.org/jsr/detail/46.jsp
129 Personal Basis Profile 1.0 http://jcp.org/jsr/detail/129.jsp
Optional API
JSR Name URL
75 PDA Optional Packages for http://jcp.org/jsr/detail/75.jsp
J2ME
82 Java APIs for Bluetooth http://jcp.org/jsr/detail/82.jsp
135 Mobile Media API 1.1 http://jcp.org/jsr/detail/135.jsp
184 Mobile 3D Graphics http://jcp.org/jsr/detail/184.jsp
179 Location API for J2ME http://jcp.org/jsr/detail/179.jsp
120 Wireless Messaging API 1.0 http://jcp.org/jsr/detail/120.jsp
205 Wireless Messaging API 2.0 http://jcp.org/jsr/detail/205.jsp
172 J2ME Web Services APIs http://jcp.org/jsr/detail/172.jsp
66 RMI Optional Package http://jcp.org/jsr/detail/66.jsp
2.8 MIDP
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
2.9 MIDlet
Rangkuman
Pilihan Ganda
a. 1, 2, 3, 4, 5 c. 1, 2, 3
b. 1, 2, 3, 4 d. 1, 2
a. 1, 2, 3, 4, 5 c. 1, 2, 3
b. 1, 2, 3, 4 d. 1, 2
Latihan
3 CLCD
Overview
Pada J2SE anda menggunakan interpreter JVM, pada platform J2ME anda
mempergunakan Kilo Virtual Machine (KVM) yang “ditanam” dalam handheld
devices. Sebagai informasi bahwa J2EE merupakan superset dari J2SE,
sebaliknya J2SE merupakan superset bagi J2ME. Apa artinya? API yang ada pada
J2ME sebagian mengadopsi yang ada pada API J2SE, selain juga
mengimplementasikan API spesifik untuk teknologi J2ME itu
(javax.microedition.*).
Tujuan
CLDC 41
Politeknik Telkom Mobile Application
J2ME CLDC dan KVM telah digunakan oleh banyak platform dan
devices, termasuk oleh Motorola phones dan two-way pagers, Research
in Motion (RIM) wireless handhelds, dan Palm PDA. Jutaan J2ME CLDS
digunakan sehari-hari oleh berbagai mobile phone di Jepang dan Korea.
Banyak pula consumer yang menggunakan J2ME dengan Motorola
handsets pada jaringan Nextel di USA, dan dalam tahap test dan
commercial deployment di Vodaphone Airtouch, Sprint PCS, Telefonica,
dan operator lainnya di USA. Symbian terus men-support Java
Technology untuk di-release-nya Nokia Communicator 9210 yang
berbasiskan Java Technology pada akhir 2001.
3.1 CLDC
42 CLDC
Politeknik Telkom Mobile Application
CLDC 43
Politeknik Telkom Mobile Application
44 CLDC
Politeknik Telkom Mobile Application
o class java.lang.OutOfMemory
o class java.lang.VirtualMachineError
Asynchronous exceptions
Beberapa error classes
User-defined class loaders
Reflection
Thread groups dan daemon threads
Reflection, Java Native Interface (JNI) dan user-defined class loaders
potensial menjadi lubang keamanan. JNI juga membutuhkan memory
yang intensif sehingga dimungkinkan untuk tidak mendapat dukungan
dari memory rendah sebuah perangkat mobile.
CLDC 45
Politeknik Telkom Mobile Application
46 CLDC
Politeknik Telkom Mobile Application
CLDC 47
Politeknik Telkom Mobile Application
1. Java Lang
48 CLDC
Politeknik Telkom Mobile Application
2. Java Util
CLDC 49
Politeknik Telkom Mobile Application
3. Java IO
50 CLDC
Politeknik Telkom Mobile Application
1. Package java.microedition.io
CLDC 51
Politeknik Telkom Mobile Application
2. Package javax.microedition.lcdui
52 CLDC
Politeknik Telkom Mobile Application
3. Package javax.microedition.midlet
4. Package javax.microedition.rms
CLDC 53
Politeknik Telkom Mobile Application
General form :
Connector.open("<protocol>://<address>:<parameters>");
Files : Connector.open("file://myfile.txt");
HTTP : Connector.open("http://wireless.java.sun.com");
Sockets : Connector.open("socket://129.144.111.222:9000");
Communication ports : Connector.open("comm://9600:18N");
54 CLDC
Politeknik Telkom Mobile Application
CLDC 55
Politeknik Telkom Mobile Application
Rangkuman
56 CLDC
Politeknik Telkom Mobile Application
Asynchronous exceptions
Beberapa error classes
User-defined class loaders
Reflection
Thread groups dan daemon threads
4. Kompatibilitas dari Java TM Language Spesification (JLS) :
Important thing :
karena keterbatasan memory dan lainnya, maka KVM (kilo
virtual machine) tidak dapat mengadaptasi seluruh fitur yang ada
dalam JLS.
No floating point support untuk CLDC 1.0.
Kelas java.lang.Float dan java.lang.Double dibuang dari CLDC.
No finalization object instances.
Garbage collector yang menjadi salah satu andalan teknologi
Java tidak di-support oleh CLDC.
Limited error handling capabilities.
CLDC hanya mendukung penanganan kesalahan dengan hanya
menggunakan kelas-kelas berikut :
java.lang.Error,
java.lang,OutOfMemory, dan
java.lang.VirtualMachineError.
No thread & no JNI.
5. Class yang diwariskan dari Java 2 Standar Edition Platform adalah
paket:
a. java.lang.* (Boolean, Byte, Character, Integer, Long, Math,
Runnable, Runtime, System, StringBuffer).
b. java.util.* (Calendar, Date, Enumeration, Hashtable, Random,
Stack, TimeZone, Vector).
c. java.io.* (berbagai variasi input & output stream readers dan
writers : ByteArrayInput/Output, DataStreamInput/Ouput
Reader/Writer).
6. Class library dari J2ME Platform adalah paket:
a. Package java.microedition.io
b. Package javax.microedition.lcdui
c. Package javax.microedition.midlet
d. Package javax.microedition.rms
CLDC 57
Politeknik Telkom Mobile Application
58 CLDC
Politeknik Telkom Mobile Application
CLDC 59
Politeknik Telkom Mobile Application
Pilihan Ganda
a. 1,2,3,4 c. 1,2
b. 1,2,3 d. 1
a. 1,2,3 c. 1, 3
b. 1,2 d. 2,3
60 CLDC
Politeknik Telkom Mobile Application
4. Class yang diwariskan dari Java 2 Standar Edition Platform adalah paket:
1. java.lang.* (Boolean, Byte, Character, Integer, Long, Math,
Runnable, Runtime, System, StringBuffer).
2. java.util.* (Calendar, Date, Enumeration, Hashtable, Random,
Stack, TimeZone, Vector).
3. java.io.* (berbagai variasi input & output stream readers dan
writers : ByteArrayInput/Output, DataStreamInput/Ouput
Reader/Writer).
a. 1,2,3 c. 1, 3
b. 1,2 d. 2,3
Latihan
CLDC 61
Politeknik Telkom Mobile Application
4 MIDP
Overview
Tujuan
62 MIDP
Politeknik Telkom Mobile Application
MIDP 63
Politeknik Telkom Mobile Application
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
64 MIDP
Politeknik Telkom Mobile Application
4.2.2 Permissions
Terdapat dua tipe mode interaksi permissions, mode Allowed dan
User. Pada mode Allowed, user tidak diminta melakukan pengaturan
permission saat MIDlet mengakses sebuah API yang terproteksi.
Sebuah aplikasi secara otomatis memberikan hak akses terhadap
resource dan interaksi dari user tidak diperlukan.
MIDP 65
Politeknik Telkom Mobile Application
1. Blanket
User memberikan permission pada MIDlet Suite untuk mengakses
resource atau API secara permanen. User tidak akan lagi diminta
melakukan pengaturan setiap MIDlet Suite berjalan. Permission yang
ada akan tetap eksis hingga MIDlet Suite dihapus dari device atau user
merubah permission tersebut.
Membuat sebuah permission adalah salah satu dari cara pengamanan
akses terhadap restricted APIs. Dalam MIDP, nama dari permission
menggunakan nama dari package dari API tersebut sebagai prefix dan
bersifat case sensitive. Jika permission tersebut ditujukan kepada
sebuah class, maka penamaan permission harus mengandung nama
class dan package.
Sebuah MIDlet dapat menuntut adanya permission dengan
mendeklarasikan MIDlet-Permissions ataupun atribut MIDlet-
Permissions-Opt pada application descriptor. Jika MIDlet Suite
menyertakan atribut MIDlet-Permissions, atribut permission tersebut
harus diberi hak akses terhadap protection domain. Jika hak akses
tidak diberikan, maka proses instalasi akan dibatalkan.
MIDlet-Permissions: javax.microedition.io.Connector.http
MIDlet-Permissions-Opt: javax.wireless.messaging.sms.receive,
javax.wireless.messaging.sms.send
66 MIDP
Politeknik Telkom Mobile Application
MIDP 67
Politeknik Telkom Mobile Application
2. Trusted MIDlets
Sebuah MIDlet dapat diputuskan sebagai trusted application jika
authentifikasi dan integritas dari file JAR dapat terverifikasi oleh device
dan terbatas pada sebuah protection domain. Proses verifikasi
dilakukan oleh device menggunakan certificates.
68 MIDP
Politeknik Telkom Mobile Application
APIs yang tersedia bagi suatu aplikasi MIDP datang dari kemasan-
kemasan di dalam kedua-duanya CLDC dan MIDP, seperti yang
ditunjukkan di dalam Gambar 1-2. Bungkus yang ditandai dengan
sebuah lambing + bersifat baru di CLDC 1.1 dan MIDP 2.0. CLDC
menggambarkan suatu inti dari APIs, kebanyakan mengambil dari
lingkup J2SE. Ini memasukkan di dalamnya kelas-kelas bahasa pokok di
javalang, kelas-kelas stream dari java.io, dan koleksi-koleksi sederhana
dari java.util. CLDC juga menetapkan network API di
javax.microedition.io.
MIDP 69
Politeknik Telkom Mobile Application
Kita dapat menentukan secara bebas memilih alat dari beragam vendor
penyedia untuk mengakses fasilitas-fasilitas pada Java API. Beragam alat-alat
MIDP dengan beragam aplikasi software di gambarkan pada Gambar 4.6.
Layered pada bagian atas OS dari alat adalah CLDC (termasuk JVM) dan
MIDP APIs. Aplikasi-aplikasi MIDP digunakan hanya di CLDC dan MIDP APIs.
Aplikasi-aplikasi spesifikasi alat Java boleh juga menggunakan interface API Java
yang disediakan oleh vendor penyedia alat.
4.3 MIDlet
70 MIDP
Politeknik Telkom Mobile Application
package javax.microedition.midlet;
import com.sun.midp.midlet.MIDletState;
import com.sun.midp.midlet.MIDletSuite;
public abstract class MIDlet{
protected MIDlet(){
state = new MIDletProxy(this);
}
protected abstract void startApp() throws
MIDletStateChangeException{
}
protected abstract void pauseApp() {
}
protected abstract void destroyApp(boolean
unconditional) throws
MIDletStateChangeException{
}
public final void notifyDestroyed(){
state.notifyDestroyed();
}
public final void notifyPaused(){
state.notifyPaused();
MIDP 71
Politeknik Telkom Mobile Application
}
public final String getAppProperty(String key){
return state.getMIDletSuite().getProperty(key);
}
public final void resumeRequest(){
state.resumeRequest();
}
Private MIDletProxy state ;
}
72 MIDP
Politeknik Telkom Mobile Application
Ada beberapa istilah penting dalam daur hidup sebuah MIDlet, yaitu:
o Application Management Software
MIDlet berjalan dalam sebuah perangkat handled. Application
Management Software ini merupakan software atau program
bawaan yang ada dalam perangkat handled tersebut untuk
mengatur manajemen aplikasi MIDlet yang ada.
o MIDlet
Merupakan aplikasi yang dijalankan pada sebuah perangkat
handled. MIDlet tidak berinteraksi langsung dengan hardware
dari handphone, Palm atau perangkat handled Anda yang lain,
melainkan berinteraksi melalui Application Management
Software. AMS inilah yang akan menerima sinyal dari MIDlet
bahwa MIDlet akan dijalankan atau berhenti.
o MIDlet State
Merupakan status dari sebuah MIDlet yang akan dijelaskan
kemudian.
Jika Anda mengenal Java Applet, Anda akan menemukan bahwa Applet
dapat berada dalam status init(), start(), stop() dan run(). Untuk
MIDlet, ada tiga status dalam daur hidup sebuah MIDlet yaitu:
Nama Keterangan
Status
Paused Status ini terjadi ketika MIDlet selesai diinisialisasi dan
tidak melakukan aksi apapun. Pada status ini MIDlet
tidak boleh sedang mengunci suatu sumber daya,
misalnya tidak boleh sedang melakukan locking atau
mengunci sebuah file untuk ditulis yang menyebabkan
proses lain tidak bias menulis ke file tersebut.
Secara garis besar, status MIDlet adalah paused pada
saat:
Setelah MIDlet dibuat dengan konstruktor
new()
MIDP 73
Politeknik Telkom Mobile Application
74 MIDP
Politeknik Telkom Mobile Application
File JAD adalah suatu file teks yang berisi satu set atribut-atribut,
beberapa dibutuhkan.
MIDP 75
Politeknik Telkom Mobile Application
Rangkuman
76 MIDP
Politeknik Telkom Mobile Application
MIDP 77
Politeknik Telkom Mobile Application
78 MIDP
Politeknik Telkom Mobile Application
Pilihan Ganda
3. Fungsi-fungsi yang tidak abstract pada class MIDlet bisa Anda gunakan
karena otomatis diturunkan ke aplikasi MIDlet Anda, yakni ;
1. public final void notifyDestroyed();
2. public final void notifyPaused();
3. public final String getAppProperty(String key);
4. public final void resumeRequest();
MIDP 79
Politeknik Telkom Mobile Application
a. 1,2,3,4 c. 1,2
b. 1,2,3 d. 1
a. 1,2,3,4 c. 1,2,4,3
b. 1,3,4,2 d. 1,3,2,4
80 MIDP
Politeknik Telkom Mobile Application
Latihan
MIDP 81
Politeknik Telkom Mobile Application
Overview
Tujuan
5.1 Pengenalan
Display display;
Command exitCommand = new Command("Exit",
Command.EXIT, 1);
Alert helloAlert;
public HelloMidlet()
{
helloAlert = new Alert("Hello MIDlet", "Hello,
world!",null, AlertType.INFO);
helloAlert.setTimeout(Alert.FOREVER);
helloAlert.addCommand(exitCommand);
helloAlert.setCommandListener(this);
}
Code diatas adalah bagian awal dari program kita ketika program kita
sudah siap untuk ditampilkan oleh AMS. Perlu diingat bahwa method
startApp() mungkin / bias dimasukkan lebih dari sekali seperti pada
daur hidup MIDlet. Jika MIDlet berhenti / dihentikan, seperti bila ada
telepon masuk, program akan masuk ke state berhenti (pausedApp).
Jika panggilan sudah selesai AMS akan kembali ke program dan
memanggil method startApp() lagi. Method display.setCurrent()
memberikan informasi ke sistem bahwa kita menginginkan object Alert
untuk dimunculkan ke layar. Kita dapat mendapat tampilah object
dengan memanggil method statis Display.getDisplay().
File manifest, manifest.mf adalah seperti file JAD. File ini digunakan
oleh application manager dari device. Beberapa field yang diperlukan
oleh file manifest adalah:
MIDlet-Name
MIDlet-Version
MIDlet-Vendor
MIDlet-<n> (dimana n adalah angka dari 1, untuk setiap
MIDlet di file JAR)
MicroEdition-Profile
MicroEdition-Configuration
Program Compiler Java, "javac", harus berada pada path Anda. Jika
anda melihat error seperti "cannot find file" atau "not an executable",
Anda bisa mengkonsultasikan dengan panduan instalasi untuk distribusi
Java development kit Anda tentang bagaimana memasukkan executable
PATH dari lokasi tools yang ada di Java.
Seperti yang telah dijelaskan pada awal bab ini tentang hal yang
diperlukan, NetBeans 4.1 dan NetBeans Mobility Pack harus sudah
terinstall di komputer Anda.
Gambar 5.12: Mobile Project yang baru dibuat (NetBeans Mobility Pack)
Langkah 9:
StringItem
Class ini menyediakan komponen teks string yang tidak bisa
diedit oleh pengguna.
TextField
Class ini menyediakan komponen untuk masukan teks string oleh
pengguna.
ChoiceGroup
Parameter-parameter:
String title
Untuk memberikan title pada daftar pilihan yang ditampilkan.
int choiceType
Tipe pilihan yang digunakan dapat berisi:
Choice.EXCLUSIVE
Berarti setiap saat hanya bisa dipilih 1 buah pilihan saja.
Choice.MULTIPLE
Berarti pengguna bisa memilih lebih dari 1 pilihan.
Berbeda dengan class List sebelumnya yang bisa memiliki tipe
Choice.IMPLICIT
class ini tidak memiliki tipe yang bersangkutan.
String[] choiceElement
Merupakan array dari elemen yang akan ditampilkan
Image[] choiceImages
Merupakan array dari gambar(javax.microedition.lcdui.Image)
elemen yang akan ditampilkan.
Rangkuman
Pilihan Ganda
c. 1,2,3,4 c. 1,2
d. 1,2,3 d. 1
c. 1,2,3,4,5,6 c. 1,2,5
d. 1,2,3,4,5 d. 2,3,4,5
Latihan
Overview
Pada level pemrograman yang lebih tinggi (highlevel), aplikasi MIDlet Anda
akan lebih portabel dengan banyak perangkat handled yang berbeda. Jadi
misalnya Anda mengembangkan sebuah form-form window MIDlet pada
handled Motorola i_85s, jika Anda jalankan aplikasi MIDlet tersebut pada
handled lain, hasilnya akan sama.
Tujuan
Saat Anda ingin kode Anda dapat menjadi sesedikit mungkin, ketika
sebuah interaksi ditangani oleh API
6.2 Display
Inti dari MIDP user interfaces adalah display. Yang merupakan satu-
satunya kemudahan dari Display per MIDlet. MIDlet dapat
mendapatkan referensi Display object dengan menggunakan method
static Display.getDisplay(), melewatkan referensi tersebut ke MIDlet
instance.
6.2.1 Displayable
aplikasi, dengan kata lain sebuah screen kosong akan ditampilkan atau
aplikasi tersebut tidak akan dijalankan.
6.2.2 Title
Sebuah Displayable memiliki title yang berhubungan dengan dirinya
sendiri. Posisi dan penampilan dari title tersebut merupakan piranti
spesifik yang hanya dapat ditentukan oleh peralatan dari aplikasi yang
sedang dijalankan. Sebuah title ditampilkan pada Displayable dengan
6.2.3 Command
Dengan adanya kekurangan ukuran pada screen, MIDP tidak
menggambarkan sebuah menu bar. Untuk menggantikan menu bar,
MIDlet memiliki commands. Biasanya Command diimplementasikan
sebagai soft key atau item dalam sebuah menu. Object Command
hanya berisi informasi tentang action yang harus dikerjakan pada saat
Command diaktifkan. Dia tidak berisikan kode yang akan dieksekusi
pada saat Command tersebut dipilih.
Command memiliki sebuah short label, long label, tipe dan prioritas.
Command Label
Command Type
mmand.OK, Command.BACK,
Command.CANCEL, Command.EXIT,
Command.HELP, Command.ITEM,
Command.SCREEN, Command.STOP
Command Priority
6.2.4 CommandListener
6.2.5 Ticker
Ticker adalah sebuah baris dari text yang dapat discrolling secara
terus-menerus pada display. Method konstruktor dari ticker
menerima text string untuk ditampilkan. Hal tersebut hanya memiliki
dua method lain, yaitu getter dan setter untuk text ini: String
getString() dan void setString(String text). Tidak ada cara lain pada
sebuah aplikasi untuk mengontrol kecepatan dan arah dari scrolling
text. Scrolling tidak dapat dipause atau distop.
Jika spasi diletakkan pada text, hal tersebut tidak akan ditampilkan
pada layar. Semua baris text akan ditampilkan sebagai single line dari
scrolling text.
6.2.6 Screen
6.2.7 Item
Berikut ini layout yang lain dari direktif (tidak mutually exclusive):
LAYOUT_NEWLINE_BEFORE
LAYOUT_NEWLINE_AFTER
LAYOUT_SHRINK
LAYOUT_VSHRINK
LAYOUT_EXPAND
LAYOUT_VEXPAND
LAYOUT_2
6.4 Form
ChoiceGroup
Class ini menyediakan komponen yang mirip dengan list, yakni
menyediakan daftar pilihan.
DateField
Class ini menyediakan komponen untuk memasukkan informasi
tanggal dan waktu.
Gauge
Class ini menyediakan komponen grafik horisontal yang biasanya
digunakan untuk memberikan gambaran berapa persen proses
berjalan.
StringItem
Class ini menyediakan komponen teks string yang tidak bisa
diedit oleh pengguna.
TextField
Class ini menyediakan komponen untuk masukan teks string
oleh pengguna.
dateForm.append(dateonly);
dateForm.append(timeonly);
dateForm.append(datetime);
}
catch (Exception e){e.printStackTrace();}
textForm.append(ANY);
textForm.append(EMAILADDR);
textForm.append(NUMERIC);
textForm.append(PHONENUMBER);
textForm.append(URL);
textForm.append(DECIMAL);
6.8 Gauge
menjadi
Anda bisa mendapatkan informasi apakah progress bar yang Anda buat
bersifat interaktif atau tidak dengan menggunakan fungsi :
• public boolen isInteractive()
Jika dikembalikan true, progress bar bersifat interaktif.
Dari objek Gauge, Anda bisa memperoleh nilai yang sedang ada
sekarang, nilai maksimal yang diperbolehkan dengan fungsi-fungsi
berikut:
• public int getValue()
Menghasilkan nilai integer dari progress bar yang ada
• public int getMaxValue()
Menghasilkan nilai integer maksimum dari progress bar yang ada Selain
itu Anda bisa menetapkan nilai yang sedang ada sekarang, nilai
maksimal yang diperbolehkan dengan fungsi :
• public void setValue(int val)
Menetapkan nilai integer dari progress bar yang ada
• public void setMaxValue(int maxval)
Menetapkan nilai integer maksimum dari progress bar yang ada
Anda juga bisa mengubah 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.
Rangkuman
MIDP mempunyai class yang dapat menangani fungsi high-level dan low-level
user interface. High-level UI interfaces didesain secara fleksibel. Penampilan
dari komponen ini tidak didefinisikan secara spesifik. Penampilan screen yang
sebenarnya dari berbagai macam komponen ini digunakan dari satu peralatan
ke peralatan yang lain. Tetapi para programmer telah teryakinkan oleh
kegunaan dari high-level komponen UI interfaces memiliki persamaan dalam
berbagai spesifikasi-pengimplementasi secara keseluruhan.
Pilihan Ganda
e. 1,2,3,4,5 c. 1,2,3
f. 1,2,3,4 d. 1,3
e. 1,2,3,4 c. 1,2,4
f. 1,2,3 d. 2,3,4
Latihan
List Dinamis
Buatlah sebuah MIDlet yang memiliki List IMPLICIT sebagai Screen main.
Masukan tiga Command kedalam List ini - “Add Item”, “Remove Item” dan
“Exit”. Comman “Add Item” akan memberikan layanan pada user untuk
memasukan list menggunakan TextBox, kemudian insert item tersebut
sebelum current item yang dipilih dari list. “Remove Item” akan menghapus
currently selected list item (getSelectedIndex). Command “Exit” akan keluar
dari program.
Overview
Pada level pemrograman yang lebih tinggi (highlevel), aplikasi MIDlet Anda
akan lebih portabel dengan banyak perangkat handled yang berbeda. Jadi
misalnya Anda mengembangkan sebuah form-form window MIDlet pada
handled Motorola i_85s, jika Anda jalankan aplikasi MIDlet tersebut pada
handled lain, hasilnya akan sama.
Tujuan
7.1 ChoiceGroup
7.2 List
List merupakan subclass dari screen yang berisi sebuah daftar dari
suatu pilihan. Sebuah list dapat dibagi menjadi tiga tipe: IMPLICIT,
EXCLUSIVE atau MULTIPLE.
Jika List bertipe IMPLICIT dan user mengeksekusi tombol “select”,
commandAction() dari list commandListener akan dipanggil. Default
perintahnya adalah list.SELECT_COMMAND.
Untuk tipe IMPLICIT dan EXCLUSIVE, GetSelectedIndex()
mengembalikan index dari element yang dipilih. Untuk tipe MULTIPLE,
getSelectedFlags() mengembalikan sebuah array dari boolean yang
berisi state dari elemen-elemen. isSelected(int index) mengembalikan
state dari elemen dalam pemberian posisi index.
7.3 Alert
Ketika alert berisi text yang tidak sesuai dengan screenful dan harus
discroll, maka secara otomatis alert menge-set ke modal(timeout di
set kepada Alert.FOREVER).
stringForm.setCommandListener(this);
Rangkuman
MIDP mempunyai class yang dapat menangani fungsi high-level dan low-level
user interface. High-level UI interfaces didesain secara fleksibel. Penampilan
dari komponen ini tidak didefinisikan secara spesifik. Penampilan screen yang
sebenarnya dari berbagai macam komponen ini digunakan dari satu peralatan
ke peralatan yang lain. Tetapi para programmer telah teryakinkan oleh
kegunaan dari high-level komponen UI interfaces memiliki persamaan dalam
berbagai spesifikasi-pengimplementasi secara keseluruhan.
Untuk menampilkan sesuatu pada layar misalnya tulisan, form dan sebagainya
Anda harus mengakses display dari handled yang dapat diakses dengan class
javax.microedition.lcdui.Display. Objek kedua adalah screen yang berbeda
dengan display. Screen digunakan untuk menangani komponen-komponen
GUI, misalnya window, form, dialogbox dan menangani masukan dari
pengguna misalnya dari keypad.
Pilihan Ganda
g. 1,2,3 c. 1,2
h. 1,2 d. 2,3
g. 1,2,3 c. 1,2
h. 3,2 d. 3
Latihan
Overview
Tujuan
8.1 Pengenalan
Pada bab ini, kita akan berhadapan langsung dengan layar. Kita akan
mempelajari class Canvas, dimana akan menjadi pendukung dari proses
menggambar kita. Kita juga akan menyelidiki ke dalam class Graphic,
dimana memiliki metode untuk menggambar garis, kotak, sudut, dan
teks. Kita juga akan membahas huruf, warna dan gambar.
8.2 Canvas
Canvas adalah subclass dari Displayable. Itu adalah sebuah class
abstrak yang harus di-extend sebelum sebuah aplikasi dapat
menggunakan fungsi-fungsi yang ada.
Setiap perubahan yang terjadi pada ukuran yang diberikan untuk area
menggambar pada Canvas dilaporkan kepada aplikasi oleh metode
sizeChanged(). Ukuran yang tersedia pada Canvas mungkin saja
berubah jika ada pergantian antara mode layar full dan normal atau
penambahan dan pengurangan sebuah komponen seperti Command.
8.2.2 ”Hello,World!”
addCommand(exitCommand);
setCommandListener(this);
Inti dari program ini adalah metode paint(). Set pertama dari
pemanggilan metode adalah membersihkan layar.
8.2.3 Perintah
8.3 Grafik
Class Graphic adalah class utama untuk menulis teks, menggambar,
garis, kotak dan sudut. Dia memiliki metode untuk menentukan warna,
huruf, dan coretan.
8.3.1 Warna
Class Display memiliki metode untuk menentukan apakah sebuah
perangkat memiliki fasilitas yang mendukung layar berwarna atau layar
monochrome pada sebuah perangkat.
8.3.2 Huruf
Sebuah huruf memiliki tiga atribut yaitu bentuk, type, dan ukuran.
Huruf tidak diciptakan oleh aplikasi. Sebagai antinya, sebuah aplikasi
meminta sistem untuk memilih model atribut huruf dan sistem
mengembalikan huruf yang sesuai dengan model atribut yang diminta.
Sistem tidak menjamin akan mengembalikan semua atribut huruf yang
dipili. Jika sistem tidak memiliki huruf yang sesuai dengan permintaan,
dia akan mengembalikan sebuah huruf hampir mirip dengan atribut
yang diminta.
STYLE_BOLD | STYLE_ITALIC
public void drawLine(int x1, int y1, int x2, int y2)
g.setColor(255, 0, 0);
g.drawArc(18, 18, 50, 50, 0, 360); //
menggambar sebuah lingkaran
g.setColor(0, 255, 0);
g.drawArc(40, 40, 100, 120, 0, 180);
g.setColor(0, 0, 255);
g.fillArc(100, 200, 80, 100, 0, 90);
try {
Image image = Image.createImage("/jedi.png");
g.drawImage(image,
getWidth()/2, getHeight()/2,
Graphics.VCENTER | Graphics.HCENTER);
} catch (Exception e){}
Rangkuman
Pada bab Low Level User Interface ini diharapkan siswa dapat
menguasai :
1. Memahami event handling level rendah dalam MIDP
2. Menggambar dan menampilkan teks, gambar, garis, kotak, dan
sudut
3. Menentukan warna, huruf, dan coretan untuk operasi
menggambar
4. Memahami dan menggunakan class Canvas dan Graphic
Pilihan Ganda
i. 1,2,3 c. 1,2,3,4
j. 1,2,4 d. 1,2,3,4,5
i. 1,2,3,4 c. 1,2,3,4,5,6
j. 3,4,5,6 d. 1,2,3,4,5
Latihan
Key Codes
Buatlah sebuah MIDlet yang akan menampilkan kode dan nama dari tombol
yang ditekan oleh user. Gunakan sebuah Canvas dan tempatkan keterangan
kode dan nama tepat di tengah dari tampilan pada layer.
Overview
Tujuan
sejak sebuah perangkat memiliki layout kunci yang berbeda dan key
code yang berbeda pula. KEY_NUM2 mungkin menjadi kunci “UP”
untuk sebuah perangkat, tetapi mungkin juga menjadi kunci “LEFT”
untuk perangkat lainnya. GetGameAction() akan selalu mengembalikan
“UP”, tidak terikat pada kunci mana yang ditekan selama dia adalah
kunci “UP” di dalam konteks dari layout kunci sebuah perangkat.
Disamping dari event key, program MIDP juga dapat mengatasi event
pointer. Hal ini bersifat benar jika sebuah perangkat memiliki sebuah
pointer dan hal tersebut diimplementasikan di dalam sistem JAVA pada
sebuah perangkat.
Metode hasPointerEvents() mengembalikan nilai true jika sebuah
perangkat mendukung pointer yang bersifat ditekan dan dilepaskan.
Metode hasPointerMotionEvents() mengembalikan nilai true jika
sebuah perangkat mendukung event gerakan dari pointer.
9.4 Clipping
Suatu bidang clipping adalah suatu kotak di dalam objek Graphics yang
ada. Setiap operasi grafik hanya akan mempengaruhi pixel-pixel
didalam area clip. Pixel yang berada diluar clipping tidak akan
dipengaruhi oleh setiap operasi grafik.
Berikut adalah beberapa metode dari Font yang berguna dalam menggambar
teks:
Graphics.TOP | Graphics.HCENTER);
game yang dibangun menggunakan API dari salah satu produsen tidak
akan berjalan pada device hasil produksi dari produsen lain.
MyCanvas.java :
GameMidlet.java:
9.7.2 Layers
Layers adalah elemen visual dari sebuah screen. Layer adalah abstract
class yang merepresentasikan objects pada screen. Sprite dan
TiledLayer adalah subclasses dari class Layer.
9.7.3 Sprites
Sprites adalah objects grafis yang anda lihat pada game. Object ini
dapat berupa character, kunci, tombol, pintu ataupun peluru. Sebuah
sprite bersifat statis ataupun animasi.
9.7.4 LayerManager
Rangkuman
Pada bab Low Level User Interface ini diharapkan siswa dapat
menguasai :
1. Memahami dan menggunakan The Graphics Clip, Rendering
Text, Images, dan Event Handling
2. Multithreading and the User Interface
3. Mengetahui bagaimana menggunakan GAME API
4. Menggambar grafik berskala
Pilihan Ganda
3. keyReleased(int keyCode)
k. 1,2,3 c. 2,3
l. 1,2 d. 1,3
k. 1,2,3,4 c. 1,2,3
l. 3,4 d. 3,4
Latihan
10 Networking (Socket/TCP)
Overview
Tujuan
scheme://username:password@host:port/path;parameters
scheme://[username[:password]@]host[:port]/path[;parameters]
Banyak implementasi dari HTTP dijalankan diatas layer TCP. Jika Anda
mengirim data menggunakan layer TCP, data tersebut akan dipotong
menjadi bagian yang lebih kecil yang disebut dengan packet. Layer
TCK akan memastikan bahwa semua packet akan dikirim oleh sender
dan diterima oleh recipient, dengan susunan yang sama seperti pada
saat ia dikirimkan. Jika sebuah packet tidak diterima oleh recipient, ia
akan mengirimkannya kembali. Hal ini berarti, sekali Anda mengirim
sebuah pesan, Anda dapat memastikan bahwa pesan tersebut akan
berhasil dikirim kepada recipient dengan format yang sama seperti
pada saat Anda mengirimkannya, tanpa ada data yang hilang atau
disisipi (dihalangi oleh sebuah siklus tertentu seperti recipient
disconnect dari jaringan) .
10.4 Datagrams
Rangkuman
Pilihan Ganda
Latihan
Mendapatkan URL
Buatlah sebuah MIDlet yang mendapatkan HTTP URL. Aplikasi
tersebut akan mendapatkan URL dengan method GET dan
menampilkan jenis koneksi/ content properties (jika tersedia):
Reponse Code, Response Message, Length, Type, Encoding, Expiration
dan Last Modified Date.
11 Networking (HTTP)
Overview
Dua buah tipe request HTTP yang paling umum digunakan adalah GET dan
POST yang juga dikenal sebagai request method. Request GET digunakan untuk
mendapatkan atau menerima informasi dari server. Pada umumnya request
GET digunakan untuk menerima file HTML atau image.
Sedangkan request POST digunakan untuk mengirimkan data ke server. Request
POST akan mengirimkan informasi server dalam bentuk HTML yang berisi
data yang dimasukkan oleh client.
Tujuan
Gambar 11.2: Contoh dari transaksi HTTP GET dengan response error
switch(code){
case HttpConnection.HTTP_MOVED_PERM:
case HttpConnection.HTTP_MOVED_TEMP:
case HttpConnection.HTTP_SEE_OTHER:
case HttpConnection.HTTP_TEMP_REDIRECT:
String newUrl =
conn.getHeaderField("Location");
...
11.3 Servlet
Dua buah tipe request HTTP yang paling umum digunakan adalah GET
dan POST yang juga dikenal sebagai request method. Request GET
digunakan untuk mendapatkan atau menerima informasi dari server.
Pada umumnya request GET digunakan untuk menerima file HTML atau
image.
Rangkuman
Pilihan Ganda
m. 1,2,3 c. 2,3
n. 1,2 d. 1,3
Latihan
12 Persistent Storage
Overview
Tujuan
Pada saat sebuah record dihapus, record id-nya tidak akan bisa
digunakan kembali. Jika kita membuat empat buah record dan
menghapus record ke-empat, maka record Id selanjutnya yang akan
diberikan oleh system adalah 5 (lihat gambar)
MIDlets dapat menciptakan lebih dari satu Record Store. Nama dari
sebuah record store didalam MIDlet suite haruslah unique. Nama dari
record store juga case sensitive dan memiliki panjang maksimal 32
karakter.
Pada saat MIDlet suite dihapus dari sebuah device, maka semua record
store yang terkoneksi dengan MIDlet didalam suite tersebut juga akan
terhapus.
Membuat dan membuka sebuah Record Store
Method-method dibawah ini digunakan untuk membuat dan membuka
sebuah record store:
static openRecordStore(String
RecordStore recordStoreName,boolean createIfNecessary)
static openRecordStore(String
RecordStore recordStoreName,boolean createIfNecessary,
int authmode,boolean writable)
static openRecordStore(String
RecordStore recordStoreName,String vendorName, String
suiteName)
Menghapus Record
...
// Ini adalah String yang akan kita masukkan kedalam record
String newItem = "Record #" + recStore.getNextRecordID();
Tips Pemrograman:
1. Record ID dimulai dari 1, bukan 0. Oleh karena itu, apabila
menggunakan loop, ingatlah untuk menggunakan 1 sebagai index
pertama dan bukan 0.
2. Lebihbaik digunakan Record Enumerator daripada menggunakan
index incrementing (seperti contoh). Record yang telah dihapus, tetapi
masih tetap ingin dibaca pada contoh disini akan menyebabkan
InvalidRecordIDException.
String[] storeNames =
RecordStore.listRecordStores();
System.out.println("Record Stores for this MIDlet
suite:");
Contoh: RmsListStores
Menyimpan Data Primitif Java Sejauh ini, data yang telah dibuat dan
dibaca dari Record Store adalah berupa String. CLDC memiliki
standard classes dalam manipulasi data primitif. Class tersebut berasal
dari standard library platform Java 2, yaitu Standard Edition (J2SE).
RecordEnumeration enumerateRecords(RecordFilter
filter,
RecordComparator comparator, boolean keepUpdated)
= recStore.enumerateRecords(null, null,
false);
while (enumerator.hasNextElement()){
...
}
RecordEnumeration enumerator
=
recStore.enumerateRecords(null
, new AlphaOrder(), false);
...
// Pengurutan
menurut alfabet
class AlphaOrder
implements
RecordComparator
{
return(PRECEDES);
} else {
if (record1.compareTo(record2) > 0){
return(FOLLOWS);
} else {
return(EQUIVALENT);
}
}
}
}
if (item.endsWith("0")){isaMatch = true;
} else {
isaMatch = false;
return(isaMatch);
}
Rangkuman
Pilihan Ganda
4. sebagian dari data record. Jika Anda ingin untuk memodifikasi sebuah
record Anda harus:
1. openRecordStore(String recordStoreName,boolean
createIfNecessary)
2. openRecordStore(String recordStoreName,boolean
createIfNecessary, int authmode,boolean writable)
3. openRecordStore(String recordStoreName,String vendorName,
String suiteName)
A. 1,2,3
B. 2,3
C. 1,2
D. 1,3
Latihan
Penyimpanan Pilihan
Buat sebuah class yang dapat melangsungkan pemilihan pada program.
Class tersebut akan menyimpan pilihan pada sebuah Record Store.
Setiap record akan memiliki variabel name dan value. Setiap pasangan
variabel disimpan pada sebuah record. Name dan value disimpan pada
database sebagai string. Class Anda harus mengimplementasikan
method sebagai berikut :
Daftar Pustaka
239