BAB II LANDASAN TEORI 2.1 VIDEO-ON-DEMAND STREAMING Dahulu jika kita ingin menyaksikan video dari Internet, kita harus mengunduhnya dahulu secara keseluruhan, setelah selesai diunduh (dengan menunggu beberapa lama tentunya) kita bisa menonton video tersebut. Dengan menggunakan teknologi video streaming, hal tersebut diatas tidak perlu terjadi lagi karena video dapat langsung kita saksikan seketika itu juga tanpa harus menunggu sampai keseluruhan file video tersebut selesai diunduh. 2.1.1 Video Video dalam dunia digital adalah multimedia yang menggabungkan baik gambar (bergerak maupun diam), suara, dan atau tulisan menjadi satu. Tidak heran jika file video memiliki ukuran besar. Video digital terdiri dari serangkaian gambar bitmap dua dimensi yang ditampilkan secara cepat dengan kecepatan tetap. Setiap gambar dinamakan frame, kecepatan laju frame menampilkan setiap gambar dalam satu detik dinamakan frame rate yang direpresentasikan dengan frame per detik (FPS – Frame Per Second). Setiap gambar adalah gambar dua dimensi, masing-masing gambar memiliki dimensi panjang dan lebar berupa pixel (picture elements). Dimensi setiap frame itu yang biasa kita kenal dengan resolusi (frame size), jika resolusi video adalah 640x480 artinya video tersebut memiliki ukuran frame dengan panjang 640 pixel dan lebar 480 pixel. Pixel hanya memiliki satu atribut, yaitu warna. Warna setiap pixel disusun dari susunan bit yang panjangnya tetap. Semakin panjang bit warna yang digunakan, semakin banyak variasi warna yang bisa digunakan. Panjang bit tersebut umum dikenal dengan kedalaman warna. Satu lagi atribut yang dimiliki video adalah durasi, yaitu waktu yang dibutuhkan video tersebut untuk diputar dari awal sampai akhir. 7 8 Agar lebih jelas bisa kita lihat contoh sebagai berikut: sebuah video memiliki durasi (T) selama 10 menit (3600 detik), ukuran frame adalah 320x240 (WxH) dengan kedalaman warna (CD) 24 bit dan laju frame (frame rate) 25 fps (frame per second). Rumus yang digunakan adalah (Bock, 2009): Menghitung laju bit (BR – Bit Rate) BR = W * H * CD * fps ......................(1) Menghitung ukuran video (VS – Video Size) VS = BR * T atau W * H * CD * fps * T .......(2) Keterangan: BR W&H CD VS T Bit Rate (kecepatan laju bit) dalam bit/s. Width dan Height (panjang dan lebar video) dalam pixels. Color Depth (kedalaman warna) dalam bit. Video Size (ukuran video) dalam bit atau byte. Time (durasi video) dalam detik. Dari contoh diatas dapat kita tuliskan sebagai berikut: Laju bit BR (bit rate) = = = Ukuran video (VS) = = = = W * H * CD * fps 320 * 240 * 24 * 25 184,25 Mbps (Megabit per second). BR * T 184 Mbps * 600 detik = 110,400 Mbit 13,800 Mbyte 13,8 Gbyte. Perhitungan diatas berlaku bagi video (hanya video, belum termasuk suara) yang tidak dikompresi. Bayangkan ukuran video yang dihasilkan untuk video dengan durasi 1 jam dengan kualitas SDTV (Standard Definition Television – televisi berdefinisi standar) jika harus ditransmisikan melalui Internet. Selain ukurannya terlalu besar, juga kecepatan laju bit yang tinggi sangat tidak memungkinkan untuk ditransmisikan ke klien-klien dengan koneksi standar. 9 2.1.2 Video-On-Demand Video-On-Demand (video sesuai permintaan) adalah sistem video server yang memberikan kebebasan bagi klien untuk memilih video mana yang ingin ditonton. Semua video tersebut sudah tersedia di server (prerecorded sudah direkam sebelumnya), sehingga klien hanya perlu mencarinya, melihat gambar pra-pertunjukannya (preview), jika sesuai, klien bisa menonton video tersebut. 2.1.3 Streaming Streaming berasal dari kata stream yang artinya aliran. Streaming lebih ditujukan kepada cara data dikirimkan, bukan menjelaskan media pengiriman yang digunakan. Klien secara konstan menerima data yang dikirimkan dari server. Video-on-demand streaming adalah perpaduan antara teknik kompresi video dan teknik penyangga (buffering) yang dapat mengirimkan video dan menampilkannya secara waktu nyata (realtime) melalui Internet. Dengan video streaming, kita dapat langsung memainkan video tersebut seketika itu juga sesaat setelah proses unduh dimulai, selama file tersebut masih terus diunduh dari server. File-file video tersebut sudah ada dan tersedia di server, sehingga klien bisa memilih dan menontonnya kapanpun diinginkan. Perkembangan Video Streaming sebenarnya sangat pesat, sampai saat ini hambatan yang paling besar adalah terbatasnya lebar jalur (bandwidth) yang dibutuhkan untuk mengirimkan video yang berkualitas tinggi. Bagaimanapun, teknologi jaringan sebagai media transmisi juga terus mengalami perkembangan yang luar biasa untuk menyediakan kebutuhan lebar jalur yang makin bertambah sehingga semakin hari akan semakin memungkinkan untuk mentransmisi video streaming dengan kualitas dan resolusi yang semakin tinggi. Sebelum adanya teknologi video streaming, video maupun audio yang ingin kita lihat ataupun dengar, harus diunduh dahulu sebagai sebuah file (biasanya file berekstansi .AVI , .MPEG, .MP3) lalu didisimpan ke dalam harddisk. Lalu file tersebut harus dibuka dengan program aplikasi pemutar video atau audio. Dengan teknologi streaming, kita bisa langsung memainkannya sesaat setelah kita mulai 10 mengunduhnya dan beberapa saat untuk proses penyanggaan (buffering), sehingga kita bisa langsung memainkan file tersebut tanpa perlu mengunggu sampai keseluruhan file tersebut selesai diunduh. Dalam hal ini, kita tidak perlu lagi menyediakan ruang harddisk untuk menyimpan file multimedia tersebut. Seperti kita ketahui, hambatan terbesar satu-satunya dalam video streaming adalah ketersediaan lebar jalur (bandwidth) untuk mengirimkan file tersebut. Hal ini sangat mempengaruhi kualitas video yang tersedia pada video streaming server. Semakin bagus kualitas video streaming, semakin besar juga kebutuhan lebar jalur untuk mengirimkannya sampai ke pengguna. Untuk mensiasati ketersediaan bandwidth yang terbatas tersebut, diperlukan teknik untuk mengecilkan ukuran file multimedia tersebut sehingga bisa ditransmisikan melalui Internet dengan tetap menjaga kualitas dari file multimedia tersebut. Teknik tersebut dinamakan dengan teknik kompresi. Cara kerja kompresi video adalah dengan menggunakan rumus matematika yang kompleks, memisahkan antara objek bergerak dengan objek tidak bergerak pada masing-masing frame, kemudian objek bergerak dari masing-masing frame diambil lalu menebak bagian bergerak mana yang akan menjadi frame berikutnya. Dengan hanya mengambil bagian yang bergerak saja dari masing-masing frame serta membiarkan objek statik, maka ukuran dan kecepatan file multimedia tersebut bisa dikurangi. Agar dapat memainkan video streaming, yang perlu ada adalah pemutar video streaming ataupun perangkat tambahan (plugin) untuk peramban anda. Kebanyakan bisa diunduh secara gratis dan diinstall di komputer anda. Berikut adalah pemutar video streaming yang umum digunakan: 1. RealNetwork's RealPlayer 2. Microsoft's Windows Media Player 3. Apple's QuickTime 4. Flash Player 11 2.2 OPTIMASI VIDEO SERVER 2.2.1 Optimasi Optimasi secara umum berarti memaksimalkan sesuatu. Definisi optimasi adalah proses produksi lebih efisien (lebih kecil dan / atau lebih cepat), melalui seleksi dan desain struktur data, algoritma, dan urutan instruksi dan lain-lainnya. Optimasi memang diperlukan untuk hal apapun dan optimasi itu artinya membuat sesuatu sebagus mungkin.atau paling maksimal. 2.2.2 Optimasi pada Video Bila kita lihat contoh perhitungan ukuran video dengan resolusi 320x240 pixel berdurasi 10 menit yaitu sebesar 13,8 GB adalah sangat besar sekali. Dengan laju bit (bit rate) sebesar 184 Mbps mungkin tidak menjadi masalah jika dimainkan dari harddisk pada komputer desktop, tetapi akan menjadi masalah besar jika akan dipublikasikan pada weblog dalam bentuk video streaming karena perlu paling tidak di sisi klien harus memiliki lebar jalur (bandwidth) sebesar 186 Mbps untuk dapat memainkan video tersebut secara mulus. Oleh sebab itu diperlukan suatu teknik untuk dapat memanipulasi video digital tersebut agar ukuran file menjadi kecil serta membuat laju bit (bit rate) menjadi mungkin untuk bisa dikirimkan melalui media Internet tanpa penurunan kualitas video yang berarti. Untuk kebutuhan tersebut, maka lahir teknologi yang kita kenal saat ini yaitu teknik video kompresi. Video kompresi lahir karena kebutuhan untuk mengecilkan ukuran video dengan laju bit yang masuk akal untuk dapat dikirimkan melalui media transmisi dengan kecepatan relatif lambat (seperti jaringan atau Internet). Pada dasarnya, video kompresi memanfaatkan redundansi data (data yang terduplikasi atau berulang) pada video digital, sebab tidak semua data video digital penting bagi otak manusia untuk diproses. Data video bisa dikompresi atapun terkadang bisa dibuang sama sekali sehingga dapat mengecilkan ukuran serta laju bit. 12 Redundansi data bisa dieliminasi dengan dua cara: spatial dan temporal (Bock, 2009). • Kompresi spatial atau juga dikenal dengan intraframe bekerja dengan memanfaatkan kekurangmampuan mata manusia untuk merasakan perbedaan kecil pada warna (mata manusia lebih baik dalam merasakan perbedaan pada kecerahan). Kompresi spatial menghilangkan warna-warna yang memiliki perbedaan-perbedaan kecil dalam area gambar yang berdekatan. • Kompresi temporal atau juga dikenal dengan interframe bekerja dengan membandingkan gambar setiap frame lalu mendeteksi jika ada bagian gambar dari beberapa frame yang memiliki kesamaan diabaikan, bagian frame yang diabaikan kemudian tidak diikutsertakan pada data hasil kompresi. Kedua cara kompresi ini mampu mengurangi data video secara dramatis. 2.2.3 Optimasi pada cara mentransmisi Video Setelah berbagai macam teknik kompresi video digunakan, memungkinkan bagi file video untuk didistribusikan melalui media transmisi (jaringan maupun Internet) dengan metode klien server. Tetapi masih ada kelemahan pada sistem ini, yaitu kita harus menyediakan server yang memiliki lebar jalur yang cukup besar untuk dapat melayani klien-klien secara bersamaan. Jika kita ingin dapat melayani 100 penonton simultan dengan rata-rata laju bit setiap video adalah 500 kbps, maka paling tidak lebar jalur data (bandwidth) adalah 100 * 500 kbps = 50 Mbps. Dari sekian banyak penonton simultan, pasti ada beberapa atau sebagian yang sedang menonton video yang sama, sehingga video server akan tetap mengirimkan file video yang sama ke penonton-penonton yang menonton video yang sama tersebut. Sudah banyak ide mengenai adopsi teknologi p2p untuk membantu transmisi suatu video yang ditonton secara bersama oleh banyak pengguna pada saat yang bersamaan, dengan cara mendistribusikan file video diantara penonton-penonton yang sedang menonton video tersebut, sehingga video server tidak harus mengirimkan seluruh salinan file video ke setiap 13 penonton karena masing-masing penonton dapat saling bertukar potonganpotongan file yang sudah dimilikinya. 2.3 JARINGAN PEER TO PEER (P2P) Semenjak munculnya Napster pada tahun 1999, jaringan peer to peer (p2p) terus berkembang sangat cepat hingga saat ini. Napster adalah program berbagi file mp3 yang pertama kali menerapkan jaringan peer to peer. Server pusat Napster menyimpan data-data mengenai siapa yang memiliki file tertentu, sehingga pengguna yang ingin mencari file tersebut akan menghubungi server pusat Napster untuk mendapatkan data-data tersebut. Setelah itu pertukaran file akan dilakukan langsung antara komputer yang mencari file dengan komputer yang memiliki file tanpa campur tangan dari server pusat Napster lagi. Dengan menggunakan teknologi p2p, server Napster mampu menangani lebih dari 20 juta pengguna, dimana hal tersebut adalah sesuatu yang tak mungkin dilakukan dengan menggunakan teknologi biasa (klien – server) yang dengan pengguna sebanyak itu akan membuat server utama berbenti total karena terlalu banyak pengguna yang harus dilayani. Peer to peer (p2p) adalah suatu cara yang digunakan untuk berkomunikasi antara dua titik, bisa dianalogikan seperti hubungan yang terjadi pada percakapan lewat telpon. Percakapan telpon hanya melibatkan dua orang (peers) yang statusnya setara, berkomunikasi dari titik satu ke titik yang lainnya. Arsitektur jaringan peer to peer adalah masing-masing pengguna (peer) memiliki kemampuan dan tanggung jawab yang sama baik sebagai pemakai maupun sebagai penyedia. Sangat berbeda dengan arsitektur klien – server, dimana server hanya sebagai penyedia bagi klien. 2.3.1 Bittorrent BitTorrent adalah sebuah protokol yang memungkinkan mengunduh file-file besar dengan cepat menggunakan bandwidth Internet yang kecil. Tidak ada biaya, iklan pop-up maupun spyware dalam menggunakannya. 14 Tidak seperti metode unduh lainnya, BitTorrent memaksimalkan kecepatan transfer dengan mengumpulkan potongan-potongan file yang diinginkan dan mengunduh potongan-potongan ini secara simultan dari orang-orang yang sudah memilikinya. Proses ini membuat file yang populer dan sangat besar - seperti video dan program televisi – proses unduh akan jauh lebih cepat daripada yang mungkin bisa dilakukan menggunakan protokol lain. Untuk memahami bagaimana BitTorrent bekerja dan mengapa hal ini berbeda dengan metode klien-server, mari kita memeriksa apa yang terjadi ketika Anda men-download file dari sebuah situs Web. Prosesnya seperti berikut ini: 1. Anda membuka halaman Web, lalu klik tautan (link) untuk mendownload file ke komputer Anda. 2. Perangkat lunak Web browser pada komputer Anda (klien) memberitahu server (sebuah komputer pusat yang menyimpan halaman Web dan file yang ingin Anda unduh) untuk mentransfer salinan file ke komputer Anda. 3. Transmisi file ditangani oleh protokol (seperangkat aturan), seperti FTP (File Transfer Protocol) atau HTTP (HyperText Transfer Protocol). Kecepatan transfer dipengaruhi oleh sejumlah variabel, seperti jenis protokol, keseluruhan lalu lintas data di server dan jumlah komputer lain yang sedang mengunduh file tersebut. Jika file yang diunduh adalah file yang populer dan berukuran besar, kerja server akan menjadi lebih berat, dan download akan menjadi lambat. Berbagi file melalui jaringan peer-to-peer (p2p) berbeda dalam mengunduh file, caranya tidak sama seperti cara tradisional. Dalam p2p, Anda menggunakan program perangkat lunak untuk menemukan komputer yang memiliki file yang diinginkan (tidak seperti cara tradisional yang menggunakan peramban menggunakan HTTP). Komputer-komputer yang terhubung adalah komputer biasa seperti komputer yang Anda gunakan, bukan mesin server yang memiliki spesifikasi besar, mereka disebut peers. Proses kerjanya sebagai ini: 1. Anda menjalankan perangkat lunak p2p (misalnya, program Gnutella, uTtorrent) pada komputer anda dan mengirimkan permintaan untuk file yang ingin diunduh. 15 2. Untuk mencari file, perangkat lunak mencarinya ke komputer lain yang terhubung ke Internet serta menjalankan perangkat lunak p2p. 3. Ketika perangkat lunak menemukan sebuah komputer yang memiliki file yang Anda inginkan pada hard drivenya, dimulailah proses unduh. 4. Demikian juga dengan komputer lain yang menggunakan perangkat lunak p2p, dapat memperoleh file yang mereka inginkan dari hard drive komputer Anda. Gambar 2.1 Cara kerja BitTorrent (diambil dari www.howstuffworks.com) Mengunduh potongan-potongan file pada secara bersamaan membantu memecahkan masalah yang sering dihadapi dalam jaringan p2p: upload dari masing-masing peer kebanyakan memiliki kecepatan rata-rata yang kecil. Dengan mengunduh beberapa bagian secara bersama-sama, kecepatan keseluruhan dapat ditingkatkan. Semakin banyak peer yang berpartisipasi dalam jaringan p2p, semakin cepat transfer file terjadi karena ada lebih banyak sumber potongan file. Dengan alasan ini, BitTorrent ini sangat cocok digunakan untuk mengunduh filefile besar dan populer. 16 2.4 BAHASA PEMROGRAMAN JAVA 2.4.1 Sejarah Bahasa pemrograman Java diciptakan oleh tim pengembang perangkat lunak (software) dari Sun Microsystem yang dipimpin oleh James Gosling dan Patrick Naughton. Ide dasar pengembangan bahasa permograman Java berawal dari proyek Sun Microsystem yang pada waktu itu sedang mengembangkan suatu bahasa pemrograman yang berukuran kecil untuk diimplementasikan pada alat elektronik rumah tangga seperti switchbox TV kabel. Berhubung alat tersebut tidak memiliki banyak memori, maka bahasa yang digunakan harus menghasilkan kode yang sangat kecil. Permasalahan lain adalah alat-alat tersebut memiliki CPU yang berbeda-beda karena dibuat oleh manufaktur yang berbeda. Jadi sangat diharuskan bahasa pemrograman tersebut tidak terikat pada sebuah arsitektur mesin tertentu saja. Untuk memenuhi prasyarat tersebut, Java menggunakan metode yang mirip seperti Niklaus Wirth lakukan pada bahasa pemrograman yang ia ciptakan yaitu bahasa pemrograman Pascal. Bahasa pemrograman Pascal komersial yang disebut UCSD Pascal menghasilkan kode program intermediate yang diperuntukkan bagi sebuah mesin virtual, sehingga pemrograman tersebut tidak bergantung kepada msein ataupun platform sistem operasi karena hasil dari UCSD Pascal yang berbentuk kode intermediate tersebut akan dikompilasi atau diterjemahkan oleh mesin virtual menjadi kode mesin dimana kode tersebut di jalankan. Pada Java, mesin virtual ini dinamakan Java Virtual Machine (JVM), sedangkan kode program intermediate disebut dengan Bytecode. Jika di masing-masing mesin yang berbeda-beda terdapat JVM, maka kode asli program tersebut dapat dijalankan pada mesin-mesin tersebut. Java dikembangkan menggunakan bahasa C++ sebagai dasarnya. Pada awal pengembangannya, bahasa pemrograman ini diberi nama “Oak”, akan tetapi setelah menyadari bahwa sudah ada bahasa pemrograman lain yang menggunakan nama tersebut, akhirnya diganti nama menjadi “Java”. Menurut Sun Microsystem, seperti yang dikutip dari websitenya, kata Java bukanlah sesuatu singkatan ataupun akronim, asal kata Java adalah 17 berasal dari minuman panas yang beraroma khas, yang sering dimimun oleh para programer, yaitu kopi murni yang digiling langsung dari bijinya. 2.4.2 Java Bytecode Dalam sebagian besar bahasa pemrograman, sebuah kode program harus dikompilasi (compile) maupun diterjemahkan (interpret) sehingga dapat dijalankan di sebuah komputer. Perangkat lunak yang digunakan untuk melakukan kompilasi kode program disebut dengan Compiler, sedangkan yang digunakan untuk melakukan interpretasi disebut dengan Interpreter. Perbedaan mendasar dari keduanya adalah terletak pada proses eksekusi kodenya. Pada Compiler, kode akan diterjemahkan secara keseluruhan, sedangkan pada Interpreter akan menterjemahkannya secara barus demi baris. Karena proses eksekusinya dilakukan per baris, maka interpreter lebih lambat dibandingkan dengan compiler. Bahasa pemrogaman Java menerapkan kedua proses tersebut diatas, sehingga Java berperan sebagai Compiler sekaligus sebagai Interpreter. Konsepnya sederhana, mula-mula kode program yang ditulis dengan bahasa Java (berekstensi .java) akan dikompilasi (oleh Compiler) menjadi suatu kode objek. Dalam java, kode objek ini dinamakan bytecode (berekstensi .class), berbeda dengan compiler lainnya yang menghasilkan file dengan ekstensi .exe. Selanjutnya, bytecode akan dieksekusi baris demi baris (oleh Java interpreter). Dengan demikian proses kompilasi hanya dilakukan sekali, tetapi proses interpret akan dilakukan setiap bytecode tersebut dijalankan. Berikut adalah gambaran yang mengilustrasikan konsep pembentukan program dalam Java. 18 Gambar 2.2 Proses pembentukan dan eksekusi program di dalam Java Bytecode dapat dianggap sebagai sekumpulan perintah dalam bahasa mesin untuk sebuah JVM. Program yang dibuat dengan Java tidak mungkin dapat dijalankan di dalam komputer maupun alat lain yang tidak memiliki JVM. Dengan konsep ini maka dikenal istilah dalam Java yaitu “write once, run anywhere”, yang artinya kita hanya perlu menulis sekali saja kode program Java dan melakukan kompilasi terhadapnya, maka bytecode tersebut dapat dijalankan dalam platform manapun selama platform tersebut memiliki JVM. Sun Microsystem telah menyediakan berbagai versi JVM yang dapat di download dan diinstall sesuai dengan mesin ataupun platform yang anda miliki seperti Windows, Linux, Solaris, MacOS, dan lain sebagainya (Raharjo, Heryanto, & Haryono, 2007). 19 Gambar 2.3 Program Java dapat dieksekusi pada platform yang berbeda 2.4.3 Java : Pemrograman Berorientasi Objek Seperti yang telah kita ketahui, semua program komputer terdiri dari kode dan data. Kode adalah sekumpulan proses logis program (misalnya fungsi), sedangkan data dapat berupa variabel maupun konstanta. Selanjutnya, kode dan data diatur sedemikian rupa sehingga dapat bekerja sama untuk menghasilkan program keluaran sesuai dengan proses yang diinginkan. Para model pemrograman tradisional atau prosedural (disebut dengan porcess-oriented model), semua data dan kode digabung menjadi satu bagian dalam satu program. Untuk program sederhana yang hanya membutuhkan beberapa buar baris kode, penggunaan model ini tentu tidak menjadi masalah. Permasalahan baru akan timbil pada saat program tersebut berkembang ke arah yang lebih besar dan kompleks, dimana pasti akan melibatkan ratusan atau bahkan ribuan baris kode serta ratusan macam variabel. Hal ini akan sangat membingungkan programer karena data dan fungsi akan berantakan tidak terorganisir dengan baik. Alasan semacam inilah yang menjadi benih diciptakannya model pemrograman baru, yaitu model pemrograman berorientasi objek (Object-oriented model). Pemrograman berorientasi objek adalah 20 pendekatan atau metodologi perancangan program berdasarkan objek, dimana sesuatu diperlakukan sebagai objek yaitu memiliki data-data (misalnya: nama, jenis kelamin, alamat dsb) serta memiliki metode (misalnya: cara bicara, cara berjalanm cara marah dsb). Beberapa keuntungan pada pemrograman berorientasi objek adalah : 1. objek-objek dapat digunakan ulang (reuseable) untuk program-program lain 2. programnya lebih terstruktur dan lebih mudah untuk dikembangkan 3. bersifat natural atau alami, karena perilaku dan sifat-sifat objek didalam program akan disesuaikan dengan objek-objek nyata yang ada di alam sekitar kita 2.4.4 Java Applet Java applet adalah sebuah program yang ditulis dengan menggunakan bahasa pemrograman Java, yang diakses melalui halaman Web dan dapat dijalankannya di dalam jendela penjelajah web (Web Browser). Java applet dapat secara dinamis menambahkan beberapa fungsi kepada halaman-halaman Web yang bersifat statis. Akan tetapi, untuk menjalankannya sebuah komputer harus memiliki program penjelajah web yang dapat menjalankan Java, seperti Microsoft Internet Explorer 4.0 ke atas, Netscape Navigator, Mozilla Firefox, dan Opera. Ketika sebuah Java applet dibuat, semua pernyataan Java yang terkandung di dalam kode sumbernya akan dikompilasi menjadi Java bytecode, yakni sebuah bahasa mesin semu (virtual engine/machine language) yang dibentuk oleh Java. Berkas yang berisi Java bytecode ini akan disimpan sebagai sebuah berkas kelas Java (Java class file) di dalam sebuah Web server, seperti Apache HTTP Server atau Microsoft Internet Information Services (IIS). Ketika sebuah penjelajah Web milik klien melakukan request kepada halaman Web tersebut dan menemukan bahwa di dalamnya terdapat kode Java applet, bytecode di dalam Java class file akan dieksekusi oleh mesin semu di dalam jendela penjelajah Web, yang dapat berupa Microsoft Java Virtual Machine atau Java Runtime Engine dari Sun Microsystems. 21 Pemrograman Java applet sangat mirip dengan pemrograman Java untuk aplikasi desktop. Yang menjadi perbedaan adalah, banyak sekali aturan yang dibatasi pada Java Applet dibanding dengan pemrograman Java aplikasi untuk desktop, seperti tidak bisa akses file, tidak bisa buka port koneksi jaringan dan fungsi lainnya yang dianggap berbahaya atau kritis oleh Java sistem. Tetapi dengan menambahkan sertifikasi khusus (Java applet signed), kemampuan Java applet bisa ditingkatkan mendekati kemampuan Java aplikasi untuk desktop dalam mengakses hal-hal kritis seperti yang disebutkan diatas. Untuk membuat sertifikasi sendiri (self signed) pada Java applet yang telah dibuat, perlu dilakukan langkah-langkah sebagai berikut: 1. Membuat set kunci. Set kunci bisa dibuat menggunakan perintah bawaan dari Java yaitu “keytool”, perintah lengkapnya adalah: keytool -genkey -alias nama_alias -keystore nama_file_kunci nama_alias adalah sebagai nama pengenal saja, bisa diisikan apapun yang diinginkan, nama_file_kunci merupakan nama file yang akan digunakan untuk menyimpan kunci hasil dari menjalankan perintah “keytool”. Perintah tersebut diketikkan pada jendela “cmd” lalu akan diminta untuk menjawab beberapa pertanyaan yang diperlukan seperti: kata sandi yang ingin digunakan, nama, unit organisasi, nama organisasi, kota, provinsi, serta dua huruf kode negara. 2. Memberikan sertifikasi kepada java applet, menggunakan perintah “jarsigner”, perintah lengkapnya adalah: jarsigner -keystore nama_file_kunci file_jar nama_alias nama_file_kunci dan nama_alias adalah nama file dan nama alias yang digunakan pada langkah pertama diatas. file_jar adalah nama file java applet. Ketikkan perintah tersebut pada jendela “cmd”, lalu akan diminta untuk memasukkan kata sandi seperti yang digunakan pada langkah pertama. 22