Предыдущий раздел Уровень выше Следующий раздел

Понятие об аплетах

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

В целях обеспечения безопасности при работе с аплетами им предоставляются значительно меньшие права по сравнению с обычными приложениями, написанными на языке Java. Например, аплет не имеет доступа к файлам, находящимся на диске того компьютера, на котором он запущен. Таким образом, аплеты не могут нанести никакого вреда пользователям сети, например, заразить компьютерным вирусом.

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

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

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

public class Hello extends Applet {
  Color bgColor = new Color(255,255,255);
   
  public void paint(Graphics g){
    setBackground(bgColor);
    g.drawString("Hello!", 20, 20);
  }
}

Данный аплет устанавливает белый цвет в качестве фона и выводит строку текста "Hello!", начиная с позиции, имеющей координаты (20, 20). Для того чтобы это произошло, необходимо откомпилировать код аплета и включить ссылку на него в заранее подготовленный HTML-документ следующей структуры:

<html>
<body>
<applet code="Hello.class" width="100" height="100">
</applet>
</html>
</body>
Если теперь просмотреть эту страницу с помощью браузера, то в его окне появится квадрат со стороной 100 пикелов, в который и будет выведена строка "Hello!".

Программа appletviewer, запускаемая в окне shell, позволит выполнить аплет, не запуская браузер. Эта программа игнорирует все теги HTML-документа, кроме тегов указания аплета (applet, object и embed). Аргументом программы служит имя файла, содержащего HTML-код, например,

appletviewer hello.html

Атрибутами тега applet, предназначенного для включения ссылок на аплеты в HTML-страницы, являются: code - URL аплета, width и height - ширина и высота окна, предоставляемого браузером аплету для рисования.


Пример
Рассмотрим аплет, рисующий график тригонометрической функции y = cos(x) + sin(x/7) + 2.


(выполнить)
import java.awt.*;
import java.applet.*;

public class GraphApplet extends Applet {
  Color bgColor = new Color(255,255,255);

  double f(double x) {
    return (Math.cos(x) + Math.sin(x/7) + 2)
            * getSize().height / 4;
  }

  public void paint(Graphics g) {
    setBackground(bgColor);
    for (int x = 0; x < getSize().width; x++) {
      g.drawLine(x, (int)f(x), x + 1, (int)f(x + 1));
    }
  }
}

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

<applet ...>
<param name="имя" value="значение">
</applet>

Вот пример подобного аплета, предполагающего наличие в HTML-документе параметра, задающего фамилию (name).

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

public class GetPar extends Applet {
  String Name;
    
  public void init() {
    Name = getParameter("name");
    if (Name == null) Name = "не задано";
  }
    
  public void paint(Graphics g) {
    g.drawString("Name: " + Name, 5, 15);
  }
}
Следующий фрагмент HTML-кода передает аплету в качестве параметра строку "Иванов".
<applet code = "GetPar.class",
     width = "200", height = "200">
<param name = "name" value = "Иванов"></param>
</applet>
После запуска этого аплета в окне браузера появится текст
Name: Иванов


Задания

  1. Создайте аплет, рисующий на промежутке [-10; 10] график функции y = x^3 + x^2 - 2*sin(x) + 10.
  2. Измените аплет так, чтобы вместе с графиком функции изображались еще и оси координат.

Предыдущий раздел Уровень выше Следующий раздел