OVH Cloud OVH Cloud

exécutables autonomes et intégrant les ressources

13 réponses
Avatar
Pierre Crescenzo
Bonjour,

Je cherche un outil libre sous Linux et/ou Windows, de préférence au
moins Linux, qui permette de créer des exécutables autonomes en Java. Il
me faudrait donc un compilateur Java vers du code directement exécutable
qui puisse intégrer dans l'exécutable les ressources utiles au
programme (images, sons, textes...)

Même si cela est indépendant de la question, je précise que le but n'est
pas de "cacher" les sources et ressources des programmes, qui seront
libres et publiées par ailleurs. Il s'agit simplement de faire des
programmes qui se résument à un unique fichier exécutable, sans
nécessité d'installation ni de désarchivage.

Merci d'avance de vos conseils.

[CITATION ALÉATOIRE : Le bonheur humain est composé de tant de pièces
qu'il en manque toujours. Bossuet]

--
Pierre Crescenzo
mailto:Pierre@crescenzo.nom.fr
http://www.crescenzo.nom.fr/

10 réponses

1 2
Avatar
flipouk
Pierre Crescenzo wrote:
Bonjour,

Je cherche un outil libre sous Linux et/ou Windows, de préférence au
moins Linux, qui permette de créer des exécutables autonomes en Java. Il
me faudrait donc un compilateur Java vers du code directement exécutable
qui puisse intégrer dans l'exécutable les ressources utiles au
programme (images, sons, textes...)


Le mieux est de créer un jar exécutable.

J'ai trouvé cette FAQ sur le sujet :
http://java.developpez.com/faq/java/?page=execution#COMPILATION_exe

Une fois créé ton jar exécutable, tu le lances :
- Soit depuis un terminal par la commande :
$ java -jar fichier.jar
- Soit en double-cliquant sur fichier.jar. Pour cela, il faut que dans
ton gestionnaire de fichiers (par ex. konqueror) les fichiers jar soient
associés à la commande 'java -jar'.

C'est le même principe sous Windows. Quant à MacOSX, c'est comme
d'habitude plus facile puisqu'il n'y a rien à faire : l'association est
présente par défaut dans le système (de même que la JVM aussi d'ailleurs).

Cela dit, cela ne te crée pas un fichier exécutable du type de ceux
générés par gcc. Si tu veux cela, il faut que tu compiles tes classes
avec gcj. Mais alors, il te faudra alors renoncer à faire des programmes
avec une interface graphique en Swing. De plus, les ressources de ton
applis (sons, images, libs...) devront être fournies dans un fichier de
type tar.gz, deb ou rpm (inexploitable sour Windows). L'avantage avec le
jar, c'est que tu peux mettre les ressources de l'appli dans le jar. Tu
as un fichier vraiment portable car il pourra être exploité sour Linux,
OSX ou Windows. L'inconvénient, c'est qu'il faut qu'une JVM soit déjà
installée sur le système-cible. Mais bon, tu envoies tes utilisateurs sur :
http://www.java.com/fr/
et leur demandes de cliquer sur "Téléchargement du logiciel Java" et
c'est réglé.

A+
F.

Avatar
Pierre Crescenzo
Bonjour,

Je cherche un outil libre sous Linux et/ou Windows, de préférence au
moins Linux, qui permette de créer des exécutables autonomes en
Java. Il me faudrait donc un compilateur Java vers du code
directement exécutable qui puisse intégrer dans l'exécutable les
ressources utiles au programme (images, sons, textes...)


Le mieux est de créer un jar exécutable.
[...]


Merci de votre réponse.

Je connais cette technique. Elle ne peut pas m'être utile parce que je
ne peux pas faire d'hypothèse sur la présence d'une JVM ni sur la
possibilité d'en installer une.

Cela dit, cela ne te crée pas un fichier exécutable du type de ceux
générés par gcc. Si tu veux cela, il faut que tu compiles tes classes
avec gcj.
[...]


Je connais également gcj et, malgré l'absence gênante de certaines
biliothèques Sun, il peut me convenir. Cependant, si vous avez d'autres
pistes, je suis preneur.

De plus, les ressources de ton applis (sons, images, libs...) devront
être fournies dans un fichier de type tar.gz, deb ou rpm
(inexploitable sour Windows).


Cela ne m'est pas possible. Il me faut un seul fichier, directement
exécutable et contenant les ressources.

On me dit qu'il est possible d'intégrer les ressources dans l'exécutable
mais je ne sais pas le faire, et c'est l'objet, le seul important en
fait, de ma question. :-)

Merci.

[CITATION ALÉATOIRE : La disparition tragique et soudaine de M. le
Proviseur a contraint les responsables de l'établissement à annuler in
extremis le pot organisé pour fêter son départ. Perle de l'Éducation
Nationale]

--
Pierre Crescenzo
mailto:
http://www.crescenzo.nom.fr/


Avatar
Pierre Crescenzo
Bonjour,

Pourquoi ne pas utiliser Eclipse ? Tu disposes d'un executable capable
de trouver une JVM tout seul, de se plaindre proprement s'il n'y en a
pas et de démarrer ton appli si tout va bien.


Merci de la réponse.

Au risque d'insister :-), il ne faut qu'un SEUL fichier et, s'il n'y a
pas de JVM présente, le programme DOIT fonctionner...

Je ne dis pas que la solution Eclipse n'est pas bonne. Simplement
qu'elle n'est pas adéquate pour ces contraintes. Je sais aussi que ces
contraintes ne sont pas habituelles...

Je me permets de reciter ma question. :

Il me faut un seul fichier, directement exécutable et contenant les
ressources.

On me dit qu'il est possible d'intégrer les ressources dans
l'exécutable mais je ne sais pas le faire, et c'est l'objet, le seul
important en fait, de ma question. :-)


