Question

Java est l’un de mes langages de programmation préférés. Je rencontre toujours le problème de distribuer mon application aux utilisateurs finaux.

Donner à un utilisateur un fichier JAR n’est pas toujours aussi convivial que je le souhaiterais et utiliser Java WebStart nécessite que je maintienne un serveur Web.

Quel est le meilleur moyen de distribuer une application Java? Que se passe-t-il si l'application Java doit installer des artefacts sur l'ordinateur de l'utilisateur? Existe-t-il de bons systèmes d’installation et de conditionnement Java?

Était-ce utile?

La solution

Il existe différentes solutions, en fonction de vos besoins en matière de distribution.

  1. Utilisez simplement un pot. Cela suppose que la bonne version de Java est installée sur l'utilisateur, sinon l'utilisateur obtiendra la "version au format de fichier de classe". exceptions. C'est très bien pour la distribution interne au sein d'une entreprise.

  2. Utilisez launch4j et un programme d'installation tel que NSIS. Cela vous donne beaucoup plus de contrôle, bien que l'utilisateur puisse toujours faire des choses stupides, comme désinstaller le runtime java. C’est probablement l’approche la plus populaire et ce que j’utilise actuellement.

  3. Utilisez Webstart. Cela suppose également que la bonne version de Java est installée sur l'utilisateur, mais qu'il est beaucoup plus facile de commencer. D'après mon expérience, cela convient aux environnements intranet étroitement contrôlés, mais cela devient un problème pour les déploiements de plus grande envergure, car il présente de nombreux échecs étranges. Cela pourrait s’améliorer avec la nouvelle technologie de plug-in de Java 1.7.

  4. Utilisez un compilateur de code natif comme Excelsior JET et distribuez-le en tant qu'exécutable, ou intégrez-le dans un programme d'installation. Cher, il vous lie généralement à une version un peu plus ancienne de Java et le chargement dynamique des classes vous pose un problème, mais il est très efficace pour les déploiements à grande échelle dans lesquels vous devez minimiser vos soucis de support.

Autres conseils

programme d'installation avancé permet de regrouper facilement les applications java sous forme d'exécutables Windows. peut le mettre en place. J'ai constaté que pour distribuer des applications Java aux clients Windows, il s'agissait du moyen le plus simple.

JSmooth est un programme simple qui prend votre fichier jar et l'enveloppe dans un fichier exécutable Windows standard. Il est livré avec une interface graphique simple qui vous permet de configurer la JVM requise, de l’associer à l’application ou de fournir une option pour la télécharger si elle n’est pas déjà installée. Vous pouvez envoyer le fichier exe tel quel ou le compresser avec des dépendances possibles (ou laisser le programme télécharger les dépendances supplémentaires à partir du réseau au démarrage). C'est également gratuit, comme dans la bière et le discours, ce qui peut être (ou ne pas être) une bonne chose.

Cela dépend du degré de sophistication de vos utilisateurs cibles. Dans la plupart des cas, vous souhaitez les isoler du fait que vous exécutez une application basée sur Java. Donnez-leur un programme d’installation natif qui fait le bon choix (créer des entrées dans le menu Démarrer, des lanceurs, vous enregistrer avec des programmes d’ajout / suppression, etc.) et qui regroupe déjà un environnement d’exécution Java (afin que l’utilisateur n’ait pas besoin de le savoir). Je voudrais suggérer notre InstallBuilder BitRock, notre outil d'installation multiplate-forme. Bien qu'il ne soit pas basé sur Java, il est couramment utilisé pour empaqueter des applications Java. Il peut être facilement intégré à Ant et vous pouvez créer des installateurs Windows à partir de Unix / Linux / Mac et inversement. Les programmes d’installation générés étant natifs, ils ne nécessitent pas d’étape d’auto-extraction ni d’exécution d’un JRE dans le système cible, ce qui signifie que les programmes d’installation sont plus petits et vous évite des soucis. Je voudrais aussi mentionner que nous avons des licences gratuites pour les projets open source

Les fichiers exécutables sont préférables mais ils sont limités à la plate-forme, c.-à-d. utilisez gcj: http://gcc.gnu.org / java / pour que linux produise des exécutables et utilise launch4j: http://launch4j.sourceforge.net/ pour produire des exécutables Windows. Pour empaqueter sur linux, vous pouvez utiliser n’importe quel empaqueteur rpm ou deb. Pour win32, essayez http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System

.

S'il s'agit d'une application utilisateur final dotée d'une interface graphique, vous devez ignorer la langue dans laquelle vous avez écrit le programme (Java) et utiliser un programme d'installation natif pour chacune des plateformes que vous avez choisies. Les gens Mac veulent un .dmg et sous Windows, un installateur .msi ou .exe est la voie à suivre. Sous Windows, je préfère NSIS de NullSoft uniquement parce qu’il est moins désagréable que InstallShield ou InstallAnywhere. Sur OSX, vous pouvez compter sur la JVM déjà présente. Sous Windows, vous devrez le vérifier et l'installer si nécessaire. Les utilisateurs de Linux n’exécuteront pas d’applications graphiques avec Java, et les quelques-uns qui le sauront savent quoi faire avec un fichier .jar exécutable.

Bien que je n'ai pas utilisé NSIS (système d'installation de script Nullsoft), il existe des scripts d'installation qui vérifient si le JRE requis est installé sur le système cible.

De nombreux exemples de scripts sont disponibles dans les Exemples de code et < a href = "http://nsis.sourceforge.net/Category:Real_World_Installers" rel = "nofollow noreferrer" title = "Installateurs dans le monde réel"> Installateurs dans le monde réel , tels que:

(Veuillez noter que je n'ai utilisé aucun des scripts, ne le prenez donc pas comme une approbation.)

J'avais besoin d'un moyen de conditionner mon projet et ses dépendances dans un fichier JAR unique.

J'ai trouvé ce dont j'avais besoin en utilisant le plugin Maven2 Assembly: Plugin Maven2 Assembly

Cela semble faire double emploi avec la fonctionnalité de one-jar , mais ne nécessite aucune configuration supplémentaire ça va.

Pour les applications Java simples, j'aime utiliser Jar's. Il est très simple de distribuer un fichier sur lequel un utilisateur peut simplement cliquer sur (Windows) ou

.
java -jar jarname.jar

IMHO, jar est la voie à suivre lorsque la simplicité est une exigence principale.

Je développe des applications RCP eclipse. Normalement, pour démarrer une application eclipse, un lanceur exécutable est inclus. J'inclus la machine virtuelle java dans le dossier de l'application dans un sous-répertoire / jre pour m'assurer que la bonne version de Java sera utilisée.

Ensuite, nous emballons avec Inno Setup pour l'installation sur la machine de l'utilisateur.

  

Quelle est la meilleure façon de distribuer un   Application Java? Et si le Java   l'application doit installer des artefacts   à l'ordinateur de l'utilisateur? Y a-t-il   bonne installation / packaging Java   systèmes là-bas?

Selon mon expérience ( évaluation d'un certain nombre d'options ), install4j est une bonne solution. Il crée des installateurs natifs pour toutes les plateformes et est spécialement conçu pour l'installation d'applications Java. Pour plus de détails, voir & Fonctionnalités " sur son site internet.

install4j est cependant un outil commercial. Surtout si vos besoins sont relativement simples (simplement distribuer une application et installer des artefacts), il existe de nombreuses autres options intéressantes, y compris des options gratuites (telles que izPack ou le Lauch4j déjà mentionné. Mais vous avez demandé la meilleure manière, et à ma connaissance actuelle, install4j est celle qui convient, notamment pour la distribution d’applications Java (EE) plus grandes ou plus complexes.

La meilleure réponse dépend de la plate-forme. Pour le déploiement sur Windows, j'ai obtenu de bons résultats en combinant one-jar et launch4j . Il a fallu un peu de temps pour configurer correctement mon environnement de compilation (scripts ant, principalement), mais à présent, il est relativement simple.

De mon point de vue, le mécanisme de distribution supérieur consiste à utiliser quelque chose comme ClickOnce , ou la technologie WebStart . Vous venez de déployer la version sur le serveur et celle-ci est automatiquement transmise aux clients lorsque la version est publiée. La plate-forme Eclipse RCP contient également UpdateManager qui fait ce que WebStart fait, mais aussi beaucoup plus.

Étant donné que j'utilise Maven2 pour la construction, le déploiement n'est qu'un jeu d'enfant: copiez le fichier jar construit à l'emplacement sur le serveur, mettez à jour le fichier jnlp si nécessaire et vous avez terminé.

installer n’importe où est bon mais cher - je n’ai pas trouvé un bon libre

Je compresserais le fichier JAR avec d'autres fichiers JAR dépendants, les fichiers de configuration et la documentation, ainsi qu'un run.bat / run.sh. L’utilisateur final doit pouvoir le décompresser à n’importe quel emplacement et éditer le fichier run.bat si nécessaire (il devrait être exécuté sans modification dans la plupart des cas). Un programme d’installation peut s'avérer utile si vous souhaitez créer des entrées dans le menu Démarrer, le bureau, la barre d'état système, etc.

En tant qu'utilisateur, je préfère décompresser et exécuter un type d'installation (aucune entrée du menu Démarrer, s'il vous plaît). Cependant, les personnes extérieures au secteur informatique peuvent avoir des préférences différentes. Donc, si l’application est largement ciblée par les développeurs sur la route zip-run.bat et que des applications grand public peuvent être installées à l’aide d’un programme d’installation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top