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

avec Java Discussion :

compilation du compilateur java


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut compilation du compilateur java
    Bonjour,

    Si on considère que le compilateur java est un logiciel, comment est-il compilé?

    Pourquoi la machine virtuelle java ne se charge t-elle pas et de la compilation du programme java( puiqu'elle est réalisée par le compilateur java)et de l'interprétation du pseudo code en code binaire.

    Merci beaucoup de votre réponse.

    Cordialement.

    Nathalie
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 38
    Points
    38
    Par défaut
    GROSSO-MODO :

    Le "Compilateur" Java est n'est pas un vrai compilateur au sens qu'il produit un code intermédiaire (bytecode) qui est trans-plateforme (les *.class).

    La JVM est alors chargée de transformer ce bytecode en instructions machine pour l'OS sur lequel elle est installée.

    Une JVM est donc (en général) écrite en C ou assembleur et compilée pour un OS cible alors que le code Java, lui peut être lancé sur tous les OS possédant un compilateur.

    Ceci permet la portabilité des .class d'une plateforme à l'autre.

    Si la compilation est réalisée par un outil (javac) et l'execution par un autre (java), c'est uniquement qu'il est plus simple d'utiliser et de maintenir plusieurs "petits" outils qu'une grosse usine à gaz. Tous ces outils font partie de la JVM et sont donc écrits en C ou assembleur pour un OS donné.

    Est-ce que ça répond à ta question ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oui mais le compilateur javac (écrit en Java d'ailleurs, et pas en C...) est un vrai compilateur quand même et effectue quelques tests.
    Notamment sur les types.
    Java n'est pas un langage de script, il est statiquement typé et le compilateur s'occupe en partie de vérifier cette cohérence de l'utilisation des types et des références.
    Il fait aussi une analyse statique rudimentaire permettant d'éliminer du code inutile (test sur une constante ayant pour valeur "false" par exemple), ou de détecter des erreurs (comme les variables non initialisées) avant l'exécution. Le fait que javac produise un bytecode et pas du code natif ne fait pas moins de lui un vrai compilateur (compiler c'est traduire, et il traduit vers le bytecode java)
    Le compilateur ne génère pas la machine virtuelle, mais bien juste les instructions en bytecode. La machine virtuelle se charge de charger le bytecode, de le vérifier, et de lier les bibliothèques utilisées lors de l'exécution. De plus dans un soucis de performance, elle optimise et inline le code le plus souvent exécuté, compile en natif pour la machine cible sur laquelle elle est en train de tourner.
    Comme dit par targol la machine virtuelle Java est souvent écrite en C(++) (notamment celle de Sun... pardon Oracle), mais il existe au moins une machine virtuelle écrite en Java (Jikes RVM) qui s'exécute elle même.

    Il ne faut pas confondre compilateur et machine virtuelle donc, qui sont deux outils différents et pas livrés ensembles. Seul le développeur a besoin du compilateur, mais tout le monde a besoin de la machine virtuelle pour exécuter du bytecode Java. C'est la différence JDK (Java Development Kit avec le compilateur dedans notamment) et JRE (Java Runtime Environment, qui comprend la machine virtuelle et la bibliothèque standard).

    Voilà j'espère avoir clarifier les chose

  4. #4
    Membre habitué
    Homme Profil pro
    SAQ
    Inscrit en
    Novembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : SAQ
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2005
    Messages : 167
    Points : 194
    Points
    194
    Par défaut
    Mon point ne concerne pas vraiment le compilateur mais je pense que pour quelqu'un voulant connaître les fondements de JAVA peut lire sur OpenJDK
    Si derrière tout homme il y a une femme, devant ce même homme il y a l'ordinateur que cette femme a bousillé
    ---------

    Documentation is like sex: when it is good, it is very, very good; and when it is bad, it is better than nothing. (Dick Brandon)

Discussions similaires

  1. [Compilation]Compilateur Java
    Par gurv4n dans le forum Général Java
    Réponses: 4
    Dernier message: 09/01/2008, 21h31
  2. compilation: javac ? test.java
    Par ista9im dans le forum Langage
    Réponses: 1
    Dernier message: 08/10/2005, 09h34
  3. Réponses: 2
    Dernier message: 30/09/2005, 14h52
  4. Compiler le compilateur de cobol
    Par elekis dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 03/12/2004, 10h45
  5. Compilateurs Java
    Par anzar dans le forum Build
    Réponses: 2
    Dernier message: 12/06/2003, 22h13

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