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

Поиск:

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


Штурман
****


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

Репутация: 2
Всего: 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   Вверх
ShurikA
Дата 19.2.2008, 00:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: 1
Всего: 3



Приветствую всех!
Очень понраволась эта статья.  Спасибо.
После некоторого копания в нете отыскал очень интересную штуку, и хотелось бы поделиться.
"штука" называется HTML Converter. Зачем она нужна?

Многие (включая меня самого) задаются вопросом как правильно вставить апплет в HTML страничку.
Во всех книгах, во всяком случае для начинающих, описывается таг APPLET, он работает везде.
Но... допустим на компьютере не установленна JVM, или установленна не правильная версия, в таком случае появится пустое окно апплета или с красным иксом в левом верхнем углу этого окна (зависит от браузера).
Есть возможность помочь конечьному пользователю с установкой JVM и воспользоваться тагами Object и/или EMBED.
Я не буду описывать то как ими нужно пользоваться. Это нам уже предоставил AntonSaburov в статье выше, за что ему огромное спасибо.
Я попытаюсь облегчить жизнь создавая эти таги правильно, в 95% случаев просто автоматический  smile 

А теперь к делу.

Компания Sun, которую мы все знаем, предоставила нам "инструмент" под названием HTML Converter. Его цель конвертировать таг APPLET в тот таг который нам нужен. На пример Object или EMBED, при этом очень простым способом.
Я опишу пример конвертирования который сам же и использовал:

1. Перво на перво нам нужно создать HTML фаил в котором будет описан таг APPLET (желательно правильный и проверенный)
У меня он выглядел вот так:
Код

<applet
        codebase = "http://iibspro.com/soft/octopusuploader/"
        code     = "octopusuploader.OctopusUploader"
        name     = "OctopusUploader"
        ARCHIVE     = "<!--{applet_url}-->"
        width    = "600"
        height   = "450"
        MAYSCRIPT >
        <PARAM NAME="type" VALUE="application/x-java-applet">
        <param name="oid" value="<!--{oid}-->">
        <param name="redUrl" value="<!--{red_url}-->">
        <param name="lang" value="<!--{lang}-->">
        <param name="maxFileSize" value="<!--{max_file_size}-->">
</applet>

сохраним его где угодно и под любым именем.

2. Запускаем HTML Converter
HTML Converter можно запустить как с командной строки так и его графический интерфайс. Но запуск в любом случае происходит с командной строки. Я предпочитаю воспользоваться GUI.
JAR фаил конвертера должен быть в дериктории установки вашей ...JDK/lib.

Command Line:
Код

"C:\\Sun\\AppServer\\jdk\\bin\\java" -jar htmlconverter.jar -gui

После этой команды поднимертя окно на подобие следующего:
user posted image

2.1 В репвом поле выбераем тот самый фаил HTML который мы создали в самом начале.
2.2 Выбераем платформу под которую нам нужно созда наш таг (в поле Template File). Я для себя быбрал Standard (IE & Navigator)...
2.3 Вуберим версию JVM под которую нам нужно прогонять наш апплет. Тут к сожалению только 2 варианта: допустим версия 1.4 или 1.4 и выше. Но это поправимо: самая низкая версия зависит от той версии JVM под которой запущен HTML Converter, так что если нужна, на пример, версия 1.5 то можно запустит HTML Converter под 1.5 и т.д.
Для свойх нужд я выбрал версию 1.5 и выше

Всё, с установками закончили.

3. Теперь просто нажимаетм "Convert". Выскочит окошко с сообщением сколько фаилов обработанно. 

Теперь давайте откроем опять тот же самый фаил HTML который мы создали в самом начале:
Код

