Андрей Смирнов
Время чтения: ~26 мин.
Просмотров: 3

Java-апплет

Внедрение апплета в веб-приложение

Итак, создание апплета завершено. Теперь необходимо предоставить к нему доступ пользователю. Для этого необходимо создать веб-приложение, добавить апплет JAR в путь к его классам, а затем добавить тег апплета в файл HTML веб-приложения.

Создание веб-проекта

  1. Выберите команду «Файл» > «Новый проект».
  2. В категории Java Web выберите ‘Веб-приложение’. Нажмите кнопку «Далее».
  3. В области «Имя проекта» введите HelloWebApplet.
  4. В области «Расположение проекта» укажите любую папку на своем компьютере. Нажмите кнопку «Далее».
  5. Выберите целевой сервер. Нажмите кнопку «Завершить».

Добавление файла JAR апплета в веб-проект

Когда нужно включить файл апплета в формате JAR в веб-проект, можно добавить либо проект Java, содержащий файл JAR file, либо добавить сам файл JAR. Можно выбрать любой из вариантов, однако следует учесть, что при добавлении проекта Java в веб-проект среда IDE запускает сборку апплета при каждой сборке веб-приложения. Таким образом, если вы изменяете апплет в проекте Java, среда IDE собирает новую версию апплета каждый раз при сборке веб-проекта. С другой стороны, если файл JAR апплета не находится в проекте IDE NetBeans, исходный файл апплета не перестраивается при построении веб-проекта.

Примечание. Если на этом этапе используется проект HelloApplet в IDE файл HelloApplet.jar отсутствует. Это нормально. Файл HelloApplet.jar будет собран при сборке проекта HelloWebApplet.

  1. В окне ‘Проекты’ щелкните правой кнопкой мыши узел проекта HelloWebApplet и выберите ‘Свойства’ в контекстном меню.
  2. Выберите категорию ‘Упаковка’.
  3. Выполните одно из следующих действий.
    • Если апплет находится в проекте Java, нажмите ‘Добавить проект’ и найдите каталог этого проекта Java. Щелкните Add JAR/Folder («Добавить JAR/Папку»).

      Примечание. Проекты IDE помечены специальным значком ‘Проект NetBeans IDE’.

    • Если используемый файл апплета JAR не входит в проект IDE, нажмите ‘Добавить файл/папку’ и найдите папку с файлом JAR. Нажмите ‘Выбрать’.
  4. Убедитесь, что JAR с исходным файлом апплета отображается в таблице в окне ‘Свойства проекта’. Нажмите кнопку «ОК».

    По умолчанию файл JAR апплета будет скопирован в библиотеку страницы веб-приложения (папку build/web ). Папка build/web является корневым каталогом приложения и отображается в таблице как «» в переменной Path в столбце WAR. Вы можете изменить расположение апплета в WAR. Для этого введите новое расположение апплета в переменной Path в столбце WAR.

  5. Нажмите ОК, чтобы закрыть диалоговое окно ‘Свойства проекта’.

При сборке проекта HelloWebApplet с помощью команды ‘Выполнить > Собрать проект (HelloWebApplet)’ главного меню IDE JAR-файл апплета создается в исходном проекте HelloApplet и упаковывается в WAR-файл проекта HelloWebApplet. Он также добавляется в папку build/web. Следить за процессом можно в окне «Результат», а конечный результат можно посмотреть в окне «Файлы».

