Pourquoi Java est à la fois compilé et interprété langue lorsque le JIT aussi compile le bytecode?
J'ai lu qu'un code source java est compilé en "bytecode", alors c'est "Compilé" de nouveau par JIT dans la machine d'un code". Qui est, le code source est d'abord compilé en une plate-forme indépendante de bytecode et compilés puis de nouveau à un code spécifique de l'ordinateur. Alors pourquoi il est appelé comme interprétés et langage compilé? D'où l'interprétation a lieu?
Il n'y a pas une telle chose comme "interprétés" dans vos définitions de toute façon 🙂 Quand un compilateur JIT est compilé en langage machine le code qu'il convertit un tas d'instructions et effectue des optimisations sur eux. Un interprète ne vient qu'une seule chose à la fois (c'est souvent beaucoup plus lent). Finalement, tout ce qui a sur la machine de toute façon. (C'est bien sûr une simplification excessive, mais vous obtenez le point)
Essayez
stackoverflow.com/questions/1326071/...
Essayez
java -int
stackoverflow.com/questions/1326071/...
OriginalL'auteur Ragul | 2014-01-02
Vous devez vous connecter pour publier un commentaire.
Il y a un petit malentendu ici.
Dans des circonstances normales, le compilateur java(
javac
) compile le code java pour java bytecode et interprète(java
) interpretes ces bytecode(ligne par ligne), de le convertir en langage machine et de les exécuter.JIT(Just in time)
compilateur est un peu différent de ce concept. JVM maintient un nombre de fois qu'une fonction est exécutée. Si elle dépasse la limite, alors JIT entre en image. le code java est compilé directement en langage machine et là sur ce est utilisé pour l'exécution de la fonction.l'équipe identifie uniquement des "Hot Spot"s et la compilation de celles-ci, il effectue des optimisations et il est possible de sauvetage de points.
Merci M. & Benjamin 🙂
OriginalL'auteur Aniket Thakur
Java est une programmation langue.
Il a un cahier des charges (JLS) qui définit la façon dont les programmes Java doit agir.
Comme la langue elle-même, elle ne précise pas comment il doit être exécuté sur différentes plates-formes. La façon dont il fonctionne, avec un JIT ou sans JIT est entièrement mise en œuvre.
Si j'écris un Java runtime demain qui ne fait pas de compilation JIT à tout ce que je peux appeler Java interprété.
Si je prends une machine Java (et les gens sérieux qui fait de ces) qui utilise Java bytecode de l'assemblée, je peux appeler Java strictement compilé.
Beaucoup d'autres langues ce faire:
OriginalL'auteur Benjamin Gruenbaum
Par souci de précision, nous allons faire clair, ce n'est pas un langage de programmation de Java question, mais une JVM fonctionnalité.
Dans la JVM premières mises en œuvre, JIT n'existait pas et le bytecode a toujours été interprété. Cela était dû à une décision de conception pour rendre le code compilé indépendant de la machine physique et OS en cours d'exécution java, et est encore valable aujourd'hui.
Comme plus tard refination, JIT a été introduit dans la JVM de mise en œuvre pour une exécution plus rapide, mais le pseudo-code doit encore être valide et passer tous les validations avant d'être traduit en binaire. De cette façon, vous gardez l'indépendance de plate-forme, tous les sur la santé mentale et des contrôles de sécurité et vous gagnez en performance.
OriginalL'auteur Jorge_B
javac est un compilateur et il convertit le code java en bytecode (voir bytecode) qui est facile à exécuter sur n'importe quelle machine, si nous avons une JVM (java Virtual Machine). et l'interprète convertit le bytecode java en code machine.
OriginalL'auteur Sagar Panwar
Java est Langue Hybride, c'est à dire qu'il est à la fois Compilé(travail effectué en amont) et Interprété(travail effectué à la réception de fin d').
Du Byte-code est un IL(jentermediate Langue) à Java. Le code source Java est compilé en Bytecode par
javac
. Parfois, cet octet code compile en langage Machine qui est désigné comme le JIT(Just-jen-Time) de la compilation.JVM(sans JIT) interprète java Langage Intermédiaire de byte code machine natif de la langue comme suit:
Source
JVM est un abrégé du calcul de la machine, il a plusieurs implémentations:
HotSpot (Interprète + compilateur JIT) : la base de référence de la machine virtuelle Java de mise en œuvre. Utilisé par Oracle et Java OpenJDK.
JamVM (Interprète) Développé à un niveau extrêmement faible de la machine virtuelle par rapport à d'autres. Conçu pour l'utilisation de GNU Classpath. Prend en charge plusieurs architectures. GPL.
ART (Interprète + AOT compilateur de savoir à l'Avance le temps de compilation) Unndroid Rde l'onuTime est une demande de l'environnement d'exécution utilisé par le système d'exploitation Android de remplacer Dalvik (interprète + compilateur JIT).
Liste des machines virtuelles Java
OriginalL'auteur Premraj
Il sert à deux fins. Le premier est de s'assurer que le code est syntaxiquement et sémantiquement correcte. Deuxièmement, le processus de compilation produit byte-code. Comme vous le notez, c'est une architecture indépendant du langage intermédiaire qui peut être interprété ou juste-à-temps compilé en code natif par la JVM pour une architecture de la machine. Par la compilation de byte-code, une grande partie des frais généraux associés à la compilation peut être fait à l'avance, laissant la JVM pour générer du code natif à partir de ou interpréter byte-code qui a été soigneusement et rigoureusement vérifiés au préalable.
OriginalL'auteur Chris Mantle
Contrairement à d'autres langage de programmation java est compilé et interprété de la langue. Java IDE agit comme un compilateur et de la JVM(java virtual machine) se comportent comme des services d'un interprète. c'est à dire quand tout programme disons Bonjour, est enregistré après la compilation comme Hello.java et après la compilation de ce fichier nous obtenons Hello.Class l'extension de fichier est appelée dans la classe fichier, byte-code ou code intermédiaire. Byte-code n'est pas dépendante pour toute la machine donc il est aussi appelé code intermédiaire.
Pour convertir ce byte-code en code machine ou de la machine compréhensible format JVM est utilisée, ce qui est différent pour différents systèmes d'exploitation. JIT(Just in Time compiler) est une partie de la JVM qui est activé par défaut compile le bytecode en code machine natif de la compilation en "juste à temps".
OriginalL'auteur Ashwin J Chhetri