Pergunta

Java é uma das minhas linguagens de programação preferidas.Sempre me deparo com o problema de distribuir meu aplicativo aos usuários finais.

Fornecer um JAR a um usuário nem sempre é tão amigável quanto eu gostaria e usar o Java WebStart exige que eu mantenha um servidor web.

Qual é a melhor maneira de distribuir um aplicativo Java?E se o aplicativo Java precisar instalar artefatos no computador do usuário?Existem bons sistemas de instalação/empacotamento Java por aí?

Foi útil?

Solução

Há uma variedade de soluções, dependendo dos seus requisitos de distribuição.

  1. Basta usar uma jarra.Isso pressupõe que o usuário tenha a versão Java correta instalada, caso contrário, o usuário obterá exceções de "versão em formato de arquivo de classe".Isso é adequado para distribuição interna dentro de uma empresa.

  2. Use o launch4j e um instalador como o NSIS.Isso lhe dá muito mais controle, embora o usuário ainda possa fazer coisas estúpidas, como desinstalar o Java Runtime.Esta é provavelmente a abordagem mais popular e a que uso atualmente.

  3. Utilize o Webstart.Isso também pressupõe que o usuário tenha a versão Java correta instalada, mas é muito mais fácil de começar.Minha experiência é que isso é bom para ambientes de intranet rigidamente controlados, mas se torna um problema com implantações maiores porque apresenta muitas falhas estranhas.Pode ficar melhor com a nova tecnologia de plug-in no Java 1.7.

  4. Use um compilador de código nativo como Excelsior JET e distribua como um executável ou envolva-o em um instalador.Caro e geralmente vincula você a uma versão um pouco mais antiga do Java, e há alguns problemas com o carregamento dinâmico de classes, mas é muito eficaz para implantação em larga escala, onde você precisa minimizar os problemas de suporte.

Outras dicas

instalador avançado facilita o empacotamento de aplicativos Java como executáveis ​​do Windows e é bastante flexível na maneira como você pode configurá-los.Descobri que, para distribuir aplicativos Java para clientes Windows, esse é o caminho mais fácil.

JSmooth é um programa simples que pega seu jar e o agrupa em um arquivo executável padrão do Windows.Ele vem com uma GUI simples que permite configurar a JVM necessária, agrupá-la com o aplicativo ou fornecer uma opção de download se ainda não estiver instalada.Você pode enviar o arquivo exe como está ou compactá-lo com possíveis dependências (ou deixar o programa baixar as dependências extras da rede na inicialização).Também é gratuito, como cerveja e discurso, o que pode (ou não) ser uma coisa boa.

Depende de quão sofisticados são seus usuários-alvo.Na maioria dos casos, você deseja isolá-los do fato de estar executando um aplicativo baseado em Java.Forneça a eles um instalador nativo que faça a coisa certa (crie entradas do menu Iniciar, inicializadores, registre-se para adicionar/remover programas, etc.) e já inclua um tempo de execução Java (para que o usuário não precise saber ou se preocupar com isso).Gostaria de sugerir nossa ferramenta de instalação multiplataforma, Construtor de instalação BitRock.Embora não seja baseado em Java, é comumente usado para empacotar aplicativos Java.Ele pode ser facilmente integrado ao Ant e você pode criar instaladores do Windows a partir de Unix/Linux/Mac e vice-versa.Como os instaladores gerados são nativos, eles não exigem uma etapa de autoextração ou que um JRE já esteja presente no sistema de destino, o que significa instaladores menores e evita algumas dores de cabeça.Também gostaria de mencionar que temos licenças gratuitas para projetos de código aberto

arquivos executáveis ​​são melhores, mas são limitados pela plataforma, ou seja,use gcj: http://gcc.gnu.org/java/ para o Linux produzir executáveis ​​​​e usar launch4j: http://launch4j.sourceforge.net/ para produzir executáveis ​​​​do Windows.Para empacotar no Linux você pode usar qualquer empacotador rpm ou deb.Para win32 tente http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System

