Иллюстрированный самоучитель по Java

Апплеты

До сих пор мы создавали приложения (applications), работающие самостоятельно (standalone) в JVM под управлением графической оболочки операционной системы. Эти приложения имели собственное окно верхнего уровня типа Frame, зарегистрированное в оконном менеджере (window manager) графической оболочки.

Кроме приложений, язык Java позволяет создавать апплеты (applets). Это программы, работающие в среде другой программы – браузера. Апплеты не нуждаются в окне верхнего уровня – им служит окно браузера. Они не запускаются JVM – их загружает браузер, который сам запускает JVM для выполнения апплета. Эти особенности отражаются на написании программы апплета.

С точки зрения языка Java, апплет – это всякое расширение класса Applet, который, в свою очередь, расширяет класс panel. Таким образом, апплет – это панель специального вида, контейнер для размещения компонентов с дополнительными свойствами и методами. Менеджером размещения компонентов по умолчанию, как и в классе Panel, служит FiowLayout. Класс Applet находится в пакете java .applet, в котором кроме него есть только три интерфейса, реализованные в браузере. Надо заметить, что не все браузеры реализуют эти интерфейсы полностью.

Поскольку JVM не запускает апплет, отпадает необходимость в методе main (), его нет в апплетах.

В апплетах редко встречается конструктор. Дело в том, что при запуске первого создается его контекст. Во время выполнения конструктора контекст еще не сформирован, поэтому не все начальные значения удается определить в конструкторе.

Начальные действия, обычно выполняемые в конструкторе и методе main(), в апплете записываются в метод init() класса Applet. Этот метод автоматически запускается исполняющей системой Java браузера сразу же после загрузки апплета. Вот как он выглядит в исходном коде класса Applet:

public void init(){}

Негусто! Метод init () не имеет аргументов, не возвращает значения и должен переопределяться в каждом апплете-подклассе класса Applet. Обратные действия – завершение работы, освобождение ресурсов – записываются при необходимости в метод destroy (), тоже выполняющийся автоматически при выгрузке апплета. В классе Applet есть пустая реализация этого метода.

Кроме методов init() и destroy() в классе Applet присутствуют еще два пустых метода, выполняющихся автоматически. Браузер должен обращаться к методу start() при каждом появлении апплета на экране и обращаться к методу stop(), когда апплет уходит с экрана. В методе stop() можно определить действия, приостанавливающие работу апплета, в методе start() – возобновляющие ее. Надо сразу же заметить, что не все браузеры обращаются к этим методам как должно. Работу указанных методов можно пояснить простым житейским примером.

Приехав весной на дачный участок, вы прокладываете водопроводные трубы, прикручиваете краны, протягиваете шланги – выполняете метод init () для своей оросительной системы. После этого, приходя на участок, включаете краны – запускаете метод start(), а уходя, выключаете их – выполняете метод stop(). Наконец, осенью вы разбираете оросительную систему, отвинчиваете краны, просушиваете и укладываете водопроводные трубы – выполняете метод destroy().

Все эти методы в апплете необязательны. В листинге 14.1 записан простейший апплет, выполняющий вечную программу HelloWorid.

Листинг 14.1. Апплет HelloWorld.

import java.awt.*;
import java.applet.*;
public class HeiioWorid extends Applet{
public void paint(Graphics g){
g.drawstring("Hello, XXI century World 1 ", 10, 30);
}
}

Эта программа записывается в файл HelloWorld.java и компилируется как обычно: javac HelloWorld.java.

Компилятор создает файл HelloWorkLclass, но воспользоваться для его выполнения интерпретатором java теперь нельзя – нет метода jnainо. Вместо интерпретации надо дать указание браузеру для запуска апплета.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.