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.
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.
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.
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:
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”.
Saiba mais
- JNLP File Syntax http://download.oracle.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html
- Oralce Lesson: Java Web Start http://download.oracle.com/javase/tutorial/deployment/webstart/index.html