Опубликован: 11.12.2003 | Уровень: специалист | Доступ: платный
Лекция 11:

Пакет java.awt

Апплеты

Перейдем к рассмотрению апплетов ( applets ) – Java-приложений, которые исполняются в браузере как часть HTML-страницы. Это означает, что такие приложения всегда визуальные. Действительно, класс Applet является наследником AWT-компонента Panel. Сам класс находится в пакете java.applet.

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

Важным вопросом для понимания работы апплетов является их жизненный цикл. Он описывается четырьмя методами.

init

Этот метод вызывается браузером при конструировании апплета. Зачастую все инициализирующие действия описываются здесь, а не в конструкторе. Это может быть, например, создание AWT-компонент, запуск потоков исполнения, установление сетевых соединений и т.д.

start

Этот метод вызывается после инициализации апплета. Он нужен по следующей причине. Апплет может содержать какие-то динамические части, например, анимацию или бегущую строку. Если пользователь воспользуется какой-нибудь ссылкой и уйдет со страницы с апплетом, браузер не станет его уничтожать – ведь пользователь может вернуться (нажав в браузере кнопку Back ), и он будет ожидать, что апплет сохранит свое состояние. Значит, апплет может оказаться в неактивном состоянии, когда лучше приостановить динамические процессы для экономии системных ресурсов.

Метод start сигнализирует о переходе в активное состояние.

stop

Этот метод всегда вызывается после метода start и сигнализирует о переходе в пассивное состояние.

destroy

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

В остальном апплет является полноценным AWT-компонентом и в методе init может добавить другие компоненты для создания пользовательского интерфейса, или даже открыть новый фрейм. Единственное, но существенное ограничение – это условие безопасности. Ведь код апплета скачивается по сети, а значит, может содержать в себе опасные действия. Поэтому браузер запускает виртуальную машину с ограничениями – апплетам запрещено обращаться к файловой структуре, запрещено устанавливать сетевые соединения с кем-либо, кроме сервера, откуда они были загружены, все вновь открываемые окна помечаются предупреждением. Более того, пользователь может так настроить свой браузер, что вовсе запретит исполнение Java. Можно, напротив, позволить апплетам то же, что и локальным приложениям.

Есть и еще одно ограничение – версия Java, поддерживаемая браузером. Как говорилось в первой лекции, самый популярный на данный момент браузер – MS Internet Explorer – остановился на поддержке лишь Java 1.1, и то не в полном объеме. В некоторых случаях можно воспользоваться дополнительным продуктом Sun – Java Plug-in, который позволяет установить на браузер JVM любой версии.

Продолжим рассмотрение апплетов.

HTML-тег

Раз апплет является частью HTML -страницы, значит, необходимо каким-то образом указать, где именно он располагается. Для этого служит специальный тег <applet>. Синтаксис тега <APPLET> в настоящее время таков:

<APPLET
   CODE = appletFile
   WIDTH = pixels
   HEIGHT = pixels
   [ARCHIVE = jarFiles]
   [CODEBASE = codebaseURL]
   [ALT = alternateText]
   [NAME = appletInstanceName]
   [ALIGN = alignment]
   [VSPACE = pixels]
   [HSPACE = pixels]
>
[HTML-текст, отображаемый при отсутствии 
поддержки Java]
</APPLET>
  • CODE = appletClassFile ; CODE – обязательный атрибут, задающий имя файла, в котором содержится описание класса апплета. Имя файла задается относительно codebase, то есть либо от текущего каталога, либо от каталога, указанного в атрибуте CODEBASE.
  • WIDTH = pixels
  • HEIGHT = pixels ; WIDTH и HEIGHT - обязательные атрибуты, задающие размер области апплета на HTML -странице.
  • ARCHIVE = jarFiles ; Этот необязательный атрибут задает список jar -файлов (разделяется запятыми), которые предварительно загружаются в Web -браузер. В них могут содержаться классы, изображения, звук и любые другие ресурсы, необходимые апплету. Архивирование наиболее необходимо именно апплетам, так как их код и ресурсы передаются через сеть.
  • CODEBASE = codebaseURL ; CODEBASE – необязательный атрибут, задающий базовый URL кода апплета; является каталогом, в котором будет выполняться поиск исполняемого файла апплета (задаваемого в признаке CODE ). Если этот атрибут не задан, по умолчанию используется каталог данного HTML -документа. С помощью этого атрибута можно на странице одного сайта разместить апплет, находящийся на другом сайте.
  • ALT = alternateAppletText ; Признак ALT – необязательный атрибут, задающий короткое текстовое сообщение, которое должно быть выведено (как правило, в виде всплывающей подсказки при нахождении курсора мыши над областью апплета) в том случае, если используемый браузер распознает синтаксис тега <applet>, но выполнять апплеты не умеет. Это не то же самое, что HTML -текст, который можно вставлять между <applet> и </applet> для браузеров, вообще не поддерживающих апплетов.
  • NAME = appletInstanceName ; NAME – необязательный атрибут, используемый для присвоения имени данному экземпляру апплета. Имена апплетам нужны для того, чтобы другие апплеты на этой же странице могли находить их и общаться с ними, а также для обращений из Java Script.
  • ALIGN = alignment
  • VSPACE = pixels
  • HSPACE = pixels ; Эти три необязательных атрибута предназначены для того же, что и в теге IMG. ALIGN задает стиль выравнивания апплета, возможные значения: LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTTOM, ABSBOTTOM.

Следующие два задают ширину свободного пространства в пикселах сверху и снизу апплета ( VSPACE ), а также слева и справа от него ( HSPACE ).

Приведем пример простейшего апплета:

import java.applet.*;
import java.awt.*;
public class HelloApplet extends Applet {
   public void init() {
      add(new Label("Hello"));
   }
}

HTML-тег для него:

<applet code=HelloApplet.class 
        width=200 height =50>
</applet>
Передача параметров

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

В HTML параметры указываются следующим образом:

<applet code=HelloApplet.class 
        width=200 height =50>
<param name="text" value="Hello!!!">
</applet>

В апплете значение параметров считывается таким образом:

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

public class HelloApplet extends Applet {
   public void init() {
      String text = getParameter("text");
      add(new Label(text));
   }
}

Теперь выводимый текст можно настраивать из HTML.

Интерфейс AppletContext

Доступ к этому интерфейсу из апплета предоставляется методом getAppletContext. С его помощью апплет может взаимодействовать со страницей, откуда он был загружен, и с браузером. Так, именно в этом интерфейсе определен метод getApplet, с помощью которого можно обратиться по имени к другому апплету, находящемуся на той же странице.

Метод showStatus меняет текст поля статуса в окне браузера.

Метод showDocument позволяет загрузить новую страницу в браузер.

Вадим Кудаев
Вадим Кудаев

Добрый день! Начал проходить курс "Программирование на Java". Как я понимаю,курс создавался приблизительно в 2015 году. Не потерял ли данный курс свою актуальность? Стоит ли проходить его в 2023 году, или же лучше найти что-то более новое?

Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Данила Бебчик
Данила Бебчик
Россия, Ставрополь
Дмитрий Логинов
Дмитрий Логинов
Москва, Московский Институт Нефти и Газа им.Губкина, 1990