Java Web Start

O objetivo deste artigo é apresentar o Java Web Start (JWS), um produto da Oracle que permite que o usuário instale e inicie aplicações Java direto do navegador com apenas um clique. O software Java Web Start permite ativar aplicativos facilmente e oferece a garantia de que sempre esteja sendo executada a versão mais recente do aplicativo, eliminando os procedimentos de instalação ou atualização. O JWS está incluso no Java Runtime Environment (JRE) a partir da versão Java 5.

O software Java Web Start é iniciado automaticamente quando é feito o primeiro download de um aplicativo Java que utiliza essa tecnologia. O Java Web Start armazena todo o aplicativo localmente, na memória cache do computador. Assim, todas as inicializações subseqüentes são quase instant neas, pois todos os recursos necessários já estão disponíveis localmente. Toda vez que o aplicativo é iniciado, o software Java Web Start acessa o site do aplicativo para verificar se há uma nova versão disponível. Se houver, ele fará o download e iniciará a nova versão automaticamente.

1. Desenvolvendo um pequeno sistema Desktop

Para começar, vamos criar um aplicativo simples, o qual em seguida será executado pelo Java Web Start. Veja na Listagem 1 o código do aplicativo que irá listar em uma tabela os estados brasileiros.

Listagem 1. Classe AppDesktop.
package com.wp.mb.appdesktop;

import java.awt.*;
import javax.swing.*;

public class AppDesktop {
    private JScrollPane scrollPane;
    private JTable table;
    private JFrame frame;
    private JLabel imagem;

    public AppDesktop() {
        frame = new JFrame("Lista de Estados Brasileiros");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        String[] colunas = {"Posição", "Estado", "Área urbana (km²)"};
			
        String[][] linhas = getEstados();

        table = new JTable(linhas, colunas);
        table.setSize(new Dimension(400, 200));

        scrollPane = new JScrollPane(table);

        frame.add(scrollPane, BorderLayout.CENTER);

        imagem = new JLabel();

        frame.setSize(500, 250);
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
    }

    private String[][] getEstados() {
        String[][] dados = {
            {"1º", "São Paulo", "4.971"},
            {"2º", "Minas Gerais", "2.525,8"},
            {"3º", "Rio Grande do Sul", "1.647"},
            {"4º", "Paraná", "1.603,7"},
            {"5º", "Rio de Janeiro", "1.479,9"},
            {"6º", "Goiás", "1.113,6"},
            {"7º", "Santa Catarina", "878,2"},
            {"8º", "Bahia", "762,9"},
            {"9º", "Pará", "730,6"},
            {"10º", "Distrito Federal", "621"},
            {"11º", "Mato Grosso", "519,7"},
            {"12º", "Maranhão", "512,3"},
            {"13º", "Pernambuco", "511,4"},
            {"14º", "Ceará", "471,2"},
            {"15º", "Mato Grosso do Sul", "441,3"},
            {"16º", "Espírito Santo", "427,6"},
            {"17º", "Amazonas", "395,1"},
            {"18º", "Paraíba", "319,6"},
            {"19º", "Piauí", "277,1"},
            {"20º", "Rio Grande do Norte", "269,6"},
            {"21º", "Rondônia", "226,1"},
            {"22º", "Alagoas", "202,1"},
            {"23º", "Sergipe", "118,7"},
            {"24º", "Tocantins", "99,6"},
            {"25º", "Amapá", "69,3"},
            {"26º", "Acre", "49,5"},
            {"27º", "Roraima", "40,6"}
        };
        return dados;
    }

    public static void main(String[] args) {
        int op = JOptionPane.showConfirmDialog(
                    null, "Deseja continuar?", "",
					JOptionPane.YES_NO_OPTION
                 );
        if (op == JOptionPane.YES_OPTION) {
            AppDesktop frame = new AppDesktop();
        }    
	}
}

2. Criando o arquivo JNLP

O .jnlp é um arquivo de documento com tag’s em XML que contém as configurações necessárias para que o Java Web Start, já na máquina do cliente, obtenha e execute os arquivos JAR da aplicação. Ele funcionar como se fosse um arquivo executável, que através de um clique busca por uma URL o local onde se encontra depositado o arquivo JAR da aplicação que deve ser executada. Veja na Listagem 2 a configuração que será utilizada no arquivo desktop.jnlp para executar a aplicação da Listagem 1.