Создание и запуск файла JSP или HTML

  1. Выполните одно из следующих действий.
    • Если необходимо встроить апплет в файл JSP, дважды нажмите стандартный файл index.jsp в окне «Свойства». Этот файл создается средой IDE при создании веб-проекта. Файл открывается в редакторе исходного кода.
    • Если необходимо внедрить апплет в файл HTML, щелкните правой кнопкой мыши узел проекта HelloWebApplet и выберите ‘Создать’ > ‘Другие’ в контекстном меню. В области «Категории» выберите «Web». В области «Типы файлов» выберите HTML. Нажмите кнопку «Далее». Укажите название файла HTML, выберите папку Web (она расположена в нужном месте) и нажмите «Завершить».
  2. Встройте апплет в файл, добавив следующий тег апплета в любом месте в рамках тегов <body></body>.
    • В файле HTML: <applet code="org.me.hello.MyApplet" archive="HelloApplet.jar"></applet>
    • В файле JSP: <applet code="org.me.hello.MyApplet" archive="HelloApplet.jar" width="600" height="480"/>

    Примечания.

    • При добавлении апплета в файл HTML в рамках этой учебной задачи можно игнорировать значок подсказки, который появляется в левом поле.
    • org.me.hello.MyApplet — полное имя класса апплета.
    • HelloApplet.jar — файл JAR, содержащий апплет.
  3. В окне «Проекты» щелкните узел JSP или HTML правой кнопкой мыши и в контекстном меню выберите «Выполнить файл».

    Сервер развертывает файл JSP или HTML в браузере среды IDE, установленном по умолчанию.

    Вы должны получить результат, аналогичный показанному на иллюстрации (после того как вы разрешили запуск приложения нажатием на кнопку ‘Выполнить’ в диалоговом окне ‘Предупреждение системы безопасности’):

    В случае работы с формами апплетов ваш результат будет похож на следующий:

Дополнительные атрибуты

АтрибутЗначениеОписание
alignleft
right
top
bottom
middle
baseline
Задает выравнивание апплета в соответствии с окружающими элементами
alttextЗадает альтернативный текст для апплета
archiveURLУказывает расположение файла архива
codebaseURLУказывает относительный базовый URL-адрес для апплетов, указанных в атрибуте code
heightpixelsЗадает высоту апплета
hspacepixelsОпределяет горизонтальный интервал вокруг апплета
namenameОпределяет имя апплета (для использования в скриптах)
vspacepixelsОпределяет вертикальный интервал вокруг апплета
widthpixelsЗадает ширину апплета

❮Назад
Полный HTML Ссылки
Дальше ❯

Technical information

Java applets are executed in a sandbox by most web browsers, preventing them from accessing local data like the clipboard or file system. The code of the applet is downloaded from a web server, after which the browser either embeds the applet into a web page or opens a new window showing the applet’s user interface.

A Java applet extends the class , or in the case of a Swing applet, . The class which must override methods from the applet class to set up a user interface inside itself () is a descendant of which is a descendant of . As applet inherits from container, it has largely the same user interface possibilities as an ordinary Java application, including regions with user specific visualization.

The first implementations involved downloading an applet class by class. While classes are small files, there are often many of them, so applets got a reputation as slow-loading components. However, since .jars were introduced, an applet is usually delivered as a single file that has a size similar to an image file (hundreds of kilobytes to several megabytes).

The domain from where the applet executable has been downloaded is the only domain to which the usual (unsigned) applet is allowed to communicate. This domain can be different from the domain where the surrounding HTML document is hosted.

Java system libraries and runtimes are backwards-compatible, allowing one to write code that runs both on current and on future versions of the Java virtual machine.

Similar technologies

Many Java developers, blogs and magazines are recommending that the Java Web Start technology be used in place of applets. Java Web Start allows the launching of unmodified applet code, which then runs in a separate window (not inside the invoking browser).

A Java Servlet is sometimes informally compared to be «like» a server-side applet, but it is different in its language, functions, and in each of the characteristics described here about applets.

Апплет как расширение другого программного обеспечения

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

Сетевые апплеты

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

Апплет может также быть текстовой областью только, обеспечением, например, кросс-платформенным интерфейсом командной строки к некоторой удаленной системе. В случае необходимости апплет может покинуть специальную область и бежать как отдельное окно. Однако апплеты имеют очень мало контроля над содержанием веб-страницы за пределами посвященной области апплета, таким образом, они менее полезны для улучшения появления места в целом (в то время как апплеты как тикеры новостей или WYSIWYG-редакторы также известны). Апплеты могут также играть СМИ в форматах, которые прирожденно не поддержаны браузером

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

Примеры Сетевых Апплетов включают:

