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

Langage Java Discussion :

Différences entre compilateur et interpréteur


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut Différences entre compilateur et interpréteur
    Salut
    ont dis par exemple :
    JavaC : compilateur de source java.
    java : interpréteur de byte code.

    Quel la Différance Exactement entre un compilateur et interpréteur

  2. #2
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812

  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 amazircool
    Quel la Différance Exactement entre un compilateur et interpréteur
    Un compilateur traduit un code dans un certain langage (comme le C, C++, Delphi, etc.) vers un langage plus facilement compréhensible par la machine (le programme en code natif). Le compilateur se charge également de toutes les vérifications du code (syntaxe, lexical, etc.), et une fois compilé, le programme peut être exécuté autant de fois que nécessaire. Par contre

    Ce code peut alors être exécuté très rapidement, mais devient presque indéchiffrable pour un humain. De plus sa portabilité est très limité car une application est destiné à fonctionner sur un certain système (Windows, Linux, MacOS, etc.) avec une certaine architecture (Intel x86, AMD64, PowerPC, etc.).

    On distingue donc deux états pour l'application : le code source et l'application final destiné à être exécuté.



    Un interpréteur quand à lui, effectue le même travail de vérification du code que le compilateur, mais ne génère pas le code natif dans un fichier afin de créer une application, mais interprète le code afin de l'exécuter à la volée. Ainsi on ne se retrouve plus qu'avec un seul état : le code source. C'est lorsqu'il est exécuté avec l'interpréteur que l'on obtient notre application (le code est lu à la volée et exécuté). Si cela peut apporter des performances moindres par rapport à une compilation normale (car on refait principalement les mêmes traitements que la compilation), cela permet une meilleure portabilité puisque la seule limite à l'exécution est la présence d'un interpréteur sur la machine cible. On peut prendre comme exemple le JavaScript, PHP, les shell-scripts, PERL, etc.



    Citation Envoyé par amazircool
    ont dis par exemple :
    JavaC : compilateur de source java.
    java : interpréteur de byte code.
    Java est un cas particulier, car il essaye de prendre le meilleur des deux.

    Java est un langage compilé !

    Le code source Java, lorsqu'il est compilé avec javac, donne ce qu'on appelle le bytecode (les fameux fichiers *.class). Toutefois, malgré qu'il soit proche d'un code natif, ce dernier est prévu pour fonctionner sur une machine qui n'existe pas (la machine virtuelle Java).


    Java est un langage interprété (enfin presque) !

    Ainsi, la machine virtuelle est un "interpréteur" de bytecode, et permet d'exécuter une application Java sur une machine. Ainsi les applications Java (tout comme les langages interprétés) peuvent être exécutées sur n'importe quel machine du moment que cette dernière possède une machine virtuelle.


    Toutefois, si cela était totalement vrai dans les premières versions de Java, ce n'est plus tout à fait vrai actuellement...


    En effet, depuis la version 1.2, la JVM inclut un compilateur JIT (Just In Time), qui peut compiler le code en natif à la volée, et bénéficie ainsi des meilleures optimisations possibles pour la machine hôte de l'application, ce qui permet des performances bien meilleures que les langages interprétés...


    a++

  4. #4
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    Merci, réponse complet et compréhensif.
    Natif vers mon cerveau

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [F77] Lecture / Ecriture compatibilité entre compilateurs
    Par sylviadesbois dans le forum Fortran
    Réponses: 2
    Dernier message: 05/06/2014, 14h23
  2. Difference entre Compilateur
    Par zoro007 dans le forum C++
    Réponses: 3
    Dernier message: 13/09/2010, 14h11
  3. Runtime et différences entre compilateurs
    Par dfg dans le forum Langages de programmation
    Réponses: 16
    Dernier message: 08/06/2008, 17h00
  4. comparaison entre compilateurs C/C++
    Par sarah65536 dans le forum Choisir un environnement de développement
    Réponses: 4
    Dernier message: 16/06/2006, 17h24
  5. [Reflection] diff de perf entre newInstance() et appel classic
    Par guipom dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 07/07/2005, 14h50

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