Java plug-in – что это такое ?
Автор статьи написал ее в ходе чтения документации по Java Plug-In и в данном случае форма изложения материала получилась несколько рваной, за что приношу свои извинения.
Java plug-in (в дальнейшем просто plugin) в первую очередь был создан для того, чтобы пользователь мог запускать Java-приложения из под разных броузеров используя SUN JRE (Java Runtime Environment от SUN). Другими словами, если пользователю необходимо запустить апплет и этот апплет должен быть запущен из-под
Sun JRE определенной версии, то сделать это хотелось бы как можно более удобным способом.
На сегодняшний день существует два пути запуска апплета:
- Использовать тэг APPLET на HTML странице
- Заменить тэг APPLET на более современный тэг OBJECT (для Internet Explorer’а) или на тэг EMBED для броузера Netscape (Но для версии 6 этот тэг уже не подходит)
SUN предлагает использовать следующие правила для решения – какой тэг использовать. Во-первых Вы должны определить – быдет ли использоваться апплет в интернет или в интранет сети.
Если Интернет – используйте тэг APPLET
Если же Интранет – то OBJECT или EMBED
Во-вторых Вы должны решить какой броузер будет использоваться для работы с апплетом
Если Internet Explorer – используйте OBJECT
Если же семейство Mozilla – используйте EMBED
Если Вы рассчитываете на различные броузеры – используйте APPLET
Использование тэга APPLET
Для подробного ознакомления с тэгом APPLET советуем заглянуть на станицу W3 HTML specification
В HTML спецификации утверждается, что тэг APPLET является устаревшим и использовать его не стоит. Но в связи с тем, что четкое описание обработки тэга OBJECT в спецификации пока нет, SUN советует использовать тэг APPLET в случае кросс-платформенности и кросс-броузерности.
Достаточно простой пример использования тэга:
1 2 3 |
<applet code=Applet1.class width="200" height="200"> Your browser does not support the <code>applet</code> tag. </applet> |
Использование тэга OBJECT
Тэг OBJECT имеет несколько атрибутов. Мы рассмотрим самые важные. Атрибут classid определяет какую версию JRE надо использовать и может быть записан в двух вариантах:
1 |
1. classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" |
В этом случае определение используемой версии JRE определяется динамически и используется самая последняя из установленных в данный момент.
1 |
2. classid="clsid:CAFEEFAC-xxxx-yyyy-zzzz-ABCDEFFEDCBA" |
В такой форме последовательности xxxx, yyyy, zzzz определяют точно, какая версия JVM будет использована. Например для использования plugin’а версии 1.5.0
classid определяется следующим образом:
1 |
classid="clsid:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA" |
ЗАМЕЧАНИЕ!
Формат версий для JVM выглядит следующим образом — n1.n2.n3_n4n5
n1.n2 –major версия программы
n3 – minor версия программы
n4, n5 – версия обновления програмы
Атрибут codebase определяет каким образом загружать необходимый plugin. Существует в двух формах:
1. codebase=<URL>
В этом случае plugin будет загружаться с указанного URL
2. codebase=<URL>#Version=major,minor,micro,update
В такой форме определяется версия необходимой JRE и если у пользователя установлена более старая версия, то броузер предложит установить ту, которая указана в URL. В качестве примера можно посмотреть на следующее описание:
1 2 3 4 |
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="200" height="200" codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"> <param name="code" value="Applet1.class"> </object> |
Здесь http://java.sun.com/j2se/1.5.0/docs/guide/deployment/deployment-guide/autodl-files.html Вы можете посмотреть список различных версий JRE и для каждой версии тот URL, который позволит Вам загрузить нужную версию.
Использование тэга EMBED
1 2 3 4 |
<embed code="Applet1.class" width="200" height="200" type="application/x-java-applet;version=1.5.0" pluginspage="http://java.sun.com/j2se/1.5.0/download.html"/> |
Наиболее интересными в данном тэге являются аттрибут type – он определяет, какая версия JRE необходима. Здесь разработчик может определить версию двумя путями
1. type=»application/x-java-applet;version=1.5.0″
В этом случае на компьютере пользователя должна быть устанволена JRE не ниже 1.5.0. В случае, если это не так, то пользователь будет перенаправлен на страницу, указанную в URL для загрузки нужной версии
2. type=»application/x-java-applet;jpi-version=1.5.0_01
В такой ситуации требуется точное совпадение версии. И если даже версия на компьютере пользователя выше, будет производиться загрузка точной версии.
Что делать в случае, если надо использовать несколько броузеров
Разработчик может использовать два варианта для установки JRE.
- Использование чистого HTML
- Использование JavaScript
Если Вы используете HTML, то надо помнить несколько правил:
Internet Explorer – распознает тэг OBJECT и игнорирует тэг COMMENT
Семейство Mozilla — игнорирурет тэг OBJECT с аттрибутом classid и обрабатывает тэг COMMENT.
Вот пример кода, который позволяет загружать нужные плагины при использовании разных броузеров:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<object classid="clsid:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA" <param name="code" value="Applet1.class"> <comment> <embed code="Applet1.class" type="application/x-java-applet;jpi-version=1.5.0"> <noembed> No Java Support. </noembed> </embed> </comment> </param> </object> |
Если Вы предпочитаете использовать JavaScript то нижеприведенный пример достаточно ясно показывает, что Вы должны делать.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<html> <script language="Javascript"> var _app = navigator.appName; if (_app == 'Netscape') { document.write('<embed code="Applet1.class"', 'width="200"', 'height="200"', 'type="application/x-java-applet;version=1.5.0">'); } else if (_app == 'Microsoft Internet Explorer') { document.write('<OBJECT ', 'classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"', 'width="200"', 'height="200">', '<PARAM name="code" value="Applet1.class">', '</OBJECT>'); } else { document.write('<p>Sorry, unsupported browser.</p>'); } </script> </html> |
Вышеприведенный код имеет недостаток в плане того, что в Netscape 6 тэг EMBED не поддерживается. Кроме того каждый раз писать такой код Вам само собой надоест и Вы бы предпочли что-то автоматическое. Для такого случая SUN создал специальные конверторы, которые позволяют изменить уже готовые HTML файлы.
Результатом изменения файла будет новый файл, в котором тэги APPLET будут заменены на более современный код.
Конфигурирование прокси
Большинство корпоративных пользователей подключены к сети, которая для выхода «наружу» используют прокси.
Plugin позволяет настроить необходимые параметры. Для Windows необходимо зайти в Панель Управления (Control Panel) и запустить Java Plug-In Control Panel.
В появившемся окошке выберите закладку Proxies. Plugin можно настроить в трех видах:
1. Использовать настройки броузера
2. Ручное конфигурирование
3. Ввести URL для автоматической настройки. Вы должны ввести URL для вызова файла с JavaScript где находится функция FindProxyForURL.
Кэширование апплетов
Панель управления плагином содержит в себе закладку, в которой можно настроить параметры кэша. Но кроме того разработчик может настроить параметры кэширования апплета с помощью указания аттрибутов для тэгов OBJECT и EMBED.
cache_archive – содержит список файлов, которые надо клсть в кэш.
<PARAM NAME=»cache_archive» VALUE=»a.jar,b.jar,c.jar»>
cache_version – содержит список версий апплета, которые надо кэшировать
<PARAM NAME=»cache_version» VALUE=»1.2.0.1, 2.1.1.2, 1.1.2.7″>
cache_archive_ex – используется для того, чтобы делать предварительную загрузку некоторых файлов
<PARAM NAME =”cache_archive_ex” VALUE= «<jar_file_name>;<preload(optional)>;<jar_file_version(optional)>,…»
«Молчаливая» установка
Инсталляционный пакет JRE построен с помощью программы InstallShield, которая базируется в свою очередь на Microsoft Windows Installer. Он позволяет производить так называемую «молчаливую» установку.
<jre>.exe /s /v»/qn ADDLOCAL=jrecore[,extra][,other_US] | ALL ]
[IEXPLORER=1] [NETSCAPE6=1] [MOZILLA=1] [INSTALLDIR=<drive>:\<install_path>]
[PRIVATE=1][REBOOT=Suppress]»
Где
jre.exe – исполняемый файл
ADDLOCAL – значение локализации
IEXPLORER, NETSCAPE6, MOZILLA – подключать ли JRE к этим броузерам
Основы безопасности апплетов
1. Все не подписанные апплеты работают в стандратной «песочнице»
2. Если в файле java.policy НЕ ОПРЕДЕЛЕН usePolicy, то подписанные апплеты получают AllPermissions (полные права) если: Java Plug-In может проверить подпись и выдает приглашение, которое пользователь может принять и дать апплету такие права или отклонить.
3. Если в файле java.policy ОПРЕДЕЛЕН usePolicy, то апплет получает те права, которые прописаны в файле java.policy и не происходит запроса на подтверждение пользователя.
Апплеты могут быть подписаны с помощью алгоритма RSA. Для того, чтобы plugin мог проверить подпись, в него встроен провайдер криптографии (не знаю как хорошо перевести Cryptographic Service Provider – CSP). CSP поддерживает алгоритмы подписи MD2-RSA, MD5-RSA, SHA-RSA.
Более подробную инофрмацию по подписи апплетов можно получить в другой статье — Подписи в апплетах — как это делается
Отладка апплетов с помощью Java Plug-in
Для того, чтоы иметь возможность отлаживать Ваше приложение Вам необходимо установить Java 2 SDK. Как установить – можете посмотреть статью:Как начать работать с JAVA
Также убедитесь, что Ваше приложение было откомпилировано с ключом –g.
Теперь начнем отладку.
1. Запустите Java Plug-in Control Panel (как это сделать см. Выше). В закладе Advanced установите параметры:
1 2 |
-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_shmem,address=<connection-address>,server=y,suspend=n |
<connection-address> — это строка, которая указывает коннект к JVM. Например это может быть так:
1 2 |
-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_shmem,address=2502,server=y,suspend=n |
2. Также в закладке Advanced установите нужную версию JDK, которая будет указывать на установленную Вами
3. Запустите Internet Explorer или Netscape и загрузите страницу, которая содержит отлаживаемый апплет.
4. Запустите команду jdb – attach <connection-address>. Для параметров, которые были установлены в пункте 1 можно использовать запуск
1 |
jdb -attach 2502 |
Основные сведения по использованию jdb Вы можетt найтипо адресу http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdb.html
5. Как только дебаггер подконнектится к JVM Вы можете начинать отладку
Представленная информация само собой существует на официальном сайте Sun Microsystems и Вы можете использовать оригинальные описания Java Plug-In.
Все замечания по поводу статьи автор примет с большим удовольствием.