BAB III JAVA 2 MICROEDITION (J2ME) 3.3 Arsitektur Java Bahasa Java merupakan salah satu bahasa tingkat tinggi. Java berdasarkan definisi dari sun adalah sekumpulan teknologi pemrograman yang digunakan untuk membuat dan menjalankan perangkat lunak pada komputer standalone ataupun pada ligkungan jaringan. Java juga dapat digunakan untuk aplikasiaplikasi pada perngakat elektronik portable atau yang disebut dengan platformindependent (tidak tergantung pada platform)[5]. Itulah yang menyebabkan adanya istilah ‘write once, run everywhere’, yang artinya kode program hanya ditulis sekali, namun dapat dijalankan di bawah platform manapun, tanpa harus melakukan perubahan kode program. Java 2 merupakan generasi kedua dari Java platform (generasi awalnya adalah Java Development Kit). Java berdiri di atas sebuah mesin interpreter yang bernama Java Virtual Machine (JVM). JVM inilah yang akan membaca bytecode dalam file .class dari suatu program sebagai representasi langsung program yang berisi bahasa mesin[6]. Dengan demikian program Java dapat dijalankan dalam berbagai sistem operasi asalkan pada sistem operasi tersebut terdapat JVM. Platform java terdiri dari kumpulan library, JVM, kelas-kelas loader yang dipaket dalam sebuah lingkungan rutin Java, sebuah compiler, debuger, dan elemen lain yang dipaket dalam Java Development Kit (JDK). Java 2 adalah generasi terbaru Java yang sedang dikembangkan dalam platform Java. Untuk 14 menjalankan sebuah program Java, maka diperlukan file dengan ekstensi .java yang harus dikompilasi menjadi file bytecode. Suatu file bytecode dapat dijalankan jika terdapat JRE (Java Runtime Environtment). JRE ini berisikan JVM dan library Java yang digunakan dalam suatu program. Dalam aplikasinya, JRE hanya menjalankan program, tidak untuk membuat kode baru lagi[6]. Gambar 3.1 di bawah ini menunjukkan ruang lingkup keterhubungan optional packages dalam Java. Servers & enterprise computers Optional Packages Servers & personal computers Optional Packages Java 2 Platform, Enterprise Edition (J2EE) JVMTM High-end PDAs TV set-top boxes Embeded device Optional Packages Personal Profile Mobile Phones& entry-level PDAs Java 2 Platform, Enterprise Edition (J2EE) Personal Basis Profile Optional Packages Foundation Profile MIDP JVMTM CDC CDLC JVMTM KVM Smart cards Java Card Card VM Java Platform, Micro Edition (Java ME) Gambar 3.1 Ruang lingkup keterhubungan optional packages dalam Java[9] Platform Java memiliki tiga buah edisi yang berbeda. Dalam hal ini, Sun Microsystems telah mendefinisikan tiga buah edisi tersebut yaitu: 15 • Java 2 Standar Edition (J2SE), yang digunakan untuk mengembangkan aplikasi-aplikasi dekstop dan applet (aplikasi Java yang dapat dijalankan di dalam browser web). • Java 2 Enterprise Edition (J2EE), merupakan superset dari J2SE yang memperbolehkan kita untuk mengembangkan aplikasi-aplikasi berskala besar (enterprise), yaitu dengan melakukan pembuatan aplikasi-aplikasi di sisi server dengan menggunakan EJBs (Enterprise JavaBeans), aplikasi web dengan menggunakan Servlet dan JSP (Java Server Pages) dan teknologi lainnya seperti COBRA (Common Object Request Broker Architecture) dan XML (Extensible Markup Language). • Java 2 Micro Edition (J2ME), merupakan subset dari J2SE yang digunakan untuk menangani pemrograman di dalam perangkat kecil, yang tidak memungkinkan mendukung implementasi J2SE secara penuh. 3.4 Java 2 Microedition (J2ME) Java 2 Micro Edition (J2ME) adalah lingkungan pengembangan yang dirancang untuk meletakkan perangkat lunak Java pada alat elektronik beserta perangkat pendukungnya[6]. J2ME terbentuk antara sekumpulan interface Java yang sering disebut dengan Java API (Application Programming Interface) dengan JVM (Java Virtual Machine). Kombinasi tersebut kemudian digunakan untuk melakukan pembuatan aplikasi-aplikasi yang dapat berjalan di atas alat (mobile devices) misalnya pada telepon selular, pager, Personal Digital Assistants (PDA) dan sejenisnya. 16 J2ME adalah bagian dari J2SE sehingga tidak semua library yang ada pada J2SE dapat digunakan pada J2ME. Demikian juga J2ME mempunyai library khusus yang tidak dimiliki J2SE. Arsitektur J2ME dapat dilihat pada Gambar 3.2 di bawah ini. Profile Kumpulan Library Configuration JVM Sistem Operasi Gambar 3.2 Arsitektur J2ME[6] Teknologi J2ME memiliki beberapa keterbatasan terutama jika diaplikasikan pada perangkat (device) yang memiliki keterbatasan pula. Contohnya, jika J2ME akan diaplikasikan pada sebuah ponsel, maka jalan atau tidaknya program tersebut tergantung kemampuan ponsel dalam mendukung fiturfitur yang ada pada J2ME. Keterbatasan besar memori pada ponsel juga sangat mempengaruhi aplikasi J2ME pada ponsel karena setiap program memiliki ukuran aplikasi tertentu. 3.4.1 Konfigurasi Konfigurasi merupakan bagian yang berisi JVM dan beberapa library. Konfigurasi hanya mengatur hal-hal tentang kesamaan sehingga dapat dijadikan ukuran kesesuaian antar device. Terdapat dua buah konfigurasi pada J2ME yaitu 17 CDC (Connected Device Configuration) dan CLDC (Connected Limited Device Configuration). CDC merupakan superset dari CLDC sehingga semua kelas yang didefinisikan di dalam CLDC akan terdapat pada CDC. Tabel 3.1 di bawah ini menjelaskan perbandingan CDC dengan CLDC. Tabel 3.1 Perbandingan CDC dengan CLDC[6] CDC Mengimplementasikan seluruh fitur J2SE JVM yang digunakan adalah CVM Digunakan pada perangkat genggam (internet TV, Nokia Communicator, car TV) dengan memori minimal 2 MB Prosesor: 32 bit 3.4.2 CLDC Mengimplementasikan sebagian fitur J2SE JVM yang digunakan adalah KVM Digunakan pada perangkat genggam (handphone, PDA, pager) dengan memori terbatas (160 - 512 KB) Prosesor : 16/32 bit Profil Profil merupakan bagian perluasan dari konfigurasi. Berbeda dengan konfigurasi, profil membahas sesuatu yang spesifik untuk sebuah perangkat. Selain sekumpulan kelas yang terdapat pada konfigurasi, terdapat juga kelas spesifik yang didefinisikan lagi di dalam profil. Dengan kata lain, profil akan membantu secara fungsional yaitu dengan menyediakan kelas-kelas yang tidak terdapat di level konfigurasi. Dalam J2ME terdapat dua buah profil yaitu MIDP dan Foundation profile. Foundation Profile merupakan profil yang digunakan untuk konfigurasi CDC. Profil ini menambahkan beberapa kelas dari J2SE ke dalam konfigurasi CDC, dan berperan juga sebagai pondasi untuk membentuk profil baru lainnya. MIDP (Mobile Information Device Profil) adalah spesifikasi untuk sebuah profil J2ME. MIDP memiliki lapisan di atas CLDC, API tambahan untuk daur hidup aplikasi, antarmuka, jaringan, dan penyimpanan persisten. Pada saat ini terdapat MIDP 1.0 18 dan MIDP 2.0. Fitur tambahan MIDP 2.0 dibanding MIDP 1.0 yaitu API untuk multimedia. MIDP Kumpulan Library CLDC KVM Sistem Operasi Gambar 3.3 MIDP dalam arsitektur J2ME[6] Tabel 3.2 Perbandingan MIDP 1.0 dengan MIDP 2.0[6] Spesifikasi Display Kedalaman Display Bentuk piksel (rasio aspek) Input Memori Jaringan Library J2ME yang bukan merupakan library J2SE Multimedia MIDP 1.0 MIDP 2.0 96x54 1-bit 96x54 1-bit Mendekati 1:1 Mendekati 1:1 Keyboard dan touch screen 128 KB memori non-volatile untuk komponen MIDP 8 KB memori nonvolatile untuk data persistence yang dibuat oleh aplikasi 32 KB memori volatile untuk JRE Dua arah, tanpa kabel (wireless) javax.microedition.lcdui, javax.microedition.midlet, javax.microedition.rms, Keyboard dan touch screen 256 KB memori non-volatile untuk komponen MIDP 8 KB memori nonvolatile untuk data persistence yang dibuat oleh aplikasi 128 KB memori volatile untuk JRE Dua arah, tanpa kabel (wireless) javax.microedition.lcdui, javax.microedition.midlet, javax.microedition.rms, javax.microedition.lcdui.game, javax.microedition.media, javax.microedition.pki, Memiliki kemampuan untuk memainkan file multimedia (suara dan video) - 19 3.4.3 MIDlet MIDlet adalah aplikasi yang ditulis untuk MIDP. Aplikasi MIDlet adalah bagian dari kelas javax.microedition.midlet.MIDlet yang didefinisikan pada MIDP. Dalam mengaplikasikan MIDlet terdapat beberapa metode yang harus ada, yaitu constructor(), protected void startApp()throws MIDletStateChangeException, protected void destroyApp MIDletStateChangeException. protected (bolean void pauseApp(), unconditional) throws Alur hidup MIDlet dapat dilihat pada Gambar 3.4 di bawah ini. Konstruktor MIDlet memanggil pauseApp() Aktif Jedah MIDlet memanggil startApp() MIDlet memanggil destroyApp() untuk terminasi Terminasi Gambar 3.4 Daur hidup MIDlet[6] Pertama kali ketika MIDlet dijalankan maka akan diinisialisasi dengan kondisi pause dan dijalankan pauseApp(), kondisi berikutnya adalah fungsi MIDlet dijalankan, yaitu dengan startApp(). Metode yang ada tersebut diimplementasikan sebagai protected, hal ini dimaksudkan agar MIDlet lain 20 tidak dapat memanggil metode tersebut. Pada saat pemakai keluar dari MIDlet, maka dijalankan metode destroyApp(). Metode notifyDestroyed() akan dipanggil sebelum destroyApp() MIDlet akan benar-benar memanggil tidak berjalan lagi. Metode notifyDestroyed(), dan notifyDestroyed() akan memberitahu platform untuk menterminasi MIDlet dan membersihkan semua sumber daya yang mengacu pada MIDlet. Dalam implementasinya, MIDlet memiliki struktur direktori sebagai berikut: • src Menyimpan source code untuk MIDlet dan kelas lain yang diperlukan. • res Menyimpan sumber daya yang dibutuhkan oleh MIDlet, seperti misalnya gambar icon. • lib Menyimpan file JAR atau ZIP yang berisi library tambahan yang dibutuhkan MIDlet. • bin Menyimpan file JAR, JAD, dan file manifest yang berisi muatan komponen MIDlet. 21 3.4.4 JAD (Java Application Descriptor) Digunakan untuk mendeskripsikan isi aplikasi untuk keperluan pemetaan. File JAD berisi deskripsi file JAR (Java Archive) dan pemetaan atribut MIDlet. File JAR berisi kumpulan kelas dan resource. 3.5 Aplikasi J2ME dalam Perancangan Sistem Telemetri 3.5.1 Pengiriman dan Penerimaan Pesan Singkat Pada J2ME diizinkan aplikasi untuk mengirim dan menerima SMS, namun dengan alasan keamanan sebuah MIDlet hanya dapat memproses pesan SMS yang dikirimkan pada port yang terdaftar sebagai listener. MIDlet tidak dapat mengakses pesan SMS dari aplikasi lain ataupun yang dikirimkan pada port standar (default). Hal ini sangat berdampak pada penerimaan SMS melalui MIDlet karena dengan demikian kita tidak dapat mengakses inbox ponsel, namun sebaliknya kita dapat membuat aplikasi MIDlet untuki mengirimkan pesan yang masuk ke inbox ponsel. Paket interface yang menyediakan fasilitas pengiriman dan penerimaan pesan dalam J2ME ini terdapat pada paket WMA (Wireless Messaging API). Kelas-kelas dalam paket ini tersimpan dalam paket javax.microedition.wireless. messaging. Dalam kelas ini terdapat tiga buah interface, yaitu TextMessage, BinaryMessage, dan MessageConnection. Hubungan antara ketiga interface ini ditunjukkan pada Gambar 3.5 di bawah ini. 22 Gambar 3.5 Interface paket WMA dalam J2ME untuk pengiriman dan penerimaan pesan[7] 3.5.2 Aplikasi Record Management System (RMS) Dalam J2ME, MIDlet tidak menggunakan file sistem untuk menyimpan data, tetapi menyimpan semua informasi dalam sebuah memori non-volatile (memori tetap) yang disebut dengan Record Management System (RMS)[4]. RMS merupakan kumpulan record yang disimpan sebagai array dari byte dalam sebuah record store. RMS memiliki orientasi record basis data yang sederhana sehingga MIDlet dapat menyimpan informasi dan mengaksesnya. Gambar 3.5 Keterkaitan antara MIDlet dengan Record Store [8] 23 Pada konsepnya, record yang disimpan dalam record store diakses berdasarkan recordID yang berupa interger. RecordID ini biasanya digunakan untuk mengakses record seperti fungsi indeks pada pengaksesan array. Gambar 3.6 Penyimpanan record dalam record store [6] 24