
- •JAVA-ТЕХНОЛОГИЯ
- •Апплеты
- •Пример простейшего апплета
- •HTML-файл FirstApplet.html
- •Пояснения к примеру FirstApplet
- •Пояснения к HTML-файлу FirstApplet.html
- •Архитектура апплета
- •Общение апплета с внешней средой. Безопасность (security) – sandbox model
- •Структура тега applet и параметры апплета
- •Методы вывода информации апплетом
- •Вывод графических образов из апплета (.gif,
- •Проигрывание аудиоклипов из апплета (.au, .wav, .midi)
- •Общение апплета с другими апплетами
- •Обработка событий в апплете
- •Пример: обработка событий мыши (1/4)
- •Пример: обработка событий мыши (2/4)
- •Пример: обработка событий мыши (3/4)
- •Пример: обработка событий мыши (4/4)
- •Новая возможность

JAVA-ТЕХНОЛОГИЯ
Сафонов Владимир Олегович
Профессор кафедры информатики, руководитель лаборатории Java- технологии (http://polyhimnie.math.spbu.ru/jtl)
Email: vosafonov@gmail.com
Лекция 7

Апплеты
Апплет (applet) – (клиентское) Java-приложение специального вида, связанное с HTML-страницей и исполняемое на клиентской машине в процессе интерпретации (rendering) этой HTML-страницы с помощью браузера
Инструменты для исполнения апплетов:
-браузеры: Netscape, Microsoft Internet Explorer, HotJava и др.
-appletviewer – утилита, входящая в состав JDK
Основная функция апплетов - анимация Web-страниц
Особенности организации апплетов:
-applet ~ puppet (“марионетка”, управляемая браузером)
-Реализуется по методологии программирования, управляемого событиями (event-driven programming)
-Не использует метод main (так как запускается и управляется браузером)
Однако допустимо иметь метод main в апплете для его возможного использования в качестве обычного приложения (например, при отладке)
(C) В.О. Сафонов. 2013

Пример простейшего апплета
import java.applet.*; import java.awt.*;
public class FirstApplet extends Applet {
public void paint(Graphics g)
{
g.drawString(”First applet”, 10, 10);
}
} // FirstApplet
(C) В.О. Сафонов. 2013

HTML-файл FirstApplet.html
<html>
<head>
<title> This is my first applet </title> </head>
<body>
<applet codebase=”.” code=FirstApplet.class width=200 height=200>
</applet>
</body>
</html>
(C) В.О. Сафонов. 2013

Пояснения к примеру FirstApplet
java.applet – базовый API (пакет) для работы с апплетами;
Applet – класс пакета java.applet
java.awt – Abstract Windowing Toolkit: базовый API (пакет) для организации GUI; класс Applet – потомок java.awt.Panel
Graphics – класс из пакета java.awt: набор операций двумерной растровой графики. Задает графический контекст апплета
paint – метод, с помощью которого апплет рисует
информацию о себе в своем графическом контексте (области экрана);
остальные базовые методы – init(), start(), stop(),
destroy()
(C) В.О. Сафонов.
2013 наследуются от класса Applet

Пояснения к HTML-файлу FirstApplet.html
title – заголовок, изображаемый в строке для заголовка при просмотре HTML-файла браузером
applet – специальный HTML-тег, введенный для обращения к Java-апплетам; содержит ссылку на код и параметры апплета
браузер, поддерживающий Java (Java enabled browser) – браузер, способный обрабатывать тег applet, либо с помощью встроенной JVM, либо с помощью Java Runtime Environment (JRE), входящей в JDK и подключаемой к браузеру через механизм “plug-in”
Запуск апплета (Solaris) :
netscape FirstApplet.html & |
- с помощью браузера |
appletviewer FirstApplet.html & |
- утилитой appletviewer |
(заголовок не отображается) |
|
(C) В.О. Сафонов. |
|
2013 |
|

Архитектура апплета
Определяется как потомок класса java.applet.Applet
–потомка java.awt.Panel (графического объекта-
контейнера)
Основные методы апплета (исполняются
браузером) :
-public void init() – запускается в момент загрузки
HTML-страницы, содержащей тег applet (инициализация апплета)
-public void start() – запускается при первоначальной или повторной активизации HTML-
страницы (апплета)
-public void stop() – запускается при переходе HTML-
страницы в пассивное состояние для приостановки выполнения апплета
-public void destroy() – запускается при завершении
(C)В.Оапплета. Сафонов. для освобождения занимаемых им ресурсов
2013 - public void paint(Graphics g) – унаследован из

Общение апплета с внешней средой. Безопасность (security) – sandbox model
Написать вирус или сетевого червя в виде Java-апплета невозможно, ввиду ограничений sandbox model (“песочницы”), в которой исполняется апплет
Код апплета и другие его ресурсы (графические образы, звук и др.) размещаются на Web-сервере, предоставляющем набор HTML-страниц
При просмотре HTML-страницы браузером ресурсы апплета по http-протоколу (методом GET) считываются на клиентскую машину. Никаких других ресурсов, рабочих файлов и др. апплет иметь не может (например, ему запрещено читать или изменять локальные клиентские файлы или директории).
Ограничения security для апплета проверяются объектом класса SecurityManager, который в различных браузерах может быть реализован по-разному (с более сильными или более слабыми ограничениями безопасности)
Апплет может устанавливать сетевые соединения только со “своим” сервером:
String host = getCodeBase().getHost();
Апплет может вызывать только свои методы или методы других апплетов, связанных с той же HTML-страницей
Апплет не может загружать библиотеки или определять native-методы
Апплет не имеет права читать ряд системных свойств. Разрешено, например:
String newline = System.getProperty("os.name");
но, например, свойство java.class.path апплет читать не может
Методы апплета, вызываемые браузером, параметров не имеют
Параметры апплета задаются в его HTML-файле и могут быть ссылками на его ресурсы. Они задаются в виде строк
Signed (trusted) applets – апплеты, подписываемые цифровой подписью, которая генерируется и верифицируется утилитой JDK jarsigner (подписывание jar-архива). Для них ограничений security нет, либо они ослаблены. В конечном счете, ограничения безопасности в Java 2 определяются конфигурируемой политикой безопасности и наличием цифровой подписи у кода апплета
(C)В.О. Сафонов.
2013

Структура тега applet и параметры апплета
codebase=URL - базовый URL-адрес директории, содержащей код апплета (по умолчанию URL текущего HTML-документа)
documentbase=URL – базовый URL-адрес директории, содержащей HTML-документ апплета
code=FileName.class - имя файла кода апплета по
адресу codebase
width=mmm height=nnn – размер области показа (графического контекста) апплета в пикселах (pixels)
Параметры апплета (только строковые) :
<applet … >
<param name=N value=V> … </applet>
(C) ВОбращение.О. С фонов. к параметру: getParameter(”N”) – выдает
2013
строку ”V”

Методы вывода информации апплетом
Обычный ввод-вывод не используется: вывод в System.out игнорируется; вывод в локальные файлы запрещен
Вывод выполняется в графический контекст апплета (Graphics g)
Вывод строки в графический контекст:
g.drawString(message, x, y)
Вывод текстового сообщения в строку статуса браузера (внизу) : showStatus(“This is the status of my applet”);
Двумерная графика в графическом контексте апплета:
-установка цвета фона и основного цвета:
setBackground(Color.yellow); setForeground(Color.red);
-fillRect(x1, y1, x2, y2); - заполнение прямоугольника,
ит.д. – см. документацию по java.awt.Graphics
Воспроизведение документа – методом showDocument интерфейса
AppletContext:
AppletContext ac = getAppletContext(); // браузер ac.showDocument (myURL);
(C) В.О. Сафонов. 2013