Distribuir aplicações baseadas em Eclipse com Java Web Start

As aplicações construídas no Eclipse podem ser implementadas com o Java Web Start.

Java Web Start "é uma tecnologia de distribuição de aplicações que viabiliza o lançamento de aplicações de funções completas com um único clique no browser da Web".

Os pré-requisitos para iniciar o Eclipse a partir do Java Web Start são:

Os passos seguintes descrevem como configurar um sítio Java Web Start que sirva uma aplicação RCP baseada em funções.

Passo 1, criar uma função cápsula

Passo 2, exportar a função cápsula e o ficheiro startup.jar

Nota. Antes de continuar este passo assegure-se de que tem um arquivo de chaves disponível. O Eclipse não faculta função nenhuma para criar arquivos de chaves. Pode utilizar a aplicação ferramenta de chaves que está incluída no JDK. Além disso, assegure-se de que o Eclipse com que está a distribuir se executa no SDK Java e não no JRE. Se esta restrição não for cumprida, falhará a assinatura do ficheiro JAR.

Passo 3, criar o ficheiro JNLP principal

Uma aplicação Java Web Start é descrita por ficheiros JNLP. Estes substituem os ficheiros eclipse.exe e config.ini por um mecanismo equivalente. Por exemplo, o JNLP tem o seu próprio mecanismo para controlar ecrã de boas-vindas, maneiras de transmitir parâmetros e definir o que constitui a aplicação.

Quando efectuou a exportação, tinham sido criados todos os ficheiros JNLP, de modo que falta escrever o ficheiro principal que irá controlar a aplicação. Dado que a maioria do ficheiro principal é comum a todas as aplicações, recomenda-se começar no seguinte modelo auto-documentado.

No sítio que serve a sua aplicação, o ficheiro deve encontrar-se na mesma pasta que startup.jar. Uma vez editado este ficheiro, a aplicação ficará pronta.

<?xml version="1.0" encoding="UTF-8"?>
<jnlp 
    spec="1.0+" 
    codebase="http://myCompany.org/jnlpServer"
    href="mail.jnlp"> <!-- URL to the site containing the jnlp application. It should match the value used on  export. Href, the name of this file -->
  <information>
    <!-- user readable name of the application -->
    <title> Mail Application </title>
    <!-- vendor name -->
    <vendor>My company</vendor>
    <!-- vendor homepage -->
    <homepage href="My company website" />
    <!-- product description -->
    <description>This is a mail client</description>
    <icon kind="splash" href="splash.gif"/>
  </information>
 
  <!--request all permissions from the application. This does not change-->
  <security>
    <all-permissions/>
  </security>
 
  <!-- The name of the main class to execute. This does not change-->
  <application-desc main-class="org.eclipse.core.launcher.WebStartMain">
    <argument>-nosplash</argument>
  </application-desc>
 
  <resources>
    <!-- Reference to the startup.jar. This does not change -->
    <jar href="startup.jar"/>
 
    <!-- Reference to all the plugins and features constituting the application -->
    <!-- Here we are referring to the wrapper feature since it transitively
refers to all the other plug-ins  necessary -->
    <extension
        name="Wrapper feature"
        href="features/Wrappering_1.0.0.jnlp"/>
 
    <!-- Information usually specified in the config.ini -->
    <property
        name="osgi.instance.area"
        value="@user.home/Application Data/mail"/>
    <property
        name="osgi.configuration.area"
        value="@user.home/Application Data/mail"/>
        
    <!-- The id of the product to run, like found in the overview page of the product editor -->
    <property
        name="eclipse.product"
        value="mail.product"/>
  </resources>

  <!-- Indicate on a platform basis which JRE to use -->
  <resources os="Mac">
    <j2se version="1.5+" java-vm-args="-XstartOnFirstThread"/>
  </resources>
  <resources os="Windows">
    <j2se version="1.4+"/>
  </resources>
  <resources os="Linux">
    <j2se version="1.4+"/>
  </resources>
</jnlp>

Sugestões: uma vez criado este ficheiro, poderá armazená-lo na função cápsula na mesma pasta que o ficheiro startup.jar, de modo a ter em cada exportação a estrutura completa.

Aplicação baseada em plug-ins

Embora a aplicação RCP não utilize funções, é possível recorrer ao Java Web Start.

Nesse sentido, recomenda-se criar uma função cápsula para facilitar a criação do ficheiro jnlp principal e viabilizar a distribuição. Esta função cápsula irá enumerar todos os plug-ins da aplicação. Uma vez a função actualizada, copie o ficheiro JNLP gerado e modifique-o para se tornar no ficheiro JNLP principal.

Vários

Java Web Start no linux

Quando uma aplicação do eclipse for iniciada no Web Start no Linux o sistema de apresentação em janelas predefinido é motif. Se pretender executar o GTK, será necessário definir a propriedade osgi.ws to "gtk" no ficheiro jnlp principal. Por exemplo, pode adicionar:

  <resources os="Linux"/>
        <property name="osgi.ws" value="gtk"/>
  </resources>

Limitações conhecidas