IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Compilation Java avec GCJ pour faire un exe. Pourquoi ?


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Par défaut Compilation Java avec GCJ pour faire un exe. Pourquoi ?
    Bonsoir,

    Par curiosité et pour ma culture générale.

    Lorsque l'on compile un programme Java avec GCJ pour faire un éxécutable *.exe, pourquoi ce dernier est-il ENORME ?

    Exemple:
    Point.java = 503 octets
    Cercle.java = 832 octets
    ClasseSimpleMain = 1420 octets
    Soit un total de : 2 755 octets.

    Une fois compilé, ce petit prog fait : 8 500 Ko... 8,5 Mo...
    Il fonctionne, correctement, mais il est 3 000 fois plus gros !

    Il s'agit d'un petit programme d'apprentissage fonctionnant sous console Dos.

    Peut-être que la réponse se trouve sur le site de GNU,( que j'ai traversé en tous sens ) mais malheureusement pour moi ce site ( comme bien d'autres ) est en Anglais et j'ai quelques difficultés avec cette langue.

    J'ai l'impression que dans le " .exe " on y retrouve TOUTES les classes Java, même celles qui n'y ont rien à y faire, simplement parce qu'elles font parti du même package...peut-être.

    Est-ce normal ?
    Ai-je oublié quelque chose ?
    Ou est-ce autre chose ?

    Quelqu'un s'est-il déjà penché sur ce problème ? ( compilation GCJ )

    D'avance merci pour vos réponses et à demain

    Amicalement.

    Claude.

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je ne suis pas tout à fait sûr de ma réponse, mais je dirais que c'est normal. Car, gcj compile toutes tes classes en natif, mais tes classes appellent d'autres classes qui sont dans l'api java et ces classes, il faut aussi les compiler en natif pour qu'il n'y ait aucun appell à la JRE. Donc, tu n'as pas que la taille de tes classes à prendre en compte, mais aussi cellle de toutes les classes que tu utilises. Par exemple pour une simple JFRame, il va falloir compiler en natif, toutes les classes qu'utilise JFrame plus la tienne ou tu l'utilise.

  3. #3
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Je suis également du même avis.
    La taille du prog en natif vient du fait qu'on doit porter en natif tous les objets et classe utilisées dans le projet, d'une simple String à des objets très complexes.
    Vu que tu demandes à être indépendant de la jre, il faut tout compiler en natif.

    Question bête (sans doute), mais pourquoi compiler en natif une appli java ???

  4. #4
    Membre éclairé
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    Mai 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Prendre le temps de vivre. . .

    Informations forums :
    Inscription : Mai 2006
    Messages : 274
    Par défaut
    Bonjour,

    Tout d'abord, merci pour ces deux réponses.

    Je suis bien conscient qu'effectivement il faille compiler toutes les classes dont le programme à besoin et je suis aussi conscient que la taille d'un java compilé sera plus importante que celle d'un programme C identique ( abscence de dll entre autre... ) mais dans l'exemple cité ci-dessus ( exemple vécu ) 3 000 fois plus !! c'est vraiment beaucoup.

    Après être rentré dans le pgr .exe cité, il me semble que bon nombre de classes n'ont rien à y faire ?...il me semble !

    Pour Regis.C
    1°/ Par simple curiosité et travail intellectuel. ( Faire tourner les neurones et savoir comment ça marche. )
    ensuite,
    2°/ Personnellement, je pense que java aurait beaucoup à y gagner à pouvoir faire les deux. Rester multi-plateforme avec sa JVM et pouvoir faire des éxécutables natifs. Il n'y a qu'à voir les nombreuses demandes faites sur les forums. " Comment faire un exe avec Java... "
    Mais c'est un avis tout personnel, car au fil de mes lectures j'ai cru comprendre que bon nombre de " Javistes " tenaient à conserver la conception actuelle. Il n'empêche que certaines personnes influantes dans le domaine de l'informatique se sont penchées et se penchent encore actuellement sur le problème.
    J'ai lu, sur le site de GNU ( News GCJ ), mais peut-être ai-je mal compris ( Bad Anglais ! ) que GCJ allait s'associer avec Eclipse pour faire un " Front-End "... ( Compilateur Natif... Non !! )

    Je pense que l'avenir sera aux deux possibilités.
    Pouvoir choisir en fonction de ce que l'on veut faire.


    Encore et @++

    Claude

  5. #5
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Merci pour tes précisions.
    Quand aux nombreux sujet "comment faire un .exe en java", je pense que 90% des demandes parlent d'un launcher java, qui a l'avantage d'être plus "parlant" pour les non-informaticiens qu'un .jar executable (icone personnel, propriété, etc.) et fait d'avantage "application aboutie" qu'un .bat qui lance la ligne de commande.

    J'en suis moi-même un des utilisateurs puisque la plupart de mes applis java sont launchées via un pseudo .exe créé à partir de JToExe, tout en conservant la possibilité de lancer l'appli de manière moins "intuitive" pour l'utilisateur lambda.

  6. #6
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par Claude URBAN
    Après être rentré dans le pgr .exe cité, il me semble que bon nombre de classes n'ont rien à y faire ?...il me semble !
    Lesquelles par exemple ?

    On se rend pas compte du nombre de classes que l'on utilise, il faut compter chaque classe que l'on étend, chaque classe que l'on implémente, chaque classe que l'on emploie et ensuite, chaque classe qu'emploie chaque classe que l'on emploie

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Sans oublier tout ce qui est implicite et/ou géré normalement par la JVM (API de base, ClassLoader, reflection, Garbage Collector, etc.).

    a++

Discussions similaires

  1. Identifier messages avec PJ pour faire le ménage ?
    Par Graffito dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 05/02/2008, 18h08
  2. [debutant] Quel EDI choisir pour faire des exe autonomes sous Windows ?
    Par damned3 dans le forum Choisir un environnement de développement
    Réponses: 10
    Dernier message: 06/11/2006, 14h00
  3. Réponses: 46
    Dernier message: 04/08/2006, 00h18
  4. Linker un .o avec des archives pour faire un exe
    Par vdumont dans le forum Linux
    Réponses: 4
    Dernier message: 28/03/2006, 22h33
  5. Réponses: 8
    Dernier message: 07/02/2006, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo