HTML тег <applet>
Устаревший HTML тег <applet> встраивал Java-апплеты на страницу. Узнайте, почему он удалён и чем заменён.
Тег <applet> использовался для встраивания Java-апплета — небольшой программы, написанной на Java, — непосредственно в веб-страницу. Он устарел: ни один современный браузер не может запускать апплеты, поэтому тег ничего не делает в актуальных браузерах и не должен применяться на новых страницах. В этой главе объясняется, что делал <applet>, почему он исчез и что использовать сегодня.
Элемент <applet> мог содержать другие HTML-теги и текст между открывающим и закрывающим тегами. Это резервное содержимое отображалось, когда апплет не удавалось загрузить — что сегодня происходит всегда.
Почему <applet> устарел
Java-апплеты зависели от браузерного плагина (Java Plug-in), загружаемого через интерфейс плагинов NPAPI. Этот подход был упразднён по двум причинам:
- NPAPI был удалён из браузеров. Chrome отключил NPAPI по умолчанию в 2015 году и полностью убрал его; Firefox прекратил поддержку плагинов, кроме Flash, в 2017 году. Без NPAPI браузер не может запустить Java Plug-in.
- Java Plug-in достиг конца жизненного цикла. Oracle объявила о планах по снятию браузерного плагина с поддержки в 2016 году, официально признала его устаревшим в JDK 9 (2017) и удалила из JDK с выходом JDK 11 (2018). Даже при наличии совместимого браузера запускать апплеты больше нечем.
Эти изменения были вызваны требованиями безопасности браузеров: встроенные нативные плагины обладали широким доступом к системе и являлись частым источником уязвимостей, поэтому разработчики отказались от них в пользу изолированных технологий веб-платформы.
Чем заменить Java-апплеты сегодня? Прямой замены нет, поскольку сама цель — выполнение произвольного нативного кода на странице — намеренно исключена. Современные аналоги зависят от того, что делал апплет:
- Для вычислений или игр перенесите логику на JavaScript и отрисовывайте с помощью элемента
<canvas>или WebGL. - Для критичного к производительности или существующего нативного кода скомпилируйте его в WebAssembly и вызывайте из JavaScript.
- Для встраивания внешних медиафайлов или документов используйте элементы
<embed>или<object>.
Этот элемент является устаревшим HTML-тегом в HTML 4.01 и полностью исключён из HTML5. Он удалён из стандарта и не работает ни в одном современном браузере. Для новых проектов используйте JavaScript, WebAssembly или элементы <object> / <embed>.
Синтаксис
Тег <applet> используется парно. Содержимое записывается между открывающим (<applet>) и закрывающим (</applet>) тегами.
Пример HTML-тега <applet>:
HTML applet Code 1
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<applet code="game.class" align="left" archive="game.zip" height="250" width="350">
<param name="difficulty" value="easy" />
<b>You need Java to play this game.</b>
</applet>
</body>
</html>Это устаревший пример, приведённый только для справки. Поскольку ни один современный браузер не может загружать Java-апплеты, интерактивный предпросмотр будет пустым — современные браузеры отображают лишь резервное содержимое (в данном случае жирный текст) или вообще ничего. Тег <param> передавал апплету значения конфигурации.
Результат
На скриншоте ниже показано, как работающий апплет выглядел в старом браузере с установленным Java Plug-in.

Замена устаревшего тега с помощью HTML-тега <object>:
В HTML 4.01 элемент <object> был предложен в качестве стандартной замены <applet>. Специфичные для Java значения codetype и classid, показанные ниже, сами по себе устарели и больше не работают ни в одном браузере — они задокументированы лишь для иллюстрации исторического пути миграции, а не как рабочий код.
HTML object example (legacy)
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<object codetype="application/java" classid="java:programmingtutorials.class" height="200" width="200">Programming Tutorials</object>
</body>
</html>Этот фрагмент также будет отображаться пустым в современных браузерах. Для реальных проектов замените функциональность апплета с помощью JavaScript и <canvas>, либо скомпилируйте нативный код в WebAssembly. Элементы <object> и <embed> по-прежнему полезны для встраивания медиафайлов и внешних документов.
Атрибуты
Перечисленные ниже атрибуты применялись только к элементу <applet>. Они устарели и не являются частью какого-либо действующего стандарта HTML — в современных браузерах они не производят никакого эффекта. Таблица приведена исключительно для исторической справки.
| Атрибут | Значение | Описание |
|---|---|---|
| align | left right top bottom middle baseline | Используется для позиционирования апплета относительно других элементов. |
| alt | text | Используется для задания альтернативного текста для апплета. |
| archive | URL | Используется для указания местоположения архивного файла. |
| code | URL | Используется для указания имени Java-апплета. |
| object | name | Используется для задания ссылки на сериализованное представление апплета. |
| codebase | URL | Задаёт относительный базовый URL для апплетов, указанных в атрибуте code. |
| height | pixels | Определяет высоту апплета. |
| hspace | pixels | Используется для задания горизонтального отступа вокруг апплета. |
| name | name | Используется для присвоения имени апплету. |
| vspace | pixels | Используется для задания вертикального отступа вокруг апплета. |
| width | pixel | Используется для определения ширины апплета. |