Java ist eine Programmiersprache. Sie wurde von James Gosling und anderen Ingenieuren von Sun Microsystems entwickelt und offiziell erstmals am 23. Mai 1995 vorgestellt.
Der Entwurf der Sprache verfolgte vier Hauptziele:
- Objektorientierung
- Plattformunabhängigkeit (d.h. Unabhängigkeit vom Betriebssystem)
- Vernetzbarkeit
- Sichere Ausführung auf entfernten Computer (Übersetzung von 'remote computer'; ist das OK?
Java ist plattformunabhängig. Dies wird dadurch erreicht, dass es sich bei einem Java-Programm nicht um ausführbaren Code auf dem darunterliegenden System handelt (Linux/Unix, Windows, etc.) sondern, dass ein Java-Interpreter vorhanden sein muss, auf dem man den Java-Code ausführt (die so genante Java-Maschine oder Virtuelle Maschine). Solche Java-Maschinen sind für alle gängigen Betriebsysteme zu haben (Linux, Windows, Mac, Palm-OS, ...). Es gibt auch Hardware-Lösungen, also kleine Prozessoren, deren Maschinensprache selbst Java ist.
Im Unterschied zu C/C++ ist diese Sprache rein objektorientiert. (Eigenarten sind: Es gibt nur einfache Vererbung, alle Objekte haben eine gemeinsame Oberklasse: die Klasse Object)
Die Grunddatentypen sind jedoch elementar, d.h. keine Objekte. - boolean (Werte sind true und false) - char (16-bit Unicode-Wert)
- byte (8 bit, Zweierkomplement-Darstellung) - short (16-Bit Ganzahl, Zweierkomplement-Darstellung) - int (32-Bit Ganzzahl, Zweierkomplement-Darstellung) - long (64-Bit Ganzzahl, Zweierkomplement-Darstellung)
- float (Fliesskommazahl 32 Bit, IEEE 754 ) - double (Fliesskommazahl 64 Bit, IEEE 754
Beispiele für literale Werte
'c' char true boolean false boolean
123 int 5230L long 12.730 double 12.730D double 12.730F float 12.730e3 double
Um große Projekte strukturieren zu können und saubere Schnittstellen zu Bibliotheken zu schaffen, können die Klassen zu Paketen (Packages) zusammengefasst werden. Die Zugriffe auf Klassen und Methoden eines fremden Packages können - ähnlich wie innerhalb einer Klasse durch private und public - geregelt werden.
Weiter unterstützt die Sprache Threads (gleichzeitig ablaufende Programmteile) und Exceptions (wörtlich: Ausnahmesituationen, das sind Objekte, die bei der Unterbrechung des Programm-Ablaufes an die nächst höhere aufrufende Methode weitergereicht werden.)
Zu Java gehört eine umfangreiche Klassenbibliothek. Dem Programmierer wird damit eine einheitliche, vom zugrunde liegenden Betriebssystem unabhängige, Schnittstelle (Application programming interface, API) angeboten.
Üblicherweise wird der Java-Programm-Code in eine Reihe von Byte-Codes übersetzt, die dann auf einer Virtuellen Maschine ausgeführt wird.
Eine Besonderheit von Java sind auch die Java-Applets, Java-Programme, die in HTML-Seiten eingebunden und auf einem Web Browser ablaufen können. Die gängigen Browser (Opera, Mozilla, Netscape, Internet-Explorer) haben eine Java-Maschine eingebaut, sodaß die Applets beim Internet-Surfen auch ausgeführt werden können, ohne dass eine eigenständige Java-Maschine auf dem Rechner installiert sein muss. (Aus marktstrategischen und internet-technisch gesehen sehr zweifelhaften Gründen, möchte Microsoft aus zukünftigen Versionen ihres Internet-Explorers diese eingebaute Java-Maschine wieder herausnehmen.)
Java ist nicht mit der Programmiersprache JavaScript zu verwechseln, die ebenfalls in Webbrowsern verwendet wird. Sie hat eine ähnliche Syntax, kennt aber keine Vererbung. Die Objekte werden prototypenbasiert definiert.
Ein Beispielprogramm, das eine Meldung auf der Konsole ausdruckt:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } }
Kontrollfluss-Strukturen
Schleifen
while (Boole'scher Ausdruck) { Anweisung(en) }
do { Anweisung(en) } while (Boole'scher Ausdruck);
for (Initiallisierung ; Endbedingung ; Inkrement) { Anweisung(en) }
Wenn-Dann-Anweisungen
if (Boole'scher Ausdruck) { Anweisung(en) }
if (Boole'scher Ausdruck) { Anweisung(en) } else { Anweisung(en) }
Mit else if können beliebig komplexe Wenn-Dann-Anweisungen konstuiert werden
if (Boole'scher Ausdruck) { Anweisung(en) } else if (Boole'scher Ausdruck) { Anweisung(en) } else if (Boole'scher Ausdruck) { Anweisung(en) } else { Anweisung(en) }
switch (Integerausdruck) {
case Integerausdruck: Anweisung(en) break; ... default: Anweisung(en) break;
}
Ausnahmebehandlung
try { Anweisung(en) } catch (Bezeichnung des Ausnahmetyps) { Anweisung(en) } catch (Bezeichnung des Ausnahmetyps) { Anweisung(en) } finally { Anweisung(en) }
Sprunganweisungen
Man kann vor Anweisungen ein Label setzten
meinLabel: eineJavaAnweisung;
Die Anweisung
break;
ohne Label beendet die aktuelle Schleife
Das Label kann dann benutzt werden um z.B. aus einer inneren FOR-, einer WHILE oder einer DO-Schleife direkt in eine äussere auszubrechen.
break meinLabel;
Eine continue-Anweisung beendet den aktuellen Iterationsschritt fährt mit der nächsten Schleifeniteration weiter.
continue;
Analog kann mit
continue label;
direkt in einer äusseren Schleife weitergefahren werden.
Die Anweisung
return;
beendet eine Methode.
Mit
return einWert;
kann der aufrufenden Methode ein Wert übermittelt werden
Links:
- Java Benutzergruppe Stuttgart Wiki
- Java User Group Switzerland
- www.javasoft.com
- www.cetus-links.org
- java.sun.com
/Diskussion