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

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

Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.

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

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

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

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


Запуск файла исходного кода апплета

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

Сборка и выполнение исходного файла апплета

Щелкните правой кнопкой мыши узел файла MyApplet.java в окне "Проекты" и выберите в контекстном меню команду "Запустить файл". В папке сборки создается файл запуска MyApplet.html со встроенным апплетом. Его можно увидеть, перейдя в окно "Файлы" (CTRL+2):

Апплет запускается в программе просмотра апплета.

Формы апплета также отображаются в программе просмотра апплета.

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

Итак, создание апплета завершено. Теперь необходимо предоставить к нему доступ пользователю. Для этого необходимо создать веб-приложение, добавить апплет 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




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

  • взаимодействовать с локальной файловой системой клиента;
  • устанавливать сетевые соединения с другими серверами;
  • взаимодействовать с буфером обмена клиента;
  • некоторые другие.
Вариантов решения проблемы несколько:
1. Разрешить выполнение на каждой локальной машине клиентов. Для этого можно отредактировать файл java.policy, который находится в папке с установленным JRE (по умолчанию в C:\Program Files\Java\jre6\lib\security). И добавить необходимые разрешения. Например, чтобы разрешить все, что можно, нужно вставить строчку:

Grant { ... permission java.security.AllPermission; }

А если нужно разрешить только работу с буфером обмена для сайта hackmeplease.com :

Grant codeBase "http://hackmeplease.com/*" { permission java.awt.AWTPermission "accessClipboard"; };

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

2. Подписать свой Java-апплет. Итак, что имеем на входе:
- установленные JDK и JRE;
- jar-файл своего апплета (есть некоторые особенности написания исходного кода, см. ниже);
- желание работать с буфером обмена. Для этого нужно, чтобы корректно работала строчка:

Toolkit toolkit = Toolkit.getDefaultToolkit();
Clipboard clipboard = toolkit.getSystemClipboard();

В случае вызова этих строчек, из неподписанного апплета получим следующее исключение:
java.security.AccessControlException: access denied (java.awt.AWTPermission accessClipboard)

Итак, приступим:
0. Переходим в папку BIN нашего JDK (например, C:\Program Files\Java\jdk1.6.0_23\bin).
I. Создаем локальное хранилище нашего сертификата (keystore):
keytool -genkey -keystore .keystore -alias «Terrasoft» -validity 99999

99999 - срок в месяцах валидности сертификата;
.keystore - имя файла создаваемого хранилища.

В случае успешного запуска команды, система спросит нас пароль нашего хранилища, а также некоторую информацию о сертификате (твои ФИО, название компании, город, страну и группу крови)

В результате будем иметь файл.keystore. Это и есть наше хранилище, которым мы будем подписывать разные апплеты.
II. Копируем в папку BIN нашего JDK наш JAR-файл. Подписываем его с помощью следующей команды:
jarsigner.exe -keystore .keystore ClipboardLibrary.jar «Terrasoft»
где Terrasoft - название alias нашего сертификата;
.keystore - имя файла хранилища;
ClipboardLibrary.jar - название JAR-файла.
Система спросит нас пароль - вводим тот, что ввели в п. I.

Вроде как готово… Да щас, наивный…
Итак, при запуске страницы с нашим апплетом на борту пользователь получит дружественное сообщения вида:

Что означает, «Пользователь, нажми Да и попрощайся со своей системой, ибо мы сможем с ней делать, что захотим».
Кстати, обратите внимание на NOT VERIFIED. Означает, что у нас не доверительный сертификат. Чтобы получить доверительный, нужно обращаться в специальные службы в инете и даже платить деньгу.

Но вернемся к нашим баранам. При обращении к буферу обмена мы снова получим исключение вида:
java.security.AccessControlException: access denied (java.awt.AWTPermission accessClipboard)

Очень жаль. Ну что же, не получилось сейчас - получится в другой раз. До свидания.

Шучу. На самом деле на этом моменте останавливаются все руководства по подписыванию апплетов, которые я встречал. Мол, подписанному апплету ничего не страшно. Пусть им всем будет стыдно.
Короче, следующий финт для того, чтобы наше обращение к буферу обмена заработало:

III. Изменить исходный код.
Вместо вызова вида:
clipboard = toolkit.getSystemClipboard()
нужно написать вызов вида:
clipboard = (Clipboard) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return toolkit.getSystemClipboard(); } });
После этого нужно перекомпилировать свой JAR и повторить шаг II (тем, кто читал с конца мое сообщение - респект).