<!--"CONVERTED_APPLET"-->
<!-- HTML CONVERTER -->
<object
    classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
    codebase = "http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=5,0,0,5"
    WIDTH = "600" HEIGHT = "450" NAME = "OctopusUploader" >
    <PARAM NAME = CODE VALUE = "octopusuploader.OctopusUploader" >
    <PARAM NAME = CODEBASE VALUE = "http://iibspro.com/soft/octopusuploader/" >
    <PARAM NAME = ARCHIVE VALUE = "<!--{applet_url}-->" >
    <PARAM NAME = NAME VALUE = "OctopusUploader" >
    <PARAM NAME = MAYSCRIPT VALUE = true >
    <param name = "type" value = "application/x-java-applet;version=1.5">
    <param name = "scriptable" value = "false">
    <PARAM NAME = "type" VALUE="application/x-java-applet">
    <PARAM NAME = "oid" VALUE="<!--{oid}-->">
    <PARAM NAME = "redUrl" VALUE="<!--{red_url}-->">
    <PARAM NAME = "lang" VALUE="<!--{lang}-->">
    <PARAM NAME = "maxFileSize" VALUE="<!--{max_file_size}-->">

    <comment>
    <embed
            type = "application/x-java-applet;version=1.5" \
            CODE = "octopusuploader.OctopusUploader" \
            JAVA_CODEBASE = "http://iibspro.com/soft/octopusuploader/" \
            ARCHIVE = "<!--{applet_url}-->" \
            NAME = "OctopusUploader" \
            WIDTH = "600" \
            HEIGHT = "450" \
            MAYSCRIPT = true \
            type ="application/x-java-applet" \
            oid ="<!--{oid}-->" \
            redUrl ="<!--{red_url}-->" \
            lang ="<!--{lang}-->" \
            maxFileSize ="<!--{max_file_size}-->"
        scriptable = false
        pluginspage = "http://java.sun.com/products/plugin/index.html#download">
        <noembed>
            
            </noembed>
    </embed>
    </comment>
</object>

<!--
<APPLET CODE = "octopusuploader.OctopusUploader" JAVA_CODEBASE = "http://iibspro.com/soft/octopusuploader/" ARCHIVE = "<!--{applet_url}-->" WIDTH = "600" HEIGHT = "450" NAME = "OctopusUploader" MAYSCRIPT = true>
<PARAM NAME = "type" VALUE="application/x-java-applet">
<PARAM NAME = "oid" VALUE="<!--{oid}-->">
<PARAM NAME = "redUrl" VALUE="<!--{red_url}-->">
<PARAM NAME = "lang" VALUE="<!--{lang}-->">
<PARAM NAME = "maxFileSize" VALUE="<!--{max_file_size}-->">
</APPLET>
-->
<!--"END_CONVERTED_APPLET"-->


Что мы видим? 
Закоментированный таг APPLET и таг OBJECT со встроенным в него EMBED.
Таким образом построенный таг идеально работает в IE, FF и подобных.

Ну вот вроде бы и всё. Развлекайтесь!!  smile 

Информация изначально взята с сайта Sun : http://java.sun.com/j2se/1.5.0/docs/guide/...tml#running_gui




--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
aliks
Дата 5.1.2009, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 17.12.2008

Репутация: нет
Всего: 1



а я так и не понял, что такое Java Plug-in и чем он отличается от апплета...или это есть одно и тоже, просто по разному называется???
--------------------
Любимая кнопка - F1, Любимое спасибо - Плюс в репутацию
PM MAIL Jabber   Вверх
LSD
Дата 9.1.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(aliks @  5.1.2009,  17:14 Найти цитируемый пост)
а я так и не понял, что такое Java Plug-in и чем он отличается от апплета...или это есть одно и тоже, просто по разному называется??? 

Для запуска апплета есть 2 возможности:

1. Использование тега applet. Этот способ хорош тем, что практически все браузеры его понимают. А плох тем, что он устарел и возможно в будущем перестанет поддерживаться, нельзя контролировать версию JRE на клиенте и установить ее при необходимости.

2. Использование тега object. Этот способ хорош тем, что можно указывать требуемую версию JRE и при ее отсутствии автоматически установить ее. Плюс есть возможность отлаживать апплеты в браузере. И по скольку этот тег используется для большинства внедренных объектов (типа того же Flash), то он гарантированно будет поддерживаться в будущем. Недостаток состоит в том, что этот тег по разному выглядит для разных браузеров.

Так вот Java plugin это плагин к браузеру который и отвечает за обработку тега object.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
aliks
Дата 13.3.2009, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 17.12.2008

Репутация: нет
Всего: 1



Спасибо за разжевывания вопроса smile 

Это сообщение отредактировал(а) aliks - 13.3.2009, 12:31
--------------------
Любимая кнопка - F1, Любимое спасибо - Плюс в репутацию
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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