Не очень понятно про оболочечные Данные,ячейки памяти могут наверно размер менять,какое это значение те же операции только ячейки больше,по скорости тоже самое |
Введение в сетевое программирование
10.2. Апплеты
Напомним некоторые вещи, о которых рассказывалось в "Общие представления о языке Java" . Апплет – это специализированная программа Java с ограниченными возможностями, работающая в окне WWW-документа под управлением браузера. Как правило, апплеты встраивают в HTML-документы (наиболее распространенный вид WWW-документов).
Между приложениями (applications) и апплетами (applets) Java имеется принципиальное различие: приложение запускается непосредственно с компьютера пользователя и имеет доступ ко всем ресурсам компьютера наравне с любыми другими программами. Апплет же загружается из WWW с постороннего сервера, причем из-за самой идеологии WWW сайт, с которого загружен апплет, в общем случае не может быть признан надежным. А вот сам апплет имеет возможность передавать данные на любой сервер в WWW – все зависит от алгоритма, заложенного создателем апплета. Поэтому для того, чтобы избежать риска утечки конфиденциальной информации с компьютера пользователя или совершения враждебных действий, у апплетов убраны многие возможности, имеющиеся у приложений.
Поддержка работы с апплетами осуществляется стандартной библиотекой классов ( core library ), расположенной в пакете java.applet для обычных апплетов, а также классом javax.swing.JApplet для апплетов, использующих компоненты Swing и/или библиотеку Sun JFC (Java Foundation Classes).
Для создания обычного апплета требуется задать класс, являющийся наследником класса java.applet.Applet, который сам является наследником класса java.awt.Panel.
В классе апплета требуется переопределить ряд методов:
public class Applet1 extends java.applet.Applet{ public void init(){ //Инициализация перед началом работы. //Вызывается один раз после загрузки апплета //перед первым выполнением метода start() } public void start(){ //Обеспечивает основную функциональность аплета. //В первый раз вызывается после загрузки апплета //и его инициализации методом init(). //Затем вызывается каждый раз при заходе пользователя //на HTML-страницу с апплетом. } public void update(java.awt.Graphics g){ //Форсирование перерисовки апплета с выполнением кода метода } public void paint(java.awt.Graphics g){ //Исполняется каждый раз при перерисовке апплета. //Обеспечивает всю визуализацию в апплете } public String getAppletInfo(){ return "Справочная информация об апплете"; } public void stop(){ //Приостанавливает выполнение апплета. //Исполняется каждый раз сразу после того, когда пользователь //покидает HTML-страницу с апплетом. } public void destroy(){ //Обычно не требует переопределения. //Предназначен для высвобождения ресурсов, захваченных апплетами. //Исполняется через негарантированный промежуток времени //каждый раз после вызова метода stop() //перед разрушением объекта апплета сборщиком мусора. } }
Кроме методов, нуждающихся в переопределении, в классе Applet имеется некоторое количество методов, позволяющих проверять и задавать его состояние во время выполнения:
- getSize() – возвращает размер апплета. Ширину и высоту можно получить как getSize().width и getSize().height
- showStatus(String s) – показ в строке статуса браузера сообщения s.
- AppletContext getAppletContext() – получение апплетом информации об документе, из которого был вызван апплет, а также о других апплетах того же документа.
- add(Component comp) – добавление компонента в апплет.
- AudioClip getAudioClip(URL url) - получение апплетом аудиоклипа по заданному WWW-адресу url. Создается объект Java, ссылающийся на данный аудиоклип.
- URL getDocumentBase() - получение апплетом адреса WWW-документа, из которого был вызван апплет.
Имеется большое количество других методов для работы с апплетами, большинство которых унаследовано от класса Panel.
Ряд примеров апплетов с исходными кодами приведен в JDK в папке demo/applets.
import java.awt.*; public class Applet1 extends java.applet.Applet{ public void paint(java.awt.Graphics g){ g.setColor(Color.green); g.fillRect(0,0,getSize().width - 1, getSize().height - 1); g.setColor(Color.black); g.drawString("Вас приветствует апплет!",20,20); this.showStatus("Это пример апплета"); } }
Пример HTML-документа, в который встроен апплет:
<html> <body> Это пример апплета<p> <object codebase="." code="Applet1.class" width=200 height=150 >
Альтернативный текст, который будет виден в браузерах, не поддерживающих работу с апплетами </object>
Если данный HTML-документ имеет имя example.html, то для запуска апплета следует расположить файл Applet1.class в той же папке, что и example.html. После чего открыть в браузере файл example.html. Обычно проще всего это сделать двойным щелчком мыши по имени файла в окне навигации по файлам и папкам.
Если в открывшемся окне браузера апплет не будет показан, его можно просмотреть в программе appletviewer. Для этого надо перейти в папку с файлами example.html и Applet1.class, и запустить appletviewer с параметром example.html. Например, для Windows® в командной строке надо набрать
appletviewer.exe example.html
Замечание: на домашнем компьютере с Windows XP SP1 и браузером MS Internet Explorer 6.0 автору не удалось запустить ни одного апплета, в том числе из примеров JDK. Хотя поддержка Java была включена, и автор пытался менять самые разные установки системы. Но в appletviewer все работало. Это является хорошей иллюстрацией того, почему крупные фирмы предпочитают при работе в сетях использовать не апплеты, а заниматься обработкой со стороны сервера и отсылать результаты на компьютер клиента в готовом виде. Ведь у клиентов, работающих в WWW, могут быть компьютеры с различными версиями JDK, операционными системами и браузерами. И гарантировать работоспособность одного и того же апплета в таком разнообразном окружении практически невозможно. Если же обработка идет со стороны сервера, все упрощается. Со стороны клиента нужен только браузер, работающий со ставшими совершенно стандартными языками HTML и JavaScript (после версии HTML 4.01 и JavaScript 1.3 они перестали изменяться). Браузер передает запрос с клиентского компьютера на сервер, и там формируется новый HTML-документ для клиентского компьютера, при необходимости – со сформированными на сервере графическими файлами.
Такая идеология позволяет при необходимости усовершенствовать систему незаметно для пользователей и с сохранением полной совместимости. Например, новая версия JVM устанавливается на сервере, и проводятся все необходимые настройки и тестирования. После чего вместо старой версии системы наружу показывается новая.