Апплеты Windows Media Player, используемые, чтобы показать включенные видео файлы в Internet Explorer (и другие браузеры, которые поддерживают плагин)

  • 3D апплеты показа моделирования, используемые, чтобы вращаться и изменить масштаб изображения модели
  • Игры браузера могут быть основаны на апплете, хотя некоторые могут развиться в полностью функциональные заявления, которые требуют установки.

Апплет против подпрограммы

Большее применение отличает свои апплеты через несколько особенностей:

  • Апплеты выполняют только на среде платформы «клиента» системы, как противопоставлено от «servlet». Также, апплет обеспечивает функциональность или работу вне возможностей по умолчанию его контейнера (браузер).
  • Контейнер ограничивает возможности апплетов.
  • Апплеты написаны на языке, отличающемся от scripting или языка HTML, который призывает его. Апплет написан на собранном языке, тогда как язык сценариев контейнера — интерпретируемый язык, следовательно большая работа или функциональность апплета. В отличие от «подпрограммы», полный веб-компонент может быть осуществлен как апплет.

Запуск потоков в апплетах

Используя потоки в апплетах, необходимо учитывать несколько важных концепций:

  • Создавая апплет, вы расширяете класс Applet. Поэтому, для того чтобы использовать потоки, необходимо реализовать интерфейс Runnable или определить поток как внутренний класс Thread.

  • В методе start апплета создайте новый объект Thread (хотя объект thread также содержит метод start, он не совпадает с соответствующим методом апплета).

  • Из-за того, что реализуется интерфейс Runnable, вам необходимо обеспечить для класса метод run. Данный метод вызывается при запуске потока объектом thread для выполнения предназначенных ему операций.

Следующий апплет демонстрирует скроллинг текста, который «проходит» по своему собственному потоку, что позволяет вносить новый текст в текстовое поле во время его прокрутки. Если бы прокручивающийся текст не находился в отдельном потоке, то этот текст так бы загрузил ЦПУ, что вводить текст в поле было бы невозможным.

Создайте HTML-страницу, как показано далее, после чего запустите ее в программе для просмотра апплетов или в броузере.

<html><head><title>Test Program</title></head><body><appletcode="ExampleThreads.class"width="400"height="200"></applet></body></html>

При запуске приложение должно выглядеть следующим образом:

Example

The following example illustrates the use of Java applets through the java.applet package. The example also uses classes from the Java Abstract Window Toolkit (AWT) to produce the message «Hello, world!» as output.

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

// Applet code for the "Hello, world!" example.
// This should be saved in a file named as "HelloWorld.java".
public class HelloWorld extends Applet {
    // Print a message on the screen (x = 20, y = 10).
    public void paint(Graphics g) {
        g.drawString("Hello, world!", 20, 10);

        // Draws a circle on the screen (x = 40, y = 30).
        g.drawArc(40, 30, 20, 20, , 360);

        // Draws a rectangle on the screen (x1 = 100, y1 = 100, x2 = 300, y2 = 300).
        g.drawRect(100, 100, 300, 300);

        // Draws a square on the screen (x1 = 100, y1 = 100, x2 = 200, y2 = 200).
        g.drawRect(100, 100, 200, 200);
    }
}

Simple applets are shared freely on the Internet for customizing applications that support plugins.

After compilation, the resulting .class file can be placed on a web server and invoked within an HTML page by using an <applet> or an <object> tag. For example:

<!DOCTYPE html>
<html>
<head>
  <title>HelloWorld_example.html</title>
</head>
<body>
  <h1>A Java applet example</h1>
  <p>
    Here it is:
    <applet code="HelloWorld.class" height="40" width="200">
      This is where HelloWorld.class runs.
    </applet>
  </p>
</body>
</html>

When the page is accessed it will read as follows:

A Java applet example
Here it is: Hello, world!

To minimize download time, applets can be delivered in the form of a jar file. In the case of this example, if all necessary classes are placed in the compressed archive example.jar, the following embedding code could be used instead:

<p>
  Here it is:
  <applet archive="example.jar" code="HelloWorld" height="40" width="200">
    This is where HelloWorld.class runs.
  </applet>
</p>

Applet inclusion is described in detail in Sun’s official page about the APPLET tag.

Безопасность

Недавние события в кодировании заявлений включая мобильные и встроенные системы привели к осознанию безопасности апплетов.

Открытые апплеты платформы

Апплеты в открытой окружающей среде платформы должны обеспечить безопасные взаимодействия между различными заявлениями. Композиционный подход может использоваться, чтобы обеспечить безопасность для открытых апплетов платформы. Продвинутые композиционные методы проверки были развиты для безопасных взаимодействий апплета.

Явские апплеты

Явский апплет содержит различные модели безопасности: неподписанная Явская безопасность апплета, подписанная Явская безопасность апплета, и сам подписали Явскую безопасность апплета.

Сетевые апплеты

В позволенном апплетом веб-браузере много методов могут использоваться, чтобы обеспечить безопасность апплета для злонамеренных апплетов. Злонамеренный апплет может заразить компьютерную систему во многих отношениях, включая отказ в обслуживании, вторжение в личную жизнь и раздражение. Типичное решение для злонамеренных апплетов состоит в том, чтобы сделать веб-браузер, чтобы контролировать действия апплетов. Это приведет к веб-браузеру, который позволит ручную или автоматическую остановку злонамеренных апплетов. Чтобы иллюстрировать этот метод, AppletGuard использовался, чтобы наблюдать и управлять любым апплетом в браузере успешно.

Примеры

Простой пример:

<APPLET CODE="Bubbles.class" WIDTH=500 HEIGHT=500 ALIGN=MIDDLE> 
Java applet that draws animated bubbles. 
</APPLET> 

Более сложный пример, использующий PARAM элемент:

<APPLET CODE="AudioItem" WIDTH=15 HEIGHT=15 ALIGN=TOP> 
<PARAM NAME=snd VALUE="Hello.au|Welcome.au"> 
Java applet that plays a welcoming sound. 
</APPLET> 

Следующий пример, иллюстрирующий использование CODEBASE:

<APPLET CODEBASE="applets/NervousText" 
   CODE="NervousText.class" 
   WIDTH=300 
   HEIGHT=50> 
<PARAM NAME=TEXT VALUE="Java is Cool!"> 
<IMG SRC="sorry.gif" ALT="This looks better with Java support"> 
</APPLET> 

Создание или импорт файла исходного кода апплета

В этом разделе вы создадите свой первый апплет. Если у вас уже есть апплет, то указания, приведенные ниже, помогут импортировать его в среду IDE.

Создание проекта Java с нуля или с использованием имеющихся исходных кодов

  1. Выберите команду «Файл» > «Создать проект» (CTRL+SHIFT+N). В области «Категории» выберите «Java».
  2. Выполните одно из следующих действий.
    • Для создания нового исходного файла в области «Проекты» выберите пункт «Библиотека классов Java». Нажмите кнопку «Далее».
    • Для импорта исходного файла апплета выберите пункт «Проект Java с существующим исходным кодом». Нажмите кнопку «Далее». Укажите местоположение файла в текстовом поле «Папка с исходными файлами».
  3. В поле «Имя проекта» введите HelloApplet. В области «Расположение проекта» укажите любую папку на своем компьютере.
  4. Нажмите кнопку «Завершить». Если файл исходного кода апплета был импортирован, .

Создание файла исходного кода апплета

  1. Нажмите название проекта HelloApplet правой кнопкой мыши и выберите пункт «Свойства», при этом откроется окно «Свойства».
  2. Выберите нужный формат исходных/двоичных файлов для проекта и нажмите ОК.

    Примечание. Если выбрана версия JDK 1.6, апплет может не запускаться на компьютерах, на которых установлена предыдущая версия JRE или подключаемого модуля Java для браузера.

  3. Нажмите узел HelloApplet в окне «Проекты» и выберите «Новый» > «Другое» (Ctrl-N).
  4. В области «Категории» выберите «Java». В области «Типы файлов» выберите «Апплет».

    Если же нужно использовать визуальные средства для разработки апплета, выберите «Формы Swing GUI» > «Форма JApplet».

    Нажмите кнопку «Далее».

  5. В области «Имя класса» введите MyApplet. В поле «Пакет» введите org.me.hello.
  6. Нажмите кнопку «Завершить».

    Среда IDE создает исходный файл апплет в указанном пакете. Исходный файл апплета открывается в редакторе исходного кода.

  7. Определите класс своего апплета, заменив существующий стандартный код следующим кодом:
         package org.me.hello;
    
         import java.applet.Applet;
         import java.awt.Graphics;
    
         public class MyApplet extends Applet {
             @Override
             public void paint(Graphics g) {
                 g.drawString("Hello applet!", 50, 25);
             }
         }
                        

    В качестве альтернативы, если вместо этого выполняется разработка форма апплета используйте документ Разработка графического интерфейса пользователя Swing в IDE NetBeans для создания аналога следующему:

    Подробную информацию о написании апплетов см. в разделеАпплеты Руководства JavaTM.

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

Четыре метода в классе Applet дают вам основу для построения любого серьезного апплета —

  • init — Этот метод предназначен для любой инициализации, необходимой для вашего апплета. Он вызывается после обработки тегов param внутри тега applet.

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

  • stop — этот метод вызывается автоматически, когда пользователь покидает страницу, на которой находится апплет. Поэтому его можно вызывать повторно в одном и том же апплете.

  • уничтожить — этот метод вызывается только тогда, когда браузер выключается нормально. Поскольку апплеты предназначены для жизни на HTML-странице, обычно не следует оставлять ресурсы после того, как пользователь покидает страницу, содержащую апплет.

  • paint — вызывается сразу после метода start (), а также в любое время, когда апплет должен перерисовать себя в браузере. Метод paint () фактически унаследован от java.awt.

init — Этот метод предназначен для любой инициализации, необходимой для вашего апплета. Он вызывается после обработки тегов param внутри тега applet.

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

stop — этот метод вызывается автоматически, когда пользователь покидает страницу, на которой находится апплет. Поэтому его можно вызывать повторно в одном и том же апплете.

уничтожить — этот метод вызывается только тогда, когда браузер выключается нормально. Поскольку апплеты предназначены для жизни на HTML-странице, обычно не следует оставлять ресурсы после того, как пользователь покидает страницу, содержащую апплет.

paint — вызывается сразу после метода start (), а также в любое время, когда апплет должен перерисовать себя в браузере. Метод paint () фактически унаследован от java.awt.

Преимущества апплетов

Преимущества использования Java-апплетов

  • кроссплатформенность
  • апплет может работать на «всех» установленных к этому времени версиях Java, а не только с последней версией; однако, если апплет требует последнюю версию JRE, то клиент будет вынужден ждать более длительной загрузки;
  • апплет поддерживается большинством браузеров;
  • он кэшируется в большинстве браузеров, а потому будет быстро загружаться при возвращении на веб-страницу; но апплет может сохраняться в кэше и создавать проблемы после выхода новых версий;
  • он может иметь полный доступ к машине, на которой выполняется, если пользователь согласен на это;
  • апплет может улучшить использование: после первого запуска апплета, когда JVM уже выполняется и быстро запускается, преимущественно у постоянных пользователей Java, однако JVM придется перезапускать каждый раз, когда запускается новый браузер.
  • он может запуститься с сопоставимой (но обычно медленнее) скоростью на других компилируемых языках, таких как C++, но во много раз быстрее, чем JavaScript
  • он может перенести работу с сервера к клиенту, делая Интернет-решение с, большим числом пользователей / клиентов.

