Heim > Java > JavaBase > Welche Prozesse umfasst die Javac-Kompilierung?

Welche Prozesse umfasst die Javac-Kompilierung?

hzc
Freigeben: 2020-06-18 13:38:31
Original
7420 Leute haben es durchsucht

Welche Prozesse umfasst die Javac-Kompilierung?

Welche Prozesse umfasst die Javac-Kompilierung?

Der Java-Kompilierungsprozess ist hauptsächlich in die folgenden Schritte unterteilt:

1 . Lexikalische Analyse: Konvertieren Sie die Zeichen im Quellcode (verschiedene Schlüsselwörter, Variablen usw.) in einen Satz Token, die kleinste Einheit des Programmschreibens für ein einzelnes Zeichen, und Token ist die kleinste Einheit des Kompilierungsprozesses.

2. Syntaxanalyse: Konstruieren Sie eine Sammlung von Token in einem abstrakten Syntaxbaum. Jeder Knoten des Syntaxbaums stellt eine Syntaxstruktur im Code dar (z. B. Paket, Typ, Schnittstelle, Modifikator usw.).

3. Füllen Sie die Symboltabelle: Die Symboltabelle ist eine Tabelle, die aus einer Reihe von Symboladressen und Symbolinformationen besteht. Der Ausgang des Prozesses zum Füllen der Symboltabelle ist eine ausstehende Liste, die die Knoten der obersten Ebene jedes abstrakten Syntaxbaums (und package-info.java) enthält.

4. Der Plug-in-Annotationsprozessor verarbeitet Annotationen: Der Annotationsprozessor kann jedes Element des abstrakten Syntaxbaums hinzufügen, löschen oder ändern. Daher werden die Schritte 1, 2 und 3 jedes Mal, wenn der Annotationsprozessor den Syntaxbaum ändert, erneut ausgeführt, bis der Annotationsprozessor den Syntaxbaum nicht mehr ändert. Jeder Zyklusvorgang wird als Runde bezeichnet.

5. Semantische Analyse: Kontextsensitive Überprüfung von Quellprogrammen, die in der Syntaxbaumstruktur korrekt sind.

  • Anmerkungsprüfung: einschließlich, ob Variablen deklariert sind, ob Variablen und Zuweisungstypen übereinstimmen usw. sowie konstante Faltung.

  • Daten- und Kontrollflussanalyse: weitere Überprüfung der Programmkontextlogik. Einschließlich der Frage, ob Variablen vor der Verwendung Werte zugewiesen werden, ob Methoden Rückgabewerte haben, ob Ausnahmen korrekt behandelt werden usw.

6. Syntaktische Zuckerlösung: Konvertieren Sie erweiterte Syntax (wie Generika, variable Parameter, Unboxing usw.) in grundlegende Syntaxstrukturen. Diese werden nicht unterstützt, wenn die virtuelle Maschine ausgeführt wird. Erweiterte Syntax.

7. Bytecode generieren: Konvertieren Sie die Informationen im Syntaxbaum und in der Symboltabelle in Bytecode und schreiben Sie ihn auf die Festplatte, während Sie einen kleinen Teil der Code-Hinzufügen- und Konvertierungsarbeit durchführen.

Der Großteil des oben genannten Inhalts ist ein Auszug aus: „Ausführliches Verständnis der Java Virtual Machine“ – Zhou Zhiming

Empfohlenes Tutorial: „Java-Tutorial

Das obige ist der detaillierte Inhalt vonWelche Prozesse umfasst die Javac-Kompilierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage