Heim  >  Artikel  >  Java  >  Wird Java kompiliert oder interpretiert?

Wird Java kompiliert oder interpretiert?

Guanhui
GuanhuiOriginal
2020-06-06 14:50:5410425Durchsuche

Wird Java kompiliert oder interpretiert?

Wird Java kompiliert oder interpretiert?

Java ist weder eine traditionelle kompilierte Sprache noch eine interpretierte Sprache. Java wird zunächst in eine „.class“-Bytecode-Datei kompiliert und dann von der virtuellen JVM-Maschine interpretiert und ausgeführt entweder kompiliert oder interpretiert werden.

Java-Funktionen

1. Einfachheit

Java sieht aus wie C++, aber um die Sprache klein zu machen Und vertraut: Die Designer haben viele der in der C++-Sprache verfügbaren Funktionen entfernt, die der durchschnittliche Programmierer selten nutzt. Beispielsweise unterstützt Java die go to-Anweisung nicht und bietet stattdessen break- und continue-Anweisungen sowie Ausnahmebehandlung. Java eliminiert außerdem die Operatorüberladung und die Mehrfachvererbungsfunktionen von C++ und verwendet nicht die Hauptdatei, sodass keine Vorverarbeitung erforderlich ist. Da Java keine Strukturen hat, sind Arrays und Strings Objekte, sodass keine Zeiger erforderlich sind. Java kann Objektreferenzen und indirekte Referenzen automatisch verarbeiten und eine automatische Sammlung nutzloser Einheiten realisieren, sodass Benutzer sich nicht um Speicherverwaltungsprobleme kümmern müssen und mehr Zeit und Energie in Forschung und Entwicklung investieren können.

2. Objektorientiert

Java ist eine objektorientierte Sprache. Für Programmierer bedeutet dies, auf die Daten in der Anwendung und die Methoden zur Manipulation der Daten zu achten, anstatt ausschließlich in Prozeduren zu denken. In einem objektorientierten System ist eine Klasse eine Sammlung von Daten und Methoden zur Datenverarbeitung. Daten und Methoden beschreiben zusammen den Zustand und das Verhalten eines Objekts. Jedes Objekt ist eine Kapselung seines Zustands und Verhaltens. Klassen sind in einem bestimmten System und einer bestimmten Hierarchie angeordnet, sodass Unterklassen das Verhalten von Oberklassen erben können. In dieser Klassenhierarchie gibt es eine Wurzelklasse, also die Klasse mit allgemeinem Verhalten. Java-Programme werden mithilfe von Klassen organisiert.

Java enthält außerdem eine erweiterte Sammlung von Klassen, die verschiedene Pakete bilden, die Benutzer in ihren eigenen Programmen verwenden können. Java bietet beispielsweise Klassen, die grafische Benutzeroberflächenkomponenten generieren (Java, AWT-Paket), wobei AWT die Abkürzung für Abstract Windowing Toolkit (Abstract Windowing Toolkit) ist, Klassen, die Eingabe und Ausgabe verarbeiten (Java, IO-Paket) und Klassen, die Unterstützt Netzwerkfunktionen (Java, Net-Paket).

3. Verteilung

Java ist für die Unterstützung von Anwendungen im Netzwerk konzipiert. Java unterstützt nicht nur verschiedene Ebenen von Netzwerkverbindungen, sondern unterstützt auch zuverlässige Stream-Netzwerkverbindungen mit der Socket-Klasse, sodass Benutzer verteilte Clients und Server generieren können.

Das Netzwerk wird zum Vertriebsvehikel für Softwareanwendungen. Java-Programme müssen nur einmal geschrieben und überall ausgeführt werden.

4. Kompilierung und Interpretierbarkeit

Der Java-Compiler generiert Bytecode anstelle des üblichen Maschinencodes. Java-Bytecode bietet ein architekturneutrales Objektdateiformat und ist darauf ausgelegt, Programme effizient auf mehreren Plattformen bereitzustellen. Java-Programme können auf jedem System ausgeführt werden, das einen Java-Interpreter und ein Laufzeitsystem implementiert.

In einer interpretierten Umgebung entfällt die standardmäßige „Verknüpfungs“-Phase der Programmentwicklung weitgehend. Wenn es in Java eine Verknüpfungsphase gibt, handelt es sich lediglich um das Laden neuer Klassen in die Umgebung. Es handelt sich um einen inkrementellen und einfachen Prozess. Daher unterstützt Java schnelles Prototyping und einfaches Experimentieren, was zu einer schnellen Programmentwicklung führt. Dies ist ein eleganter Entwicklungsprozess, der im Gegensatz zum traditionellen, zeitaufwändigen „Kompilieren, Verknüpfen und Testen“ steht.

5. Robustheit

Java wurde ursprünglich als Sprache zum Schreiben von Unterhaltungselektronik-Software verwendet und ist daher darauf ausgelegt, äußerst zuverlässige und robuste Software zu schreiben. Java eliminiert bestimmte Programmierfehler und macht es relativ einfach, zuverlässige Software darin zu schreiben.

Java ist eine stark typisierte Sprache, die eine erweiterte Kompilierungszeitprüfung auf mögliche Probleme mit Typkonflikten ermöglicht. Java erfordert explizite Methodendeklarationen und unterstützt keine impliziten Deklarationen im C-Stil. Diese strengen Anforderungen stellen sicher, dass der Compiler Aufruffehler erkennt, was zu zuverlässigeren Programmen führt.

