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 :

JVM et code natif


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 1
    Par défaut JVM et code natif
    Bonjour,

    L'objectif des langages managés, et de java en particulier, est de permettre une grande portabilité de l'application grâce à l'utilisation de bytecode, compilé à la volée par une machine virtuelle. Lorsqu'une JVM est installée sur un système, celui ne va plus changé. Pourquoi dans ces conditions ne compile t-on pas l'ensemble des librairies java une bonne fois pour toute en code natif sur le système ? Pourquoi ne fait-on pas pareil avec l'installation d'un programme java, c'est à dire qu'on compile l'ensemble du code en code natif au moment de l'installation sur un système donné ?

    Merci pour vos réponses,

    PS : si ce message se trouve dans la mauvaise catégorie merci de le déplacer.

  2. #2
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,
    effectivement ta question est intéressante,mais:

    Le langage java est conçu pour justement être portable,et donc on doit pouvoir transférer un programme java d'un ordinateur à un autre sans problème de compatibilité.

    Or,qui dit compilation dit dépendant de l'O.S,et ce n'est pas le but de java...

    De toute façon,les APIs java reposent sur du code natif pour l'affichage,etc...

  3. #3
    Membre chevronné Avatar de T`lash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2007
    Messages : 381
    Par défaut
    Si je ne m'abuse, la JVM compile automatiquement une partie du bytecode lors de la première exécution pour que les suivantes soient plus rapides.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu t'abuse Compilation uniquement en mémoire vive.

    La compilation JIT est complexe. Tout ton code java n'est pas compilé en natif. La jvm garde une trace des bouts de codes les plus réutilisés de ton programme, et au dela d'un certaine limite d'utilisation, estime qu'il est rentable de convertir cette méthode ou bout de code en code natif. On ne le fait pas sur fichier parce que ca n'a jamais été jugé utile. Les parties sur lequelles il y a gain notable sont déjà compilées à la volée. De plus ce code natif est visiblement très dépendant de l'état de la jvm, d'une exécution à l'autre il pourrait etre différent.
    Enfin, mettre un fichier natif serait spécifique à l'OS (on pourrait toujours argumenter qu'il ne changera pas, mais ce n'est pas vrai dans tous les cas!) mais aussi spécifique à la version de la jvm utilisée -> bonjour les dégat si tu change de jvm sans réinstaller ton programme.

  5. #5
    Membre chevronné Avatar de T`lash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2007
    Messages : 381
    Par défaut
    Donc, je m'abuse, ou alors j'ai abusé...

    N'empêche que Java est souvent considéré à tord comme un langage menant à des applications très lentes à l'exécution. D'accord, en tant que langage semi-compilé il est plus lent que du code natif, mais c'est négligeable par rapport aux nombreuses erreurs de conception des IHMs.
    Si on jongle bien avec les Threads et qu'on n'utilise pas des méthodes synchronisées lorsque c'est totalement inutile le gain en perfs est impressionnant.

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tout a fait d'accord, la perte de perfs du à l'interprété deviens minime, par rapport au gain en temps de développement et debuggage par rapport à des language comme le C++. La plus grosse différence de perfs viens de ce que les gens comparent des choses non comparable, comme les méthode object C++ qui sont plsu rapide car finale par défaut alors que les méthode java sont surchargeables par défaut. Et personellement, c'est plus propre et rapide de programmer dans le deuxième cas

Discussions similaires

  1. compilateur, interpréteur, bytecode, MSIL et code natif
    Par cyrano_de_bergerac dans le forum C#
    Réponses: 11
    Dernier message: 29/10/2007, 15h43
  2. class Stream pour code natif
    Par julioMEL dans le forum C++/CLI
    Réponses: 1
    Dernier message: 03/05/2007, 13h24
  3. Réponses: 3
    Dernier message: 19/07/2006, 21h54
  4. [JavaComm]Pb avec l'execution d'un code natif sous linux
    Par seb31 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 02/06/2004, 14h25

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