Maison  >  Article  >  Java  >  Java est-il compilé ou interprété ?

Java est-il compilé ou interprété ?

Guanhui
Guanhuioriginal
2020-06-06 14:50:5410425parcourir

Java est-il compilé ou interprété ?

Java est-il compilé ou interprété ?

Java n'est ni un langage compilé traditionnel ni un langage interprété. Java est d'abord compilé dans un fichier de bytecode ".class" puis interprété et exécuté par la machine virtuelle JVM, on peut donc dire que Java. être soit compilé, soit interprété.

Fonctionnalités Java

1 Simplicité

Java ressemble à C++, mais pour rendre le langage petit. et familiers, les concepteurs ont supprimé de nombreuses fonctionnalités disponibles dans le langage C++ que le programmeur moyen utilise rarement. Par exemple, Java ne prend pas en charge l'instruction go to et fournit à la place des instructions break et continue ainsi qu'une gestion des exceptions. Java élimine également la surcharge d'opérateurs et les multiples fonctionnalités d'héritage du C++, et n'utilise pas le fichier principal, éliminant ainsi le besoin de prétraitement. Étant donné que Java n'a pas de structures, les tableaux et les chaînes sont des objets, aucun pointeur n'est donc nécessaire. Java peut gérer automatiquement les références d'objets et les références indirectes et réaliser une collecte automatique des unités inutiles, afin que les utilisateurs n'aient pas à se soucier des problèmes de gestion du stockage et puissent consacrer plus de temps et d'énergie à la recherche et au développement.

2. Orienté objet

Java est un langage orienté objet. Pour les programmeurs, cela signifie prêter attention aux données de l’application et aux méthodes permettant de manipuler les données, plutôt que de penser strictement en termes de procédures. Dans un système orienté objet, une classe est un ensemble de données et de méthodes permettant d'exploiter les données. Les données et les méthodes décrivent ensemble l'état et le comportement d'un objet. Chaque objet est une encapsulation de son état et de son comportement. Les classes sont organisées selon un certain système et une certaine hiérarchie afin que les sous-classes puissent hériter du comportement des superclasses. Dans cette hiérarchie de classes, il existe une classe racine, qui est la classe ayant un comportement général. Les programmes Java sont organisés en classes.

Java comprend également une collection étendue de classes, qui forment divers packages, que les utilisateurs peuvent utiliser dans leurs propres programmes. Par exemple, Java fournit des classes qui génèrent des composants d'interface utilisateur graphique (java, package awt), où awt est l'abréviation de boîte à outils de fenêtrage abstrait (boîte à outils de fenêtrage abstraite), des classes qui gèrent les entrées et les sorties (java, package io) et des classes qui prend en charge les fonctions réseau (java, package net).

3. Distribution

Java est conçu pour prendre en charge les applications sur le réseau. C'est un langage distribué. Java prend non seulement en charge différents niveaux de connexions réseau, mais prend également en charge des connexions réseau de flux fiables avec la classe Socket, afin que les utilisateurs puissent générer des clients et des serveurs distribués.

Le réseau devient un véhicule de distribution d'applications logicielles. Les programmes Java ne doivent être écrits qu’une seule fois et exécutés n’importe où.

4. Compilation et interprétabilité

Le compilateur Java génère du byte-code au lieu du code machine habituel. Le bytecode Java fournit un format de fichier objet indépendant de l'architecture et le code est conçu pour fournir efficacement des programmes sur plusieurs plates-formes. Les programmes Java peuvent s'exécuter sur n'importe quel système implémentant un interpréteur Java et un système d'exécution.

Dans un environnement interprété, la phase standard de « liaison » du développement de programmes disparaît en grande partie. S'il existe une étape de liaison en Java, il s'agit simplement du processus de chargement de nouvelles classes dans l'environnement. C'est un processus incrémentiel et léger. Par conséquent, Java prend en charge un prototypage rapide et une expérimentation facile, ce qui conduira à un développement rapide des programmes. Il s'agit d'un processus de développement élégant qui contraste fortement avec le processus traditionnel et fastidieux de « compilation, liaison et test ».

5. Robustesse

Java était à l'origine utilisé comme langage pour écrire des logiciels d'électronique grand public, il est donc conçu pour écrire des logiciels hautement fiables et robustes. Java élimine certaines erreurs de programmation, ce qui rend assez facile l'écriture de logiciels fiables.

