it-swarm-pt.tech

Qual é a melhor maneira de distribuir Java aplicativos?

Java é uma das minhas linguagens de programação preferidas. Eu sempre encontro o problema, apesar de distribuir meu aplicativo aos usuários finais.

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

Qual é a melhor maneira de distribuir um aplicativo Java? E se o aplicativo Java precisar instalar artefatos no computador do usuário? Existe algum bom Java lá fora?

113
Laplie Anderson

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 correta Java instalada), caso contrário, o usuário receberá exceções "versão em formato de arquivo de classe". Isso é bom para a 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 tempo de execução Java. Esta é provavelmente a abordagem mais popular e o que eu uso atualmente.

  3. Use o Webstart. Isso também pressupõe que o usuário tenha a versão correta Java instalada, mas é muito mais fácil seguir em frente. Minha experiência é que isso é bom para ambientes de intranet rigidamente controlados, mas se torna um problema com maior implementações porque apresenta muitas falhas estranhas, e pode melhorar com a nova tecnologia de plug-in em Java 1.7.

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

86
Noel Grandin
9
Dmitry Leskov

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

5
rustyshelf

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

4
stian

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 com adicionar/remover programas, etc.) e já inclua um tempo de execução Java (para que o usuário não precise saber ou se preocupam com isso). Gostaria de sugerir nossa ferramenta de instalação de plataforma cruzada, BitRock InstallBuilder . Embora não seja baseado em Java, geralmente é usado para empacotar aplicativos Java. Ele pode ser facilmente integrado ao Ant e você pode criar instaladores do Windows a partir do Unix/Linux/Mac e vice-versa. Como os instaladores gerados são nativos, eles não exigem que uma etapa de extração automática ou um JRE já esteja presente no sistema de destino, o que significa instaladores menores e economiza algumas dores de cabeça. Eu também gostaria de mencionar que temos licenças gratuitas para projetos de código aberto

4
Daniel Lopez

arquivos executáveis ​​são melhores, mas são limitados por 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 rpm ou deb empacotador. Para win32, tente http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System

3
zurk

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 é o caminho a percorrer. No Windows, prefiro o NSIS da NullSoft apenas porque é menos censurável que o InstallShield ou o InstallAnywhere. No OSX, você pode contar com a JVM já lá. No Windows, você precisará verificar e instalá-lo para eles, se necessário. O pessoal do Linux não roda aplicativos Java GUI, e os poucos que sabem, o que fazer com um .jar executável.

3
Ry4an Brase

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 destino sistema.

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

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

3
coobird

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

Encontrei o que precisava usando o plug-in Maven2 Assembly: plug-in Maven2 Assembly

Isso parece duplicar a funcionalidade de one-jar , mas não requer nenhuma configuração adicional para funcionar.

2
David Carlson

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

Java -jar jarname.jar

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

1
jjnguy

Desenvolvo aplicativos Eclipse RCP. Normalmente, para iniciar um aplicativo Eclipse, um iniciador 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 de [Java _ seja usada.

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

1
Mario Ortegón

Qual é a melhor maneira de distribuir um aplicativo Java? E se o aplicativo Java precisar instalar artefatos no computador do usuário? Existe algum bom Java lá fora?

Na minha experiência (de avaliando várias opções ), install4j é uma boa solução. Ele cria instaladores nativos para qualquer plataforma e é especificamente voltado para a instalação de aplicativos Java. Para obter detalhes, consulte " Recursos ") em seu site.

o install4j é uma ferramenta comercial, no entanto. Especialmente se suas necessidades forem relativamente simples (apenas distribua um aplicativo e instale alguns artefatos), existem muitas outras boas opções, incluindo as gratuitas (como izPack ou as já mencionadas Lauch4j ) . Mas você pediu a melhor maneira e, pelo meu conhecimento atual, install4j é o único, especialmente para distribuir maiores ou mais complicados Java aplicativos (EE).

1
Jonik

A melhor resposta depende da plataforma. Para implantação no Windows, tive bons resultados usando uma combinação de one-jar e launch4j . Demorou um pouco para configurar meu ambiente de construção corretamente (scripts ant, principalmente), mas agora é bastante indolor.

0
qualidafial

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

Como estou usando o Maven2 para construção, a implantação é apenas um pedaço de bolo: copie o jar construído para o local no servidor, atualize o arquivo jnlp, se necessário, e pronto.

0
Petr Macek

installanywhere é bom, mas caro - eu não encontrei (como) um bom grátis

0
Tom