Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
300
Добавлен:
24.02.2016
Размер:
931.84 Кб
Скачать

Использование jdk (Java Developer’s Kit).

  1. Создание, ввод и сохранение обычного тестового файла, содержащего код программы, имеющего расширение .java (например, Hello.java). Использовать можно любой текстовый редактор, позволяющий работать с файлами, имеющими длинные имена, например Notepad.

  2. Создание с помощью того же текстового редактора файла HTML (например, Hello.html), в который встраивается созданный апплет. Для этого в него включается следующий тег: <APPLET CODE=Hello.class WIDTH=200 HEIGHT=200></APPLET>

  3. Компиляция исходного кода Java в машинный байтовый код при помощи компилятора javac. В результате трансляции создаются файлы с расширением .class (Hello.class).

  4. Исполнение приложения: 1). Просмотр файла Hello.html с помощью WWW-навигатора, поддерживающего работу апплетов. 2) Либо использование программы просмотра апплетов appletviewer.exe.

Замечание. Для выполнения компиляции и запуска приложения можно создать командный файл (с расширением .bat) следующего содержания:

javac.exe Hello.java

appletviewer.exe Hello.html

Использование среды разработки IntellijIdea

  1. Создание нового Java-проекта с именем Hello (меню “File”, пункт “New”).

  2. Создание нового Java-файла, ввод исходного текста при помощи встроенного в среду разработки текстового редактора. Файл с исходным текстом Hello.java должен быть включен в проект Hello.

  3. Компиляция исходных текстов.

  4. Создание конфигурации запуска апплета ( Меню Run – Edit Configuration), закладка Applet

  5. Запуск апплета ( меню Run ). Происходит запуск апплета с помощью appletviewer.

Простейший апплет Hello

Исходный текст Java-файла простейшего апплетавыглядит следующим образом:

/*------------- Пример 7. Файл Hello.java -------------*/

import java.applet.*;

import java.awt.*;

public class Hello extends Applet

{

public void init()

{ resize(150,150);

}

public void paint(Graphics g)

{ g.drawString("Hello, WWW", 10, 20);

}

}/*-----------------------------------------------------------*/

Файл HTML-документа со ссылкой на апплет Hello должен содержать следующий код:

<!-- .............. Пример 1. HTML-файл .............. -->

<html>

<head>

<title>Hello</title>

</head>

<body>

<applet code=Hello.class width=200 height=200></applet>

</body>

</html>

Теперь рассмотрим, из каких обязательных частей состоит апплет. Класс Hello, определенный в этом апплете, также является первичным классом, хотя он достаточно сильно отличается от первичных классов для простых приложений. Для обычной Java-программы необходимо было определить только один обязательный метод в первичном классе - метод main(). В первичном классе апплета необходимо определить как минимум два метода – initиpaint. Методinitвыполняет инициализацию апплета, а спомощью методаpaintвыполняется отрисовка апплета. Другие методы определяются в случае необходимости создания некоторых специальных эффектов.

Класс Hello определяется как public, а это значит, что он доступен для других объектов. Кроме того, явно установлен суперкласс класс Hello. Им является класс Applet(java.applet.Applet). Класс Applet должны расширять все апплеты, в том числе и класс Hello. Покажемиерархию классов(или дерево наследования) для апплетов:

Hello <- Applet <- Panel <- Container <- Component <- Object

Класс Hello наследует данные и поведение класса Applet. Являясь подклассом класса Applet, класс Hello может считаться его более специализированным вариантом.

Большинство апплетов объявляет как минимум два метода: init()иpaint(). Эти методы уже существуют в классе Applet, расширяемом всеми апплетами, включая и подкласс Hello. Объявление в подклассе метода с тем же самым именем, который есть и в суперклассе, заменяет метод суперкласса методом подкласса. Таким образом, происходитпереопределение методов суперкласса с помощью специализированных версий этих методов подкласса.

Переопределяемый метод init()не имеет параметров, ничего не возвращает и объявляется открытым. Единственное, что делает в этом методе апплет Hello - это заставляет изменить размеры окна апплета. Методresize()является методом класса Applet, поэтому можно использовать его и другие методы этого класса.

Вторым переопределяемым методом является paint(), который представляет собой подпрограмму, используемую для создания на экране изображения. Подобно методу init(), он объявлен открытым и ничего не возвращает. Но у него есть параметр, а именно - объект классаGraphics. Методами этого класса можно пользоваться для вывода графической информации в окно апплета.

Рассмотрим еще раз более систематизировано основные различия между первичным классом апплета и обычной Java-программы:

  • Ни один из методов в первичном классе апплета не является статическим. Из этого можно сделать вывод, что этот класс должен быть в какой-то момент явным образом реализован (в отличие от первичного класса приложения). Но в тексте апплета Hello оператора реализации класса нет. Отсюда следует, что оболочка времени выполнения апплета, встроенная в WWW-броузер, сама реализует первичный класс апплета.

  • Первичный класс апплета является расширением класса Applet (или подклассом Applet). Класс Applet включает в себя те функции, которые должен иметь каждый апплет.

  • Если проверить выполнение апплета Hello, то видно, что оба включенных в первичный класс метода отработали несмотря на то, что код самого апплета не содержал явных вызовов этих методов. Это объясняется тем, что также, как и оболочка времени выполнения Java сама ищет и вызывает метод main() в первичном классе программы, оболочка времени апплета самостоятельно вызывает методы, входящие в подкласс Hello класса Applet.

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

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