Compilateur / interpréteur Java
Pourquoi nous faisons-nous de dire que Java est compilé et interprété langue?
Quel est l'avantage de ce (être interprété et compilé)?
source d'informationauteur JavaUser
Vous devez vous connecter pour publier un commentaire.
Java est compilé pour un intermédiaire "byte code" au moment de la compilation. Ceci est en contraste à un langage comme C est compilé en langage machine au moment de la compilation. La Java byte code ne peut pas être exécuté directement sur le matériel de la manière qui a compilé le code C peut. Au lieu de l'octet de code doit être interprété par la JVM (Java Virtual Machine) au moment de l'exécution, afin d'être exécuté. Le principal inconvénient d'un langage comme C est que lorsqu'il est compilé, le fichier binaire ne fonctionne que sur une architecture particulière (par exemple x86).
Les langages comme PHP sont effectivement indépendant du système et de s'appuyer sur un système et de l'architecture spécifique de l'interprète. Cela conduit à beaucoup plus grande portabilité (les mêmes scripts PHP de travail sur les machines Windows et Linux, etc.). Cependant, cette interprétation conduit à une importante baisse de la performance. Les langages de haut niveau comme PHP besoin de plus de temps pour interpréter plus spécifique à la machine des instructions qui peuvent être exécutées par le matériel.
Java cherche à trouver un compromis entre une approche purement langage compilé (sans portabilité) et purement langage interprété (c'est nettement plus lent). Il accomplit cela en compilant le code dans un formulaire qui est plus proche du langage machine (en fait, Java byte code est un langage machine, simplement pour la Machine Virtuelle Java), mais peut encore être facilement transportés entre les architectures. Parce que Java nécessite toujours une couche logicielle pour l'exécution (la JVM) c'est un langage interprété. Cependant, l'interprète (la JVM) fonctionne sur une forme intermédiaire connu comme byte code plutôt que sur le raw fichiers sources. Ce byte code est généré au moment de la compilation par le compilateur Java. Par conséquent, Java est aussi un langage compilé. En opérant de cette façon, Java obtient certains avantages des langages compilés, tout en également à obtenir certains des avantages des langages interprétés. Cependant, il hérite également certaines limitations de ces deux langues.
Comme Bozho points, il y a certaines stratégies pour accroître les performances d'un code Java (et d'autres byte code des langues comme l' .Net) grâce à l'utilisation de Juste à Temps (JIT) à la compilation. Le processus réel varie en fonction de la mise en œuvre de la mise en œuvre sur la base des exigences, mais le résultat final est que le code est compilé en byte code au moment de la compilation, mais ensuite, il est exécuté par l'intermédiaire d'un compilateur à l'exécution avant qu'il soit exécuté. Ce faisant, le code peut être exécuté à la quasi-native vitesses. Certaines plates-formes (je crois .Net ne) enregistrer le résultat de la compilation JIT, en remplaçant le code octet. Grâce à cela, tous les exécutions futures du programme va s'exécuter que si le programme a été compilé nativement depuis le début.
Parce que le code source (
.java
fichiers) est compilé en bytecode (.class
fichiers), qui est alors interprété par un La Machine Virtuelle Java (aussi connu comme une JVM) pour l'exécution (la JVM peut faire de la poursuite de l'optimisation, mais c'est anoher histoire).La portabilité. Le même bytecode peut être exécuté sur n'importe quelle plateforme, tant que la JVM est installé ("compiler une fois, exécuter partout").
C'est un sujet de long et vous feriez mieux de lire à propos de JIT. En bref, Java est compilé en bytecode, et le pseudo-code est ensuite compilé (dans la JVM) en code machine.
Java est compilé en byte code pas binaires. Les octets de codes ne sont pas exécutables directement, ils ont besoin de la Machine Virtuelle Java pour faire un just in time compiler et de les compiler de nouveau en code machine au moment de l'exécution.
À un niveau très basique, il séparer le code que les programmeurs à écrire à partir de l'ordinateur local où la machine fonctionne, par conséquent, une meilleure portabilité. Lors de la compilation en bytecode contribue à la performance de just in time compiler, de réduire la taille des fichiers, et plus ou moins aider à dissimuler le code réel. (il élimine également quelques erreur de compilation)
Java est considéré comme un "compilé" langue parce que le code est compilé en bytecode format qui est ensuite exécuté par la Machine Virtuelle Java (JVM). Cela donne plusieurs avantages dans le domaine de la performance et de l'optimisation du code, pour ne pas mentionner d'assurer l'exactitude du code.
Il est considéré comme un "interprété" la langue, parce que, d'après le pseudo-code est compilé, il est exécutable sur n'importe quel ordinateur disposant d'une JVM installée. C'est de cette façon que Java est un peu comme un langage interprété en ce que, pour la plupart, il ne dépend pas de la plate-forme sur laquelle est est en cours d'exécution. Ce comportement est similaire à d'autres langages tels que Perl, Python, PHP, etc.
Théorique à la baisse sur le fait que les programmes Java peuvent être exécutés sur n'importe quel système en l'absence de code source, c'est que, bien que cette méthode de distribution assure la compatibilité multiplate-forme, les développeurs ont une raison de moins pour la libération de leur code source, la conduite d'un écart entre l'idéologie de la signification des phrases de "cross-platform" et "open source".
Compilé: Votre programme est syntaxiquement correcte programme Java, avant que le programme commence.
Interprété: fonctionner sur différentes plates-formes de la même (byte-code.
Compilé: Lorsque votre programme est compilé correctement, vous pouvez assurez-vous d'avoir 80% de bugs logiciels sous contrôle. Et votre code ne sera pas arrêter parce que vous n'avez pas correctement fermé un bloc de code, etc.
Interprété: Vous savez ce que les Applets sont des ? C'était la "killer application" lorsque Java est sorti. Votre navigateur télécharge l'applet à partir du site web et d'exécuter le code de l'applet dans votre navigateur. C'est pas très cool. Mais, de la même applet fonctionne sur Windows, Linux, Mac, Solaris, ... parce que les pistes/interprété un intermédiaire langue: le byte code.
Java est un véritable langage de programmation orienté objet. Il s'agit d'une plateforme
indépendant et est normalement interprété non compilé comme le C/C++.
Java utilise un indépendant bytecode qui est l'architecture neutre. C'est, il est conçu pour être indépendant de la machine. Les octets de codes sont interprétées et exécutées par une Machine Virtuelle Java (JVM).
Lire la suite ici - https://www.ibm.com/developerworks/java/library/j-jtp12214/