Вот в общем-то и все. Должно работать. Надеюсь, что кому-то это пригодится, и он не будет столько своей жизни тратить на эту ерунду, сколько потратил я. Нехай проблеми i негоди не роблять вам в життi погоди (С). До новых встреч в эфире.

Апплеты

Первые два примера, представленные в этой книге, - это приложения, написанные на языке Java, т.е самостоятельные программы, аналогичные обычным машинозависимым программам.
С другой стороны, как упоминалось в предыдущей главе, ажиотаж вокруг языка Java был вызван, в основном, его возможностями выполнять апплеты под управлением Web-броузеров.

Мы хотим показать вам, как создать и выполнить апплет в режиме командной строки.

Затем мы загрузим этот апплет в программу для просмотра апплетов (appletviewer), входящую в состав пакета JDK.
В заключение мы отобразим его в Web-броузере.

Перейдите в каталог CoreJavaBook/vlch2/WelcomeApplet, а затем введите
следующие команды.
javac WelcomeApplet. java
appletviewer WelcomeApplet.html

На рис. 2.12 показано то, что вы увидите в окне программы для просмотра апплетов.

Рис. 2.12. Вид апплета WelcomeApplet в окне программы просмотра апплетов

Первая команда нам уже знакома - она вызывает компилятор языка Java. Он компилирует исходный текст апплета, содержащийся в файле WelcomeApplet. java, создавая файл байт-кода WelcomeApplet. class.

Однако на этот раз мы не запускаем интерпретатор языка Java. Вместо этого мы вызываем программу appletviewer. Эта программа специально предназначена для быстрого тестирования апплетов и входит в пакет Java SDK. Она работает не с файлом класса, а с файлом в формате HTML. Содержание файла WelcomeApplet.html показано в листинге 2.3.

Листинг 2.3
Файл WelcomeApplet.java


WelcomeApplet



This applet is from the book

Core Java by Cay Horstmann and
Gary Cornell, published by Sun Microsystems Press.






The source .



Если вы знаете язык HTML, то заметите некоторые стандартные команды языка HTML и дескриптор applet, приказывающие программе просмотра апплетов загрузить апплет, код которого содержится в файле WelcomeApplet, class. Программа аррletviewer игнорирует все дескрипторы языка HTML, за исключением дескриптора applet.

Другие дескрипторы языка HTML распознаются, когда файл в формате HTML просматривается броузером, поддерживающим язы к Java 2. Однако тут есть одна проблема.

Версии броузера Netscape 6, броузеры Mozilla и Opera поддерживают язык Java 2 как в среде Windows, так й на платформе Linux, хотя эта возможность является факультативной. Для того чтобы поэкспериментировать с апплетами, просто загрузите самую последнюю версию и убедитесь, она поддерживает Java.

Некоторые версии броузера Internet Explorer вообще не поддерживают язык Java. Другие версии поддерживают лишь очень старую виртуальную машину Java компании Microsoft (Java Virtual Machine). Если вы работаете с броузером Internet Explorer под управлением операционной системы Windows, зайдите на сайт http: //java. sun. com/get Java и загрузите программу Java Plug-In. Она добавит в броузер Internet Explorer возможности Java 2.

На платформе Macintosh под управлением операционной системы OS X возможности языка Java уже интегрированы в броузер Internet Explorer. В частности, на момент написания книги этот броузер поддерживал работу с пакетом J2SE версии 1.3. Система OS 9 поддерживает лишь устаревшую версию 1.1.

Если вы работаете с броузером Netscape 4, можете воспользоваться поддержкой языка Java 2, обеспечиваемой программой Java Plug-In. Однако при работе с апплетами, загружаемыми с помощью дескриптора applet, броузер будет по- прежнему использовать устаревшую виртуальную машину языка Java. Следовательно, придется переписать HTML-файл и вместо дескриптора applet использовать довольно неудобный дескриптор embed. Этот подход нельзя назвать удовлетворительным.

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

Запустите ваш броузер.

Выберите в меню опцию File -> Open File (или эквивалентную опцию).
Перейдите в каталог CoreJavaBook/vlch2/WelcomeApplet.

В диалоговом окне вы должны увидеть файлы WelcomeApplet .html и WelcomeAppletPlugin.html.
Загрузите файл, соответствующий вашей настройке. Броузер загрузит апплет вместе с окружающим его текстом. Он будет выглядеть примерно так, как показано на рис. 2.13.

Легко видеть, что это приложение действительно интерактивно и взаимодействует с Интернет. Нажмите на кнопку "Cay Horstmann". Апплет заставит броузер открыть Web- страницу Кея Хорстманна. Щелкните на кнопке "Gary Cornell". Апплет откроет окно для электронной почты, в котором уже указан адрес электронной почты Гари Корнелла.

Рис, 2.13. Запуск апплета WelcomeApplet с помощью броузера

Заметьте, что ни одна из этих кнопок не работает с программой просмотра аплетов. Эта программа не может посылать почту или отображать на экране Web-страницу, поэтому она просто проигнорирует ваши запросы. Программа просмотра апплетов хороша для тестирования изолированных апплетов, однако для реального взаимодействия апплета с Интернет и другими программами следует загрузить свой апплет в какой-либо броузер.

Апплет можно запустить из вашего текстового редактора или интегрированной среды разработки. При работе с редактором Emacs выберите в меню опцию JDE -> Run Applet.

При работе с редактором TextPad выберите опцию Tools -> Run Java Applet или используйте комбинацию клавиш . Перед вами откроется диалоговое окно, в котором будут представлены все HTML – файлы, хранящиеся в текущем каталоге. Если вы нажмете клавишу , редактор TextPad автоматически создаст минимальный HTML-файл.

В среде Sun ONE Studio нужно просто загрузить HTML-файл с дескрипторами апплета. Эта среда содержит небольшой броузер, выполняющий апплет на соответствующей Web-странице. В качестве альтернативы можно щелкнуть правой кнопкой мыши на файле с исходным текстом апплета и установить значение свойства "Executor" на закладке равным
"Applet Execution".

Код апплета Welcome показан в листинге 2.4. В данный момент его нужно лишь бегло просмотреть. К созданию апплетов мы еще вернемся в главе 10.

Import javax.swing.*;
import java.awt.*;
import java.awt.event.*,
import java.net.*;

public class WelcomeApplet extends JApplet
{
public void init()
{
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());

JLabel label = new JLabel(getParameter("greeting") ,
SwingConstants.CENTER);
label.setFont(new Font("Serif", Font.BOLD, 18));
contentPane.add(label, BorderLayout.CENTER);

JPanel panel = new JPanel();

JButton cayButton = new JButton("Cay Horstmann");
cayButton.addActionListener(makeURLActionListener
("http://www.horstmann.com"));
Jbutton garyButton = new Jbutton("Gary Cornell");
garyButton.addActionListener(makeURLActionListener
("mailto:garyOthecornells.com"));
panel.add(garyButton);
contentPane.add(panel, BorderLayout.South);
}
public ActionListener makeURLActionListener(fina1 string u)
{
return new
ActionListener ()
{
public void actionPerformed(ActionEvent event)
{
try {
getAppleContext().showDocument(u);
}
catch(Exeption e) (e.printStackTrace (); }
{
e. printStackTrace ();
}
}
} ;

В этой главе мы изучили механизмы компиляции и запуска программ, написанных на языке Java. Теперь мы готовы перейти к главе 3, в которой приступим к изучению языка Java.

В этой статье я постараюсь максимально просто и понятно изложить основы программирования на языке Delphi

Java для чайников. Урок 3. Простой апплет.

Наконец то мы подошли к самому главному: программированию на Java для Web, ибо сегодня мы напишем свой первый апплет. Конечно, начнем с самого простого, с "Hello World!". И так, вот текст этого апплета:

import java . applet . Applet ;

import java . awt . Graphics ;

Public class HelloApplet extends Applet {

Public void paint ( Graphics g ) {

G . drawString ( "Hello, world!" , 0 , 50 );

}

}

В данном примере мы подключаем библиотеки Applet - для доступа к классу апплета и Graphics - для использования графических функций. В апплетах мы не можем выводить на экран текст средствами библиотеки System, как мы это делали при написании консольного приложения (см. и ). Поэтому тут мы будем использовать немножко другие методы. В частности, класс Graphics , который предназначен для рисования в области поля апплета. И еще одно отличие от консольного приложения. Тут нет класса с методом main(). Для реализации апплета мы объявляем класс, дочерний от класса Applet:

public class HelloApplet extends Applet

Это значит, что наш новый класс HelloApplet - будет иметь все те же поля и методы, что и Applet, за исключением тех методов, что мы переопределили. В данном случае это paint - метод, отвечающий за прорисовку объекта. Программа, помещенная в нем, будет запускаться каждый раз, когда будет происходить отрисовка апплета. В данном случае эта программа, состоящая всего из одной строки:

g . drawString ( "Hello, world!" , 0 , 50 );

будет рисовать на экране текст "Hello, world!" в точке с координатами 0,50.

И так, компилируем программу. У нас должен появиться файл HelloApplet.class. Теперь тестируем его, создав простейший апплет содержащий HTML- файл:

"HelloApplet.class" Width = 200 Height = 200 >