Merci.

[CITATION ALÉATOIRE : Dieu n'a créé les femmes que pour apprivoiser les
hommes. Voltaire]

--
Pierre Crescenzo
mailto:
http://www.crescenzo.nom.fr/

Avatar
pioug
Bonjour,

Je cherche un outil libre sous Linux et/ou Windows, de préférence au
moins Linux, qui permette de créer des exécutables autonomes en Java. Il
me faudrait donc un compilateur Java vers du code directement exécutable
qui puisse intégrer dans l'exécutable les ressources utiles au
programme (images, sons, textes...)

Bonjour,


www.macrovision.com propose un outils de creation d'installation avec
installation d'une machine virtuelle optimisée pour votre appli. C'est
un outils payant mais pratique.

Avatar
Pierre Crescenzo
Bonjour,

Merci pour toutes vos propositions mais, comme je le disais, je NE peux
PAS faire d'hypothèse sur une éventuelle JVM installée NI installer une
JVM, que ce soit transparent ou pas.

Je sais que les contraintes sont sévères mais elles sont là... :-) J'ai
besoin d'un outil qui puisse générer un unique fichier exécutable natif
pour Windows et/ou Linux (idéalement, donc, un fichier pour chaque),
sans possibilité d'avoir d'autres fichiers ni de faire une installation,
quelle qu'elle soit.

Au pire, il serait acceptable d'intégrer une JVM dans l'exécutable, sans
avoir à la "désarchiver".

Je garde vos idées qui me donnent des pistes ! Merci. Mais je continue à
poser la question... :-)

Cordialement,

[CITATION ALÉATOIRE : On ne change pas les êtres. On peut simplement
parfois les aider à devenir ce qu'ils sont. Françoise Dorin]

--
Pierre Crescenzo
mailto:
http://www.crescenzo.nom.fr/
Avatar
Pierre Crescenzo
Bonjour,

Regarde la:
http://www.bearcave.com/software/java/comp_java.html#AllDead

Apparemment, toutes les boites qui proposaient des outils pour faire
de la compilation Java en code natif ont mis la cle sous la porte.


Je vais donc rester sur ma première idée : gcj. :-)

Une question bete, si tu veux du code natif, pourquoi developpes tu
ton appli en Java ?


C'est une question pas bête du tout. J'envisage de changer... Mais j'ai
une partie du code déjà développée en Java et je souhaite la fournir aux
futurs programmeurs. Je tente donc de conserver Java. Si cela s'avère
trop pénible, je lèverai probablement cette contrainte.

Ma question reste donc "Comment créer un exécutable (natif, issu de
Java) qui intègre les ressources (textes, images, sons...) ? Même
problème sous Windows et Linux."

Merci !

[CITATION ALÉATOIRE : Il ne peut pas y avoir de justice tant que les
lois sont absolues car la vie elle-même est une suite
d'exceptions. Jean-Luc Picard]

--
Pierre Crescenzo
mailto:
http://www.crescenzo.nom.fr/

Avatar
Simon OUALID
Ma question reste donc "Comment créer un exécutable (natif, issu de
Java) qui intègre les ressources (textes, images, sons...) ? Même
problème sous Windows et Linux."

Merci !



Bon ben à ce niveau la, je n'ai plus qu'une réponse qui coûte cher :

http://www.excelsior-usa.com/jet.html

(Ils sont tous morts... sauf un !)

Avatar
TestMan
Bonjour,

