Основы организации аплетов

Все предшествующие примеры программ в этой книге были консольными приложениями Java. Однако приложения этого типа — только один класс Java-программ. Другой тип программ Java — аплеты. Аплет — это маленькое приложение, которое находится на Internet-сервере, транспортируется по Internet, автоматически инсталлируется и запускается как часть Web-документа. После того, как аплет появляется у клиента, он получает ограниченный доступ к ресурсам так, что он обеспечивает сложный графический пользовательский интерфейс и выполняет сложные вычисления, не подвергая клиента риску вирусной атаки или повреждения целостности его данных.

Многие случаи, связанные с созданием и применением аплетов вы можете найти во второй части книги, где рассматривается пакет applet. Однако основы, имеющие отношение к созданию аплетов, мы рассмотрим прямо сейчас, поскольку аплеты имеют структуру, отличную от программ, с которыми мы имели дело до сих пор в этой книге. Как вы увидите, аплеты отличаются от приложений по нескольким ключевым признакам.

Начнем с простейшего аплета:

import java.awt.*;
import java.applet.*;
public class SimpleApplet extends Applet {
public void paint(Graphics g)
{

Этот аплет начинается с двух операторов import. Первое импортирует классы Abstract Window Toolkit (AWT). Аплеты взаимодействуют с пользователем (непосредственно или опосредованно) через AWT, а не через классы консольного ввода-вывода. Как вы можете предположить, AWT значительно больше и сложнее, и полное обсуждение его возможностей занимает несколько глав во второй части настоящей книги. К счастью, этот простой аплет очень ограниченно использует AWT. (Аплеты также могут использовать Swing для предоставления графического пользовательского интерфейса, но этот подход рассматривается далее в книге.) Второй оператор import импортирует пакет applet, в котором находится класс Applet. Каждый аплет, который вы создадите, должен быть подклассом класса Applet.

g.drawString("Простейший аплет", 20, 20);

Следующая строка в программе объявляет класс SimpleApplet. Этот класс должен быть объявлен как public, чтобы быть доступным коду вне нашей программы.

Внутри SimpleApplet объявлен метод paint (). Этот метод определен AWT и должен быть переопределен нашим аплетом. paint () вызывается всякий раз, когда аплет должен перерисовать свой вывод. Эта ситуация может быть порождена несколькими причинами. Например, окно, в котором аплет запущен, может быть перекрыто другим окном, а затем вновь открыто. Или же окно аплета может быть минимизировано, а затем восстановлено, paint () также вызывается, когда аплет начинает выполнение. Независимо от причины, всякий раз, когда аплет должен перерисовать свое содержимое, вызывается paint (). Метод paint () принимает один параметр типа Graphics. Этот параметр содержит графический контекст, который описывает графическую среду, в которой аплет работает. Этот контекст используется всякий раз, когда запрашивается его вывод. |

Внутри paint () вызывается drawstring (), являющийся методом класса Graphics. Этот метод выводит строку в позиции, заданной координатами X,Y. Он имеет следующую общую форму:

void drawstring (String message, int x, int y)

Здесь message — это строка, которая должна быть выведена в позиции, начиная с х, у. В окне Java верхний левый угол имеет координаты 0,0. Вызов drawString() в аплете отображает отображение строки "Простейший аплет", начиная с позиции 20,20.

Обратите внимание, что аплет не имеет метода main (). В отличие от Java-программ, аплет не начинает выполнение с метода main (). Фактически большинство аплетов даже не имеют этого метода. Вместо этого аплет начинает выполнение, когда имя его класса передается средству просмотра аплетов или сетевому браузеру.

После ввода исходного текста SimpleApplet его компиляция выполняется так же, как компиляция обычных программ. Однако запуск SimpleApplet осуществляется иначе. Фактически есть два способа, которыми можно запустить аплет:

  • Выполнение аплета внутри Java-совместимого браузера.
  • Использование средства просмотра аплетов, такого как стандартный инструмент appletviewer. Он выполняет ваш аплет в окне.
Обычно это самый быстрый и простой способ тестирования аплета.

Ниже подробно описывается каждый из этих способов.

Чтобы выполнить аплет в Web-браузере, вам необходимо написать короткий текстовый HTML-файл, который должен содержать соответствующий дескриптор. В настоящее время Sun рекомендует использовать дескриптор APPLET. Вот пример такого файла, выполняющего аплет SimpleApplet:

Опции width и height указывают размеры области отображения, используемой аплетом. (Дескриптор APPLET содержит несколько других опций, которые рассматриваются более подробно во второй части.) После того, как вы создадите этот файл, вы должны запустить браузер и затем загрузить в него этот файл, что вызовет выполнение SimpleApplet.

Чтобы выполнить SimpleApplet в средстве просмотра аплетов, вы также должны выполнить HTML-файл, показанный выше. Например, если предыдущий HTML-файл называется RunApp. html, то следующая командная строка запустит его на выполнение:

С:\>appletviewer RunApp.html

Однако существует более удобный метод, который ускорит тестирование. Просто включите комментарий в начало исходного файла Java, который указан в дескрипторе APPLET. В результате ваш код будет документирован прототипом необходимых HTML-конструкций, и вы сможете тестировать скомпилированный аплет, запуская средство просмотра аплетов с указанием исходного Java-файла. Если вы прмиеняете этот метод, то исходный файл SimpleApplet должен выглядеть следующим образом:

import java.awt.*;
import java.applet.*;
/*

*/
public class SimpleApplet extends Applet {
public void paint(Graphics g) {
g.drawstring ("A SimpleApplet", 20, 20);
}

При таком подходе вы сможете быстро проходить итерации разработки аплета, выполняя перечисленные ниже три шага.

  1. Редактирование файлы исходного текста Java.
  2. Компиляция программы.
  3. Выполнение средства просмотра аплетов с указанием имени вашего исходного файла. Средство просмотра аплетов обнаружит дескриптор APPLET внутри комментария и запустит ваш аплет.

Окно, порожденное SimpleApplet, как оно будет отображено средством просмотра аплетов, показано на рис. 13.1.

Рис. 13.1. Аплет SimpleApplet во время выполнения

Хотя сущность аплетов будет обсуждаться далее в этой книге, здесь мы укажем ключевые моменты, о которых нужно знать сейчас.

  • Аплеты не нуждаются в методе main ().
  • Аплеты должны запускаться под управлением средства просмотра аплетов или Java-совместимого Web-браузера.
  • Пользовательский ввод-вывод в аплетах не выполняется посредством классов ввода-вывода. Вместо этого аплеты применяют интерфейс, предоставляемый средствами AWT или Swing.