MOBILE APPLICATION
POLITEKNIK TELKOM BANDUNG
Tim Penulis: Budi Laksono Putro Dedy Rahman Wijaya
Dilarang menerbitkan kembali, menyebarluaskan, atau menyimpan baik sebagian maupun seluruh isi buku dalam bentuk dan dengan cara apapun tanpa izin tertulis dari Politeknik Telkom
Hak cipta dilindungi undang-undang @ Politeknik Telkom 2009 No part of this document may be copied, reproduced, printed, distributed, modified, removed and amended in any form by any means without prior written authorization of Telkom Polytechnic.
KATA PENGANTAR
Assalamu’alaikum Wr. WbSegala puji bagi Allah SWT karena dengan karunia-Nya courseware ini dapat diselesaikan.
Atas nama Politeknik Telkom, kami sangat menghargai dan ingin menyampaikan terima kasih kepada penulis, penerjemah dan penyunting yang telah memberikan tenaga, pikiran, dan waktu sehingga courseware ini dapat tersusun.
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.
Semoga courseware ini dapat memberikan manfaat dan membantu seluruh Sivitas Akademika Politeknik Telkom dalam memahami dan mengikuti materi perkuliahan di Politeknik Telkom.
Amin.
Wassalamu’alaikum Wr. Wb. Bandung, Oktober 2009
Christanto Triwibisono Wakil Direktur I
DAFTAR ISI
KATA PENGANTAR ... iii
DAFTAR ISI
... iv
1
INTRODUCTION J2ME... 1
1.1
Keluarga JAVA
... 2
1.2
Gambaran J2ME
... 7
1.3
Configuration
... 8
1.4
Profile
... 8
1.5
Perangkat Mobile
... 9
1.6
Sistem Operasi untuk Alat Mobile
... 11
2
J2ME, J2EE DAN J2SE ... 21
2.1
J2ME, J2SE dan J2EE
... 22
2.2
Java 2 Micro Edition
... 23
2.3
J2ME Configuration
... 24
2.3.1
CLDC
... 25
2.3.2
CDC
27
2.4
Java Technology for the Wireless Industry (JTWI)
... 27
2.5
Generic Connection Framework
... 28
2.6
J2ME Profile
... 29
2.7
Java Community Process (JCP)
... 30
2.8
MIDP
... 31
2.9
MIDlet
... 32
2.10
Siklus MIDlet
... 33
3
CLCD ... 41
3.1
CLDC
... 42
3.1.1
Karakteristik perangkat CLDC
... 43
3.1.2
Fitur yang hilang
... 44
3.1.3
CLDC market
... 45
3.1.4
Java TM Language Spesification (JLS)
... 46
3.1.5
Preverification dan Application Representation
... 46
3.2.1
CLDC Libraries pewarisan dari J2SE
... 47
3.2.2
CLDC Libraries J2ME
... 51
3.3
CLDC System Properties
... 54
3.4
CLDC Networking
... 54
3.5
Verifikasi Class oleh KVM
... 55
4
MIDP ... 62
4.1
Mobile Information Device Profile (MIDP)
... 63
4.2
J2ME Security
... 65
4.2.1
Protection Domains
... 65
4.2.2
Permissions
... 65
4.2.3
Mode Interaksi User
... 66
4.2.4
Anatomi dari Aplikasi MIDP
... 69
4.3
MIDlet
... 70
4.3.1
Arsitektur Aplikasi MIDlet
... 71
4.3.2
Siklus MIDlet
... 73
4.3.3
MIDlet suites
... 75
5
Integrated Programming Environment
... 82
5.1
Pengenalan
... 83
5.2
"Hello, world!" MIDlet
... 83
5.3
Compilation dan Packaging MIDlets
... 87
5.4
Menggunakan Sun Wireless Toolkit
... 89
5.5
Menggunakan NetBeans Mobility Pack
... 92
5.6
Bekerja dengan Form
... 103
6
High Level User Interface I
... 112
6.1
MIDP User Interface
... 113
6.2
Display
... 114
6.2.1
Displayable
... 114
6.2.2
Title
115
6.2.3
Command
... 116
6.2.4
CommandListener
... 119
6.2.5
Ticker
... 120
6.2.6
Screen
... 120
6.2.7
Item
121
6.3
Text Box
... 122
6.4
Form
... 124
6.5
Date Field
... 125
6.6
Image Item
... 126
6.7
Text Field
... 128
6.8
Gauge
... 130
7
High Level User Interface II
... 138
7.1
ChoiceGroup
... 139
7.2
List
... 140
7.3
Alert
... 142
7.4
String Item
... 144
7.5
Jenis Fungsi-Fungsi API pada MIDP untuk GUI
... 145
8
Low Level User Interface I
... 151
8.1
Pengenalan
... 152
8.2
Canvas
... 152
8.2.1
Sistem Koordinat
... 153
8.2.2
”Hello,World!”
... 154
8.2.3
Perintah
... 156
8.3
Grafik
... 157
8.3.1
Warna
... 157
8.3.2
Huruf
... 159
8.3.3
Style Coretan
... 160
8.3.4
Menggambar garis
... 160
8.3.5
Menggambar kotak
... 162
8.3.6
Menggambar Sudut
... 164
8.3.7
Melukis gambar
... 166
9
Low Level User Interface II
... 173
9.1
Event key
... 174
9.2
Aksi Permainan
... 174
9.3
Event Pointer
... 175
9.4
Clipping
... 176
9.6
Menggambar Teks
... 177
9.7
Game API
... 179
9.7.1
Game API
... 179
9.7.2
Layers
... 182
9.7.3
Sprites
... 183
9.7.4
LayerManager
... 186
9.8
Scalable 2D Graphics
... 186
10
Networking (Socket/TCP)
... 192
10.1
Generic Connection Framework
... 193
10.1.1
Hirarki dari GCF Interface
... 193
10.1.2
GCF Connection URL
... 194
10.2
TCP Sockets
... 195
10.3
Server Sockets
... 196
10.4
Datagrams
... 197
11
Networking (HTTP)
... 206
11.1
Koneksi HTTP
... 207
11.1.1
Protokol HTTP
... 207
11.1.2
Menciptakan sebuah koneksi HTTP
... 208
11.1.3
Handling HTTP Redirects
... 209
11.2
Koneksi HTTPS
... 210
11.3
Servlet
... 213
11.4
HTTP Servlet
... 213
12
Persistent Storage
... 221
12.1
Record Store
... 222
12.2
Record Enumeration
... 229
12.3
Record Comparator
... 230
12.4
Record Filter
... 231
12.5
Record Listener
... 232
Daftar Pustaka ... 239
Intro J2ME 1
1
INTRODUCTION J2ME
OverviewJava merupakan bahasa pemrograman “general purpose”, Java bisa digunakan untuk pembuatan aplikasi web, database, grafis dan berbagai aplikasi lainnya seperti bahasa pemrograman lainnya. Mengapa Java menjadi andalan bagi para programmer ? Selain dukungan API yang begitu lengkap, hasil program Java akan bisa dijalankan di semua platform selama disitu terdapat JVM (Java Virtual Machine). Kalau seorang programmer memilih Java sebagai bahasa untuk pengembangan aplikasinya, maka dia tidak perlu pusing memikirkan apakah sistem operasi usernya mendukung atau tidak sehingga Java mempunyai slogan “write once, run every where”.
Tujuan
Pada akhir bab ini, siswa diharapkan dapat menguasai : 1. Mengidentifikasi karakteristik dari perangkat mobile 2. Menjelaskan arsitektur J2ME
1.1 Keluarga JAVA
Sun Microsystem sebagai pengembang bahasa Java telah mengembangkan beberapa versi Java, seperti: J2EE (Java 2 Enterprise Edition), J2SE (Java 2 Standar Edition), J2ME (Java 2 Micro Edition), Java Card. J2EE dan J2SE dikembangkan untuk platform Server dan PC, J2ME dikembangkan untuk platform mobile device sedangkan Java Card untuk platform simcard. Pada dasarnya versi-versi tersebut sama, hanya penggunaan API yang berbeda sesuai dengan target platform yang akan digunakan dan kompatibilitas platform tersebut.
Gambar 1.2 Berbagai versi Java dilihat dari target platformnya
Java 2
Pada perkembangan selanjutnya, Sun Microsystem memperkenalkan Java versi 1.2 atau lebih dikenal dengan nama Java 2 yang terdiri atas JDK dan JRE versi 1.2. Aplikasiaplikasi java yang kompatibel dengan Java 2 ini dikenal dengan Java 2 Compliant. Pada
Java 2 ini, java dibagi menjadi 3 kategori: Java 2 Standart Edition (J2SE)
Kategori ini digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Java pada level PC (Personal Computer)
Java 2 Enterprise Edition (J2EE)
Kategori ini digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Java pada lingkungan entriprise dengan menambahkan fungsionalitasfungsionalitas Java semacam EJB (Enterprise Java Bean), Java CORBA, Servlet dan JSP serta Java XML (Extensible Markup Language)
Java 2 Micro Edition (J2ME)
Kategori ini digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Java pada handled devices atau perangkat-perangkat semacam handphone, Palm, PDA, dan Pocket PC.
Java 2 Micro Edition
J2ME dirancang untuk dapat menjalankan program Java pada perangkat-perangkat semacam handphone dan PDA, yang memiliki karakteristik yang berbeda dengan sebuah komputer biasa, misalnya kecilnya jumlah memori pada handphone dan PDA. J2ME terdiri atas komponen-komponen sebagai berikut :
Java Virtual Machine (JVM)
Komponen ini untuk menjalankan program program Java pada emulator atau handled devices.
Java API (Application Programming Interface)
Komponen ini merupakan kumpulan librari untuk menjalankan dan mengembangkan program Java pada handled devices. Tools lain untuk pengembangan aplikasi Java semacam emulator
Java Phone, emulator Motorolla.
Java Application Programming Interface (Java API)
Java API merupakan komponen-komponen dan kelas Java yang sudah jadi, yang memiliki berbagai kemampuan. Kemampuan untuk menangani objek, string, angka dan sebagainya
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 Database Connectivity (JDBC)
JDBC API terdiri atas class dan interface yang ditulis dalam bahasa Java untuk sebagai alat bantu bagi pembuat program (developer) dan menyediakan sekumpulan API untuk mengatur keamanan mengakses database seperti Oracle, MySQL, PostgreSQL, Microsoft SQL Server. Jadi keunggulan API JDBC dapat mengakses sumber data dan berjalan pada semua Platform yang mempunyai Java Viortual Machine (JVM).
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.
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 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).
JNI (Java Native Interface)
JNI menyediakan sekumpulan API yang digunakan untuk mengakses fungsi – fungsi pada library (*.dll atau *.so) yang dibuat dengan bahasa pemrograman yang lain seperti C,C++, dan Basic. 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.
JTAPI (Java Telephony API)
Java Telepony API menyediakan sekumpulan API untuk memanfaatkan devices – devices telepony, sehingga akan cocok untuk aplikasi – aplikasi CTI (Computer Telephony Integration)
yang dibutuhkan seperti ACD (Automatic Call Distribution), PCPBX dan lainnya.
1.2 Gambaran J2ME
J2ME adalah satu set spesifikasi dan teknologi yang fokus kepada perangkat konsumen. Perangkat ini memiliki jumlah memori yang terbatas, menghabiskan sedikit daya dari baterei, layar yang kecil dan bandwith jaringan yang rendah.
Dengan perkembangbiakan perangkat mobile konsumer dari telepon, PDA, kotak permainan ke peralatan-peralatan rumah, Java menyediakan suatu lingkungan yang portable untuk mengembangkan dan menjalankan aplikasi pada perangkat ini.
Program J2ME, seperti semua program JAVA adalah diterjemahkan oleh VM. Program-program tersebut dikompile ke dalam bytecode dan diterjemahkan denga Java Virtual Machine(JVM). Ini berarti bahwa program-program tersebut tidak berhubungan langsung dengan perangkat.
J2ME menyediakan suatu interface yang sesuai dengan perangkat. Aplikasi-aplikasi tersebut tidak harus dikompile ulang supaya mampu dijalankan pada mesin yang berbeda.
Inti dari J2ME terletak pada configuration dan profile-profile. Suatu configuration menggambarkan lingkungan runtime dasar dari suatu sistem J2ME. Ia menggambarkan core library, virtual machine, fitur keamanan dan jaringan.
Sebuah profile memberikan library tambahan untuk suatu kelas tertentu pada sebuah perangkat. Profile-profile menyediakan user interface(UI) API,persistence, messaging library, dan sebagainya. Satu set library tambahan atau package tambahan menyediakan kemampuan program tambahan. Pemasukan package ini ke dalam perangkat J2ME dapat berubah-ubah karena tergantung pada kemampuan sebuah perangkat. Sebagai contoh, beberapa perangkat MIDP tidak memiliki Bluetooth built-in, sehingga Bluetooth API tidak disediakan dalam perangkat ini.
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.
1.5 Perangkat Mobile
Perangkat mobile memiliki banyak jenis dalam hal ukuran, desain dan layout, tetapi mereka memiliki kesamaan karakteristik yang sangat berbeda dari sistem desktop. Adapun karakteristik dari perangkat mobile adalah sebagai berikut :
a. Ukuran yang kecil
Perangkat mobile memiliki ukuran yang kecil. Konsumen menginginkan perangkat yang terkecil untuk kenyamanan dan mobilitas mereka.
b. Memory yang terbatas
Perangkat mobile juga memiliki memory yang kecil, yaitu primary (RAM) dan secondary (disk). Pembatasan ini adalah salah satu faktor yang mempengaruhi penulisan program untuk berbagai jenis dari perangkat ini. Dengan pembatasan jumlah dari memory, pertimbangan-pertimbangan khusus harus diambil untuk memelihara pemakaian dari sumber daya yang mahal ini.
c. Daya proses yang terbatas
Sistem mobile tidaklah setangguh rekan mereka yaitu desktop. Ukuran, teknologi dan biaya adalah beberapa faktor yang mempengaruhi status dari sumber daya ini. Seperti harddisk dan RAM, Anda dapat menemukan mereka dalam ukuran yang pas dengan sebuah kemasan kecil.
d. Mengkonsumsi daya yang rendah
Perangkat mobile menghabiskan sedikit daya dibandingkan dengan mesin desktop. Perangkat ini harus menghemat daya karena mereka berjalan pada keadaan dimana daya yang disediakan dibatasi oleh baterai-baterai.
e. Kuat dan dapat diandalkan
Karena perangkat mobile selalu dibawa kemana saja, mereka harus cukup kuat untuk menghadapi benturan-benturan, gerakan, dan sesekali tetesan-tetesan air.
f. Konektivitas yang terbatas
Perangkat mobile memiliki bandwith rendah, beberapa dari mereka bahkan tidak tersambung. Kebanyakan dari mereka menggunakan koneksi wireless.
g. Masa hidup yang pendek
Perangkat-perangkat konsumen ini menyala dalam hitungan detik kebanyakan dari mereka selalu menyala. Coba ambil kasus sebuah handphone, mereka booting dalam hitungan detik dan kebanyakan orang tidak mematikan handphone mereka bahkan ketika malam hari. PDA akan menyala jika anda menekan tombol power mereka.
Gambar 1.3 : Peralatan Mobile.
Pada gambar 1.3 peralatan mobile meliputi :
pagers
cellular telephones
personal digital assistants atau organizers point of sale systems
pocket communicators
Internet screen telephones
automobile navigation dan entertainment systems Internet television sets
1.6 Sistem Operasi untuk Alat Mobile
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:
Gambar 1.4 Layer Configuration dan Profile dengan OS pada teknologi J2ME
Meskipun demikian gerakan open source telah pula merambah dunia OS mobile devices yaitu dengan hadirnya PDA (personal digital assistant) dengan brand Sharp Zaurus yang menggunakan OS berbasiskan Linux dan Java dengan berbagai keuntungan khas dunia open source yaitu dikenal diseluruh dunia dan free community development. Saya duga kedepan akan cerah prospeknya.
Tabel 1. Berbagai vendor mobile device dengan variasi OS-nya.
Symbian (EPOC) Palm (PalmOS) Microsoft (Pocket PC)
Sony Ericsson Palm Compaq
Motorola IBM HP
Nokia Sony Casio
Psion Dell Symbol
Matsushita Handspring Siemens/ Fujitsu Philips Symbol Toshiba
Sony Qualcomm
Symbian (EPOC)
Symbian didirikan pada tahun 1998 oleh Psion, Motorola, Nokia, dan Ericsson dan Matsushita bergabung pada tahun berikutnya.
Pasar yang dikuasai oleh OS ini adalah dominan yaitu sekitar 60% (http://www.symbian.com). Pada bulan Agustus 2000, Sony dan Sanyo bergabung pula sebagai kelompok vendor pengguna EPOC.
Mobile devices yang saat ini menggunakan EPOC diantaranya adalah Psion hand-held PC, Sony Ericsson P800, Nokia 7650, dan Nokia 9210 Communicator. OS EPOC dibagi dalam tiga versi yaitu : Smartphones (voice centric with data functionality), Communicator (e.g. : Nokia Communicator), dan PDA. EPOC telah dilengkapi dengan banyak fungsi-fungsi dasar yang sepatutnya dimiliki oleh sebuah OS mobile devices yaitu PIM (Personal Information Manager), integrated email, web browser, dan kemampuan untuk synchronization. EPOC terus meningkatkan kemampuannya dengan dilengkapi WAP browser,
Bluetooth support, peningkatan kapabilitas security, email, dan messaging. Dan kini Symbian menikmati masa “bulan madu”-nya bermitra dengan perusahaan terkemuka dunia NTT DoCoMo (10 Juli 2003 yang lalu, Symbian mengumumkan bahwa Fujitsu, salah satu vendor mobile device
jaringan 3G, meluncurkan mobile videophone F2102V untuk layanan NTT DoCoMo FOMA yang berbasiskan Symbian OS), Sun, Oracle, dan Sybase. Symbian mengklaim bahwa ada sekitar 31.000 software developer yang menggunakan EPOC sebagai basis pengembangan aplikasinya.
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.
Palm (PalmOS)
Produksi pertama dari Palm dijual tahun 1996. Setelah itu PalmOS menjadi OS open licensed yang dibuat oleh berbagai manufaktur mobile devices. IBM dan Dell juga menjual original PalmPilot devices. Selain dari itu Handspring juga menjadi perusahaan terbesar yang menyediakan mobile devices berbasiskan PalmOS.
Sebagaimana Symbian, PalmOS juga menyediakan basic feature yaitu PIM, email, dan messaging. Salah satu keuntungan dari Palm adalah bahwa hardware manufacture dapat menambahkan beberapa tool untuk digabungkan dengan hardware yang berbasis PalmOS tadi, misalnya dengan menambahkan CompactFlash, Springboard, dan Palm clip-on. Untuk produk masa depan, PalmOS dikonsentrasikan pada wireless connectivity, bluetooth support, dan multi-language support. PalmOS pula berkerjasama dengan beberapa berusahaan software terkemuka seperti Computer Associates, IBM, Oracle, Peoplesoft, SAP, AOL, Sun, Siebel, dan Tivoli. Palm mengklaim ada 50.000 software developer yang bekerja dengan platform ini.
Microsoft (Pocket PC)
Hand-held PC yang pertama berbasiskan Windows pertama kali tersedia pada tahun 1997. Pada mulanya versi awal dari OS mobile device ini sangatlah terbatas
performansi dan fungsionalitasnya sehingga berakibat pada angka penjualannya yang mengecewakan. Namun kini Pocket PC menjelma menjadi salah satu OS mobile device yang paling banyak menyediakan software pendukungnya dan “mengawaki” PDA terkemuka saat ini dari Compaq yaitu iPAQ.
Menurut David Coursey, Executive Editor Anchor Desk, bahwa hand-held yang berbasiskan Pocket PC secara umum memerlukan beaya dua kali lebih besar daripada PalmOS devices tetapi sebaliknya Pocket PC menyediakan software pendukung lebih banyak daripada PalmOS. Anda dapat mendengarkan musik atau mendownload buku dari
www.audible.com, memiliki software GPS navigation dari TrayRoute, atau topographic maps dari Map Tech. Jika Anda bingung berjalan-jalan di Amerika bisa pula menggunakan Microsoft Pocket Streets atau Topo! Software dari National Geographic. Pendek kata dan sudah jelas
☺software-software Microsoft dapat berjalan dengan baik di Pocket PC seperti Microsoft Money, Word, Excel (tentu saja untuk versi Pocket PC-nya).
Rangkuman
1. Java merupakan bahasa pemrograman “general purpose”, Java bisa digunakan untuk pembuatan aplikasi web, database, grafis dan berbagai aplikasi lainnya seperti bahasa pemrograman lainnya. 2. Dengan semboyan “write once run everywhere”, teknologi Java dengan
portabilitas yang tinggi, memungkinkan untuk jalan di segala sistem operasi selama disitu ada JVM (Java Virtual Machine) termasuk perangkat wireless dengan ukuran memori yang relatif kecil.
3. Sun Microsystem sebagai pengembang bahasa Java telah
mengembangkan beberapa versi Java, seperti: J2EE (Java 2 Enterprise Edition), J2SE (Java 2 Standar Edition), J2ME (Java 2 Micro Edition), Java Card.
4. J2ME dirancang untuk dapat menjalankan program Java pada perangkat-perangkat semacam handphone dan PDA, yang memiliki karakteristik yang berbeda dengan sebuah komputer biasa, misalnya kecilnya jumlah memori pada handphone dan PDA.
5. Perangkat mobile memiliki banyak jenis dalam hal ukuran, desain dan layout, tetapi mereka memiliki kesamaan karakteristik yang sangat berbeda dari sistem desktop. Adapun karakteristik dari perangkat mobile adalah sebagai berikut :
Ukuran yang kecil Memory yang terbatas Daya proses yang terbatas Mengkonsumsi daya yang rendah Kuat dan dapat diandalkan Konektivitas yang terbatas Masa hidup yang pendek
6. Terdapat tiga nama OS untuk mobile devices yang popular yaitu
Palm dengan PalmOS-nya, Symbian dengan EPOC-nya, dan
Kuis Benar Salah
1. Sun Microsystem sebagai pengembang bahasa Java telah
mengembangkan beberapa versi Java, seperti: J2EE (Java 2 Enterprise Edition), J2SE (Java 2 Standar Edition), J2ME (Java 2 Micro Edition), Java Card.
2. J2EE dan J2SE dikembangkan untuk platform Server dan PC, J2ME dikembangkan untuk platform mobile device sedangkan Java Card untuk platform simcard.
3. Pada dasarnya versi-versi tersebut sama untuk penggunaan API sesuai dengan target platform yang akan digunakan dan kompatibilitas platform tersebut.
4. J2ME dirancang untuk dapat menjalankan program Java pada perangkat-perangkat semacam handphone dan PDA, yang memiliki karakteristik yang berbeda dengan sebuah komputer biasa, misalnya kecilnya jumlah memori pada handphone dan PDA.
5. J2ME terdiri atas komponen-komponen terdiri dari Java Virtual Machine (JVM), Java API (Application Programming Interface), dan Tools lain untuk pengembangan aplikasi Java semacam emulator Java Phone, emulator Motorolla.
6. J2ME adalah satu set spesifikasi dan teknologi yang fokus kepada perangkat konsumen. Perangkat ini memiliki jumlah memori yang terbatas, menghabiskan sedikit daya dari baterei, layar yang kecil dan bandwith jaringan yang rendah.
7. J2ME menyediakan suatu interface yang sesuai dengan perangkat. Aplikasi-aplikasi tersebut tidak harus dikompile ulang supaya mampu dijalankan pada mesin yang berbeda.
8. Inti dari J2ME terletak pada configuration dan profile-profile. Suatu configuration menggambarkan lingkungan runtime dasar dari suatu sistem J2ME. Ia menggambarkan core library, virtual machine, fitur keamanan dan jaringan.
9. Sebuah profile memberikan library tambahan untuk suatu kelas tertentu pada sebuah perangkat. Profile-profile menyediakan user interface(UI) API,persistence, messaging library, dan sebagainya. 10. 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.
Pilihan Ganda
1. Pengembangan versi Java oleh Sun Microsystem terdiri dari : 1. J2EE (Java 2 Enterprise Edition)
2. J2SE (Java 2 Standar Edition) 3. J2ME (Java 2 Micro Edition) 4. Java Card.
a. 1,2,3,4 c. 1,2
b. 1,2,3 d. 1
2. Kategori ini digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Java pada level PC (Personal Computer)
a. J2SE c. J2ME
b. J2EE d. Java
Card
3. Kategori ini digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Java pada lingkungan entriprise dengan menambahkan fungsionalitasfungsionalitas Java semacam EJB (Enterprise Java Bean), Java CORBA, Servlet dan JSP serta Java XML (Extensible Markup Language)
a. J2SE c. J2ME
b. J2EE d. Java
4. Kategori ini digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Java pada lingkungan entriprise dengan menambahkan fungsionalitasfungsionalitas Java semacam EJB (Enterprise Java Bean), Java CORBA, Servlet dan JSP serta Java XML (Extensible Markup Language)
c. J2SE c. J2ME
d. J2EE d. Java
Latihan
1. Sebutkan perbedaan antara J2SE, J2EE, J2ME dan Java Card ?
2. Apa keuntungan menggunakan java sebagai pengembangan dan platform runtime untuk perangkat mobile?
3. Sebutkan komponen-komponen dari J2ME ?
4. Sebutkan kemampuan-kemampuan yang dimiliki Java API merupakan komponen-komponen dan kelas Java yang sudah jadi ?
5. Sebutkan karakteristik perangkat mobile ?
6. Sebutkan tiga nama OS untuk mobile devices yang popular dan masing-masing OS berikan minimal 3 contoh perangkat mobilenya ?
2
J2ME, J2EE DAN J2SE
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
Pada akhir bab ini, siswa diharapkan dapat menguasai :
1. Menjelaskan tentang perbedaan J2ME dengan J2SE, dan J2EE 2. Pengenalan tentang macam dan ragam dari profil-profil J2ME .
seperti: Mobile Information Defice Profile (MIDP), PDA Profile
(PDAP), Foundation Profile, Personal Basis and Personal Profiles,
RMI Profile, dan Game Profile
3. Pengenalan tentang jenis konfigurasi-konfigurasi J2ME ,. seperti: CDC and CLCD.s
4. Pertimbangan-pertimbangan design untuk membangun aplikasi pada peralatan kecil dan peralatan mobile.
5. Pertimbangan-pertimbangan kinerja sistem 6. Pertimbangan-pertimbangan kompilasi
7. Pertimbangan-pertimbangan paket pembangunan sistem 8. CLCD Java Virtual Machine
2.1 J2ME, J2SE dan J2EE
Pada perkembangan selanjutnya, Sun Microsystem memperkenalkan Java versi 1.2 atau lebih dikenal dengan nama Java 2 yang terdiri atas JDK dan JRE versi 1.2. Aplikasiaplikasi java yang kompatibel dengan Java 2 ini dikenal dengan Java 2 Compliant. Pada Java 2 ini, java dibagi menjadi 3 kategori:
Java 2 Standart Edition (J2SE)
Kategori ini digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Java pada level PC (Personal Computer)
Java 2 Enterprise Edition (J2EE)
Kategori ini digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Java pada lingkungan entriprise dengan menambahkan fungsionalitasfungsionalitas Java semacam EJB (Enterprise Java Bean), Java CORBA, Servlet dan JSP serta Java XML (Extensible Markup Language)
Java 2 Micro Edition (J2ME)
Kategori ini digunakan untuk menjalankan dan mengembangkan aplikasi-aplikasi Java pada handled devices atau perangkat-perangkat semacam handphone, Palm, PDA, dan Pocket PC.
Gambar 2.2 Berbagai versi Java dilihat dari target platformnya
2.2 Java 2 Micro Edition
J2ME dirancang untuk dapat menjalankan program Java pada perangkat-perangkat semacam handphone dan PDA, yang memiliki karakteristik yang berbeda dengan sebuah komputer biasa, misalnya kecilnya jumlah memori pada handphone dan PDA. J2ME terdiri atas komponen-komponen sebagai berikut :
Java Virtual Machine (JVM), dikenal dengan nama KVirtualMachine
(KVM)
Komponen ini untuk menjalankan program program Java pada emulator atau handled devices.
Java API (Application Programming Interface)
Komponen ini merupakan kumpulan librari untuk menjalankan dan mengembangkan program Java pada handled devices. Tools lain untuk pengembangan aplikasi Java semacam emulator
Java Phone, emulator Motorolla.
Dalam J2ME dibagi menjadi dua bagian yang dikenal dengan istilah
2.3 J2ME Configuration
J2ME Configuration mendefinisikan lingkungan kerja J2ME runtime. Oleh karena setiap handled devices memiliki fitur-fitur yang berbeda-beda,
J2ME Configuration ini dirancang yakni menyediakan librari standar yang mengimplementasikan fitur standar dari sebuah handled devices. Mengapa perlu J2ME Configuration bisa dikatakan merupakan JRE pada handled devices. Lingkungan kerja yang dimaksud meliputi Java Virtual Machine yang digunakan untuk menjalankan program Java.
Gambar 2.3. J2ME components. Ada dua kategori J2ME Configuration saat ini, yaitu :
CLDC (Connected Limited Device Configuration)
Kategori ini umumnya digunakan untuk aplikasi Java pada handphone semacam Nokia, Samsung Java Phone, Motorola i85s,
PDA (Personal Digital Assistant) semacam PALM, Pocket PC. Umumnya perangkat-perangkat tersebut hanya memiliki memori berukuran 160-512 KiloBytes.
CDC (Connected Device Configuration)
Kategori ini umumnya digunakan untuk aplikasi Java pada perangkat-perangkat handled devices dengan ukuran memori paling tidak 2 Megabytes. Contohnya adalah internet TV, Nokia Communicator dan car television atau TV pada mobil.
Perbedaan antara CDC dan CLDC adalah sebagai berikut : Tabel 2.1 Perbandingan antara CDC dan CLDC
CLDC CDC
Mengimplementasikan subset
dari J2SE Mengimplementasikan seluruh fitur pada J2SE JVM yang digunakan dikenal
dengan nama KVM
JVM yang digunakan dikenal dengan nama CVM
Digunakan pada perangkat handled dengan ukuran memori terbatas (160-512 KiloBytes)
Digunakan pada perangkat handled dengan ukuran memori minimal 2 Mbytes
Processor 16 bit atau 32 bit Processor : 32 bit
2.3.1 CLDC
The Connected Limited Device Configuration (CLDC) menggambarkan dan menunjuk pada area berikut ini:
Fitur Bahasa Java dan Virtual Machine(VM) dikenal dengan nama
KVirtualMachine (KVM) Library dasar(java.lang.*,java.util.*) Input/Output(java.io.*) Kemanan Jaringan Internationalization Fitur yang hilang
Fitur tertentu dari J2SE yang dipindahkan dari CLDC adalah : Finalization of class instances
Asynchronous exceptions Beberapa error classes User-defined class loaders Reflection
Java Native Interface (JNI)
Thread groups dan daemon threads
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.
Karakteristik perangkat CLDC
Perangkat yang diincar oleh CLDC mempunyai karateristik sebagai berikut:
Memory minimal 192kb untuk platform Java. Prosesor dengan 16 atau 32 bit.
Mengkonsumsi sedikit daya.
Terbatas, koneksi jaringan yang sementara dengan pembatasan bandwith(biasanya wireless).
CLDC tidak menggambarkan instalasi dan daur hidup sebuah aplikasi, antarmuka(UI) dan penanganan peristiwa(event handling). Adalah merupakan tugas profile yang berada di bawah CLDC untuk menggambarkan area ini. Secara khusus, spesifikasi MIDP
menggambarkan daur hidup aplikasi MIDP (MIDlet), library UI dan event handling(javax.microedition.lcdui.*).
2.3.2 CDC
Connected Device Configuration (CDC) adalah super set dari CLDC. CDC menyediakan lingkungan Java runtime yang lebih luas dibandingkan CLDC dan lebih dekat kepada lingkungan J2SE.
CDC Java Virtual Machine (CVM) mendukung penuh Java Virtual Machine (JVM). CDC berisi semua API dari CLDC. CDC menyediakan suatu subset yang lebih besar dari semua class J2SE. Seperti CLDC, CDC tidak menggambarkan setiap class UI. Library UI digambarkan oleh profileprofile di bawah configuration ini.
Semua class yang terdapat dalam CDC datang dari package ini:
● java.io ● java.lang ● java.lang.ref ● java.lang.math ● java.net ● java.security ● java.security.cert ● java.text ● java.util ● java.util.jar ● java.util.zip
CDC juga memasukkan di dalamnya GCF. CDC memerlukan jenis koneksi tambahan seperti file dan dukungan datagram.
2.4 Java Technology for the Wireless Industry (JTWI) 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”.
Dengan penyesuaian kepada JTWI, banyak aplikasi akan berjalan di suatu set yang lebih luas pada perangkat. Perangkat pabrik juga akan beruntung karena sebuah aplikasi yang besar akan tersedia untuk perangkat mereka.
Gambar 2.4: Komponen JTWI
2.5 Generic Connection Framework
The Generic Connection Framework menyediakan API dasar untuk koneksi dalam CLDC. Framework ini menyediakan suatu pondasi umum untuk koneksi seperti HTTP, Socket, dan Datagrams. GCF menyediakan suatu set API yang umum dan biasa yang memisahkan semua jenis koneksi. Perlu dicatat bahwa tidak semua jenis koneksi dibutuhkan untuk diterapkan oleh perangkat MIDP.
Hirarki interface yang dapat diperluas dari GFC membuat proses penyamarataan menjadi mungkin. Jenis koneksi baru mungkin bisa ditambahkan ke dalam framework ini dengan memperluas hirarki ini.
Gambar 2.6: Hirarki koneksi GCF
2.6 J2ME Profile
Jika J2ME Configuration menyediakan librari-librari Java untuk implementasi fitur-fitur standar dari sebuah handled devices, J2ME Profile menyediakan implementasi implementasi tambahan yang sangat spesifik dari sebuah handled devices. Kemampuan standart itulah yang diimplementasikan oleh J2ME Configuration, sedangkan kemampuan fitur lain sangat bergantung pada jenis perangkat handled yang digunakan akan diimplementasikan oleh J2ME Profile.
Ada lima kategori J2ME Profile saat ini, yaitu :
Mobile Information Device Profile (MIDP)
Foundation Profile (FP)
Personal Profile
RMI Profile
MIDP menyediakan librari-librari Java untuk implementasi dasar antarmuka (GUI), implementasi jaringan, database dan timer. MIDP dirancang khususnya untuk wireless phone dan pager. Buku ini hanya akan membahas pengembangan aplikasi wireless dengan MIDP saja yang bekerja pada CLDC.
2.7 Java Community Process (JCP)
Spesifikasi untuk J2SE, J2EE dan J2ME dikembangkan dibawah pengawasan Java Community Process (JCP). Spesifikasi yang dihasilkan adalah Java Specification Request (JSR). JCP terdiri dari para ahli dari berbagai perusahaan yang tergabung untuk membentuk Spesification. JSR ini melalui beberapa tahap pada JCP sebelum selesai. Setiap JSR diberi nomor.
Tabel 1 Configurasi, Profile dan Optional API pada J2ME. Configuration
JSR Name URL
30 Connected Limited Device Configuration (CLDC) 1.0
http://jcp.org/jsr/detail/30.jsp
139 Connected Limited Device
Configuration (CLDC) 1.1 http://jcp.org/jsr/detail/139.jsp 36 Connected Device Configuration (CLDC) 1.0.1 http://jcp.org/jsr/detail/36.jsp 218 Connected Device Configuration (CLDC) 1.1 http://jcp.org/jsr/detail/218.jsp
Profile
JSR Name URL37 Mobile Information Device Profile 1.0
http://jcp.org/jsr/detail/37.jsp
118 Mobile Information Device Profile 2.0
http://jcp.org/jsr/detail/118.jsp
75 PDA Profile 1.0 http://jcp.org/jsr/detail/75.jsp
46 Foundation Profile 1.0 http://jcp.org/jsr/detail/46.jsp
62 Personal Profile 1.0 http://jcp.org/jsr/detail/62.jsp
219 Foundation Profile 1.1 http://jcp.org/jsr/detail/219.jsp
217 Personal Basis Profile 1.1 http://jcp.org/jsr/detail/217.jsp
Optional API
JSR Name URL
75 PDA Optional Packages for J2ME
http://jcp.org/jsr/detail/75.jsp
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
Mobile Information Device Profile (MIDP) berada di atas dari CLDC. Anda tidak bisa menulis aplikasi mobile hanya dengan menggunakan CLDC API. Anda harus tetap memanfaatkan MIDP yang mendefinisikan UI.
Spesifikasi MIDP, kebanyakan seperti CLDC dan API lainnya sudah digambarkan melalui Java Community Process (JCP). JCP melibatkan sebuah kelompok ahli berasal dari lebih dari 50 perusahaan, yang terdiri atas pabrik perangkat mobile, pengembang software. MIDP terus berkembang, dengan versi-versi masa depan yang telah lulus dari proses ketat JCP.
Spesifikasi MIDP menggambarkan suatu perangkat MIDP yang memiliki karakteristik-karateristik ini sebagai batas minimum:
Tampilan:
Ukuran Layar: 96x54
kedalaman tampilan: 1-bit Ketajaman pixel: sekitar 1:1
Masukan:
Satu atau lebih mekanisme user-input: satu keybboard, dua keyboard, atau touch screen
Memory:
256 kilobytes of non-volatile memory untuk implementasi MIDP.
8 kilobytes of non-volatile memory for application-created persistent data
128 kilobytes of volatile memory for the Java runtime (e.g., the Java heap)
Jaringan:
dua jalur, wireless, bandwidth terbatas
Sound:
Kemampuan untuk memainkan nada-nada
MIDP menggambarkan model aplikasi, UI API, penyimpanan dan jaringan yang kuat, permainan dan media API, kebijakan keamanan, penyebaran aplikasi dan ketetapan over-theair.
2.9 MIDlet
Suatu aplikasi MIDP disebut MIDlet. Perangkat application management software (AMS) berinteraksi langsung dengan MIDlet dengan method MIDlet create, start, pause, dan destroy.
MIDlet adalah bagian dari package javax.microedition.midlet. Sebuah MIDlet harus di-extend dengan class MIDlet. Dan dapat meminta parameter dari AMS seperti dirumuskan dalam application descriptor (JAD).
Suatu MIDlet tidak harus memiliki (dan memang harus tidak mempunyai) sebuah method public static void main(String[] argv).Method tersebut tidak akan dikenal lagi oleh AMS sebagai titik awal sebuah program.
2.10 Siklus MIDlet
kehidupan MIDlet dimulai ketika di-instantiate oleh AMS. MIDlet pada awalnya masuk status “Pause” setelah perintah baru dibuat. AMS memanggil constructor public tanpa argumen dari MIDlet. Jika sebuah exception terjadi dalam constructor, MIDlet memasuki status “Destroyed” dan membuangnya segera.
MIDlet masuk ke dalam status “Active” atas pemanggilan method startUp() oleh AMS.
MIDlet masuk ke dalam status “Destroyed” ketika AMS memanggil method destroyApp().
Status ini juga kembali diakses ketika method notifyDestroyed() kembali dengan sukses kepada aplikasi. Dengan catatan bahwa MIDlet hanya bisa memasuki status “Destroyed” sekali dalam masa hidupnya.
Rangkuman
1. Menjelaskan tentang perbedaan J2ME dengan J2SE, dan J2EE 2. J2ME dirancang untuk dapat menjalankan program Java pada
perangkat-perangkat semacam handphone dan PDA, yang memiliki karakteristik yang berbeda dengan sebuah komputer biasa, misalnya kecilnya jumlah memori pada handphone dan PDA.
3. J2ME terdiri atas komponen-komponen sebagai berikut :
Java Virtual Machine (JVM), dikenal dengan nama KVirtualMachine
(KVM)
Komponen ini untuk menjalankan program program Java pada emulator atau handled devices.
Java API (Application Programming Interface)
Komponen ini merupakan kumpulan librari untuk menjalankan dan mengembangkan program Java pada handled devices. Tools lain untuk pengembangan aplikasi Java semacam emulator
Java Phone, emulator Motorolla.
4. Dalam J2ME dibagi menjadi dua bagian yang dikenal dengan istilah
configuration dan profile.
5. J2ME Configuration mendefinisikan lingkungan kerja J2ME runtime. Oleh karena setiap handled devices memiliki fitur-fitur yang berbeda-beda, J2ME Configuration ini dirancang yakni menyediakan librari standar yang mengimplementasikan fitur standar dari sebuah handled devices.
6. Ada dua kategori J2ME Configuration saat ini, yaitu : CLDC (Connected Limited Device Configuration)
Kategori ini umumnya digunakan untuk aplikasi Java pada handphone semacam Nokia, Samsung Java Phone, Motorola i85s, PDA (Personal Digital Assistant) semacam PALM, Pocket PC. Umumnya perangkat-perangkat tersebut hanya memiliki memori berukuran 160-512 KiloBytes.
CDC (Connected Device Configuration)
Kategori ini umumnya digunakan untuk aplikasi Java pada perangkat-perangkat
handled devices dengan ukuran memori paling tidak 2
Megabytes. Contohnya adalah internet TV, Nokia
Communicator dan car television atau TV pada mobil.
7. The Connected Limited Device Configuration (CLDC)
menggambarkan dan menunjuk pada area berikut ini:
• Fitur Bahasa Java dan Virtual Machine(VM) dikenal dengan nama
KVirtualMachine (KVM) • Library dasar(java.lang.*,java.util.*) • Input/Output(java.io.*) • Kemanan • Jaringan • Internationalization
8. Connected Device Configuration (CDC) adalah super set dari CLDC. CDC menyediakan lingkungan Java runtime yang lebih luas dibandingkan CLDC dan lebih dekat kepada lingkungan J2SE.
9. 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”.
10. J2ME Configuration menyediakan librari-librari Java untuk
implementasi fitur-fitur standar dari sebuah handled devices, J2ME Profile menyediakan implementasi implementasi tambahan yang sangat spesifik dari sebuah handled devices. Ada lima kategori J2ME Profile saat ini, yaitu :
Mobile Information Device Profile (MIDP) Foundation Profile (FP)
Personal Profile RMI Profile
11. Spesifikasi untuk J2SE, J2EE dan J2ME dikembangkan dibawah pengawasan Java Community Process (JCP). Spesifikasi yang dihasilkan adalah Java Specification Request (JSR). JCP terdiri dari para ahli dari berbagai perusahaan yang tergabung untuk membentuk Spesification. JSR ini melalui beberapa tahap pada JCP sebelum selesai. Setiap JSR diberi nomor.
12. Spesifikasi MIDP, kebanyakan seperti CLDC dan API lainnya sudah digambarkan melalui Java Community Process (JCP). JCP melibatkan sebuah kelompok ahli berasal dari lebih dari 50 perusahaan, yang terdiri atas pabrik perangkat mobile, pengembang software. MIDP terus berkembang, dengan versi-versi masa depan yang telah lulus dari proses ketat JCP.
13. Suatu aplikasi MIDP disebut MIDlet. Perangkat application management software (AMS) berinteraksi langsung dengan MIDlet dengan method MIDlet create, start, pause, dan destroy.
14. MIDlet adalah bagian dari package javax.microedition.midlet. Sebuah MIDlet harus di-extend dengan class MIDlet. Dan dapat meminta parameter dari AMS seperti dirumuskan dalam application descriptor (JAD).
15. Kehidupan MIDlet dimulai ketika di-instantiate oleh AMS. Jika Anda mengenal Java Applet, Anda akan menemukan bahwa Applet dapat berada dalam status init(), start(), stop() dan run().
Kuis Benar Salah
1. J2ME Configuration mendefinisikan lingkungan kerja J2ME runtime. Oleh karena setiap handled devices memiliki fitur-fitur yang berbeda-beda, J2ME Configuration ini dirancang yakni menyediakan librari standar yang mengimplementasikan fitur standar dari sebuah handled devices.
2. J2ME Configuration bisa dikatakan merupakan JRE pada handled devices. Lingkungan kerja yang dimaksud meliputi Java Virtual Machine yang digunakan untuk menjalankan program Java. 3. Ada dua kategori J2ME Configuration saat ini, yaitu CLDC
(Connected Limited Device Configuration) dan CDC (Connected Device Configuration)
4. CLDC (Connected Limited Device Configuration) umumnya digunakan untuk aplikasi Java pada handphone semacam Nokia, Samsung Java Phone, Motorola i85s, PDA (Personal Digital Assistant) semacam PALM, Pocket PC. Umumnya perangkat-perangkat tersebut hanya memiliki memori berukuran 160-512 KiloBytes.
5. CDC (Connected Device Configuration) umumnya digunakan untuk aplikasi Java pada perangkat-perangkat handled devices dengan ukuran memori paling tidak 2 Megabytes. Contohnya adalah internet TV, Nokia Communicator dan car television atau TV pada mobil.
6. CLDC tidak menggambarkan instalasi dan daur hidup sebuah aplikasi, antarmuka(UI) dan penanganan peristiwa(event handling). Adalah merupakan tugas profile yang berada di bawah CLDC untuk menggambarkan area ini. Secara khusus, spesifikasi MIDP menggambarkan daur hidup aplikasi MIDP (MIDlet), library UI dan event handling(javax.microedition.lcdui.*).
7. Connected Device Configuration (CDC) adalah super set dari CLDC. CDC menyediakan lingkungan Java runtime yang lebih luas dibandingkan CLDC dan lebih dekat kepada lingkungan J2SE.
8. 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”.
9. The Generic Connection Framework menyediakan API dasar untuk koneksi dalam CLDC. Framework ini menyediakan suatu pondasi umum untuk koneksi seperti HTTP, Socket, dan Datagrams. GCF menyediakan suatu set API yang umum dan biasa yang memisahkan semua jenis koneksi.
10. Spesifikasi untuk J2SE, J2EE dan J2ME dikembangkan dibawah pengawasan Java Community Process (JCP).
Pilihan Ganda
1. Yang bukan merupakan karakteristeristik dari CLDC adalah : a. Mengimplementasikan subset dari J2SE
b. JVM yang digunakan dikenal dengan nama CVM
c. Digunakan pada perangkat handled dengan ukuran memori terbatas (160-512 KiloBytes)
d. Processor 16 bit atau 32 bit
2. Yang bukan merupakan karakteristeristik dari CDC adalah : a. Mengimplementasikan seluruh fitur pada J2SE
b. JVM yang digunakan dikenal dengan nama CVM
c. Digunakan pada perangkat handled dengan ukuran memori terbatas (160-512 KiloBytes)
d. Processor : 32 bit
3. J2ME Profile saat ini terdiri dari :
1. Mobile Information Device Profile (MIDP) 2. Foundation Profile (FP)
3. Personal Profile 4. RMI Profile
5. Personal Digital Assitance Profile
a. 1, 2, 3, 4, 5 c. 1, 2, 3
b. 1, 2, 3, 4 d. 1, 2
4. Spesifikasi MIDP menggambarkan suatu perangkat MIDP yang memiliki karakteristik-karateristik ini sebagai batas minimum pada aspek-aspek :
1.Tampilan 2.Masukan 3.Memory 4.Jaringan 5.Sound a. 1, 2, 3, 4, 5 c. 1, 2, 3 b. 1, 2, 3, 4 d. 1, 2
Latihan
1. Sebutkan perbedaan antara CLDC dan CDC ?
2. Sebutkan Fitur tertentu dari J2SE yang dipindahkan dari CLDC? 3. Sebutkan karakteristik dari perangkat CLDC ?
4. Sebutkan lima kategori J2ME Profile saat ini ?
5. Sebutkan spesifikasi MIDP menggambarkan suatu perangkat MIDP yang memiliki karakteristik-karateristik ini sebagai batas minimum?
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
Pada bab ini, pelajar diharapkan dapat menguasai :
1. Connected Limited Device Configuration (CLCD) 2. Kilobyte Virtual Machine (KVM)
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.
Gambar 3.1 : Arsitektur Java 2 Micro Edition
3.1 CLDC
Seperti dijelaskan pada gambar 3.1 dibagian I, J2ME terbagi menjadi 2: CDC dan CLDC. Pada CLDC(Connected Limited Device Configuration) umumnya untuk aplikasi java pada handphone seperti produk-produk Siemens, Nokia, Motorola dll. Sedangkan CDC(Connected Device Configuration) umumnya digunakan pada perangkat dengan memori setidaknya 2 Mb. Subset API pada CLDC dijelaskan pada gambar di bawah ini.
Gambar 3.3. API pada J2ME CLDC
Salah satu kelemahan CLDC yang merisaukan programmer adalah tidak adanya dukungan floating point sehingga kreatifitas programmer sangat diperlukan. Pembahasan buku ini mengacu pada J2ME configuration CLDC.
3.1.1 Karakteristik perangkat CLDC
Perangkat yang diincar oleh CLDC mempunyai karateristik sebagai berikut:
Memory minimal 192kb untuk platform Java. Prosesor dengan 16 atau 32 bit.
Terbatas, koneksi jaringan yang sementara dengan pembatasan bandwith(biasanya wireless).
CLDC tidak menggambarkan instalasi dan daur hidup sebuah aplikasi, antarmuka(UI) dan penanganan peristiwa(event handling). Adalah merupakan tugas profile yang berada di bawah CLDC untuk menggambarkan area ini. Secara khusus, spesifikasi MIDP menggambarkan daur hidup aplikasi MIDP (MIDlet), library UI dan event handling(javax.microedition.lcdui.*).
The Connected Limited Device Configuration (CLDC)
menggambarkan dan menunjuk pada area berikut ini :
1. Fitur Bahasa Java dan Virtual Machine(VM) dikenal dengan nama
KVirtualMachine (KVM) 2. Library dasar(java.lang.*,java.util.*) 3. Input/Output(java.io.*) 4. Kemanan 5. Jaringan 6. Internationalization
3.1.2 Fitur yang hilang
Akibatnya fitur-fitur yang kurang penting untuk diimplementasikan dalam handled devices yang bersangkutan pada Java 2 harus dibuang. Fitur-fitur tertentu dari J2SE yang dibuang antara lain :
Tidak ada dukungan untuk floating point
Class-class untuk perhitungan floating point yakni java.lang.Float dan java.lang.Double dibuang dari CLDC.
Tidak ada dukungan untuk finalisasi objek
Garbage collector yang secara sederhananya digunakan untuk ”bersih-bersih memori” membuang fungsi finalize pada class java.lang.Object, sekalipun fungsi ini sangat penting pada Java 2. Tidak ada dukungan untuk Java Native Interface (JNI)
Class JNI yang memungkinkan Java mengakses librari yang dibuat dengan bahasa selain Java, tidak didukung CLDC.I
Penanganan kesalahan/exception yang terbatas
CLDC hanya mendefinisikan tiga class berikut untuk penanganan kesalahan / exception:
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.
3.1.3 CLDC market
Gambar 3.3 : Peralatan Mobile. Pada gambar 3.3 peralatan mobile meliputi :
pagers
cellular telephones
personal digital assistants atau organizers point of sale systems
pocket communicators
Internet screen telephones
automobile navigation dan entertainment systems Internet television sets
3.1.4 Java TM Language Spesification (JLS)
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.
3.1.5 Preverification dan Application Representation
Class file harus dipreverifikasi dan harus berisi informasi preverifikasi (anda akan menerima runtime error manakala berusaha mengeksekusi aplikasi yang belum ter preverifikasi). Jar format digunakan manakala sebuah aplikasi CLDC disimpan
pada tempat publik (misalnya disimpan pada sebuah situs web). Selain format jar hanya mungkin digunakan pada lingkungan internal saja (missal saat implementasi atau saat network level)
Gambar 3.4. API pada J2ME CLDC
3.2 CLDC Libraries
3.2.1 CLDC Libraries pewarisan dari J2SE
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).
1. Java Lang
2. Java Util
3. Java IO
3.2.2 CLDC Libraries J2ME
Class library dari J2ME Platform adalah paket: 1. Package java.microedition.io
2. Package javax.microedition.lcdui 3. Package javax.microedition.midlet 4. Package javax.microedition.rms
1. Package java.microedition.io
2. Package javax.microedition.lcdui
3. Package javax.microedition.midlet
Gambar 3.10 Hirarki javax.microedition.midlet
4. Package javax.microedition.rms
3.3 CLDC System Properties
CLDC menyediakan akses pada system properties melalui
java.lang.System.
system.getProperty(String key) akan mengembalikan nilai string. Properti berikut digunakan oleh seluruh CLDC devices :
microedition.platform, microedition.encoding, microedition.configuration, microedition.profiles.
Profiles harus memberikan nilai yang spesifik untuk CLDC properties tersebut diatas (MIDP 1.0 requires microedition.profiles to contain at least "MIDP-1.0").
3.4 CLDC Networking
Libraries Networking pada J2SE terlalu besar untuk CLDC devices. Diasumsikan TCP/IP telah tersedia.
CLDC membuat suatu set kelas baru yang disebut “Generic Connection Framework”. Key idea : treat everything as a URL : Connector.open("<protocol>:<address>; <parameters>").
CLDC mendefinisikan basic connection types sedangkan protocol didefinisikan pada profiles.
3.1 Generic Connection Possibilities
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");
3.5 Verifikasi Class oleh KVM
Spesifikasi CLDC memerlukan semua class untuk melewati proses verifikasi dua tingkat. Verifikasi pertama dilaksanakan diluar perangkat sebelum instalasi pada perangkat. Verifikasi kedua terjadi pada perangkat selama runtime dan dilaksanakan oleh KVM.
Rangkuman
1. Perangkat yang diincar oleh CLDC mempunyai karateristik sebagai berikut:
Memory minimal 192kb untuk platform Java. Prosesor dengan 16 atau 32 bit.
Mengkonsumsi sedikit daya.
Terbatas, koneksi jaringan yang sementara dengan pembatasan bandwith(biasanya wireless).
2. CLDC tidak menggambarkan instalasi dan daur hidup sebuah aplikasi, antarmuka(UI) dan penanganan peristiwa(event handling). Adalah merupakan tugas profile yang berada di bawah CLDC untuk menggambarkan area ini. Secara khusus, spesifikasi MIDP menggambarkan daur hidup aplikasi MIDP (MIDlet), library UI dan event handling(javax.microedition.lcdui.*).
3. Akibatnya fitur-fitur yang kurang penting untuk diimplementasikan dalam handled devices yang bersangkutan pada Java 2 harus dibuang. Fitur-fitur tertentu dari J2SE yang dibuang antara lain :
Tidak ada dukungan untuk floating point
Class-class untuk perhitungan floating point yakni java.lang.Float dan java.lang.Double dibuang dari CLDC.
Tidak ada dukungan untuk finalisasi objek
Garbage collector yang secara sederhananya digunakan untuk ”bersih-bersih memori” membuang fungsi finalize pada class java.lang.Object, sekalipun fungsi ini sangat penting pada Java 2. Tidak ada dukungan untuk Java Native Interface (JNI)
Class JNI yang memungkinkan Java mengakses librari yang dibuat dengan bahasa selain Java, tidak didukung CLDC.I
Penanganan kesalahan/exception yang terbatas
CLDC hanya mendefinisikan tiga class berikut untuk penanganan kesalahan / exception:
o class java.lang.Error
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
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