Java Applet Dijelaskan: Dasar-dasar & Perbedaan Utama
Sebuah applet adalah program Java yang berjalan di dalam browser web. Sebuah applet dapat menjadi aplikasi Java yang berfungsi sepenuhnya karena memiliki seluruh API Java yang tersedia.
Ada beberapa perbedaan penting antara applet dan aplikasi Java mandiri, termasuk yang berikut −
Sebuah applet adalah kelas Java yang memperluas kelas java.applet.Applet.
Metode main() tidak dipanggil pada applet, dan kelas applet tidak akan mendefinisikan main().
Applet dirancang untuk disematkan dalam halaman HTML.
Saat pengguna melihat halaman HTML yang berisi applet, kode applet diunduh ke mesin pengguna.
JVM diperlukan untuk melihat applet. JVM dapat berupa plug-in browser web atau lingkungan runtime terpisah.
JVM pada mesin pengguna membuat instance dari kelas applet dan memanggil berbagai metode selama siklus hidup applet.
Applet memiliki aturan keamanan yang ketat yang ditekankan oleh browser web. Keamanan applet sering disebut sebagai sandbox security, membandingkan applet dengan anak bermain di kotak pasir dengan berbagai aturan yang harus diikuti.
Kelas lain yang dibutuhkan applet dapat diunduh dalam satu file Java Archive (JAR).
Siklus Hidup Applet
Empat metode dalam kelas Applet memberikan kerangka kerja di mana Anda membangun applet serius −
init − Metode ini dimaksudkan untuk inisialisasi apa pun yang dibutuhkan untuk applet Anda. Ini dipanggil setelah tag param di dalam tag applet telah diproses.
start − Metode ini secara otomatis dipanggil setelah browser memanggil metode init. Ini juga dipanggil setiap kali pengguna kembali ke halaman yang berisi applet setelah pergi ke halaman lain.
stop − Metode ini secara otomatis dipanggil ketika pengguna pindah dari halaman tempat applet berada. Oleh karena itu, ini dapat dipanggil berulang kali dalam applet yang sama.
destroy − Metode ini hanya dipanggil ketika browser ditutup secara normal. Karena applet dimaksudkan untuk hidup di halaman HTML, Anda tidak seharusnya biasanya menyisakan sumber daya setelah pengguna meninggalkan halaman yang berisi applet.
paint − Dipanggil segera setelah metode start(), dan juga setiap kali applet perlu menggambar ulang dirinya di browser. Metode paint() sebenarnya diwarisi dari java.awt.
Applet "Hello, World"
Berikut adalah applet sederhana bernama HelloWorldApplet.java −
import java.applet.*; import java.awt.*; public class HelloWorldApplet extends Applet { public void paint (Graphics g) { g.drawString ("Hello World", 25, 50); } } Pernyataan impor ini membawa kelas ke dalam cakupan kelas applet kami −
- java.applet.Applet
- java.awt.Graphics
Tanpa pernyataan impor tersebut, compiler Java tidak akan mengenali kelas Applet dan Graphics, yang dirujuk oleh kelas applet.
Kelas Applet
Setiap applet adalah perluasan dari kelas java.applet.Applet. Kelas Applet dasar menyediakan metode yang dapat dipanggil oleh kelas Applet turunan untuk mendapatkan informasi dan layanan dari konteks browser.
Ini termasuk metode yang melakukan hal berikut −
- Mendapatkan parameter applet
- Mendapatkan lokasi jaringan file HTML yang berisi applet
- Mendapatkan lokasi jaringan direktori kelas applet
- Mencetak pesan status di browser
- Mengambil gambar
- Mengambil klip audio
- Memutar klip audio
- Mengubah ukuran applet
Selain itu, kelas Applet menyediakan antarmuka melalui mana penampil atau browser mendapatkan informasi tentang applet dan mengontrol eksekusi applet. Penampil dapat −
- Meminta informasi tentang penulis, versi, dan hak cipta applet
- Meminta deskripsi parameter yang dikenali applet
- Menginisialisasi applet
- Menghancurkan applet
- Memulai eksekusi applet
- Menghentikan eksekusi applet
Kelas Applet menyediakan implementasi default dari masing-masing metode ini. Implementasi tersebut dapat diganti sesuai kebutuhan.
Applet "Hello, World" sudah lengkap sebagaimana adanya. Satu-satunya metode yang diganti adalah metode paint.
Memanggil Applet
Sebuah applet dapat dipanggil dengan menyematkan direktif dalam file HTML dan melihat file melalui penampil applet atau browser yang mendukung Java.
Tag <applet> adalah dasar untuk menyematkan applet dalam file HTML. Berikut adalah contoh yang memanggil applet "Hello, World" −
<html> <title>The Hello, World Applet</title> <hr> <applet code = "HelloWorldApplet.class" width = "320" height = "120"> Jika browser Anda mendukung Java, pesan "Hello, World" akan muncul di sini. </applet> <hr> </html>
Catatan − Anda dapat merujuk ke Tag Applet HTML untuk mempelajari lebih lanjut tentang memanggil applet dari HTML.
Atribut code dari tag <applet> diperlukan. Ini menentukan kelas Applet yang akan dijalankan. Lebar dan tinggi juga diperlukan untuk menentukan ukuran awal panel tempat applet berjalan. Direktif applet harus ditutup dengan tag </applet>.
Jika applet mengambil parameter, nilai dapat diteruskan untuk parameter dengan menambahkan tag <param> di antara <applet> dan </applet>. Browser mengabaikan teks dan tag lain di antara tag applet.
Browser yang tidak mendukung Java tidak memproses <applet> dan </applet>. Oleh karena itu, apa pun yang muncul di antara tag yang tidak terkait dengan applet, terlihat di browser yang tidak mendukung Java.
Penampil atau browser mencari kode Java yang telah dikompilasi di lokasi dokumen. Untuk menentukan hal lain, gunakan atribut codebase dari tag <applet> seperti yang ditunjukkan −
<applet codebase = "https://amrood.com/applets" code = "HelloWorldApplet.class" width = "320" height = "120">
Jika applet berada dalam paket selain default, paket yang memuatnya harus ditentukan dalam atribut code menggunakan karakter titik (.) untuk memisahkan komponen paket/kelas. Misalnya −
<applet = "mypackage.subpackage.TestApplet.class" width = "320" height = "120">
Mendapatkan Parameter Applet
Contoh berikut menunjukkan cara membuat applet merespons parameter penyiapan yang ditentukan dalam dokumen. Applet ini menampilkan pola papan catur hitam dan waris kedua.
Warna kedua dan ukuran setiap persegi dapat ditentukan sebagai parameter untuk applet dalam dokumen.
CheckerApplet mendapatkan parameter-nya dalam metode init(). Ini juga dapat mendapatkan parameter-nya dalam metode paint(). Namun, mendapatkan nilai dan menyimpan pengaturan sekali pada awal applet, alih-alih pada setiap refresh, lebih nyaman dan efisien.
Penampil applet atau browser memanggil metode init() dari setiap applet yang dijalankan. Penampil memanggil init() sekali, segera setelah memuat applet. (Applet.init() diimplementasi untuk tidak melakukan apa-apa.) Ganti implementasi default untuk menyisipkan kode inisialisasi khusus.
Metode Applet.getParameter() mengambil parameter dengan nama parameter (nilai parameter selalu berupa string). Jika nilai numerik atau data non-karakter lain, string harus diurai.
Berikut adalah kerangka CheckerApplet.java −
import java.applet.*; import java.awt.*; public class CheckerApplet extends Applet { int squareSize = 50; // initialized to default size public void init() {} private void parseSquareSize (String param) {} private Color parseColor (String param) {} public void paint (Graphics g) {} } Berikut adalah metode init() dan parseSquareSize() pribadi CheckerApplet −
public void init () { String squareSizeParam = getParameter ("squareSize"); parseSquareSize (squareSizeParam); String colorParam = getParameter ("color"); Color fg = parseColor (colorParam); setBackground (Color.black); setForeground (fg); } private void parseSquareSize (String param) { if (param == null) return; try { squareSize = Integer.parseInt (param); } catch (Exception e) { // Let default value remain } } Applet memanggil parseSquareSize() untuk mengurai parameter squareSize. parseSquareSize() memanggil metode perpustakaan Integer.parseInt(), yang mengurai string dan mengembalikan integer. Integer.parseInt() melempar pengecualian setiap kali argumennya tidak valid.
Oleh karena itu, parseSquareSize() menangkap pengecualian, alih-alih membiarkan applet gagal pada input yang buruk.
Applet memanggil parseColor() untuk mengurai parameter color menjadi nilai Color. parseColor() melakukan serangkaian perbandingan string untuk mencocokkan nilai parameter dengan nama warna yang telah ditentukan. Anda perlu mengimplementasikan metode ini untuk membuat applet ini berfungsi.
Menentukan Parameter Applet
Berikut adalah contoh file HTML dengan CheckerApplet yang disematkan di dalamnya. File HTML menentukan kedua parameter untuk applet melalui tag <param>.
<html> <title>Checkerboard Applet</title> <hr> <applet code = "CheckerApplet.class" width = "480" height = "320"> <param name = "color" value = "blue"> <param name = "squaresize" value = "30"> </applet> <hr> </html>
Catatan − Nama parameter tidak peka huruf besar-kecil.
Konversi Aplikasi ke Applet
Mudah untuk mengonversi aplikasi Java grafis (yaitu, aplikasi yang menggunakan AWT dan dapat Anda jalankan dengan peluncur program Java) menjadi applet yang dapat Anda sematkan di halaman web.
Berikut adalah langkah-langkah spesifik untuk mengonversi aplikasi menjadi applet.
Buat halaman HTML dengan tag yang sesuai untuk memuat kode applet.
Berikan subclass dari kelas JApplet. Buat kelas ini publik. Jika tidak, applet tidak dapat dimuat.
Hapus metode main dalam aplikasi. Jangan membuat jendela frame untuk aplikasi. Aplikasi Anda akan ditampilkan di dalam browser.
Pindahkan kode inisialisasi dari konstruktor jendela frame ke metode init applet. Anda tidak perlu secara eksplisit membuat objek applet. Browser membuat instance untuk Anda dan memanggil metode init.
Hapus panggilan ke setSize; untuk applet, pengaturan ukuran dilakukan dengan parameter lebar dan tinggi dalam file HTML.
Hapus panggilan ke setDefaultCloseOperation. Sebuah applet tidak dapat ditutup; ia berakhir ketika browser keluar.
Jika aplikasi memanggil setTitle, hapus panggilan ke metode tersebut. Applet tidak dapat memiliki bilah judul. (Tentu saja, Anda dapat memberi judul pada halaman web itu sendiri, menggunakan tag title HTML.)
Jangan memanggil setVisible(true). Applet ditampilkan secara otomatis.
Penanganan Peristiwa
Applet mewarisi sekelompok metode penanganan peristiwa dari kelas Container. Kelas Container mendefinisikan beberapa metode, seperti processKeyEvent dan processMouseEvent, untuk menangani jenis peristiwa tertentu, dan kemudian satu metode catch-all yang disebut processEvent.
Untuk bereaksi terhadap peristiwa, sebuah applet harus mengganti metode khusus peristiwa yang sesuai.
import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import java.applet.Applet; import java.awt.Graphics; public class ExampleEventHandling extends Applet implements MouseListener { StringBuffer strBuffer; public void init() { addMouseListener(this); strBuffer = new StringBuffer(); addItem("initializing the apple "); } public void start() { addItem("starting the applet "); } public void stop() { addItem("stopping the applet "); } public void destroy() { addItem("unloading the applet"); } void addItem(String word) { System.out.println(word); strBuffer.append(word); repaint(); } public void paint(Graphics g) { // Draw a Rectangle around the applet's display area. g.drawRect(0, 0, getWidth() - 1, getHeight() - 1); // display the string inside the rectangle. g.drawString(strBuffer.toString(), 10, 20); } public void mouseEntered(MouseEvent event) { } public void mouseExited(MouseEvent event) { } public void mousePressed(MouseEvent event) { } public void mouseReleased(MouseEvent event) { } public void mouseClicked(MouseEvent event) { addItem("mouse clicked! "); } } Sekarang, mari kita panggil applet ini sebagai berikut −
<html> <title>Event Handling</title> <hr> <applet code = "ExampleEventHandling.class" width = "300" height = "300"> </applet> <hr> </html>
Awalnya, applet akan menampilkan "initializing the applet. Starting the applet." Kemudian setelah Anda klik di dalam persegi panjang, "mouse clicked" juga akan ditampilkan.
Menampilkan Gambar
Sebuah applet dapat menampilkan gambar dengan format GIF, JPEG, BMP, dan lainnya. Untuk menampilkan gambar dalam applet, Anda menggunakan metode drawImage() yang ditemukan dalam kelas java.awt.Graphics.
Berikut adalah contoh yang menggambarkan semua langkah untuk menampilkan gambar −
import java.applet.*; import java.awt.*; import java.net.*; public class ImageDemo extends Applet { private Image image; private AppletContext context; public void init() { context = this.getAppletContext(); String imageURL = this.getParameter("image"); if(imageURL == null) { imageURL = "java.jpg"; } try { URL url = new URL(this.getDocumentBase(), imageURL); image = context.getImage(url); } catch (MalformedURLException e) { e.printStackTrace(); // Display in browser status bar context.showStatus("Could not load image!"); } } public void paint(Graphics g) { context.showStatus("Displaying image"); g.drawImage(image, 0, 0, 200, 84, null); g.drawString("www.javalicense.com", 35, 100); } } Sekarang, mari kita panggil applet ini sebagai berikut −
<html> <title>The ImageDemo applet</title> <hr> <applet code = "ImageDemo.class" width = "300" height = "200"> <param name = "image" value = "java.jpg"> </applet> <hr> </html>
Memutar Audio
Sebuah applet dapat memutar file audio yang diwakili oleh antarmuka AudioClip dalam paket java.applet. Antarmuka AudioClip memiliki tiga metode, termasuk −
public void play() − Memutar klip audio satu kali, dari awal.
public void loop() − Membuat klip audio diputar berulang kali.
public void stop() − Menghentikan pemutaran klip audio.
Untuk mendapatkan objek AudioClip, Anda harus memanggil metode getAudioClip() dari kelas Applet. Metode getAudioClip() mengembalikan segera, terlepas dari apakah URL menyelesaikan ke file audio yang sebenarnya. File audio tidak diunduh sampai upaya dilakukan untuk memutar klip audio.
Berikut adalah contoh yang menggambarkan semua langkah untuk memutar audio −
import java.applet.*; import java.awt.*; import java.net.*; public class AudioDemo extends Applet { private AudioClip clip; private AppletContext context; public void init() { context = this.getAppletContext(); String audioURL = this.getParameter("audio"); if(audioURL == null) { audioURL = "default.au"; } try { URL url = new URL(this.getDocumentBase(), audioURL); clip = context.getAudioClip(url); } catch (MalformedURLException e) { e.printStackTrace(); context.showStatus("Could not load audio file!"); } } public void start() { if(clip != null) { clip.loop(); } } public void stop() { if(clip != null) { clip.stop(); } } } Sekarang, mari kita panggil applet ini sebagai berikut −
<html> <title>The ImageDemo applet</title> <hr> <applet code = "ImageDemo.class" width = "0" height = "0"> <param name = "audio" value = "test.wav"> </applet> <hr> </html>
Anda dapat menggunakan test.wav pada PC Anda untuk menguji contoh di atas.