Java ist der allgemeine Name für die objektorientierte Programmiersprache Java und die Java-Plattform, die im Mai 1995 von Sun Microsystems eingeführt wurde. Es wurde gemeinsam von James Gosling und Kollegen entwickelt und 1995 offiziell eingeführt.
Java ist in drei Systeme unterteilt:
Im Juni 2005 fand die JavaOne-Konferenz statt und SUN veröffentlichte Java SE 6. Zu diesem Zeitpunkt wurden verschiedene Versionen von Java umbenannt, um die Nummer „2“ zu entfernen: J2EE wurde in Java EE umbenannt, J2SE wurde in Java SE umbenannt und J2ME wurde in Java ME umbenannt.
Im Jahr 2009 wurde Sun von Oracle übernommen.
Im Jahr 2018 gab die Open-Source-Organisation Eclipse Foundation bekannt, dass JavaEE (Enterprise Edition) in JakartaEE (Jakarta) umbenannt wird.
Die Syntax der Java-Sprache ist der C-Sprache und der C++-Sprache sehr ähnlich, sodass sie für die meisten Programmierer leicht zu erlernen und zu verwenden ist. Andererseits verwirft Java die selten verwendeten, schwer verständlichen und verwirrenden Funktionen von C++, wie z. B. Operatorüberladung, Mehrfachvererbung und automatische Umwandlungen. Insbesondere verwendet die Java-Sprache keine Zeiger, sondern Referenzen. Es bietet außerdem einen Mechanismus zur automatischen Verwaltung des Speicherrecyclings, sodass sich Programmierer nicht um die Speicherverwaltung kümmern müssen.
Die Java-Sprache bietet Grundelemente wie Klassen, Schnittstellen und Vererbung. Der Einfachheit halber unterstützt sie nur die Einzelvererbung zwischen Klassen, unterstützt jedoch die Mehrfachvererbung zwischen Schnittstellen und unterstützt den Implementierungsmechanismus zwischen Klassen und Schnittstellen (das Schlüsselwort lautet „implementiert“). Die Java-Sprache unterstützt die dynamische Bindung vollständig, während die C++-Sprache die dynamische Bindung nur für virtuelle Funktionen verwendet. Kurz gesagt ist die Java-Sprache eine reine objektorientierte Programmiersprache.
Die Java-Sprache unterstützt die Entwicklung von Internetanwendungen. Zu den grundlegenden Java-Anwendungsprogrammierschnittstellen gehört eine Netzwerkanwendungsprogrammierschnittstelle (Java Net), die Klassenbibliotheken für die Netzwerkanwendungsprogrammierung bereitstellt, einschließlich URL, URLConnection, Socket, ServerSocket usw. Der RMI-Mechanismus (Remote Method Activation) von Java ist ebenfalls ein wichtiges Mittel zur Entwicklung verteilter Anwendungen.
Der starke Typisierungsmechanismus von Java, die Ausnahmebehandlung, die automatische Speicherbereinigung usw. sind wichtige Garantien für die Robustheit von Java-Programmen. Das Verwerfen von Zeigern ist für Java eine kluge Wahl. Der Sicherheitsüberprüfungsmechanismus von Java macht Java robuster.
Java wird üblicherweise in Netzwerkumgebungen verwendet. Aus diesem Grund bietet Java einen Sicherheitsmechanismus, um Angriffe mit bösartigem Code zu verhindern. Zusätzlich zu den vielen Sicherheitsfunktionen der Java-Sprache verfügt Java über einen Sicherheitsverhinderungsmechanismus (Klasse ClassLoader) für über das Netzwerk heruntergeladene Klassen, z. B. die Zuweisung unterschiedlicher Namensräume, um das Ersetzen lokaler Klassen mit demselben Namen zu verhindern, Bytecode-Prüfung, und Bereitstellung eines Sicherheitsverwaltungsmechanismus (Klasse SecurityManager), der es Java-Anwendungen ermöglicht, Sicherheitswächter einzurichten.
Java-Programme (Dateien mit dem Suffix java) werden auf der Java-Plattform in ein architekturneutrales Bytecode-Format (Dateien mit dem Suffix class) kompiliert und können dann auf jedem System ausgeführt werden, das diese Java-Plattform implementiert. Dieser Ansatz eignet sich für heterogene Netzwerkumgebungen und Softwareverteilung.
Diese Portabilität ergibt sich aus der Architekturneutralität. Darüber hinaus regelt Java auch die Länge jedes Basisdatentyps streng. Das Java-System selbst ist ebenfalls hochgradig portierbar. Der Java-Compiler ist in Java implementiert, und die Java-Laufumgebung ist in ANSI C implementiert.
Wie bereits erwähnt, werden Java-Programme auf der Java-Plattform in das Bytecode-Format kompiliert und können dann auf jedem System ausgeführt werden, das diese Java-Plattform implementiert. Zur Laufzeit interpretiert und führt der Java-Interpreter in der Java-Plattform diese Bytecodes aus, und die während der Ausführung erforderlichen Klassen werden während der Verbindungsphase in die laufende Umgebung geladen.
Verglichen mit diesen interpretierten High-Level-Skriptsprachen ist Java tatsächlich leistungsstark. Tatsächlich nähert sich die Laufgeschwindigkeit von Java mit der Entwicklung der JIT-Compilertechnologie (Just-In-Time) immer mehr der von C++ an.
In der Java-Sprache ist ein Thread ein spezielles Objekt, das von der Thread-Klasse oder ihren Nachkommen (Enkelkindern) erstellt werden muss. Normalerweise gibt es zwei Möglichkeiten, einen Thread zu erstellen: Erstens verwenden Sie den Konstruktor vom Typ Thread(Runnable), um ein Objekt, das die Runnable-Schnittstelle implementiert, in einen Thread einzubinden. Zweitens leiten Sie eine Unterklasse von der Thread-Klasse ab und überschreiben die run-Methode des Objekts Die mit dieser Unterklasse erstellte Klasse ist ein Thread. Es ist erwähnenswert, dass die Thread-Klasse die Runnable-Schnittstelle implementiert hat, sodass jeder Thread seine eigene Ausführungsmethode hat und die Ausführungsmethode den Code enthält, der vom Thread ausgeführt werden soll. Die Aktivität eines Threads wird durch eine Reihe von Methoden gesteuert. Die Java-Sprache unterstützt die gleichzeitige Ausführung mehrerer Threads und bietet einen Synchronisationsmechanismus zwischen mehreren Threads (das Schlüsselwort ist synchronisiert).
Eines der Designziele der Java-Sprache ist die Anpassung an sich dynamisch ändernde Umgebungen. Die von Java-Programmen benötigten Klassen können dynamisch in die laufende Umgebung geladen werden, oder die erforderlichen Klassen können über das Netzwerk geladen werden. Dies erleichtert auch Software-Upgrades. Darüber hinaus verfügen Klassen in Java über eine Laufzeitdarstellung und können eine Typprüfung zur Laufzeit durchführen.
Die Java-Sprache versucht sicherzustellen, dass der Systemspeicher über 1 GB liegt. Andere Tools sind wie folgt:
Nach der Installation der oben genannten Tools können wir Javas erstes Programm „Hello World!“ ausgeben.
public class MyFirstJavaProgram { public static void main(String []args) { System.out.println("Hello World"); } }
Im nächsten Kapitel stellen wir vor, wie man die Java-Entwicklungsumgebung konfiguriert.