OVH Cloud OVH Cloud

Compiler Java en natif ?

27 réponses
Avatar
O.L.
Bonjour,

J'aurais besoin de créer des applications "stand-alone" en Java, c'est
à dire en code exécutable natif pour Windows (des .exe, quoi !).
J'aimerais bien savoir quel est le compilateur le plus utilisé par les
développeurs Java pour faire cela ? Est ce MS Visual J++ ? Borland
JBuilder Pro ? Excelsior Jet ? ...
Et quel est le moins cher ? Car si j'en crois ce que j'ai lu, MSVJ++
n'est distribué qu'en groupe avec d'autres logiciels de développement
de Microsoft, à plusieurs centaines d'euros :-/

Merci d'avance,
O.L.

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

10 réponses

1 2 3
Avatar
Vincent Cantin
J'aimerais bien savoir quel est le compilateur le plus utilisé par les
développeurs Java pour faire cela ?


Pour transformer du code Java en code natif, les developpeurs Java utilisent
les JVM.

Avatar
O.L.
Vincent Cantin avait énoncé :
J'aimerais bien savoir quel est le compilateur le plus utilisé par les
développeurs Java pour faire cela ?


Pour transformer du code Java en code natif, les developpeurs Java utilisent
les JVM.


Je croyais que les JVM étaient utilisées pour exécuter le bytecode
.class ...
Or mon but est d'être indépendant de toute runtime Java (surtout vu
leur poids), donc de compiler mes apps en .exe.

Merci par avance pour votre aide ...

O.L.

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com


Avatar
David JOURAND
GCJ projet GNU libre et gratuit !
http://gcc.gnu.org/java/


--
David Jourand
Avatar
Vincent Cantin
Je croyais que les JVM étaient utilisées pour exécuter le bytecode .class
...
Or mon but est d'être indépendant de toute runtime Java (surtout vu leur
poids), donc de compiler mes apps en .exe.


Bon .. je reconnais avoir eu une petite saute d'humeur, et je m'en excuse.
Voici la raison de mon mecontentement passage : Java n'est pas fait pour
etre compile en natif. Si tu utilises un compilateur pour le transformer en
autre chose, ca n'est plus du Java.

Note : il me semble avoir vu dans cette newsgroup que des personnes
qualifiaient GJC d'experimental.

Bon courage.
Vincent

Avatar
Kupee
David JOURAND wrote:
GCJ projet GNU libre et gratuit !
http://gcc.gnu.org/java/


Perso je suis assez méfiant a ce sujet bien que je n'ai jamais essayé,
j'ai vu souvent des tests de performances montrant qu'un programme java
pur est plus rapide que compilé avec GCJ. Malheureusement je ne retrouve
plus le test que j'avais trouvé. Il était pour une fois assez récent et
bien fait, testait les jvm 1.4 et 1.5 en mode client ou serveur, les jvm
d'IBM, gcc aussi ...

Avatar
Pif
Elle est utilisée pour utiliser du bytecode, mais il ne faut pas oublier
que la JVM fait de la compilation à la volée du code, et obtient des
performance comparables à celles de C++ par exemple sur certains types
de codes. Les pertes de performance sont en général explicables par des
mécanismes qui s'avèrent aussi couteux si on les utilise en C++ (en
fonction du toolkit graphique, du garbage collector ou encore des
exceptions, etc. )

Bref, faut pas faire de la compilation pour les gains de perfs...
d'autre part, tu as des install anywhere et autres outils qui permettent
de faire de ton application un bundle java... du coup ton programme
apparait comme un exe qui s'installe, tout marche bien, et la JVM ne
représente alors que moins de 5 Mo... ce qui reste raisonnabme. Il faut
trouver le bon outil...

Enfin, notons que si tu quite la JVM, tu quittes l'introspection et pose
des problèmes de compatibilités. Les compilateurs on en général un
retard non négligeable sur les JVM, et des bugs ou correctifs de retard...

Personnellement, faire tourner un programme qui tourne sous une JVM Sun
sur Kaffe par exemple est un problème non trivial...


Vincent Cantin avait énoncé :

J'aimerais bien savoir quel est le compilateur le plus utilisé par les
développeurs Java pour faire cela ?



Pour transformer du code Java en code natif, les developpeurs Java
utilisent
les JVM.



Je croyais que les JVM étaient utilisées pour exécuter le bytecode
..class ...
Or mon but est d'être indépendant de toute runtime Java (surtout vu leur
poids), donc de compiler mes apps en .exe.

Merci par avance pour votre aide ...

O.L.





Avatar
O.L.
Le 19/04/2005, David JOURAND a supposé :
GCJ projet GNU libre et gratuit !
http://gcc.gnu.org/java/


J'ai essayé GCJ, mais mon app utilise SWT (pour accéder à des ActiveX),
et du coup je n'ai pas réussi à la compiler ... :-(

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

Avatar
O.L.
Pif avait prétendu :
Elle est utilisée pour utiliser du bytecode, mais il ne faut pas oublier que
la JVM fait de la compilation à la volée du code, et obtient des performance
comparables à celles de C++ par exemple sur certains types de codes. Les
pertes de performance sont en général explicables par des mécanismes qui
s'avèrent aussi couteux si on les utilise en C++ (en fonction du toolkit
graphique, du garbage collector ou encore des exceptions, etc. )

Bref, faut pas faire de la compilation pour les gains de perfs... d'autre
part, tu as des install anywhere et autres outils qui permettent de faire de
ton application un bundle java... du coup ton programme apparait comme un exe
qui s'installe, tout marche bien, et la JVM ne représente alors que moins de
5 Mo... ce qui reste raisonnabme. Il faut trouver le bon outil...


les perfs je m'en fiche un peu : mon but en compilant mon app est de
réduire sa taille ...
Car les 5 Mo de RunTime Java, je trouve que ça fait déjà pas mal !
Surtout que j'ai d'autres gros fichiers à mettre dans la distrib de mon
app (quelques ActiveX de 1 Mo).
Donc j'aurais préféré avoir un EXE de quelques centaines de Ko.

Eh oui, tout le monde n'a pas l'ADSL ... perso j'ai le 28K :)

@+ et merci !
O.L.

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

Avatar
Pif
en effet, si tu utilises des activeX, cela rejoint la remarque
précédente de vincent....

si en java tu mets des activex, tu te moque de l'introspection, de la
portabilité, tu veux pas de la dynamicité de la JVM et tu veux meme pas
de la JVM pour compiler en natif, on peut se demander pourquoi t'as
développé en java... des outils comme Visual C# auraient été plus
adaptés...

mais la on sort de ma religion... l'avantage de java, c'est qu'on peut
développer pour windows sans être vendu à windows ! La portabilité,
l'open-source, etc... dès lors tu n'as plus un seul concept fort de java
dans ton application a priori... ;)



Pif avait prétendu :

Elle est utilisée pour utiliser du bytecode, mais il ne faut pas
oublier que la JVM fait de la compilation à la volée du code, et
obtient des performance comparables à celles de C++ par exemple sur
certains types de codes. Les pertes de performance sont en général
explicables par des mécanismes qui s'avèrent aussi couteux si on les
utilise en C++ (en fonction du toolkit graphique, du garbage collector
ou encore des exceptions, etc. )

Bref, faut pas faire de la compilation pour les gains de perfs...
d'autre part, tu as des install anywhere et autres outils qui
permettent de faire de ton application un bundle java... du coup ton
programme apparait comme un exe qui s'installe, tout marche bien, et
la JVM ne représente alors que moins de 5 Mo... ce qui reste
raisonnabme. Il faut trouver le bon outil...



les perfs je m'en fiche un peu : mon but en compilant mon app est de
réduire sa taille ...
Car les 5 Mo de RunTime Java, je trouve que ça fait déjà pas mal !
Surtout que j'ai d'autres gros fichiers à mettre dans la distrib de mon
app (quelques ActiveX de 1 Mo).
Donc j'aurais préféré avoir un EXE de quelques centaines de Ko.

Eh oui, tout le monde n'a pas l'ADSL ... perso j'ai le 28K :)

@+ et merci !
O.L.




Avatar
O.L.
Pif a exposé le 20/04/2005 :
en effet, si tu utilises des activeX, cela rejoint la remarque précédente de
vincent....

si en java tu mets des activex, tu te moque de l'introspection, de la
portabilité, tu veux pas de la dynamicité de la JVM et tu veux meme pas de la
JVM pour compiler en natif, on peut se demander pourquoi t'as développé en
java... des outils comme Visual C# auraient été plus adaptés...


D'une part je ne connais pas le C, j'ai essayé de m'y mettre mais bof
...
Et puis Visual C# est payant, non ?

mais la on sort de ma religion... l'avantage de java, c'est qu'on peut
développer pour windows sans être vendu à windows ! La portabilité,
l'open-source, etc... dès lors tu n'as plus un seul concept fort de java dans
ton application a priori... ;)


Bah l'Open Source reste, par contre la portabilité c'est sûr ... Mais
là je n'ai pas le choix, les ActiveX que j'utilise ne marchent que sous
Windows de toute façon (ils gèrent la 3D).

@+
O.L.

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

1 2 3