Einführung in die ersten Grundbegriffe der Java-Programmierung. (Java-Spezifikation, die Java-Sprachspezifikation, Java Language Specification), Lektion, Seite 722218
https://www.purl.org/stefan_ram/pub/java_grundbegriffe (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Einige weitere Erklärungen zur Java -Programmierung

Die Spezifikation der Sprache Java 

Die Java Language Specification  (JLS ) ist die maßgebliche Spezifikation (also „Festlegung“, „Bestimmung“) der Programmiersprache Java.

Sie stammt vom Inhaber der Rechte am Namen „Java “ für Programmiersprachen, weswegen Dritte wahrscheinlich keine solche Spezifikation veröffentlichen dürfen.

Die Bedeutung von Begriffen in Zusammenhang mit der Programmiersprache Java  wird durch die JLS  festgelegt.

Die JLS  kann mit Suchmaschinen im Web gefunden und dort gelesen werden, ist aber auch als Papierbuch erhältlich.

Die JLS  liegt 2018 in der “Java SE 10 Edition ” (Ausgabe) vor, welche auch kurz als JLS10  bezeichnet wird.

Das “Java Development Kit ” (JDK)

Das JDK  ist das Entwicklungssystem für Java -Programme, welches vom Inhaber der Rechte an der Bezeichnung „Java “ selber stammt. Damit ist es sozusagen das Standard-Entwicklungssystem für Java. (Es gibt auch andere Entwicklungssysteme für Java.)

Der Java -Ausführer (“Java interpreter ”)

Seit zirka 2018 (JDK 11 ) gibt es einen vereinfachten Aufruf zum Starten eines Java -Programms.

Kommando zum Starten der Quelldatei »Main.java«
java Main.java

Dieser vereinfachte Aufruf startet das angegebene Java -Programm (»Main.java«).

Solch ein Kommando muß in die Kommandoeingabe des verwendeten Betriebssystems eingegeben werden. Es ist dann noch möglich, daß das Kommando »java« nicht gefunden wird. Dann muß die Suchpfadliste für Kommandos noch angepaßt werden oder ein vollständiger Pfadname für das Kommando eingegeben werden.
Wenn man eine Programmiersprache wie Java  erlernen will, sollte man schon gute Betriebssystemkenntnisse haben, so daß die Kommandoeingabe und das Verfahren zum Anpassen der Suchpfadliste oder der Schreibung eines vollständigen Pfadnamens hier als schon bekannt vorausgesetzt wird. Eventuell muß man sich sonst erst einmal mit dem Betriebssystem vertraut machen oder sich bei diesen ersten Schritten von jemandem mit Betriebssystemkenntnissen helfen lassen.

Die Quelldatei »Main.java« kann dann Klassendefinitionen (»class«) enthalten, deren erste das Hauptprogramm festlegt.

Bei der traditionellen Weise ein Programm zu starten, sind mindestens zwei Kommandos  einzugeben. Dabei darf dann jede Quelldatei nur eine einzige  öffentliche Klasse enthalten, und deren Namen muß mit dem Namen der Quelldatei (vor ».java«) übereinstimmen.

Der Java -Übersetzer (“Java compiler ”) ⃗

Java -Programme können üblicherweise nicht direkt ausgeführt werden. Sie müssen erst von einem Java -Übersetzer (einem “Java compiler ”) in die Bytecode -Sprache (den “bytecode ”) gewandelt werden. Das Ergebnis wird dann in einer Klassendatei  (“class file ”) (oder in mehreren solcher Dateien) gespeichert. In Java  erzeugt der Übersetzer also Klassendateien. Eine Klassendatei enthält die Darstellung eines Java -Programmteils, der Klasse  genannt wird.

Die von einem Übersetzer eingelesene Datei wird auch als Quelldatei  und die von ihm erzeugte Datei wird auch als Zieldatei  bezeichnet, da diese Dateien bei der Übersetzung die Quelle  beziehungsweise das Ziel  darstellen. Im Falle eines Java -Übersetzers ist die Quelldatei eine Java -Datei (mit „Java-Quelltext“) und die Zieldatei eine Klassendatei.

Übersetzung einer Quelldatei
[ Quelldatei  ]--->( Übersetzer  )--->[ Zieldatei  ]
[ Java-Datei  ]--->( Übersetzer  )--->[ Klassendatei  ]

Das, was ein Übersetzer übersetzt (hier also die Quelldatei), wird auch als Übersetzungseinheit  bezeichnet.

Der Java -Übersetzer heißt normalerweise »javac« (“Java compiler ”). Er ist ein Teil des JDK. Wenn er die Quelldatei »Main.java« übersetzt, dann heißt das Ergebnis dieser Übersetzung normalerweise »Main.class«.

Übersetzung der Quelldatei »Main.java«
[ Main.java ]--->( javac )--->[ Main.class ]

Das Kommando zum Übersetzen der Quelldatei »Main.java« lautet bei einer gut eingerichteten Umgebung wie folgt.

Kommando zum Übersetzen der Quelldatei »Main.java«
javac Main.java

Unter einigen Umgebungen kann das tatsächlich notwendige Kommando allerdings von dieser Idealform abweichen.

Die virtuelle Maschine für Java 