Se for um aplicativo de usuário final com GUI real, você deve ignorar o idioma em que escreveu o programa (Java) e usar um instalador nativo para cada uma das plataformas escolhidas.O pessoal do Mac quer um .dmg e no Windows um instalador .msi ou .exe é a melhor opção.No Windows, prefiro o NSIS da NullSoft apenas porque é menos questionável que o InstallShield ou o InstallAnywhere.No OSX você pode contar com a JVM já presente.No Windows, você precisará verificar e instalá-lo, se necessário.Os usuários do Linux não executam aplicativos Java GUI, e os poucos que o fazem sabem o que fazer com um .jar executável.

Embora eu não tenha usado NSIS (Nullsoft Scriptable Installer System), existem scripts de instalação que verificarão se o JRE necessário está ou não instalado no sistema de destino.

Muitos scripts de amostra estão disponíveis no site Exemplos de código e Instaladores do mundo real páginas, como:

(Observe que na verdade não usei nenhum dos scripts, portanto, não tome isso como um endosso.)

Eu precisava de uma maneira de empacotar meu projeto e suas dependências em um único arquivo jar.

Encontrei o que precisava usando o plugin Maven2 Assembly: Plug-in Maven2 Assembly

Isso parece duplicar a funcionalidade do um frasco, mas não requer nenhuma configuração adicional para funcionar.

Para aplicativos Java simples, gosto de usar Jar's.É muito simples distribuir um arquivo no qual o usuário pode simplesmente clicar (Windows) ou

java -jar jarname.jar

IMHO, jar é o caminho a seguir quando a simplicidade é um requisito principal.

Eu desenvolvo aplicativos Eclipse RCP.Normalmente, para iniciar um aplicativo Eclipse, um inicializador executável é incluído.Incluo a máquina virtual java dentro da pasta do aplicativo em um subdiretório /jre para garantir que a versão correta do java será usada.

Em seguida empacotamos com o Inno Setup para instalação na máquina do usuário.

Qual é a melhor maneira de distribuir um Aplicação Java?E se o Java O aplicativo precisa instalar artefatos para o computador do usuário?Existem boa instalação/empacotamento Java sistemas por aí?

Na minha experiência (de avaliando uma série de opções), instalar4j é uma boa solução.Ele cria instaladores nativos para qualquer plataforma e é voltado especificamente para a instalação de aplicativos Java.Para obter detalhes, consulte "Características"em seu site.

install4j é uma ferramenta comercial.Especialmente se suas necessidades forem relativamente simples (basta distribuir um aplicativo e instalar alguns artefatos), existem muitas outras boas opções, inclusive gratuitas (como izPack ou o já mencionado Lauch4j).Mas você pediu o melhor maneira, e até onde sei, install4j é o ideal, especialmente para distribuir aplicativos Java (EE) maiores ou mais complicados.

A melhor resposta depende da plataforma.Para implantação no Windows, obtive bons resultados usando uma combinação de um frasco e lançamento4j.Demorou um pouco para configurar meu ambiente de construção corretamente (ant scripts, principalmente), mas agora é bastante simples.

Bem, do meu ponto de vista, o mecanismo de distribuição superior é usar algo como Clique uma vez, ou WebStart tecnologia.Você apenas implanta a versão no servidor e ela chega automaticamente aos clientes quando a versão é lançada.Além disso, a plataforma Eclipse RCP contém UpdateManager que faz o que o WebStart faz, mas também muito mais.

Como estou usando o Maven2 para construção, a implantação é muito fácil:copie o jar construído para o local no servidor, atualize o arquivo jnlp se necessário e pronto.

installanywhere é bom, mas caro - não encontrei (tão) bom e gratuito

Eu compactaria o arquivo jar junto com outros jars dependentes, arquivos de configuração e documentação junto com run.bat/run.sh.O usuário final deve ser capaz de descompactá-lo em qualquer local e editar o run.bat, se necessário (ele deve ser executado sem edição na maioria dos casos).Um instalador pode ser útil se você deseja criar entradas no menu Iniciar, área de trabalho, bandeja do sistema, etc.

Como usuário, prefiro descompactar e executar o tipo de instalação (sem entradas no menu Iniciar, por favor).No entanto, as pessoas fora do setor de TI podem ter preferências diferentes.Portanto, se o aplicativo for amplamente direcionado a desenvolvedores, a rota zip-run.bat e os aplicativos para o público em geral podem ser instalados usando um instalador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top