W3docs

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.

Java-апплет с игрой, отображённый в старом браузере с 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 — в современных браузерах они не производят никакого эффекта. Таблица приведена исключительно для исторической справки.

АтрибутЗначениеОписание
alignleft right top bottom middle baselineИспользуется для позиционирования апплета относительно других элементов.
alttextИспользуется для задания альтернативного текста для апплета.
archiveURLИспользуется для указания местоположения архивного файла.
codeURLИспользуется для указания имени Java-апплета.
objectnameИспользуется для задания ссылки на сериализованное представление апплета.
codebaseURLЗадаёт относительный базовый URL для апплетов, указанных в атрибуте code.
heightpixelsОпределяет высоту апплета.
hspacepixelsИспользуется для задания горизонтального отступа вокруг апплета.
namenameИспользуется для присвоения имени апплету.
vspacepixelsИспользуется для задания вертикального отступа вокруг апплета.
widthpixelИспользуется для определения ширины апплета.

Практика

Практика
Какие из следующих утверждений о HTML-теге <applet> верны?
Какие из следующих утверждений о HTML-теге <applet> верны?
Was this page helpful?