Je cherche un outil libre sous Linux et/ou Windows, de préférence au
moins Linux, qui permette de créer des exécutables autonomes en Java. Il
me faudrait donc un compilateur Java vers du code directement exécutable
qui puisse intégrer dans l'exécutable les ressources utiles au
programme (images, sons, textes...)

Même si cela est indépendant de la question, je précise que le but n'est
pas de "cacher" les sources et ressources des programmes, qui seront
libres et publiées par ailleurs. Il s'agit simplement de faire des
programmes qui se résument à un unique fichier exécutable, sans
nécessité d'installation ni de désarchivage.


Je ne connais que peu de programme qui ont un seul et unique fichier qui
est l'exécutable. En tout cas pas sous Linux, surtout s'il faut des
bibliotheques, des resources et des fichiers de config ;-) En clair, si
l'on a fait des systèmes d'installation pour les clients lours, c'est
pour une raison bien précise : gérer complexité d'intégration avec
l'environment.

Ne pas vouloire supposer qu'une VM existe et ne pas vouloir l'installer
automatiquement est complètement rédibitoire et ne me parrait plus
correspondre à l'état du marché. Ainsi, la majorité des ordinateurs PC
des grandes marques sont équipés d'une VM Java SE 1.4 minimum. Sans
compté l'ensemble des ordinateurs des grandes entreprises qui ont
également cette VM de déployé. Et dans les cas restant, le
téléchargement d'une VM est de la taille d'un ou deux MP3, reste
indolore et rapide sans pour autant oublier que la sécurité offerte par
la plateforme est de premier choix, à vous de voir ...

Si je comprend bien, votre demande se décompose en :
- outil de développement opensource
- outil de déploiment
- partage des sources

Pour le premier, Eclipse me semble convenir à votre besoin, mais vous
pouvez aussi utiliser Netbeans qui présente l'avantage de faciliter la
création d'interface graphiques Swing.

Pour le second, je pense que si votre critère est la simplicité de
démarage et de gesion et que vos utilisateurs ont accès au net alors le
plus performant est efficace reste les solutions clients riches et plus
précisement dans votre cas le "one-click" de WebStart disponible dans
toutes les plateformes Java standard depus le 1.4
http://java.sun.com/products/javawebstart/1.2/docs/developersguide.html
Ici vous conserverait une maitrise complète de l'écolution et des mise à
jours.

Enfin pour le troisème point, vous pouvez mettre à disposition le code
source sur un site type sourceforge.net (CVS) ou javaforge.com (SVN) et
proposer également le telechargement d'une release archivée ... c'est ce
que tous les développeurs opensource font car celà facilite
l'interraction et la gestion ;-)

Et puis, on note d'ailleur que selon les derniers chiffres, Java vient
de détroner C++ au rang du premier language en nombre de projets !


A+

TM

Avatar
Laurent Pointal
TestMan wrote:

Je ne connais que peu de programme qui ont un seul et unique fichier qui
est l'exécutable.


MacOS (<X) utilisait des fichiers applications contenant tout dans le
"resources fork": code binaire (éventuellement PPC+68000), templates de
dialogues, chaînes, icônes et autres éléments de GUI, sons, infos sur la
version, signatures de l'application et des documents, etc....

A priori NTFS gère les streams, dont pourrait faire la même chose - si
leur utilisation était normalisée et standardisée par l'OS. Mais c'est
très peu utilisé à ma connaissance.

[MacOS X doit sûrement avoir un principe du même genre, caché par l'OS]

A+

Avatar
flipouk
TestMan wrote:

Je ne connais que peu de programme qui ont un seul et unique fichier qui
est l'exécutable. En tout cas pas sous Linux, surtout s'il faut des



Sous Linux, le JDK et Netbeans sont livrés sous la forme d'un seul et
unique fichier .bin

Java Studio Creator aussi, et en plus celui-ci intègre toutes les
ressources + un jre !

Le jdk et netbeans sont en fait des scripts shell :

$ file jdk-6-rc-bin-b60-linux-i586-10_nov_2005.bin
jdk-6-rc-bin-b60-linux-i586-10_nov_2005.bin: Bourne shell script text
executable
$ file netbeans-5_0-beta2-bin-linux.bin
netbeans-5_0-beta2-bin-linux.bin: Bourne shell script text executable

Mais Creator ext un exécutable apparemment :

$ file creator-2004q2-linux-ml.bin
creator-2004q2-linux-ml.bin: ELF 32-bit LSB executable, Intel 80386,
version 1 (SYSV), for GNU/Linux 2.2.5, statically linked, stripped

Si tu arrives à comprendre comment Sun package ses applis, tu as la
réponse à ta question. En tout cas, il y a peut-être une idée à creuser.

A+

F.

1 2