Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

Java™ Богатый Совет Развертывания Интернет-приложений

Богатая Разработка Интернет-приложений и Развертывание> Богатый Совет Развертывания Интернет-приложений

Содержание

Объединенный Механизм Развертывания - Сеть Java Запускает Протокол

Запускаясь в Java выпуска SE 6 обновлений 10, Протокол Запуска Сети Java (JNLP) обеспечивает объединенный механизм для того, чтобы он развернул богатые интернет-приложения (RIA – апплеты и Java веб-приложения Запуска). RIA запустили использование, у JNLP есть следующие мощные возможности в их распоряжении:

Сценарий Инструментария развертывания

Чтобы избежать проблем совместимости браузера, сценарий Инструментария Развертывания обеспечивает функции JavaScript, которые автоматически генерируют HTML, требуемый развернуть RIA. Разработчики должны вызвать эти функции, чтобы развернуть их решения непротиворечивым способом через различные браузеры.

Сценарий представляет единственный объект, названный deployJava, который содержит следующие общедоступные функции:

См. удобочитаемую версию Инструментария Развертывания для подробного описания этих общедоступных функций. См. следующие Учебные уроки Java для получения дополнительной информации о развертывающихся RIA:

Развертывание Апплетов Плагина Java

В старом Плагине Java апплеты, всегда выполняемые с последней версией JRE, устанавливаются на клиентской машине. Старая Политика безопасности Развертывания предоставляет больше информации об этом поведении.

С Плагином Java следующего поколения, представленным в Java SE 6 обновлений 10 выпусков, можно определить, что ядро Java (базовый набор классов Java, абсолютно требуемых JRE) или нормальный онлайновый установщик быть автоматически загруженным, если указанная минимальная версия JRE уже не устанавливается на клиенте. Если указанная минимальная версия JRE не существует, последняя версия JRE загружается с www.java.com.

В случае загрузки ядра Java любые дополнительные пакеты могут также быть определены для загрузки как требуется апплетом.

Используя Атрибуты Тега Апплета

Апплеты могут быть развернуты через тег апплета. Параметры, чтобы сконфигурировать развертывание могут быть определены как атрибуты и параметры к тегу апплета.

Используйте runApplet() функция в deployJava гарантировать, что минимальная среда выполнения Java доступна на клиентской машине прежде, чем запустить апплет.

<script src="http://www.java.com/js/deployJava.js"></script>
<script>
    var attributes = {codebase:'http://java.sun.com/products/plugin/1.5.0/demos/jfc/Java2D',
                      code:'java2d.Java2DemoApplet.class',
                      archive:'Java2Demo.jar',
                      width:710, height:540} ;
    var parameters = {fontSize:16} ;
    var version = '1.6' ;
    deployJava.runApplet(attributes, parameters, version);
</script>

Вышеупомянутый код запустит Java 2-D апплет на версии 1.6.0 JRE или выше с одним параметром (fontSize).

Чтобы инициировать установку ядра Java и дополнительных пакетов, добавьте следующий перед deployJava.runApplet () функция:

   deployJava.setInstallerType('kernel');
   // include any required packages as shown below
   deployJava.setAdditionalPackages('javax.swing, javax.xml');

 

Используя JNLP

Чтобы развернуть апплеты, используя JNLP, определите jnlp_href параметр в теге апплета следующим образом:

 
 <script src="http://www.java.com/js/deployJava.js"></script>
 <script> 
   var attributes = { code:'java2d.Java2DemoApplet', width:710, height:540} ; 
   var parameters = {jnlp_href: 'java2d.jnlp'} ; 
   deployJava.runApplet(attributes, parameters, '1.6'); 
 </script>
 

В этом примере у java2d.jnlp есть следующая информация о развертывании

 <?xml version="1.0" encoding="UTF-8"?>
<jnlp href="java2d.jnlp">
<information>
<title>Java2D Demo</title>
<vendor>My Company, Inc.</vendor>
<offline-allowed />
</information>
<resources>
<j2se version="1.4+"
href="http://java.sun.com/products/autodl/j2se" />
<jar href="Java2Demo.jar" main="true" />
<!-- Specify if using JNLP extensions <extension name="SomeExtension"
href="http://some.server.com/some_extension.jnlp" /> -->
</resources>
<applet-desc
name="Java2D Demo"
main-class="java2d.Java2DemoApplet"
width="710"
height="540">
</applet-desc>
</jnlp>


Используя Атрибуты Тега Апплета и параметры JNLP:

Чтобы развернуть апплет, который работает на старых и новых Плагинах Java, определите атрибуты тега апплета и параметры JNLP как показано в примере ниже:

var attributes = {codebase:'http://java.sun.com/products/plugin/1.5.0/demos/jfc/Java2D',
                      code:'java2d.Java2DemoApplet.class', archive:'Java2Demo.jar', width:710, height:540} ; 
var parameters = {fontSize:16, jnlp_href:'java2d.jnlp'} ; 
var version = '1.6' ; 
deployJava.runApplet(attributes, parameters, version);  

Определение заключительной информации о развертывании

Тег апплета и файл JNLP обеспечивают перекрывающиеся механизмы, чтобы определить ту же самую информацию. Например, ширина, высота, код и т.д. может быть определен и как атрибуты тега апплета и в файле JNLP. Следующие правила применяются к различным атрибутам, чтобы определить заключительную информацию о развертывании:

 

Развертывание Java веб-Приложения Запуска

Веб-Приложение Запуска Java может быть развернуто просто, создавая файл JNLP, который описывает только заголовок, поставщика, версию java, файл (ы) фляги, и основной класс приложения. Вот является пример Java файлом приложения веб-Запуска JNLP:

<jnlp spec="0.2 1.0"
      codebase="http://java.sun.com/javase/technologies/desktop/javawebstart/apps"
      href="notepad.jnlp">
   <information> 
      <title>Notepad App</title> 
      <vendor>Sun Microsystems, Inc.</vendor>
      <homepage href="http://java.sun.com/javase/technologies/desktop/javawebstart/demos.html"/>
      <description>Notepad Demo Description</description>
      <description kind="short">Notepad Demo Short Description</description>
      <icon href="images/notepad.gif"/>
      <offline-allowed/> 
   </information> 
   <resources>
      <j2se version="1.3+" href="http://java.sun.com/products/autodl/j2se"/>
      <j2se version="1.3+"/>
      <jar href="notepad.jar" main="true" download="eager"/>
   </resources>
   <application-desc main-class="Notepad"/>
</jnlp> 

Приложение может тогда быть развернуто просто, обеспечивая ссылку к файлу JNLP на Вашей веб-странице:

<a href="http://java.sun.com/javase/technologies/desktop/javawebstart/apps/notepad.jnlp">Launch Notepad</a>

Много других элементов могут быть добавлены к файлу JNLP, чтобы управлять пользовательским опытом, безопасностью, и процессом обновления приложения, или использовать в своих интересах несколько других функций Сети Java Запускающийся Протокол (JNLP).

Java веб-Запуск может использовать свой механизм Автозагрузки, чтобы загрузить версию JRE, которого это требует, чтобы запустить приложение, но если приложение хочет использовать расширенные функции JNLP и Java веб-Запуск, которые были добавлены к определенной версии, можно хотеть гарантировать, что, по крайней мере, что версия устанавливается перед запускающимся Java веб-Запуск.

Предположите, что приложение хочет использовать Службу SingleInstance (представленный в 1.5.0). Вместо того, чтобы только определить <jnlp спецификацию = "1.5.0".../> и позволить приложению перестать работать на системах, где только 1.4.2 или ранее устанавливаются, можно использовать deployJava javascript, чтобы гарантировать, что, по крайней мере, версия 1.5.0 устанавливается перед запускающимся Java веб-Запуск.

<script src="http://www.java.com/js/deployJava.js"></script>
<script>
        var url = "http://java.sun.com/javase/technologies/desktop/javawebstart/apps/notepad.jnlp";
    deployJava.createWebStartLaunchButton(url, '1.6.0');
</script>

Для приложения, не имеющего определенные требования версии, можно только использовать функцию, не предоставляя minimumVersion.

<script>
    var url = "http://java.sun.com/javase/technologies/desktop/javawebstart/apps/notepad.jnlp";
    deployJava.createWebStartLaunchButton(url);
</script>
  

Настройка Опыта Загрузки RIA

Настройте опыт загрузки RIA, обеспечивая экран-заставку или специализированный индикатор хода выполнения загрузки, чтобы затронуть конечного пользователя во время процесса загрузки и передать измеримую информацию о продвижении. См. следующие темы для получения дополнительной информации:

Другие Соображения Развертывания

Порядок Установки JRE's

Если многократный JRE's обязан выполнять различные апплеты Плагина Java на той же самой машине, рекомендуется установить JRE's в порядке их версий. Самая старая версия должна быть установлена сначала и новейшая версия, установленная последний. Это избежит проблемы динамического clsid {8AD9C840-044E-11D1-B3E9-00805F499D93} используемый в объектном теге, который не использует последнюю версию JRE на машине.

