Java Grundlagen
Ein Einführung in die Grundlagen der Programmiersprache Java.
07. Nov 2023 toc: disabled view: slimEinführung
Dieser Artikel ist für Personen gedacht, die mit Java ihre ersten Programmiererfahrungen machen.
Java Plattform
Wenn man Java auf seinem Computer installieren möchte, hat man zwei verschiedene Installationsoptionen zur Auswahl:
-
Java Runtime Environment
Die JRE (Java Runtime Environment) beinhaltet alle Funktionen um Java Programme auf dem Computer ausführen zu können darunter auch die JVM. -
Java Development Kit
Das JDK (Java Development Kit) ist für die Entwicklung von Java Programmen gedacht. Alle Funktionen aus dem JRE sind hier ebenfalls enthalten. Zusätzlich wird der JAVAC (Java Compiler) mitgeliefert der es ermöglicht, Programmcode in Maschinencode umzuwandeln.
Das nachfolgende Diagramm veranschaulicht die Verschachtelung der einzelnen Installationspakete.
+-----------------------+
| JDK |
| +-----------------+ |
| | JRE | |
| | +-----------+ | |
| | | JVM | | |
| | +-----------+ | |
| +-----------------+ |
| |
| +-----------------+ |
| | JAVAC | |
| +-----------------+ |
+-----------------------+
Java Virtual Machine
Die JVM (Java Virtual Machine) ermöglicht es Java Programme auszuführen.
Dabei wird der Maschinenecode (.class
Dateien) von der Software interpretiert und die entsprechenden Betriebssystem-abhängigen Befehle ausgeführt.
Somit kann der Programmcode auf verschiedenen Betriebssystemen ohnen zusätzliche Anpassungen ausgeführt werden.
+-----------------------+
| Java |
| Maschinencode |
+-----------------------+
/ | \
/ | \
v v v
+---------+ +---------+ +---------+
| JVM | | JVM | | JVM |
+---------+ +---------+ +---------+
| Windows | | Linux | | MacOS |
| | | | | |
Kompilieren und Ausführen
Zu Beginn schreiben wir ein simples Java Programm. Dazu erstellen wir eine neue Datei mit dem Namen HelloWorld.java
und schreiben den nachfolgenden Programmcode im Texteditor deiner Wahl.
HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
Dieses Programm soll den Text "Hello world!" in der Konsole ausgeben. Nachdem die Datei gespeichert wurde, können wir nun unseren Programmcode kompilieren. Dies wird im nächsten Kapitel behandelt.
Merke: Der Klassenname muss mit dem Dateinamen übereinstimmen.
Kompilierung des Programmcodes
javac HelloWorld.java
Nachdem der Programmcode erfolgreich und ohne Fehler kompiliert wurde, sollte nun eine neue Datei mit dem gleichen Namen und der Dateiendung .class
erstellt worden sein. Diese Class-Datei enthält den Maschinencode der von der JVM ausgeführt werden kann.
Ausführung des Maschinencodes
java HelloWorld
TIPP: Wenn der java
Befehl mit der Dateiendung .java
ausgeführt wird, wird der Programmcode gleichzeitig kompiliert und ausgeführt. Dies funktioniert jedoch nur, wenn es sich um eine einzige Java Datei handelt.
java HelloWorld.java
Grafische Veranschaulichung des Kompilierungs- und Ausführungsprozesses.
+--------+ +--------+ +---------+
| | javac | | java | |
| .java | -------------> | .class | -------------> | JVM |
| | kompilieren | | ausführen | |
+--------+ +--------+ +---------+
- .java = Programmcode
- .class = Binäre Repräsentation des Programmcodes (Maschinencode)
Variablen
...
SYNTAX: Deklaration und Initialisierung einer Variable
int count = 21;
^ ^ ^
| | Wert
| Variable
Datentyp
Datentypen
Primitive Datentypen
Datentyp | Speichergröße | Beschreibung |
---|---|---|
byte | 1 byte (8 bit) | binäre Daten |
short | 2 bytes (16 bit) | Ganzzahl |
int | 4 bytes (32 bit) | Ganzzahl |
long | 8 bytes (64 bit) | Ganzzahl |
float | 4 bytes (32 bit) | Fließkommazahl |
double | 8 bytes (64 bit) | Fließkommazahl |
boolean | 1 bit | Wahrheitswert (true oder false) |
char | 2 bytes (16 bit) | Textzeichen |
Merke: Primitive Datentypen haben immer einen Wert, wobei nicht-primitive Datentypen null
sein können.
Wrapper Klassen
- Byte
- Short
- Integer
- Long
- Float
- Double
- Boolean
- Character
Referenztypen
- String
- Array
- Class (Klasse)
- Interface (Schnittstelle)
Klassen
...
Das folgende Diagramm veranschaulicht den Aufbau einer Klasse.
+-----------------------+
| Class (Klasse) |
| +--------------------+
| | Method (Methode) |
| | +-----------------+
| | | Programmcode |
| | | |
| | | |
| | +-----------------+
| +--------------------+
+-----------------------+
SYNTAX: Instanziierung einer Klasse
Person person = new Person(...);
^ ^ ^ ^
| | | Konstruktor-Argumente
| | Klasse
| Instanz (Variable)
Klassenobjekt
Methoden
...
SYNTAX: Definition und Deklaration einer Klassenmethode
public int add(int a, int b) { ... }
^ ^ ^ ^ ^
| | | | Inhalt der Methode
| | | Parameter
| | Methodenname
| Datentyp des Rückgabewerts
Zugriffsmodifikator
Modifikatoren
static-Modifikator
Diese Klasse dient für die nachfolgenden Beispiele als Referenz.
public class Person {
public static Person of(String name) { ... }
public String getName() { ... }
}
Statische Methoden und Variablen können nur an der Klasse aufgerufen werden und sind somit klassenspezifisch.
Person person = Person.of("Andrew");
Nicht-statische Methoden und Variablen können nur an der Klasseninstanz aufgerufen werden und sind somit instanzspezifisch.
person.getName();
Merke: Nicht-statische Methoden können nicht innerhalb statischer Methoden aufgerufen werden.
final-Modifikator
Der final
Modifikator makiert eine Variable als unveränderlich. Das bedeutet, die Variable kann nur einmal initialisiert werden.
final int age = 24;
age = 16; // Invalide Zuweisung
Merke: Variablen die nur einmal initialisiert werden, sollten immer mit final
markiert werden.
Pakete und Imports
SYNTAX: Import eines Klassenobjekts
import java.util.List;
^ ^
| Klasse
Paketpfad
Referenzen
Begriffserklärung
Kompilierung
...
Interpretation
...
Deklaration
Festlegung von Speichergröße, Bezeichner und Datentyp einer Variable
Definition
Definiert wie etwas implementiert wird (z.B.: Inhalt einer Methode)
Initialisierung
Erstmalige Zuweisung eines Wertes an eine Variable
Instanziierung
Erstellung und Zuweisung von Speicherplatz für ein Objekt einer bestimmten Klasse