Java Virtual Machine (JVM) und plattformübergreifende Prinzipien <br /> Ich glaube, jeder hat gelernt, dass Java plattformübergreifende Funktionen hat, "gleichzeitig kompiliert und überall ausgeführt werden" werden kann. Modifikationen.
Wie wird plattformübergreifend implementiert? Dies beinhaltet, über Java Virtual Machine (JVM) zu sprechen.
JVM ist auch eine Software, und verschiedene Plattformen haben unterschiedliche Versionen. Der von uns geschriebene Java -Quellcode generiert eine .class -Datei, die eine Bytecode -Datei nach der Kompilierung bezeichnet. Die Java -Virtual -Maschine ist für die Übersetzung der Bytecode -Datei in einen Maschinencode unter einer bestimmten Plattform verantwortlich und dann ausführend. Mit anderen Worten, solange der entsprechende JVM auf verschiedenen Plattformen installiert ist, können Sie die Bytecode -Datei ausführen und das von uns geschriebene Java -Programm ausführen.
Während dieses Prozesses hat das von uns geschriebene Java -Programm keine Änderungen vorgenommen.
JVM ist eine "Brücke" und eine "Middleware", die der Schlüssel zur plattformübergreifenden Implementierung ist. Zweck.
HINWEIS: Das Kompilierungsergebnis ist nicht, Maschinencode zu generieren, sondern Bytecode zu generieren. Die durch Kompilierung und Generation unter verschiedenen Plattformen generierte Bytecode ist gleich, aber der von JVM übersetzt übersetztes Maschinencode ist unterschiedlich.
Daher muss das Ausführen von Java -Programmen JVM -Unterstützung haben, da das Kompilierungsergebnis kein Maschinencode ist und es vor der Ausführung von der JVM erneut übersetzt werden muss. Auch wenn Sie Java -Programme in ausführbare (z. B. .exe) packen, benötigen Sie noch JVM -Unterstützung.
Hinweis: plattformübergreifende Java-Programme, nicht JVMS. JVM wird in C/C ++ entwickelt und ist ein kompilierter Maschinencode.
Über die Ausführungseffizienz von JVM
In den letzten Jahren des Java-Starts hatten die Menschen unterschiedliche Meinungen.
Die JVM hat jedoch die Möglichkeit, den am häufigsten verwendeten Bytecode in den Maschinencode zu übersetzen und zu speichern, einen Prozess, der als Instant -Kompilierung bekannt ist. Diese Methode ist in der Tat sehr effektiv, was zur Verwendung von virtuellen Maschinen auf der Microsoft -.NET -Plattform geführt hat.
Times Compiler sind jetzt sehr hervorragend und sind sogar Konkurrenten traditioneller Compiler geworden, und in einigen Fällen übertreffen sogar traditionelle Compiler, da die JVM die Laufzeitinformationen überwachen kann. Beispielsweise kann ein Instant -Compiler Code, der häufig verwendet wird, überwachen und optimieren, wodurch Funktionsaufrufe (d. H. "eingebettet") beseitigt werden.
Java hat jedoch einen zusätzlichen Aufwand, den C/C ++ nicht hat, und die Schlüsselanwendungen sind langsamer. Beispielsweise nimmt Java eine plattformunabhängige Zeichenmethode an, und die Ausführung von GUI-Programmen (Client-Programme) ist auch nur Zeit, um eine virtuelle Maschine zu starten.
Das Versagen des Kundenmarktes
Die GUI -Bibliothek von Java ist nicht ausgezeichnet, die Benutzeroberfläche ist nicht freundlich und die meisten Benutzer sind nicht daran gewöhnt.
Noch inakzeptabler ist, dass Microsoft seine eigenen Interessen und Sonne aufteilt, die von den Benutzern Ihr Programm nicht mehr vorinstalliert sind. Aber können Sie erwarten, dass er über JVM weiß und die Einstellungen korrekt installiert?
Obwohl Sie das JVM in Ihr Programm integrieren, automatisch installieren und einrichten und keine Benutzerintervention zulassen können, möchten Sie mit einem viel größeren JVM ausgestattet sein? Es kann für eine Software akzeptabel sein, dies zu tun. Wie viel ist der Speicherplatz verschwendet?
Daher werden in Java nur wenige Kundenprogramme für normale Nutzer entwickelt. Wenn Sie sich mit der Kundenentwicklung befassen möchten, wird empfohlen, C/C ++ und .NET zu lernen, die hervorragende Vorteile bei der Entwicklung des Fensters haben.
Verschiedene Gründe sollen ungünstig sein, auf den Markt eingeführt zu werden, und werden von normalen Nutzern akzeptiert. Andererseits ist die Kundenentwicklung nicht die ursprüngliche Absicht von Java.
Java -Kurse und Objektkonzepte
Java ist eine objektorientierte Programmiersprache.
Klassen in Java können als verbesserte Version von Strukturen in der C -Sprache angesehen werden. Eine Struktur ist ein konstruierter Datentyp, der verschiedene Mitglieder (Variablen) enthalten kann, und die Datentypen jedes Mitglieds können unterschiedlich sein. Zum Beispiel:
#Include <Stdio.h> int main () {// die Strukturstruktur Student {// den variablen char *name; / Mitglieder der Operationsstruktur Stu1.Name = "Xiao Ming"; Name, stu1.age, stu1.score); Auslaufergebnisse:
Das Alter von Xiao Ming beträgt 15 und seine Note 92,500000
Klassen in Java sind auch eine Art Konstruktionsdatentypen, wurden jedoch erweitert. Zum Beispiel:
public class Demo {public void main (String [] args) {// Klassenschüler definieren Die enthaltene Funktion void sagt () {System.out.println (Name + "Das Alter ist" + Alter + ", die Punktzahl" + Punktzahl); Student Stu1 = New Student () // Das neue Schlüsselwort muss verwendet werden // Das Mitglied der Operationsklasse Stu1.Name = "Xiao Ming"; );}} Auslaufergebnisse:
Das Alter von Xiao Ming beträgt 15 und seine Note 92,5
In der C -Sprache kann die Definition von Strukturvariablen durch den Strukturnamen und den Speicherplatz vervollständigt werden. Raum.
Analogie kann mit Zeichnungen verglichen werden, Objekte können mit Teilen verglichen werden, und die Zeichnungen erklären die Parameter der Teile und die Aufgaben, die sie übernehmen.
In Java können Sie mit dem neuen Schlüsselwort Objekte über Klassen erstellen, dh Zeichnungen in Teile.
HINWEIS: Die Klasse ist nur eine Zeichnung, die eine Erklärung spielt und keinen Speicherplatz besetzt.
Variablen und Funktionen, die in einer Klasse enthalten sind, haben spezifische Namen.
Objektorientierte Programmierung (OOP)
Klassen sind ein allgemeines Konzept. Die Klassen können als verbesserte Version von Strukturen angesehen werden. -Grudierte Projekte.
Da Java, C ++ und andere Sprachen Klassen und Objekte unterstützen, wird das Schreiben von Programmen in diesen Sprachen auch als objektorientierte Programmierung bezeichnet, und diese Sprachen werden auch als objektorientierte Programmiersprachen bezeichnet. Da die C-Sprache die Konzepte von Klassen und Objekten nicht unterstützt, wird sie als prozessorientierte Programmiersprache bezeichnet.
Tatsächlich ist objektorientiert nur ein prozessorientiertes Upgrade.
In der C -Sprache können die wiederverwandeten Codeblöcke, die eine bestimmte Funktion ausfüllen, als Funktionen definiert werden, und Funktionen mit einer Klasse von Funktionen werden in einer Header -Datei deklariert, und Funktionen verschiedener Typen werden in verschiedenen Header -Dateien deklariert, um Funktionen besser auszuführen, um eine bessere Verwaltung auszuführen. Einfach zu schreiben und anzurufen.
In Java kann der Codeblock, der eine bestimmte Funktion ausfüllt, als Methode definiert werden, und Methoden mit ähnlichen Funktionen können in einer Klasse definiert werden, dh in einer Quelldatei (weil eine Quelldatei nur eine öffentliche Klasse enthalten kann). Mehrere Quelldateien können sich in einem Ordner befinden, der einen bestimmten Namen enthält, der als Paket bezeichnet wird.
Das obige ist C ++, während Java ist:
Die objektorientierte Programmierung hat absolut keinen Vorteil in der Softwareausführungseffizienz.