Algorima Run-Length-Encoding RLE Algoritma Lempel-Ziv-Welch LZW

proses dekompresi atau decoding. Karena tiap-tiap kode huffman yang dihasilkan unik, maka proses decoding dapat dilakukan dengan mudah. Contoh: saat membaca kode bit pertama dalam rangkaian bit “011001010110”, yaitu bit ”0” merupakan pemetaan dari simbol “A”. Kemudian dibaca kode bit selanjutnya, sehingga menjadi “11”. Tidak ada juga kode huffman “11” lalu baca lagi kode bit berikutnya, sehingga menjadi “110” adalah pemetaan dari simbol “B”.

2.2.2. Algorima Run-Length-Encoding RLE

Kompresi data teks dilakukan jika ada beberapa huruf yang sama yang ditampilkan berturut-turut. Contoh: Data : ABCCCCCCCCDEFGGGG = 17 Karakter RLE tipe 1 min. 4 huruf sama : ABC8DEFG4 = 14 Karakter RLE ada yang menggunakan suatu karakter yang tidak digunakan dalam teks tersebut, seperti misalnya ‘’ untuk menandai. Kelemahan RLE jika ada karakter angka, membedakan mana tanda mulai dan akhir menjadi rancu. Contoh: Data : ABCCCCCCCCDEFGGGG = 14 Karakter RLE tipe 2 : -2AB8C-3DEF4G = 12 Karakter Contoh: Data : AB12CCCCDEEEF = 13 Karakter RLE tipe 2 : -4AB124CD3EF = 12 Karakter RLE ada yang menggunakan flag bilangan negatif untuk menandai batas sebanyak jumlah karakter tersebut. Berguna untuk data yang memiliki kesamaan, misal teks yang memiliki banyak kesamaan pola. Kondisi terbaik untuk RLE tipe 2 adalah ketika terdapat 127 karakter yang sama sehingga akan dikompres menjadi 2 byte saja. Dan kondisi terburuk untuk RLE tipe 2 adalah ketika terdapat 127 karakter yang bebeda semua, maka terdapat 1 byte tambahan sebagai tanda jumlah karakter yang tidak sama tersebut.

2.2.3. Algoritma Lempel-Ziv-Welch LZW

Menurut Linawati 2007, Algoritma LZW dikembangkan dari metode kompresi yang dibuat oleh Ziv dan Lempel pada tahun 1977. Algoritma ini melakukan kompresi dengan menggunakan dictionary, di mana fragmen-fragmen teks digantikan dengan indeks yang diperoleh dari sebuah “kamus”. Pendekatan ini bersifat adaptif dan efektif kaena banyak karakter dapat dikodekan dengan mengacu pada string yang telah muncul sebelumnya dalam teks. Prinsip kompresi tercapai dalam bentuk pointer dapat disimpan dalam jumlah bit yang lebih sedikit dibandingkan string aslinya. Sebagai contoh, string “ABBABABAC” akan dikompresi dengan LZW. Isi dictionary pada awal proses diset dengan tiga karakter dasar yang ada: “A”, “B”, “C”. Tahapan proses kompresi ditunjukkan pada tabel 2.3. Tabel 2.3. Tahapan Proses Kompresi LZW Kolom posisi menyatakan posisi sekarang dari stream karakter dan kolom karakter menyatakan karakter yang terdapat pada posisi tersebut. Kolom dictionary menyatakan string baru yang sudah ditambahkan ke dalam dictionary dan nomor indeks untuk string tersebut ditulis dalam kurung siku. Kolom output menyatakan kode output yang dihasilkan oleh langkah kompresi. Hasil proses kompresi ditunjukkan pada gambar 2.5 Gambar 2.5. Hasil Proses Kompresi LZW String ”ABBABABAC” 2.3. Java 2 Micro Edition J2ME Menurut Raharjo dan Heryanto 2007, Java adalah bahasa pemrograman yang disusun oleh James Gosling dan dibantu oleh rekan-rekannya seperti Patrick Naughton, Chris Warth, Ed Frank, dan Mike Sheridan pada tahun 1991 di suatu perusahaan perangkat lunak bernama Sun Microsystems. Bahasa pemrograman ini mula-mula diinisialisasi dengan nama “Oak”, namun pada tahun 1995 diganti namanya menjadi “Java”. Alasan utama pembentukan bahasa Java adalah untuk membuat aplikasi- aplikasi yang dapat diletakkan di berbagai macam perangkat elektronik, seperti microwave oven dan remote control, sehingga Java harus bersifat portable atau yang sering disebut dengan platform-independent tidak tergantung pada platform. Itulah yang menyebabkan dalam dunia pemrograman java, dikenal adanya istilah ‘write once, run everywhere’, yang berarti kode program hanya ditulis sekali, namun dapat dijalankan di bawah platform manapun, tanpa harus melakukan perubahan kode program. Sun Microsystems telah mendefinisikan tiga buah edisi dari Java 2, yaitu sebagai berikut: 1. Java 2 Standard Edition J2SE, yang digunakan untuk mengembangkan aplikasi-aplikasi desktop dan applet aplikasi Java yang dapat dijalankan di dalam browser web. 2. Java 2 Enterprise Edition J2EE, Merupakan superset dari J2SE yang memperbolehkan untuk mengembangkan aplikasi-aplikasi berskala besar, yaitu dengan pembuatan aplikasi-aplikasi di sisi server dengan mengunakan EJBs Enterprise JavaBeans, aplikasi web dengan menggunakan Servlet dan JSP Java Server Pages dan teknologi lainnya seperti CORBRA Common Object Request Broker Architecture dan XML Extensible Markup Language. 3. Java 2 Micro Edition J2ME, merupakan subset dari J2SE yang digunakan untuk menangani pemrograman di dalam perangkat-perangkat kecil, yang tidak memungkinkan untuk mendukung implementasi dari J2SE secara penuh. J2ME merupakan sebuah kombinasi yang terbentuk antara sekumpulan interface Java yang sering disebut dengan Java API Application Programming Interface dengan JVM Java Virtual Machine yang didesain khusus untuk perangkat dengan ruang memori terbatas. Kombinasi tersebut kemudian digunakan untuk melakukan pembuatan aplikasi-aplikasi yang dapat berjalan pada mobile device. Masing-masing dari perusahaan perangkat telah menyediakan JVM dan sekumpulan API yang diperlukan, sehingga tidak perlu dilakukan installasi JVM dan Java API ke dalam perangkat sehingga programmer hanya berkonsentrasi dalam pengembangan aplikasinya dan memasukkannya kedalam perangkat tersebut. J2ME sendiri pada dasarnya terdiri dari tiga buah bagian, yaitu: konfigurasi, profil, dan paket-paket opsional, seperti yang ditunjukkan pada gambar 2.6: Gambar 2.6. Arsitektur J2ME

2.3.1. Siklus Hidup Aplikasi J2ME