Die Geschichte von Java beginnt im Jahr 1990 in den Entwicklungslabors
der amerikanischen Firma Sun Microsystems. Bei Sun war man der Meinung,
daß intelligente elektronische Haushaltsgeräte in den kommenden
Jahrzehnten eine wichtige Rolle spielen würden. Die Geräte würden
sich von passiven Maschinen zu prozessgesteuerten Begleitern des Menschen
entwicklen, die in einem gewissen Rahmen intelligent - z. B. auf bestimmte
Ereignisse reagieren könnten.
Es wurde ein kleines Entwicklungsteam bei Sun unter der Leitung von James
Gosling gegründet. Um diese Idee realisieren zu können, benötigte
man eine Programmiersprache, die sich ohne großen Aufwand in die
unterschiedlichsten Geräte implementieren läßt und unabhängig
von der jeweiligen Plattform arbeiten kann.
Gosling entwickelte eine neue objektorientierte Programmiersprache, weil
er erkannt hatte, daß die zum damaligen Zeitpunkt verfügbaren
Programmiersprachen Schwachstellen in bezug auf Stabilität und Zuverlässigkeit
aufwiesen. Er gab der Sprache den Namen "Oak".
1993 nahm Sun Verhandlungen mit den wichtigsten Herstellern von Haushalts-
und Konsumergeräten auf, um diese von dem Oak-Konzept zu überzeugen.
Aber die Gespräche scheiterten und Oak drohte, in den Schubladen in
Vergessenheit zu geraten.
Gosling und Joy erkannten noch rechtzeitig das Potential der sicheren und
plattformunabhängigen Programmiersprache, um damit Interaktivität
ins WWW zu bringen. Sie retteten das Oak-Projekt mit dem erklärten
Ziel, es zur Standardprogrammiersprache für alle zukünftigen
Anwendungen des Internets zu machen.
Doch zuerst mußte ein neuer Name gefunden werden, denn "Oak"
war zu eng mit dem Scheitern in der Haushalts- und Konsumergeräteindustrie
verbunden. 1995 wurde "Java" aus den vielen Vorschlägen
ausgewählt.
In den USA steht Java als Synonym für das Grundnahrungsmittel aller
Programmierer: Kaffee.
public class HelloWorld
{
public static void main (String args[])
{System.out.println("Hello World");}
}
Mit dem Kommando "javac HelloWorld.java" übersetzt der Kompiler den Quelltext in Bytecode. Nach der Kompilierung wird der Bytecode in einer eigenen Datei abgelegt, die denselben Namen wie die Klasse und die Erweiterung .class trägt (HelloWorld.class).
Mit dem Kommando "java HelloWorld" findet der Java-Bytecodeinterpreter (java) den übersetzten Bytecode für die Klasse HelloWorld. Der Interpreter lädt den Bytecode zu einem Laufzeitsystem in eine virtuelle Maschine, ruft HelloWorld.main auf und arbeitet die Instruktionen von main() ab.
Jede Variable und jede Methode muß in einer Klasse definiert sein.
Die main()-Methode, die der Javainterpreter aufruft, um ein Javaprogramm zu starten, muß den folgenden Prototyp haben:
public static void main (String args[])
Java ist in Unicode, einem 16-Bit-Zeichensatz, geschrieben . Die ersten
256 Zeichen von Unicode sind der Zeichensatz Latin-1, und die ersten 128
Zeichen von Latin-1 sind der 7-Bit-Zeichensatz ASCII.
Die aktuelle Java-Umgebung wandelt normale ASCII- oder ISO-Latin-1 Dateien
beim Einlesen um.
In Java gibt es 3 Arten von Kommentaren:
// Kommentar:
alle Zeichen von // bis zum Zeilenende werden ignoriert
/* Kommentar */:
Kommentar über mehrere Zeilen
/** Kommentar */:
Kommentar über mehrere Zeilen; Vorteil: "javadoc" (Tool
für Java) extrahiert diese Kommentare und generiert ein HTML-Dokument
Java wurde zur Portabilitätsmaximierung entworfen. Viele Details
in Java sind speziell für alle Implementierungen definiert.
In Java wurde dies hin bis zur Maschinensprache definiert, in die Java-Programme
übersetzt werden. Ein Java-Quelltext wird in Java-Bytecode übersetzt,
der auf einer virtuellen Java-Maschine abläuft.
Bytecodes sind eine Maschinensprache für eine abstrakte Maschine,
die von den virtuellen Maschinen jedes Java unterstützenden Systems
zur Laufzeit interpretiert werden kann.
Die virtuelle Maschine weist jeder Anwendung ihr eigenes Laufzeitsystem
zu, welches jede Anwendung von den anderen isoliert und ein Sicherheitsmodell
bietet. Die Sicherheitsverwaltung jedes Laufzeitsystems entscheidet über
die der Anwendung verfügbaren Fähigkeiten. Die Sicherheitsverwaltung
könnte z. B. der Anwendung untersagen, eine lokale Diskette zu lesen
oder zu schreiben oder nur zu bestimmten Maschinen Netzwerkverbindungen
erlauben.
Diese Merkmale geben Java-Programmen völlige Plattformunabhängigkeit
und bieten ein Sicherheitsmodell, das geeignet ist, vom Netzwerk geladenen
Code unter verschiedenen Vertrauensgraden ausführen zu können.
Java stellt vordefinierte Datentypen zur Verfügung:
boolean |
entweder true oder false |
char |
16-Bit-Unicode |
byte |
8-Bit-Integer vorzeichenbehaftet |
short |
16-Bit-Integer vorzeichenbehaftet |
int |
32-Bit-Integer vorzeichenbehaftet |
long |
64-Bit-Integer vorzeichenbehaftet (IEEE-754-1985) |
double |
64-Bit-Integer vorzeichenbehaftet (IEEE-754-1985) |