Методы класса Color

	HSBtoRGB(float, float, float)
	RGBtoHSB(int, int, int, float[1)

HSBtoRGB преобразует цвет, заданный оттенком, насыщенностью и яркостью (HSB), в целое число в формате RGB, готовое для использования в качестве параметра конструктора Color(int). RGBtoHSB преобразует цвет, заданный тремя базовыми компонентами, в массив типа float со значениями HSB, соответствующими данному цвету.

Цветовая модель HSB (Hue-Saturation-Brightness, оттенок-насыщенность-яркость) является альтернативой модели Red-Green-Blue для задания цветов. В этой модели оттенки можно представить как круг с различными цветами (оттенок может принимать значения от 0.0 до 1.0, цвета на этом круге идут в том же порядке, что и в радуге — красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый). Насыщенность (значение в диапазоне от 0.0 до 1.0) — это шкала глубины цвета, от легкой пастели до сочных цветов. Яркость — это также число в диапазоне от 0.0 до 1.0, причем меньшие значения соответствуют более темным цветам, а большие — более ярким.

	getRedQ, getGreenO, setBlue()

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

	getRGB()

Этот метод возвращает целое число, в котором упакованы значения базовых компонентов цвета, причем

	red = Oxff & (getRGB() >> 16);
	green = Oxff & (getRGB() >> 8);
	blue = Oxff & getRGB();

Получение параметров апплета

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

Второй цвет и размер каждого квадрата могут быть указаны как параметры для апплета в документе.

CheckerApplet получает свои параметры в методе init (). Он также может получить свои параметры в методе paint (). Однако получить значения и сохранить настройки один раз в начале апплета, а не при каждом обновлении, удобно и эффективно.

Программа просмотра или браузер апплета вызывает метод init () каждого запускаемого им апплета. Зритель вызывает init () один раз, сразу после загрузки апплета. (Applet.init () реализован, чтобы ничего не делать.) Переопределите реализацию по умолчанию, чтобы вставить пользовательский код инициализации.

Метод Applet.getParameter () извлекает параметр по имени параметра (значение параметра всегда является строкой). Если значение является числовым или другими не символьными данными, строка должна быть проанализирована.

Ниже приведен скелет CheckerApplet.java —

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

public class CheckerApplet extends Applet {
   int squareSize = 50;   // initialized to default size
   public void init() {}
   private void parseSquareSize (String param) {}
   private Color parseColor (String param) {}
   public void paint (Graphics g) {}
}

Вот методы CheckerApplet init () и private parseSquareSize () —

public void init () {
   String squareSizeParam = getParameter ("squareSize");
   parseSquareSize (squareSizeParam);
   
   String colorParam = getParameter ("color");
   Color fg = parseColor (colorParam);
   
   setBackground (Color.black);
   setForeground (fg);
}

private void parseSquareSize (String param) {
   if (param == null) return;
   try {
      squareSize = Integer.parseInt (param);
   } catch (Exception e) {
      // Let default value remain
   }
}

Апплет вызывает parseSquareSize () для анализа параметра squareSize. parseSquareSize () вызывает метод библиотеки Integer.parseInt (), который анализирует строку и возвращает целое число. Integer.parseInt () генерирует исключение всякий раз, когда его аргумент недопустим.

Поэтому parseSquareSize () перехватывает исключения, а не позволяет сбою апплета при неправильном вводе.

Апплет вызывает parseColor () для разбора параметра цвета в значение Color. parseColor () выполняет серию сравнений строк, чтобы сопоставить значение параметра с именем предопределенного цвета. Вам нужно реализовать эти методы, чтобы этот апплет работал.

HTML Теги

<!—><!DOCTYPE><a><abbr><acronym><address><applet><area><article><aside><audio><b><base><basefont><bdi><bdo><big><blockquote><body><br><button><canvas><caption><center><cite><code><col><colgroup><data><datalist><dd><del><details><dfn><dialog><dir><div><dl><dt><em><embed><fieldset><figcaption><figure><font><footer><form><frame><frameset><h1> — <h6><head><header><hr><html><i><iframe><img><input><ins><kbd><label><legend><li><link><main><map><mark><menu><menuitem><meta><meter><nav><noframes><noscript><object><ol><optgroup><option><output><p><param><picture><pre><progress><q><rp><rt><ruby><s><samp><script><section><select><small><source><span><strike><strong><style><sub><summary><sup><svg><table><tbody><td><template><textarea><tfoot><th><thead><time><title><tr><track><tt><u><ul><var><video>

repaint

Метод repaint используется для принудительного перерисовывания апплета. Этот метод, в свою очередь, вызывает метод update. Однако, если ваша система медленная или сильно загружена, метод update может и не вызваться. Близкие по времени запросы на перерисовку могут объединяться AWT, так что метод update может вызываться спорадически. Если вы хотите добиться ритмичной смены кадров изображения, воспользуйтесь методом repaint(time) — это позволит уменьшить количество кадров, нарисованных не вовремя.

	repaint(time)

Вы можете вызывать метод repaint, устанавливая крайний срок для перерисовки (этот период задается в миллисекундах относительно времени вызова repaint).

	repaint(x, y, w, h)

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

	repaint(time, x, у, w, h)

Этот метод — комбинация двух предыдущих.

Разница между приложением и апплетом

  1. Определение приложения и апплета — Апплеты — это многофункциональные прикладные программы, специально предназначенные для выполнения в HTML-документе HTML для выполнения небольших задач или просто его части. Java-приложения, с другой стороны, представляют собой автономные программы, предназначенные для работы на автономной машине без использования браузера.
  2. выполнение приложения и апплета- Приложениям требуется основной метод () для выполнения кода из командной строки, тогда как для выполнения апплета не требуется основной метод (). Перед выполнением апплета требуется файл HTML. Фактически браузеру требуется плагин Java для запуска апплета.
  3. Компиляция приложения и апплета-Приложения программы скомпилируются с использованием команды «javac» и далее выполняются с использованием команды java. С другой стороны, программы апплета также скомпилированы с использованием команды «javac», но выполняются либо с помощью команды «appletviewer», либо с помощью веб-браузера.
  4. Доступ к безопасности приложения и апплета — Java-приложения могут получить доступ ко всем ресурсам системы, включая данные и информацию об этой системе, в то время как апплеты не могут получать доступ или изменять какие-либо ресурсы в системе, кроме только определенных браузером сервисов.
  5. Ограничения приложения и апплета — В отличие от приложений, программы апплетов нельзя запускать самостоятельно, поэтому требуется высокий уровень безопасности. Тем не менее, они не требуют какой-либо конкретной процедуры развертывания во время выполнения.С другой стороны, приложения Java работают независимо друг от друга и не требуют никакой безопасности, поскольку им доверяют.

ARCHIVE = jarFiles

Задает список jar-файлов (разделяется запятыми), которые предварительно загружаются в Web-броузер. В этих архивных файлах могут содержаться файлы классов, изображения, звуки и любые другие ресурсы, необходимые апплету. Для создания архивов используется утилита JAR, синтаксис вызова которой напоминает вызов команды TAR Unix:

	c:\> jar cf soundmap.jar *.class image.gif sound.wav

Очевидно, что передача сжатых jar-файлов повышает эффективность работы. Поэтому многие средства разработки (Lotus JavaBeans, Borland JBuilder) уже имеют средства для публикации апплетов в виде jar-файлов.

Вопросы совместимости

Компания Sun предприняла значительные усилия для обеспечения совместимости между Java-версиями по мере их появления. Например, Microsoft Internet Explorer, самый популярный браузер с конца 1990-х, имел обыкновение загружать собственную JVM для Microsoft по умолчанию. MS JVM имеет ряд дополнительных функций, не входящих в Java, которые, будучи использованы, будут препятствовать выполнению MS JVM-апплетам в среде Sun’s Java (но не наоборот). Sun предъявила Microsoft иск за нарушение прав на товарный знак, так как суть Java заключается в том, что не должно быть никакого собственного расширения и что код должен работать везде.
Развитие MS JVM было заморожено до правового урегулирования, оставив многих пользователей с чрезвычайно устаревшими виртуальными Java-машинами. Позже, в октябре 2001 года, MS остановил включение Java в Windows, и в течение ряда лет было оставлено на усмотрение производителей компьютеров устанавливать Java или нет, независимо от операционной системы. Большинство новых машин сейчас поставляется с официальной Sun Java.

Некоторые браузеры (в частности, Netscape) не очень хорошо обеспечивают 100%-ую совместимость, что затрудняет выполнение апплета большинством браузеров (JavaScript может с трудом использоваться для этой цели). Поскольку апплет создает своё собственное главное окно, это не является хорошим решением, так как это оставляет окно браузера в значительной степени бесполезным и приводит к тому, что увеличивается шанс непреднамеренного закрытия апплета пользователем путём закрытия исходного окна браузера.

Преобразование приложения в апплеты

Легко преобразовать графическое Java-приложение (то есть приложение, которое использует AWT и которое можно запустить с помощью средства запуска Java-программ) в апплет, который можно встроить в веб-страницу.

Ниже приведены конкретные шаги для преобразования приложения в апплет.

  • Создайте HTML-страницу с соответствующим тегом для загрузки кода апплета.

  • Поставьте подкласс класса JApplet. Сделайте этот класс публичным. В противном случае апплет не может быть загружен.

  • Исключите основной метод в приложении. Не создавайте рамочное окно для приложения. Ваше приложение будет отображаться внутри браузера.

  • Переместите любой код инициализации из конструктора окна фрейма в метод init апплета. Вам не нужно явно создавать объект апплета. Браузер создает его для вас и вызывает метод init.

  • Удалить вызов setSize; для апплетов изменение размера производится с помощью параметров ширины и высоты в файле HTML.

  • Удалить вызов setDefaultCloseOperation. Апплет не может быть закрыт; он завершается при выходе из браузера.

  • Если приложение вызывает setTitle, исключите вызов метода. Апплеты не могут иметь строки заголовка. (Конечно, вы можете озаглавить саму веб-страницу, используя тег заголовка HTML.)

  • Не вызывайте setVisible (true). Апплет отображается автоматически.

Создайте HTML-страницу с соответствующим тегом для загрузки кода апплета.

Поставьте подкласс класса JApplet. Сделайте этот класс публичным. В противном случае апплет не может быть загружен.

Исключите основной метод в приложении. Не создавайте рамочное окно для приложения. Ваше приложение будет отображаться внутри браузера.

Переместите любой код инициализации из конструктора окна фрейма в метод init апплета. Вам не нужно явно создавать объект апплета. Браузер создает его для вас и вызывает метод init.

Удалить вызов setSize; для апплетов изменение размера производится с помощью параметров ширины и высоты в файле HTML.

Удалить вызов setDefaultCloseOperation. Апплет не может быть закрыт; он завершается при выходе из браузера.

Если приложение вызывает setTitle, исключите вызов метода. Апплеты не могут иметь строки заголовка. (Конечно, вы можете озаглавить саму веб-страницу, используя тег заголовка HTML.)

Не вызывайте setVisible (true). Апплет отображается автоматически.

Сервлеты — восходящая звезда

Хотя Java на стороне клиента не оправдал возложенных на него надежд, использование Java на сервере, похоже, имеет неплохие перспективы. Сейчас серверы Java-приложений предлагают огромное и продолжающее расти число Web-служб. И их lingua franca — это API-интерфейс для сервлетов, который определяет, как сервлет Java взаимодействует с хостом на базе Java. Подобное решение применяется очень широко, и хотя Enterprise JavaBeans постепенно превращается в стандарт, намного более простой API сервлета создает общую основу для взаимодействия серверных компонентов Java.

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

Сервлеты также имеют преимущества с архитектурной точки зрения, которые позволяют им в полной мере использовать все присущие Java достоинства. Если апплет, посланный по сети, окажется в несовместимой с ним виртуальной машине Java, то он, скорее всего, корректно работать не будет. Сервлет развертывается в более управляемой среде. Так как параметры JVM известны, проблем совместимости не возникает. Более того, среда, которая окружает данную виртуальную машину, может увеличивать производительность сервлета. Некоторые серверы Java-приложений могут компилировать сервлеты в для себя код и тем самым значительно увеличивать скорость выполнения. Другие серверы запускают параллельно несколько JVM, иногда в различных процессах хостовой ОС. Эти стратегии увеличивают масштабируемость и отказоустойчивость службы.

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

Оригинал WebClub. Декабрь 2000. Джон Уделл.

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации