Tagi HTML: applet

6 min. czytania

Cześć! Witaj na moim blogu poświęconym programowaniu w HTML, CSS i JavaScript. Dziś zaglądamy do historii tagu <applet> – czym był, jak działał, jakie miał atrybuty i dlaczego nie warto używać go w nowych projektach. Zaczynamy!

Co to jest tag <applet> i do czego służył?

Tag <applet> był dawniej standardowym sposobem na osadzanie apletów Java bezpośrednio w HTML. Pozwalał uruchamiać w przeglądarce interaktywne miniaplikacje, animacje i gry, jeśli użytkownik miał zainstalowaną Java Virtual Machine.

W latach 90. i na początku 2000. dawał namiastkę dynamiki na stronach. Już w HTML 4.01 został oznaczony jako zdeprecjonowany, a w HTML5 całkowicie usunięty.

Dzisiejsze przeglądarki nie obsługują apletów Java, a ich uruchamianie wymaga przestarzałych i niezalecanych wtyczek.

Dlaczego porzucono <applet>? Przede wszystkim z powodów bezpieczeństwa oraz przez rozwój JavaScript i WebAssembly, które wyparły Javę z front-endu.

Składnia i podstawowy przykład użycia

Podstawowa składnia tagu <applet> obejmowała wskazanie klasy Javy oraz wymiarów. Parametry przekazywało się przez <param>:

<applet code="NazwaKlasy.class" width="200" height="100">
<param name="parametr" value="wartość">
Alternatywny tekst, jeśli aplet nie działa.
</applet>

Atrybut code wskazywał plik .class głównej klasy, a element <param> służył do konfiguracji apletu (np. przekazania wiadomości do wyświetlenia).

Prosty przykład – klasyczny „Hello World” z parametrem:

<!DOCTYPE html>
<html>
<head>
<title>Przykład apletu Hello World</title>
</head>
<body>
<applet code="HelloWorld.class" width="300" height="100">
<param name="message" value="Witaj w świecie apletów Java!">
Twoja przeglądarka nie obsługuje apletów. Użyj <a href="nowoczesna-alternatywa.html">nowoczesnej wersji</a>.
</applet>
</body>
</html>

Kod Javy odczytujący parametr wyglądał tak:

import java.applet.Applet;
import java.awt.Graphics;

public class HelloWorld extends Applet {
String message;

public void init() {
message = getParameter("message");
}

public void paint(Graphics g) {
g.drawString(message, 20, 20);
}
}

Uwaga: współcześnie ten kod nie zadziała w przeglądarkach bez archaicznych wtyczek – to wyłącznie demonstracja historyczna.

Pełna lista atrybutów tagu <applet>

Poniżej znajdziesz najważniejsze atrybuty ze specyfikacji HTML 4.01:

Atrybut Opis Przykładowa wartość Wymagany?
align Wyrównanie apletu względem tekstu (top, middle, bottom, left, right). align="middle" Nie
alt Tekst alternatywny wyświetlany, gdy aplet się nie ładuje. alt="Grafika ładowania..." Nie
archive Ścieżka do archiwum JAR (szybsze ładowanie wielu klas). archive="applet.jar" Nie
border Grubość ramki wokół apletu (px). border="2" Nie
codebase Bazowy URL dla plików apletu. codebase="/applety/" Nie
height Wysokość apletu w pikselach. height="200" Tak
hspace Poziome odstępy wokół apletu. hspace="10" Nie
mayscript Pozwala apletowi wywoływać JavaScript na stronie. mayscript="true" Nie
name Nazwa apletu (odwołania w skryptach). name="mojAplet" Nie
vspace Pionowe odstępy wokół apletu. vspace="5" Nie
width Szerokość apletu w pikselach. width="400" Tak

Przykład z wieloma atrybutami – aplet kalkulatora z parametrami:

<applet
code="Kalkulator.class"
codebase="/java/"
archive="kalkulator.jar"
width="250"
height="150"
align="middle"
hspace="20"
vspace="10"
alt="Prosty kalkulator Java"
mayscript="true"
name="kalkulatorAplet">
<param name="operacja" value="dodawanie">
<param name="liczba1" value="5">
<param name="liczba2" value="3">
</applet>

Dzięki mayscript aplet mógł komunikować się z JavaScriptem strony.

Porównanie z innymi tagami do osadzania treści

W HTML5 preferowane są nowocześniejsze mechanizmy. Poniżej krótkie porównanie:

Tag Zastosowanie Obsługa w HTML5 Bezpieczeństwo Przykład użycia
<applet> Aplety Java (przestarzałe) Nie Niskie Legacy code
<embed> Ogólne osadzanie (np. PDF) Tak Średnie <embed src="plik.pdf">
<object> Osadzanie z kontrolą typu i fallbackiem Tak Średnie <object data="plik.pdf">
<iframe> Osadzanie stron/ramki Tak Wysokie (sandbox) <iframe src="app.html">
<canvas> Rysowanie i animacje przez JS Tak Wysokie Render 2D/3D

Zalecenie: w 2026 roku stawiaj na <canvas>, WebGL/WebGPU i JavaScript, a pluginy osadzaj tylko świadomie przez <object> lub <embed>.

Przykłady zaawansowane i interakcja z JavaScript

W erze sprzed HTML5 aplety mogły wywoływać JavaScript dzięki mayscript. Przykład HTML:

<applet code="Komunikator.class" name="komunikator" mayscript="true" width="200" height="100">
<param name="wiadomosc" value="Cześć z Java!">
</applet>

<button onclick="wywolajAplet()">Wywołaj aplet</button>

<script>
function wywolajAplet() {
document.applets['komunikator'].zrobCos(); // Wywołanie metody Java
}
</script>

Kod Javy (wywoływana metoda):

import java.applet.Applet;

public class Komunikator extends Applet {
public void zrobCos() {
getAppletContext().showStatus("Działa!");
}
}

Takie integracje działały w dawnych przeglądarkach (Netscape, IE6), dziś są praktycznie niemożliwe i niezalecane.

Dlaczego nie używać <applet> w nowych projektach? Nowoczesne alternatywy

  1. Brak wsparcia – przeglądarki jak Chrome, Firefox i Edge usunęły wtyczkę Java w latach 2016–2017;
  2. Bezpieczeństwo – aplety były wektorem ataków (liczne exploity);
  3. Wydajność – natywny JavaScript jest lżejszy i szybszy;
  4. Standardy – HTML5 promuje działanie bez wtyczek.

Nowoczesne zamienniki – oto sprawdzone kierunki:

  • animacje i gry<canvas> + JavaScript lub Three.js;
  • aplikacje interaktywne – WebAssembly (C++/Rust → WASM);
  • osadzanie podstron<iframe sandbox> z odpowiednimi politykami zabezpieczeń.

Przykład „Hello World” na <canvas> – prosty odpowiednik bez Javy:

<!DOCTYPE html>
<html>
<body>
<canvas id="canvas" width="300" height="100" style="border:1px solid #ccc;"></canvas>
<script>
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'blue';
ctx.font = '16px sans-serif';
ctx.fillText('Witaj w Canvas! (z JS)', 10, 50);
</script>
</body>
</html>

To rozwiązanie działa we wszystkich współczesnych przeglądarkach – bez wtyczek i zbędnych ryzyk.