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 :

Pourquoi pas la compilation native ?


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut Pourquoi pas la compilation native ?
    Bonjour,


    Je suis passé du C à Java et j'ai remarqué qu'un des avantages du java
    ce sont les API fournies en standart, donc on peut quasiment tout faire
    sans installer d'autres API, ce qui permet une portabilité facile.
    Le revers c'est qu'il faut passer par une machine virtuelle.
    Alors que le C lui s'execute directement.

    Je me suis demandé pourquoi java ne permettrait il pas de compiler directement en natif? Cela permettrait de faire des gains de perfs énormes,
    en fait ce qui aurait été génial c'est que le compilateur transforme le programme en java en un autre language genre c++ celui-ci dépendant de la plateforme puis le compile en executable.

    Une surcouche de C++ en quelque sorte mais universelle car la plupart des fonctions dependantes de l'os auraient été traduites à la volé en natives ou créées si elles n'existent pas, au lieu d'une VM on aurait un compilateur qui traduirait en fonction des plates formes souhaitées.

    Je ne pense pas que ça demanderais beaucoups plus de travail que d'adapter une JVM à chaque plateforme, vu qu'il faut dans tout les cas adapter le code en fonction de la plateforme cible.

    Mais je pense que sun a fait une JVM avant tout pour vendre des licenses d'exploitation ce qui est normal pour une entrerprise.

  2. #2
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par ishikawa
    Bonjour,


    Je suis passé du C à Java et j'ai remarqué qu'un des avantages du java
    ce sont les API fournies en standart, donc on peut quasiment tout faire
    sans installer d'autres API, ce qui permet une portabilité facile.
    Le revers c'est qu'il faut passer par une machine virtuelle.
    Alors que le C lui s'execute directement.

    Je me suis demandé pourquoi java ne permettrait il pas de compiler directement en natif? Cela permettrait de faire des gains de perfs énormes,
    en fait ce qui aurait été génial c'est que le compilateur transforme le programme en java en un autre language genre c++ celui-ci dépendant de la plateforme puis le compile en executable.

    Une surcouche de C++ en quelque sorte mais universelle car la plupart des fonctions dependantes de l'os auraient été traduites à la volé en natives ou créées si elles n'existent pas, au lieu d'une VM on aurait un compilateur qui traduirait en fonction des plates formes souhaitées.

    Je ne pense pas que ça demanderais beaucoups plus de travail que d'adapter une JVM à chaque plateforme, vu qu'il faut dans tout les cas adapter le code en fonction de la plateforme cible.

    Mais je pense que sun a fait une JVM avant tout pour vendre des licenses d'exploitation ce qui est normal pour une entrerprise.
    C'est exactement ce que fait la JVM lorsque tu exécutes un de tes programmes, elle le "compile" (pas tout, juste les parties critiques en gros) en natif, de manière à ce que les perfs soient très bonnes...

  3. #3
    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,

    Citation Envoyé par ishikawa
    Je me suis demandé pourquoi java ne permettrait il pas de compiler directement en natif? Cela permettrait de faire des gains de perfs énormes,
    Il est déjà possible de compiler directement en natif, mais le gain en performance n'est pas vraiment évident !

    En fait la JVM compile le bytecode en code natif à la volée, et comme elle connait toutes les spécificités de l'environnement d'exécution elle peut effectuer des optimisations bien plus poussées...

    D'ailleur la compilation en natif n'apporte pas forcément de meilleure performance (lire : La machine virtuelle Java est-elle vraiment lente ?).



    Citation Envoyé par ishikawa
    au lieu d'une VM on aurait un compilateur qui traduirait en fonction des plates formes souhaitées.
    C'est exactement ce que fait la JVM : elle traduit le bytecode en code natif à la volée. L'avantage c'est qu'il n'y a qu'un code à redistribuer

    Citation Envoyé par ishikawa
    Je ne pense pas que ça demanderais beaucoups plus de travail que d'adapter une JVM à chaque plateforme, vu qu'il faut dans tout les cas adapter le code en fonction de la plateforme cible.
    Non, mais au final la compilation direct en natif n'apporte pas beaucoup d'intérêt, si ce n'est de perdre la portabilité...

    Citation Envoyé par ishikawa
    Mais je pense que sun a fait une JVM avant tout pour vendre des licenses d'exploitation ce qui est normal pour une entrerprise.
    Les licenses de Java ne sont pas vendus. Donc que le code soit compilé en natif ou pas ne changerait rien pour Sun...

    a++

  4. #4
    Membre éclairé Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Par défaut
    JVM pas lent ? Code natif sans intéret ?

    je ne suis absolument pas d'accord. Pour avoir coder en C et java, et un peu de C++. Java est bien le plus lent des trois. Le bytecode est une traduction pure du code java. Ca permet de le parser plus rapidement mais c'est tout. De plus il n'y pas d'optimisation comme le font gcc et g++.

    Sinon pour ce qui est de l'execution, le java reste néanmoins en grande partie de l'interprété a la première execution. Et la compilation a la volée fonctionne mal par rapport a du C# par exemple.

    Comment est ce que vous faites vos bench ?

  5. #5
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Nous faisons - enfin, moi, en tous cas - nos benchs au visu. Je fais une appli java, et je regarde si elle fonctionne aussi vite que les autres... que toutes les autres, y compris les applis natives. Et qu'elles fonctionnent aussi vite que l'utilisateur le souhaite, c'est à dire qu'il ne se rende même pas compte que il y a une appli.

    Et les applis - en tous cas les miennes - fonctionnent aussi vite que toutes les applis faites en C ou C++, comme KDE, etc, et font des choses parfaitement comparables.

    J'admets toutefois qu'il reste une marge au sujet des applis en ligne de commande, c'est à dire que ces dernières vont beaucoup plus vite.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    Les licenses de Java ne sont pas vendus. Donc que le code soit compilé en natif ou pas ne changerait rien pour Sun...
    Je crois que Sun vends la license java pour les terminaux embarqués, genre les telephones portables, les lecteurs Blue-Ray ....

    Me tromperais-je ?

  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
    Citation Envoyé par ishikawa
    Je crois que Sun vends la license java pour les terminaux embarqués, genre les telephones portables, les lecteurs Blue-Ray ....
    Je dois dire que je ne connais pas du tout le monde de l'embarqué, ni les performances de ces JVMs, mais les spécifications de J2ME doivent surement permettre à n'importe qui de créer sa propre JVM...

    Mais l'intérêt d'un bytecode portable y est encore plus important : tu te vois recompiler ton application pour les 500 types de téléphone différent ???

    a++

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    Les licenses de Java ne sont pas vendus. Donc que le code soit compilé en natif ou pas ne changerait rien pour Sun...
    Je crois que Sun vends la license java pour les terminaux embarqués, genre les telephones portables, les lecteurs Blue-Ray et ceux qui utilisent une jvm hardware

    Me tromperais-je ?

    Si ce n'est pas le cas alors je ne comprends pas pourquoi Sun n'aurait pas tout simplement créé un language portable sur tous les systemes sans JVM.

    J'ai remarqué une tendance qui monte chez les grands constructeurs de GSM dont NOKIA et SAMSUNG de fournir un SDK complet en C/C++ pour symbian os qui commence à devenir de plus un standart pour portable.

    Je crois que cette tendance est du au cout de la JVM en matiere de temps processeur ou en hardware si la jvm est une puce ainsi que l'autonomie que cela ponstionne, de plus C/C++ permet de controler le hardware et de faire des jeux de qualité.

    Je trouve fort dommage que Java ne permette pas de compiler du java en natif pur, Java est un trés bon language malheureusement il ne peut remplacer le C/C++ à cause de son défaut principal la JVM ajoute une couche entre le programme et l'os.

  9. #9
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 110
    Par défaut
    En te lisant ishikawa, j'ai la forte impression que tu es contre-java. je ne vais pas jeter la pierre, java a ses qualités et ses defauts.

    Seulement si tu souhaites débattre de ca, il y a :
    "C++ versus Java"
    "C# versus Java"
    "DotNet versus Java"
    Et "quel est votre langage préféré" (majorité pour Java)
    tout ca ici : http://www.developpez.net/forums/forumdisplay.php?f=40

    Ce sont des debats qui font rages depuis bien longtemps.


    à cause de son défaut principal la JVM ajoute une couche entre le programme et l'os.
    En BTS on nous apprends les fameuses 7couches du systèmes... alors une de plus ou de moins...

    Il faut arreter de penser qu'au performance de temps en temps. On le dit plus lent que les autres, peut etre, mais la realisation du logiciel et nettement plus rapide.

    Quand j'installe des logiciels ou des jeux, quasiment a chaque fois est installé une application tiers, genre python, framework 2, truc ci ou truc ca. alors installer une fois pour toute la jvm, ce n'est pas cher payer.

Discussions similaires

  1. Pourquoi pas WinDev 9 ?
    Par nyarla01 dans le forum WinDev
    Réponses: 35
    Dernier message: 25/07/2006, 19h41
  2. [sqlExp.pas] : échec compilation
    Par PpPool dans le forum Bases de données
    Réponses: 12
    Dernier message: 11/05/2006, 10h50
  3. N'arrive pas a compiler
    Par vodevil dans le forum MFC
    Réponses: 3
    Dernier message: 21/08/2005, 20h39
  4. [Language][DAO]Pourquoi pas des Singletons ?
    Par le Daoud dans le forum Langage
    Réponses: 11
    Dernier message: 04/05/2005, 09h16

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