119 votes

Quelle est la meilleure façon de distribuer des applications Java ?

Java est l'une de mes langues de programmation de choix. Je rencontre toujours le problème de distribuer mon application aux utilisateurs finaux.

Donner un JAR à un utilisateur n'est pas toujours aussi convivial que je le voudrais et l'utilisation de Java WebStart nécessite que je maintienne un serveur web.

Quel est le meilleur moyen de distribuer une application Java? Et si l'application Java doit installer des artefacts sur l'ordinateur de l'utilisateur? Existe-t-il de bons systèmes d'installation/emballage Java?

0 votes

Java WebStart peut être utilisé à partir de n'importe quelle URL comme un système de fichiers tel qu'un CD ou un lecteur réseau. Il ne vous donne pas autant. Remarque : Eclipse n'utilise pas d'installateur, il vous suffit de le décompresser et de l'exécuter. Peut-être que vous n'avez pas besoin d'un installateur.

1 votes

De nos jours, il est très simple de déployer une application Java WebStart sur par exemple Google Application Engine.

12 votes

C'est dommage que cette question soit fermée. Je ne suis pas d'accord avec la raison indiquée comme étant "basée principalement sur l'opinion". Les réponses fournies ne sont pas basées sur l'opinion mais sur l'expérience. Je suis toujours content de recevoir de bonnes réponses basées sur l'expérience. Ceux qui ne peuvent pas apprendre de l'histoire sont condamnés à la répéter.

94voto

Noel Grandin Points 1773

Il existe une variété de solutions, en fonction de vos besoins en matière de distribution.

  1. Utilisez simplement un jar. Cela suppose que l'utilisateur a la version Java correcte installée, sinon l'utilisateur obtiendra des exceptions "class-file format version". C'est parfait pour une distribution interne au sein d'une entreprise.

  2. 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 désinstaller le runtime Java. C'est probablement l'approche la plus populaire, et c'est ce que j'utilise actuellement.

  3. Utilisez Webstart. Cela suppose également que l'utilisateur a la bonne version de Java installée, mais c'est beaucoup plus facile à mettre en place. Mon expérience montre que c'est très bien pour les environnements intranet strictement contrôlés, mais cela devient fastidieux avec des déploiements plus importants en raison de nombreuses défaillances é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 emballez-le dans un programme d'installation. C'est cher, et cela vous lie généralement à une version légèrement plus ancienne de Java, et il y a des complications avec le chargement dynamique de classes, mais c'est très efficace pour des déploiements à grande échelle où vous devez minimiser vos problèmes de support.

4 votes

Juste une note sur Webstart: Tant que l'utilisateur a une version de Java installée qui n'est pas de l'âge de pierre (par exemple 1.2), webstart peut être invité à télécharger et installer une version plus récente de Java que celle dont vous avez besoin pour votre programme n'est pas encore présente. Regardez la syntaxe du fichier .jnlp. Bien sûr, cela affiche toujours assez clairement que vous utilisez Java, ce qui pourrait être inapproprié selon les clients avec lesquels vous traitez. Dans ces cas, vous devriez en effet utiliser un type d'installeur/format de fichier "natif" et masquer les détails de l'implémentation autant que possible.

10 votes

Je n'aime pas Webstart. Il y a trop de branding Java/Sun. C'est difficile de le faire fonctionner correctement. La mise en place de la signature de code est plus ennuyeuse que ça en vaut la peine et l'utilisateur ne comprend pas les avantages de sécurité et les messages de toute façon. Si vous voulez faire quelque chose sur le système de l'utilisateur, vous allez devoir payer pour votre certificat de signature de code pour vous débarrasser des avertissements effrayants. Il effectue beaucoup de mise en cache compliquée qui peut causer des problèmes. Peut-être que OSGi ou les prochains modules Java offriront des avantages de mise à jour automatique similaires. J'utilise une variation de #2 et créer DMG/Packager pour mac tout à partir de Ant.

0 votes

J'ai utilisé NSIS comme vous l'avez suggéré. J'ai également examiné launch4j. Pourquoi recommandez-vous d'utiliser les deux?

9voto

6voto

rustyshelf Points 16336

Advanced Installer facilite l'emballage des applications Java en tant qu'exécutables Windows, et il est assez flexible dans la façon dont vous pouvez le configurer. J'ai constaté que pour distribuer des applications Java aux clients Windows, c'est la meilleure option.

5voto

stian Points 1731

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 le JVM requis, de le regrouper avec l'application ou de fournir une option pour le télécharger s'il n'est pas déjà installé. Vous pouvez envoyer le fichier exe tel quel ou le compresser avec des dépendances éventuelles (ou laisser le programme télécharger les dépendances supplémentaires depuis le réseau au démarrage). C'est aussi gratuit, comme dans la bière et la parole, ce qui peut (ou non) être une bonne chose.

4voto

Daniel Lopez Points 2176

Il dépend de la sophistication de vos utilisateurs cibles. Dans la plupart des cas, vous voulez les isoler du fait que vous exécutez une application basée sur Java. Offrez-leur un installateur natif qui fait les bonnes choses (crée des entrées dans le menu Démarrer, des lanceurs, s'enregistre dans Ajouter/Supprimer des programmes, etc.) et inclut déjà un runtime Java (ainsi l'utilisateur n'a pas besoin de le savoir ou de s'en préoccuper). Je voudrais vous 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é avec Ant et vous pouvez construire des installateurs Windows à partir de Unix/Linux/Mac et vice-versa. Comme les installateurs générés sont natifs, ils ne nécessitent pas d'étape d'auto-extraction ou qu'un JRE soit 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X