Maison >Java >JavaBase >Quels processus la compilation javac inclut-elle ?

Quels processus la compilation javac inclut-elle ?

hzc
hzcoriginal
2020-06-18 13:38:317424parcourir

Quels processus la compilation javac inclut-elle ?

Quels processus la compilation Javac inclut-elle ?

Le processus de compilation Java est principalement divisé en les étapes suivantes :

1 . Analyse lexicale : Convertissez les caractères du code source (divers mots-clés, variables, etc.) en un ensemble de jetons, la plus petite unité d'écriture de programme pour un seul caractère, et le jeton est la plus petite unité du processus de compilation.

2. Analyse syntaxique : Construisez une collection de jetons dans un arbre syntaxique abstrait. Chaque nœud de l'arbre syntaxique représente une structure syntaxique dans le code (telle que package, type, interface, modificateur, etc.).

3. Remplissez la table des symboles : La table des symboles est un tableau composé d'un ensemble d'adresses de symboles et d'informations sur les symboles. La sortie du processus de remplissage de la table des symboles est une liste en attente contenant les nœuds de niveau supérieur de chaque arbre de syntaxe abstraite (et package-info.java).

4. Le processeur d'annotations du plug-in traite les annotations : le processeur d'annotations peut ajouter, supprimer ou modifier n'importe quel élément de l'arbre de syntaxe abstraite. Par conséquent, chaque fois que le processeur d'annotations modifie l'arbre syntaxique, les étapes 1, 2 et 3 seront réexécutées jusqu'à ce que le processeur d'annotations ne modifie plus l'arbre syntaxique. Chaque processus de cycle est appelé un cycle.

5. Analyse sémantique : examen contextuel des programmes sources dont la structure arborescente est correcte.

  • Vérification des annotations : notamment si les variables sont déclarées, si les variables et les types d'affectation correspondent, etc., et le pliage des constantes.

  • Analyse des flux de données et de contrôle : vérification plus approfondie de la logique du contexte du programme. Y compris si les variables reçoivent des valeurs avant utilisation, si les méthodes ont des valeurs de retour, si les exceptions sont gérées correctement, etc.

6. Solution de sucre syntaxique : convertissez la syntaxe avancée (telle que les génériques, les paramètres variables, le déballage, etc.) en structures syntaxiques de base. Celles-ci ne sont pas prises en charge lorsque la machine virtuelle est en cours d'exécution. Syntaxe avancée.

7. Générer du bytecode : convertissez les informations de l'arborescence syntaxique et de la table des symboles en bytecode et écrivez-les sur le disque, tout en effectuant une petite quantité de travail d'ajout de code et de conversion.

La plupart du contenu ci-dessus est extrait de : "Compréhension approfondie de la machine virtuelle Java" -- Zhou Zhiming

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