Die Bytecode -Sprachen-Darstellung eines Programms kann von einem Programm ausgeführt werden. Dieses ausführende Programm hat damit eine ähnliche Aufgabe wie sonst klassische Prozessoren oder Rechner und wird daher auch als virtuelle Maschine für Java  (“Java Virtual Machine ”, oder kurz JVM ) bezeichnet. Das Wort „virtuell“ soll dabei ausdrücken, daß es sich nicht um eine richtige Maschine (ein Gerät, hardware ), sondern um ein Programm (Daten, also Gerätekonfigurationen, Gerätezustände; software ) handelt. Im Gegensatz zu einem Emulator wird dabei eine Maschine simuliert, die nicht unbedingt auch als Gerät (hardware ) existiert haben muß.

Ausführung einer Klassendatei
[ Klassendatei  ]--->( virtuelle Maschine für Java  )

Die virtuelle Maschine für Java  heißt als Programm normalerweise »java« oder ähnlich. Sie ist ein Teil des JDK  und des JRE .

Eine von ihr ausgeführte Klassendatei kann beispielsweise »Main.class« heißen.

Ausführung einer Klassendatei durch die virtuelle Maschine für Java 
[ Main.class ]--->( java )

Die JVM  kann unter verschiedenen Betriebssystemen und Prozessoren eingerichtet werden. Dadurch wird es möglich, daß die schon übersetzte Bytecode -Sprachen-Darstellung eines Programms unter verschiedenen Betriebssystemen und auf unterschiedlichen Prozessoren ausgeführt werden kann.

Die virtuelle Maschine für Java  führt Java -Programme nicht direkt aus, sie führt Bytecode -Programme aus, welche aus Java -Programmen erzeugt werden können.

Das Kommando zum Starten der Klasse »Main« als Programm lautet bei einer gut eingerichteten Umgebung wie folgt.

Kommando zum Starten der Klasse »Main«
java Main

Unter einigen Umgebungen kann das tatsächlich notwendige Kommando allerdings von dieser Idealform abweichen.

Insgesamt lauten die beiden Kommandos zum Übersetzen der Quelldatei »Main.java« und zum anschließenden Starten der Klasse »Main« als Programm bei einer gut eingerichteten Umgebung also wie folgt.

Kommando zum Übersetzen der Quelldatei »Main.java« und zum Starten der Klasse »Main«
javac Main.java
java Main

Unter einigen Umgebungen können die tatsächlich notwendigen Kommandos allerdings von dieser Idealform abweichen.

Die beiden Programme »javac« und »java« bilden gemeinsam eine Java -Implementation.

Das Java Runtime Environment  (JRE)

Das Java Runtime Environment  (JRE ) („Java -Laufzeit-Umgebung“) ist eine Software, die einen Computer dazu befähigt, Bytecode -Programme auszuführen. Das JRE enthält also eine JVM, aber keinen Java -Übersetzer. Es wird daher auf Computer installiert, die Java -Software ausführen können sollen, aber nicht zur Entwicklung neuer Java -Software dienen sollen. Es wird auch manchmal einfach nur als „Java “ bezeichnet.

Beispiel eines ausführbaren Java-Programms
http://www.jgoodies.com/freeware/jdiskreport/

Java SE 

Eine Bibliothek  ist eine Sammlung von Programmen (oder Programmbestandteilen).

Java SE  (“Java standard edition ”) ist das JRE  zusammen mit einer bestimmten Bibliothek – der Standardbibliothek von Java SE.

Java SE  wird oft auch einfach nur als „Java “ bezeichnet, weil die Verwendung von Java SE  die bekannteste und verbreiteteste Art der Nutzung dieser Programmiersprache ist.

Auch in diesem Kurs hier wird im wesentlichen Java SE  behandelt.

Jakarta EE  (“enterprise edition ”) ist Java  zusammen mit einer für Web-Server erweiterten Bibliothek.

Java ME  (“Java micro edition ”) ist Java  zusammen mit einer für kleine Computer verminderten Bibliothek.

Verbundene Implementationen

Web-Dienste, welche die Ausführung von Java erlauben sind unter anderem IdeOne und TryJShell.

“JDK Tools And Utilities ” ⃗

Auf der Oracle -Web-Seite “JDK Tools And Utilities ” finden sich Dokumentationen zu Programmen wie »java« und »javac« unter “Basic Tools ”.

Informationen zu jlink
docs.oracle.com/javase/9/tools/jlink.htm

Zur Lesbarkeit der JLS  *

Die folgenden beiden Zitate zeigen, daß die JLS  sowohl einfache als auch kompliziert formulierte Aussagen enthält.

Zitat

An expression statement is executed by evaluating the expression; if the expression has a value, the value is discarded.

Zitat

Let ssw[i] be the sw[i] edges that are also in the transitive reduction of hb[i] but not in po. We call ssw[i] the sufficient synchronizes-with edges for E[i]. If ssw[i](x, y) and hb[i](y, z) and z in C[i], then sw[j](x, y) for all j ≥ i.

Zitate *

http://www.oracle.com/technetwork/java/javase/terms/products/index.html (2015-09-04) *
Java SE includes:
• The Java Development Kit (JDK), including the JavaFX Software Development Kit (SDK),
• Java Runtime Environment (JRE), (Server and regular packages)
• JavaFX Runtime,
• JRockit JDK
The JDK is a superset of the JRE, and contains everything in the JRE, plus tools such as compilers and debuggers for development. A JRE provides a Java Virtual Machine (JVM), the standard class libraries and other components to run applications written in the Java programming language.
Aussprachehinweise
superset ˈsupɚ ˈsɛt

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722218 stefan_ram:722218 Java-Spezifikation, die Java-Sprachspezifikation, Java Language Specification Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722218, slrprddef722218, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/java_grundbegriffe