Запускаясь с JRE 5.0u6 с поддержкой SSV, вышеупомянутое не является проблемой, потому что последняя версия JRE на машине будет использоваться. Кроме того, мы добавили новую динамическую версию clsid {CAFEEFAC-FFFF-FFFF-FFFF-ABCDEFFEDCBA}. Если новый динамический clsid будет использоваться в объектном теге, то последняя версия JRE будет использоваться независимо от порядка установки JRE's.

Порядок установки не должен иметь никакого эффекта на Java веб-Запуск. В любом случае самая высокая версия JRE на системе будет содержать версию Java веб-Запуск, который выполняется.

ClassLoder и Ресурсы Доступа

Ресурсы, к которым получают доступ в Java веб-приложение Запуска или апплет Плагина Java, могут кэшироваться на клиентской машине в Кэше Развертывания. Неблагоразумно принять формат или контент этого кэша, поскольку это может измениться между версиями.

Портируя одинокие программы на Java веб-Запуск или Плагин Java, проблемы могут произойти, когда у кода есть свойственные предположения, что это загружается SystemClassLoader. В Java ресурсы Плагина загружаются PluginClassLoader (который расширяет sun.applet. AppletClassLoader, который поочередно расширяет java.net. URLClassLoader). В Java веб-ресурсы Запуска загружаются JNLPClassLoader (который с JDK 6 расширяет java.net. URLClassLoader).

Получите доступ к ClassLoder, используемому с:

    ClassLoader cl = Thread.getCurrent().getContextClassLoader();

ClassLoader.getResource () возвращает URL, но любой код, который принимает, URL является JarURL к FileURL, и затем пытается анализировать тот FileURL, чтобы найти, что базовый путь к файлу перестанет работать. Корректный способ получить доступ к ресурсам состоит в том, чтобы использовать getResourceAsStream (), который возвратит корректный контент независимо от того, что тип ClassLoder используется, чтобы получить доступ к ресурсу. Если ресурс будет уже кэшироваться, то содержание ресурса будет возвращено из кэша непосредственно, таким образом не будет дополнительных сетевых соединений с ресурсом непосредственно.

Мы не рекомендуем изменить содержание кэша развертывания Java непосредственно. Кэш является частной реализацией Java веб-Запуск / Плагин Java, и подвержен изменениям в любое время.

Много приложений и библиотек пытаются развернуть файлы свойств и другие "ресурсы" включением их в том же самом каталоге как файл фляги, который использует их, и затем ожидайте быть в состоянии анализировать URL, возвращенный из getResource (), чтобы создать путь к этим файлам. Разработчики утверждают, что это необходимо так, приложение может позже изменить эти файлы свойств или другие "ресурсы" для использования в последующем launchings приложения. Портируя на сеть развернутые приложения, они тогда находят, что должны повторно упаковать их в файлы фляги приложения, и считать их только контентом "по умолчанию", и использовать один из нескольких других механизмов, чтобы сохранить измененные версии на клиентской машине (при записи файлов или или при использовании Привилегированного API или при использовании PersistenceService JNLP.)

Ленивая Загрузка

Когда приложения являются большими, может быть полезно только загрузить часть приложения, которое обязано запускать, и затем загружать остальных по требованию. Этот процесс упоминается как ленивая загрузка.

Java у веб-Запуска есть поддержка ленивой загрузки, но немного разработчиков, использует это. Это может быть способ значительно улучшить время загрузки и запуска в некоторых приложениях. Чтобы эффективно использовать ленивую загрузку, Java, веб-Запуск должен знать который фляга загрузить, чтобы разрешить запрос на определенный ресурс. Предыдущие версии Java веб-Запуск, требуемый сложная спецификация частей и пакетов, чтобы предоставить эту информацию. Начинаясь с версии 6.0, та же самая вещь может быть выполнена, используя Индексацию Фляги.

Индексация фляги является простым и эффективным способом загрузить только необходимые фляги, и избежать загружать все, когда несуществующий ресурс требуют. См., что Фляга Индексирует.

У Плагина Java есть встроенная поддержка ленивой загрузки (то есть, загрузка ленива по умолчанию), и также поддерживает Индексацию Фляги. Разработчики должны также попытаться НЕ использовать отдельные классы, но упаковать их как JAR вместо этого.

Ресурсы


Oracle и/или его филиалы Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами