Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java-апплеты: основы, жизненный цикл и ключевые отличия от приложений

Что такое апплет?

Апплет (Applet) — это Java-программа, предназначенная для запуска в веб-браузере. В отличие от обычных приложений, апплеты не имеют метода main() и управляются браузером через специальный жизненный цикл.

Важно: Технология апплетов устарела (deprecated) начиная с Java 9 и полностью удалена в Java 17+. Современные браузеры больше не поддерживают NPAPI-плагины, необходимые для запуска апплетов. Эта информация приведена в образовательных целях и для поддержки legacy-систем.

Ключевые отличия апплетов от обычных приложений

ХарактеристикаАпплетОбычное приложение
Базовый классНаследует java.applet.Applet (или JApplet для Swing)Любой класс с main()
Точка входаНет main(); управляется браузеромМетод public static void main(String[])
РазмещениеВстраивается в HTML-страницу (<applet> или <object>)Запускается из командной строки
ЗагрузкаКод загружается по сети на машину пользователяЗапускается локально
БезопасностьСтрогая «песочница» (sandbox): нет доступа к ФС, сети (кроме хоста загрузки), системным свойствамПолные права (при подписанном коде)
РесурсыМогут упаковываться в JARЛюбые ресурсы

Жизненный цикл апплета

Класс Applet предоставляет 5 ключевых методов, которые вызывает браузер/апплет-вьювер:

  1. init() — однократная инициализация (параметры, ресурсы). Вызывается после обработки тегов <param>.
  2. start() — запуск/возобновление выполнения (при входе на страницу). Вызывается после init() и каждый раз при возврате на страницу.
  3. stop() — приостановка (при уходе со страницы). Может вызываться многократно.
  4. destroy() — финализация при закрытии браузера/вьювера. Освобождение ресурсов.
  5. paint(Graphics g) — отрисовка интерфейса. Вызывается после start() и при необходимости перерисовки.

Простейший апплет «Hello World»

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

public class HelloWorldApplet extends Applet {
    @Override
    public void paint(Graphics g) {
        g.drawString("Hello World", 25, 50);
    }
}

Запуск апплета из HTML

Используется тег <applet> (устарел в HTML5) или <object>:

<html>
<title>Пример апплета</title>
<body>
<applet code="HelloWorldApplet.class" width="320" height="120">
    Ваш браузер не поддерживает Java-апплеты.
</applet>
</body>
</html>

Атрибуты: code — имя класса, width/height — размеры. Для классов в пакетах: code="com.example.MyApplet.class". Атрибут codebase задаёт базовый URL для загрузки классов.

Передача параметров апплету

Через теги <param> внутри <applet>:

<applet code="CheckerApplet.class" width="480" height="320">
    <param name="color" value="blue">
    <param name="squaresize" value="30">
</applet>

В коде апплета: String color = getParameter("color"); (возвращает String, нужно парсить числа).

Работа с изображениями и звуком

Изображения

Image img = getImage(getDocumentBase(), "image.jpg"); // относительный URL
// в paint():
g.drawImage(img, x, y, this);

Звук

AudioClip clip = getAudioClip(getDocumentBase(), "sound.au");
clip.play();    // один раз
clip.loop();    // циклически
clip.stop();    // остановить

Обработка событий

Апплеты наследуют обработку событий от Container. Переопределяйте методы processMouseEvent, processKeyEvent или реализуйте слушатели (Listener'ы):

public class EventApplet extends Applet implements MouseListener {
    public void init() { addMouseListener(this); }
    public void mouseClicked(MouseEvent e) { /* реакция */ }
    // остальные методы интерфейса...
}

Преобразование приложения в апплет

  1. Создайте HTML-страницу с тегом <applet>.
  2. Наследуйтесь от JApplet (Swing) или Applet (AWT).
  3. Удалите main() и создание фрейма (JFrame).
  4. Перенесите инициализацию в init().
  5. Уберите setSize(), setVisible(true), setDefaultCloseOperation() — размер задаётся в HTML, окно управляется браузером.
  6. Вместо setTitle() используйте HTML-тег <title>.

Исторический контекст и альтернативы

Апплеты были популярны в 1990-х и 2000-х для интерактивного веба (графики, калькуляторы, игры). Их вытеснили:

java

  1. Освоение операторов Java: типы, синтаксис и практические примеры
  2. Комментарии в Java: типы, использование и лучшие практики
  3. Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
  4. Освоение строк в Java: создание, методы и лучшие практики
  5. Интерфейсы в Java: концепции, реализация и лучшие практики
  6. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  7. Try-with-resources в Java: автоматическое управление ресурсами
  8. Аннотации в Java: типы, размещение и практические примеры
  9. Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
  10. Понимание Java Vector: использование, особенности и сравнение с ArrayList