Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Java plug-in – что это такое ? 
:(
    Опции темы
AntonSaburov
Дата 22.12.2005, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Java plug-in – что это такое ?

Автор статьи написал ее в ходе чтения документации по Java Plug-In и в данном случае форма изложения материала получилась несколько рваной, за что приношу свои извинения.

Java plug-in (в дальнейшем просто plugin) в первую очередь был создан для того, чтобы пользователь мог запускать Java-приложения из под разных броузеров 

используя SUN JRE (Java Runtime Environment от SUN). Другими словами, если пользователю необходимо запустить апплет и этот апплет должен быть запущен из-под 

Sun JRE определенной версии, то сделать это хотелось бы как можно более удобным способом.

На сегодняшний день существует два пути запуска апплета:
1. Использовать таг APPLET на HTML странице
2. Заменить таг APPLET на более современный таг OBJECT (для Internet Explorer’а) или на таг EMBED для броузера Netscape (Но для версии 6 этот таг уже не 

подходит)

SUN предлагает использовать следующие правила для решения – какой таг использовать. Во-первых Вы должны определить – быдет ли использоваться апплет в 

интернет или в интранет сети.
Если Интернет – используйте таг APPLET
Если же Интранет – то OBJECT или EMBED
Во-вторых Вы должны решить какой броузер будет использоваться для работы с апплетом
Если Internet Explorer – используйте OBJECT
Если же семейство Mozilla – используйте EMBED
Если Вы рассчитываете на различные броузеры – используйте APPLET


Использование тага APPLET

Для подробного ознакомления с тагом APPLET советуем заглянуть на станицу http://www.w3.org/TR/1999/REC-html401-19991224/ (W3 HTML specification.)

В HTML спецификации утверждается, что таг APPLET является устаревшим и использовать его не стоит. Но в связи с тем, что четкое описание обработки тага OBJECT 

в спецификации пока нет, SUN советует использовать таг APPLET в случае кросс-платформенности и кросс-броузерности.

Достаточно простой пример использования тага:

Код

<applet code=Applet1.class width="200" height="200">
    Your browser does not support the <code>applet</code> tag.
</applet>



Использование тага OBJECT

Таг OBJECT имеет несколько аттрибутов. Мы рассмотрим самые важные.

Аттрибут classid определяет какую версию JRE надо использовать и может быть записан в двух варинатах:
1. classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
В этом случае определение используемой версии JRE определяется динамически и используется самая последняя из установленных в данный момент.
2. classid="clsid:CAFEEFAC-xxxx-yyyy-zzzz-ABCDEFFEDCBA" 
В такой форме последовательности xxxx, yyyy, zzzz определяют точно, какая версия JVM будет использована. Например для использования plugin’а версии 1.5.0 

classid определяется следующим образом:
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. В качестве примера можно посмотреть на следующее описание:
Код

<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/...todl-files.html
Вы можете посмотреть список различных версий JRE и для каждой версии тот URL, который позволит Вам загрузить нужную версию.


Использование тага EMBED

Код

<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.
1. Использование чистого HTML
2. Использование JavaScript

Если Вы используете HTML, то надо помнить несколько правил:
Internet Explorer – распознает таг OBJECT и игнорирует таг COMMENT
Семейство Mozilla  - игнорирурет таг OBJECT с аттрибутом classid и обрабатывает таг COMMENT.

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

<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 то нижеприведенный пример достаточно ясно показывает, что Вы должны делать.

Код

<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.

Более подробную инофрмацию по подписи апплетов можно получить в другой статье: http://vingrad.ru/JAVA-JAV-000116


Отладка апплетов с помощью Java Plug-in

Для того, чтоы иметь возможность отлаживать Ваше приложение Вам необходимо установить Java 2 SDK. Как установить – можете посмотреть статью: 

http://vingrad.ru/JAVA-JAV-000126
Также убедитесь, что Ваше приложение было откомпилировано с ключом –g. 
Теперь начнем отладку.
1. Запустите Java Plug-in Control Panel (как это сделать см. Выше). В закладе Advanced установите параметры:
Код

-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_shmem,address=<connection-address>,server=y,suspend=n

<connection-address> - это строка, которая указывает коннект к JVM. Например это может быть так:
Код

-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 можно использовать запуск
Код

jdb -attach 2502

Основные сведения по использованию jdb Вы моежет найтипо адресу http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdb.html
5. Как только дебаггер подконнектится к JVM Вы можете начинать отладку


Представленная информация само собой существует на официальном сайте Sun Microsystems и Вы можете использовать оригинальные описания Java Plug-In.
Все замечания по поводу статьи автор примет с большим удовольствием.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0877 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.