Java est un langage fortement typé, qui permet une vérification étendue au moment de la compilation pour détecter les problèmes potentiels d'incompatibilité de type. Java nécessite une déclaration de méthode explicite et ne prend pas en charge la déclaration implicite de style C. Ces exigences strictes garantissent que le compilateur détecte les erreurs d'appel, ce qui se traduit par des programmes plus fiables.

L'une des améliorations les plus importantes en matière de fiabilité est le modèle de stockage de Java. Java ne prend pas en charge les pointeurs, ce qui élimine la possibilité d'écraser le stockage et de corrompre les données. De même, la « garbage collection » automatique de Java empêche les fuites de stockage et autres erreurs nuisibles liées à l'allocation et à la désallocation dynamiques du stockage. L'interpréteur Java effectue également de nombreuses vérifications d'exécution, telles que la vérification que tous les accès aux tableaux et aux chaînes se situent dans les limites.

La gestion des exceptions est une autre fonctionnalité de Java qui rend les programmes plus robustes. Une exception est un signal indiquant qu'une condition anormale, semblable à une erreur, s'est produite. À l'aide des instructions try/catch/finally, les programmeurs peuvent trouver le code de gestion des erreurs, ce qui simplifie la tâche de gestion des erreurs et de récupération.

6. Sécurité

Le modèle d'allocation de stockage de Java est l'une de ses principales méthodes de défense contre les codes malveillants. Java n'a pas de pointeurs, les programmeurs ne peuvent donc pas accéder aux coulisses et simuler des pointeurs vers la mémoire. Plus important encore, le compilateur Java ne gère pas les décisions d'organisation du stockage, de sorte que le programmeur ne peut pas deviner l'organisation réelle du stockage de la classe en examinant la déclaration. Les références de stockage dans le code Java compilé déterminent l'adresse de stockage réelle au moment de l'exécution par l'interpréteur Java.

Le runtime Java utilise un processus de vérification du bytecode pour garantir que le code chargé sur le réseau ne viole aucune restriction du langage Java. Une partie de ce mécanisme de sécurité inclut la manière dont les classes sont chargées depuis Internet. Par exemple, les classes chargées sont placées dans des espaces de noms distincts plutôt que dans des classes locales, empêchant ainsi une applet malveillante de remplacer les classes Java standard par ses propres versions.

7. Portabilité

Java fait des déclarations de langage indépendantes des aspects d'implémentation. Par exemple, Java indique explicitement la taille et le comportement opérationnel de chaque type de données de base (ces types de données sont décrits par la syntaxe Java).

L'environnement Java lui-même est portable sur de nouvelles plates-formes matérielles et systèmes d'exploitation. Le compilateur Java est également écrit en Java, tandis que le système d'exécution Java est écrit en langage ANSIC.

8. Hautes performances

Java est un langage qui est d'abord compilé puis interprété, il n'est donc pas aussi rapide qu'un langage entièrement compilé. Mais il existe des situations dans lesquelles les performances sont essentielles. Pour prendre en charge ces situations, les concepteurs Java ont créé un compilateur « juste à temps », qui traduit également le bytecode Java en code machine pour un processeur (unité centrale) spécifique au moment de l'exécution. est de parvenir à une compilation complète.

Le format de bytecode Java a été conçu en tenant compte des besoins de ces compilateurs "juste à temps", de sorte que le processus de génération de code machine est assez simple et peut produire un assez bon code.

9. Multi-threading

Java est un langage multithread. Il prend en charge l'exécution multithread (également appelée procédures légères) et peut gérer différentes tâches, ce qui permet de concevoir des programmes avec des indices très faciles. Le package lang de Java fournit une classe Thread, qui prend en charge les méthodes de démarrage et d'exécution des threads, d'arrêt des threads et de vérification de l'état des threads.

La prise en charge des threads Java comprend également un ensemble de primitives de synchronisation. Ces primitives sont basées sur le schéma de synchronisation largement utilisé développé par C. A. R. Haore dans le style des superviseurs et des variables de condition. À l'aide du mot-clé synchronisé, les programmeurs peuvent indiquer que certaines méthodes d'une classe ne peuvent pas s'exécuter simultanément. Ces méthodes sont sous le contrôle de procédures de supervision pour garantir que les variables sont maintenues dans un état cohérent.

10. Dynamique

Le langage Java est conçu pour s'adapter aux environnements changeants. Par exemple, les classes en Java sont chargées à la demande, et certaines sont même obtenues via le réseau.

Tutoriel recommandé : "Tutoriel Java"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Annotations communes SpringMVCArticle suivant:Annotations communes SpringMVC