Eine der wichtigsten Verbesserungen der Zuverlässigkeit ist das Speichermodell von Java. Java unterstützt keine Zeiger, wodurch die Möglichkeit des Überschreibens von Speicher und der Beschädigung von Daten ausgeschlossen ist. In ähnlicher Weise verhindert die automatische „Garbage Collection“ von Java Speicherlecks und andere schädliche Fehler im Zusammenhang mit der dynamischen Speicherzuweisung und -freigabe. Der Java-Interpreter führt auch viele Laufzeitprüfungen durch, z. B. die Überprüfung, ob alle Array- und String-Zugriffe innerhalb der Grenzen liegen.

Die Ausnahmebehandlung ist eine weitere Funktion in Java, die Programme robuster macht. Eine Ausnahme ist ein Signal dafür, dass ein ungewöhnlicher Zustand, ähnlich einem Fehler, aufgetreten ist. Mithilfe von try/catch/finally-Anweisungen können Programmierer den Fehlerbehandlungscode finden, was die Aufgabe der Fehlerbehandlung und -behebung vereinfacht.

6. Sicherheit

Das Speicherzuweisungsmodell von Java ist eine seiner Hauptmethoden zur Abwehr von Schadcode. Java hat keine Zeiger, daher können Programmierer nicht hinter die Kulissen blicken und Zeiger auf den Speicher fälschen. Noch wichtiger ist, dass der Java-Compiler keine Entscheidungen über die Speicheranordnung trifft, sodass der Programmierer die tatsächliche Speicheranordnung der Klasse nicht anhand der Deklaration erraten kann. Speicherverweise in kompiliertem Java-Code weisen die tatsächliche Speicheradresse auf, die vom Java-Interpreter zur Laufzeit ermittelt wird.

Die Java-Laufzeitumgebung verwendet einen Bytecode-Verifizierungsprozess, um sicherzustellen, dass der in das Netzwerk geladene Code keine Einschränkungen der Java-Sprache verletzt. Zu diesem Sicherheitsmechanismus gehört auch, wie Klassen aus dem Internet geladen werden. Beispielsweise werden geladene Klassen in separaten Namensräumen statt in lokalen Klassen platziert, wodurch verhindert wird, dass ein bösartiges Applet Standard-Java-Klassen durch seine eigenen Versionen ersetzt.

7. Portabilität

Java macht Sprachdeklarationen unabhängig von Implementierungsaspekten. Java gibt beispielsweise explizit die Größe und das Betriebsverhalten jedes Basisdatentyps an (diese Datentypen werden durch die Java-Syntax beschrieben).

Die Java-Umgebung selbst ist auf neue Hardwareplattformen und Betriebssysteme portierbar. Der Java-Compiler ist ebenfalls in Java geschrieben, während das Java-Laufzeitsystem in der ANSIC-Sprache geschrieben ist.

8. Hohe Leistung

Java ist eine Sprache, die zuerst kompiliert und dann interpretiert wird, daher ist sie nicht so schnell wie eine vollständig kompilierte Sprache. Aber es gibt Situationen, in denen die Leistung von entscheidender Bedeutung ist. Java-Designer haben einen „Just-in-Time“-Compiler entwickelt, der Java-Bytecode auch zur Laufzeit in Maschinencode übersetzt besteht darin, eine vollständige Kompilierung zu erreichen.

Das Java-Bytecode-Format wurde unter Berücksichtigung der Anforderungen dieser „Just-in-Time“-Compiler entwickelt, sodass der Prozess der Maschinencodegenerierung recht einfach ist und ziemlich guter Code erzeugt werden kann.

9. Multithreading

Java ist eine Multithread-Sprache. Sie bietet Unterstützung für die Multithread-Ausführung (auch als Lightweight-Prozeduren bekannt) und kann verschiedene Aufgaben bewältigen, wodurch das Programmdesign vereinfacht wird Hinweise sehr einfach. Das Lang-Paket von Java stellt eine Thread-Klasse bereit, die Methoden zum Starten von Threads, Ausführen von Threads, Stoppen von Threads und Überprüfen des Thread-Status unterstützt.

Die Thread-Unterstützung von Java umfasst auch eine Reihe von Synchronisationsprimitiven. Diese Grundelemente basieren auf dem weit verbreiteten Synchronisationsschema, das von C. A. R. Haore im Stil von Supervisoren und Bedingungsvariablen entwickelt wurde. Mit dem Schlüsselwort synchronisiert können Programmierer angeben, dass bestimmte Methoden in einer Klasse nicht gleichzeitig ausgeführt werden können. Diese Methoden unterliegen der Kontrolle von Überwachungsverfahren, um sicherzustellen, dass die Variablen in einem konsistenten Zustand gehalten werden.

10. Dynamik

Die Java-Sprache ist darauf ausgelegt, sich an sich ändernde Umgebungen anzupassen. Beispielsweise werden Klassen in Java bei Bedarf geladen und einige werden sogar über das Netzwerk bezogen.

Empfohlenes Tutorial: „Java-Tutorial

Das obige ist der detaillierte Inhalt vonWird Java kompiliert oder interpretiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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