Java est l'un de mes langages de programmation de choix. Je rencontre toujours le problème de la distribution de mon application aux utilisateurs finaux.
Donner à un utilisateur un JAR n'est pas toujours aussi convivial que je le souhaiterais et utiliser Java WebStart nécessite que je gère un serveur Web.
Quelle est la meilleure façon de distribuer une application Java? Que faire si l'application Java doit installer des artefacts sur l'ordinateur de l'utilisateur? Existe-t-il de bons systèmes d'installation / d'empaquetage Java?
java
installer
jar
software-distribution
Laplie Anderson
la source
la source
Réponses:
Il existe une variété de solutions, en fonction de vos besoins de distribution.
Utilisez simplement un pot. Cela suppose que l'utilisateur a installé la bonne version de Java, sinon l'utilisateur obtiendra des exceptions "version de format de fichier de classe". C'est parfait pour la distribution interne au sein d'une entreprise.
Utilisez launch4j et un programme d'installation comme NSIS. Cela vous donne beaucoup plus de contrôle, bien que l'utilisateur puisse toujours faire des choses stupides comme la désinstallation du runtime java. C'est probablement l'approche la plus populaire et celle que j'utilise actuellement.
Utilisez Webstart. Cela suppose également que l'utilisateur a installé la bonne version de Java, mais il est beaucoup plus facile de commencer. Mon expérience est que c'est bien pour les environnements intranet étroitement contrôlés, mais cela devient un problème avec des déploiements plus importants car il présente de nombreux échecs étranges. Cela pourrait s'améliorer avec la nouvelle technologie de plug-in de Java 1.7.
Utilisez un compilateur de code natif comme Excelsior JET et distribuez-le en tant qu'exécutable, ou enveloppez-le dans un programme d'installation. Coûteux, et il vous lie généralement à une version légèrement plus ancienne de java, et le chargement de classe dynamique pose un problème, mais il est très efficace pour un déploiement à grande échelle où vous devez minimiser vos tracas de support.
la source
Le programme d'installation avancé facilite le package d'applications Java en tant qu'exécutables Windows, et il est assez flexible dans la façon dont vous pouvez le configurer. J'ai trouvé que pour distribuer des applications Java aux clients Windows, c'est la façon la plus simple de procéder.
la source
JSmooth est un programme simple qui prend votre 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 les dépendances possibles (ou laisser le programme télécharger les dépendances supplémentaires à partir du net au démarrage). C'est aussi gratuit, comme dans la bière et la parole, ce qui peut (ou non) être une bonne chose.
la source
Cela dépend de la sophistication de vos utilisateurs cibles. Dans la plupart des cas, vous souhaitez les isoler du fait que vous exécutez une application Java. Donnez-leur un programme d'installation natif qui fait ce qu'il faut (créer des entrées de menu de démarrage, des lanceurs, vous inscrire avec des programmes d'ajout / de suppression, etc.) et qui regroupe déjà un runtime Java (de sorte que l'utilisateur n'a pas besoin de le savoir ou de s'en soucier). Je voudrais suggérer notre outil d'installation multiplateforme, BitRock InstallBuilder. 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 d'Unix / Linux / Mac et inversement. Étant donné que les programmes d'installation générés sont natifs, ils ne nécessitent pas d'étape d'auto-extraction ou un JRE pour être déjà présent dans le système cible, ce qui signifie des installateurs plus petits et vous évite quelques maux de tête. Je voudrais également mentionner que nous avons des licences gratuites pour les projets open source
la source
les fichiers exécutables sont les meilleurs mais ils sont limités à la plate-forme, c'est-à-dire utilisez gcj: http://gcc.gnu.org/java/ pour Linux pour produire des exécutables et utilisez launch4j: http://launch4j.sourceforge.net/ pour produire des exécutables Windows. Pour créer un package sous Linux, vous pouvez utiliser n'importe quel package rpm ou deb. Pour win32, essayez http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System
la source
S'il s'agit d'une véritable application utilisateur avec interface graphique, vous devez ignorer la langue dans laquelle vous avez écrit le programme (Java) et utiliser un installateur natif pour chacune de vos plates-formes choisies. Les Mac veulent un .dmg et sur Windows un programme d'installation .msi ou .exe est la solution. Sous Windows, je préfère NSIS à NullSoft uniquement parce que c'est moins répréhensible 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 pour eux si nécessaire. Les utilisateurs de Linux n'exécuteront pas les applications Java GUI, et les rares qui le feront sauront quoi faire avec un exécutable .jar.
la source
Bien que je n'ai pas utilisé moi-même NSIS (Nullsoft Scriptable Installer System), il existe des scripts d'installation qui vérifieront si le JRE requis est installé sur le système cible.
De nombreux exemples de scripts sont disponibles sur les pages Exemples de code et Installateurs du monde réel , tels que:
(Veuillez noter que je n'ai utilisé aucun des scripts, alors ne le prenez pas comme une approbation.)
la source
J'avais besoin d'un moyen de regrouper mon projet et ses dépendances dans un seul fichier jar.
J'ai trouvé ce dont j'avais besoin en utilisant le plugin Maven2 Assembly : plugin Maven2 Assembly
Cela semble dupliquer la fonctionnalité de one-jar , mais ne nécessite aucune configuration supplémentaire pour le faire fonctionner.
la source
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 (Windows), ou
À mon humble avis, le pot est la voie à suivre lorsque la simplicité est une exigence principale.
la source
Je développe des applications eclipse RCP. 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.
la source
D'après mon expérience (après avoir évalué un certain nombre d'options ), install4j est une bonne solution. Il crée des installateurs natifs pour n'importe quelle plate-forme et est spécifiquement conçu pour installer des applications Java. Pour plus de détails, voir " Fonctionnalités » sur son site Web.
install4j est cependant un outil commercial. Surtout si vos besoins sont relativement simples (il suffit de distribuer une application et d'installer quelques artefacts), de nombreuses autres bonnes options existent, y compris des options gratuites (comme izPack ou le Lauch4j déjà mentionné ). Mais vous avez demandé le meilleur moyen, et à ma connaissance actuelle, install4j est celui-là, en particulier pour la distribution d'applications Java (EE) plus grandes ou plus complexes.
la source
La meilleure réponse dépend de la plateforme. Pour le déploiement sur Windows, j'ai eu de bons résultats en utilisant une combinaison de one-jar et launch4j . Il a fallu un peu de temps pour configurer correctement mon environnement de construction (scripts ant, principalement), mais maintenant c'est assez indolore.
la source
Eh bien, de mon point de vue, le mécanisme de distribution supérieur consiste à utiliser quelque chose comme ClickOnce ou la technologie WebStart . Il vous suffit de déployer la version sur le serveur et elle 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 bien plus encore.
Puisque 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é.
la source
installanywhere est bon mais cher - je n'ai pas trouvé (aussi) bon gratuit
la source
Je compresserais le fichier jar avec d'autres jars dépendants, des fichiers de configuration et de la documentation avec un run.bat / run.sh. L'utilisateur final doit pouvoir le décompresser à n'importe quel emplacement et modifier le run.bat si nécessaire (il doit s'exécuter sans modification dans la plupart des cas). Un programme d'installation peut être 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 le type d'installation (pas d'entrées dans le menu Démarrer s'il vous plaît). Cependant, les personnes extérieures à l'industrie informatique peuvent avoir des préférences différentes. Donc, si l'application est largement destinée aux développeurs, la route zip-run.bat et les applications grand public peuvent être installées à l'aide d'un programme d'installation.
la source