Listagem 2. Arquivo desktop.jnlp.


    
        My First Java Web Start - Desktop
        Programando com Java
        
        
                  Exibe lista de estados brasileiros.
         
        
    
    
        
        
    
    
      
    

Todas as tags de configuração devem ficar dentro da tag root e cada tag do arquivo possui um objetivo especifico, veja a seguir:

  • SPEC: o atributo spec (especificação) pode ser 1.0, 1.5.0 ou 6.0 ou pode usar os curingas, tais como 1.0 +. Denota a versão mínima da Especificação JNLP que este arquivo jnlp pode trabalhar;
  • CODEBASE: este atributo recebe a URL de onde se encontra o arquivo .jnlp. Geralmente será o caminho de um servidor web;
  • HREF: aqui deve ser inserido o nome do arquivo .jnlp depositado no servidor;
  • INFORMATION: podemos ter dentro desta tag varias outras tags que tem como objetivo informações como, descrição, titulo, entre outras. Um dessas tags a permite que o arquivo seja executa com a maquina cliente off-line;
  • RESOURCES: aqui descrevemos a versão mínima do Java para a execução da aplicação e também o local onde se encontra a aplicação;
  • APPLICATION-DESC: local onde deve ser informada a classe principal da aplicação;
  • UPDATE: aqui se informa se a aplicação deve ser atualizada quando houver atualização nos arquivos depositados no servidor.

Observações:

  • Se você não quer permitir que o usuário execute a aplicação off-line, remova a tag <offline-allowed>;
  • Se o seu projeto possui mais de um JAR, adicione mais tags correspondentes em resources, marcando uma delas como sendo o JAR correspondente a classe principal da aplicação (main="true").

Na Listagem 3 temos um exemplo de arquivo HTML para realizar o download do arquivo desktop.jnlp. Nesse arquivo em especial, vamos usar duas tags de JavaScript que possuem comunicação com os servidores da Oracle e disponibilizam um botão padrão para o download. Não é necessário usar essa configuração, você pode fazer a que desejar, como apenas exibir o link sem um botão.

Listagem 3. Página desktop.html para download do .jnlp


    
        Pagina de teste para download do arquivo JNLP
    
    
        

Pagina de teste para download do arquivo JNLP

3. Desenvolvendo uma aplicação Web Simples.

Vamos simular que o arquivo JNLP esteja em um servidor Web, para isso iremos criar uma aplicação web bem simples e executá-la para então ser exibida a página HTML com o botão de download. Crie uma aplicação web e no diretório root da aplicação adicione os arquivos: desktop.jnlp e desktop.html. Na página índex, adicione o código:

<% response.sendRedirect("desktop.html"); %>

Veja na Figura 1 a disposição dos arquivos na estrutura da aplicação web:

Figura 1 ? Estrutura do projeto web.

Figura 1 – Estrutura do projeto web.

4. Executando o projeto

Para executar o projeto crie um arquivo JAR da aplicação AppDesktop (Listagem 1). Esse será o arquivo que iremos executar após o download do JNLP. Devemos definir um local onde ele estará depositado. Vamos adicioná-lo dentro da aplicação web, no diretório file, como demonstrado na Figura 1. Se você quiser pode também colocá-lo em um diretório no seu HD, para isso vai precisar modificar a URL existente em resources do arquivo desktop.jnlp, por exemplo, se adicioná-lo em C:\Arquivos\ use a seguinte URL: file:///C:\ Arquivos\AppDesktop.jar.

Caso algum erro aconteça, o que não deve ocorrer nesse exemplo, após a execução do arquivo baixado, teríamos uma tela relatando o erro, veja na Figura 2. Para visualizar os detalhes do erro, clique no botão “Detalhes”.

Figura 2 - Erro na execução do JNLP.

Figura 2 – Erro na execução do JNLP.

Saiba mais

Ballem

Marcio Ballem é bacharel em Sistemas de Informação pelo Centro Universitário Franciscano em Santa Maria/RS. Tem experiência com desenvolvimento Delphi e Java em projetos para gestão pública e acadêmica. Possui certificação em Java, OCJP 6.

Você pode gostar...