Java

von Inga Eckermann

Inhalt


Was ist Java?

Java ist eine von Sun Microsystems urpsprünglich für die Steuerung von elektronischen Haushaltsgeräten entwickelte Sprache.

Java ist objektorientiert und syntaktisch an C++ angelehnt.

Seitdem Sun ihre Sprache 1995 der Öffentlichkeit als Sprache fürs WWW vorgestellt hat, ist eine wahre Java-Euphorie ausgebrochen. Die meisten modernen Browser verstehen Java und können Applets, das sind Java-Programme speziell fürs Internet, ausführen. Mit ihnen werden viele Aufgaben realisiert:

von der visuellen Darstellung von Kursverläufen und Berechnung der individuellen Vermögensentwicklung, bis hin zu elektronischen Warenkörben, der Anbindung an Datenbanken und Generierung von XML.

 Zurück zum Inhaltsverzeichnis


Java - nicht nur für das Internet

Java ist aber mehr als "nur" eine Sprache fürs Internet:

Neben den bekannten Applets gibt es auch Servlets, die wie der Name schon sagt, nicht im Browser des Benutzers, sondern auf dem Server ausgeführt werden. Und last but not least ist Java eine vollwertige Programmiersprache, mit der vom Internet unabhängige Programme geschrieben werden, für alle denkbaren Anwendungsbereiche.

 Zurück zum Inhaltsverzeichnis


Javas Eigenschaften

Für den Siegeszug von Java war ihre Plattformunabhängigkeit das entscheidende Merkmal. Allerdings zeichnet sich Java noch durch weitere Eigenarten und Verbesserungen gegenüber anderen Sprachen aus. Sun selbst beschreibt ihre Sprache so:

» Java: A simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded and dynamic language.«

simple, robust

Java ist einfacher - und dadurch robuster - als andere objektorientierte Sprachen wie C++ oder Smalltalk: Die Entwickler haben Sprachkonstrukte weggelassen, die häufig zu Fehlern führten, wie z.B. die Zeigerarithmetik aus C und C++, die Mehrfachvererbung aus C++ , die Präprozessoranweisungen aus C und C++ und die manuelle Freigabe des Speichers - in C++ eine beliebte Fehlerquelle.

Java ist entgegen Smalltalk streng typisiert. D.h. der Programmierer muss genau festlegen, welche Typen in einer Variable gespeichert werden können - und muss sich in seinem Programm auch daran halten: Automatische Typkonvertierungen, wie z.B. in C teilweise möglich, gibt es nicht mehr.

object-oriented

Java ist objektorientiert, das heißt, im Gegensatz zur prozeduralen Programmierung besteht das gesamte Programm nur aus Klassen und Objekten, die bestimmte Methoden und Eigenschaften haben.

distributed, dynamic

Dynamisch bedeutet, dass die Klassenobjekte erst zur Laufzeit bei Bedarf geladen werden. Java besitzt mächtige Werkzeuge zur Netzwerkprogrammierung, d.h. Klassen können zur Laufzeit auch über das Netzwerk geladen werden.

interpreted

Java wird in Byte-Code compiliert, der dann z.B. im Internet an den Browser geschickt wird, der den Byte-Code dann mit seiner integrierten Java-Virutal-Machine interpretiert.

secure

Gerade im Haupteinsatzgebiet von Java, dem Internet, existieren noch viele Sicherheitslöcher. Java versucht, mit speziellen Mechanismen gegen den Missbrauch im Internet anzugehen. Z.B. wird jeder unbekannte Byte-Code von der Java Virtual Machine geprüft, bevor er ausgeführt wird. Die Prüfung stellt sicher, dass der Code korrekt ist, so dass er keinen Über- oder Unterlauf des Stacks veursacht und keinen illegalen Byte-Code enthält.

Weiterhin gab es bis zur Java 2 Plattform das sogenannte "Sandbox-Verfahren". Unbekannter Code wird in einem "Sandkasten" ausgeführt, einer Art sicheren Zone. Der Code darf nur innerhalb seines begrenzten Raumes agieren, und nicht auf andere Ressourcen, wie z.B. das lokale Dateisystem, zugreifen und kann somit auch keinen Schaden anrichten. Mit Java 2 wurde das Sandbox-Verfahren zu Gunsten eines flexibleren Verfahrens, Zugriffsrechte zu gewähren oder zu verweigern, fallengelassen.

architecture neutral

Java wird oft nicht nur als Programmiersprache, sondern auch als Plattform, als Betriebssystemersatz, aufgeführt. Denn, vorausgesetzt die Java Virtual Machine ist auf dem Rechner installiert, kann ein und dasselbe Programm sowohl auf einer UNIX-Maschine, als auch auf einem PC oder einem Macintosh-Rechner ausgeführt werden. Die Java-Virtual-Machine dient als Schnittstelle zu dem jeweiligen Betriebssystem. Bei einer Software, die in 100% Java geschrieben wurde, liest man nicht mehr, dass die Software auf Win95, WinNt und MacOs läuft, sondern als Betriebsvoraussetzung ist lediglich eine Java-Plattform vorausgesetzt. D.h. die Java-Virtual-Machine muss auf dem jeweiligen Rechner installiert sein.

high-performance

Dieses Attribut durfte nach Meinung von Sun's Marketingstrategen wahrscheinlich nicht fehlen, leider ist es im Bezug auf Java (noch) nicht sehr treffend: Java-Code wird interpretiert, d.h. zur Laufzeit wird erst der Code so umgewandelt, dass die jeweilige Plattform etwas damit anfangen kann: Und das dauert immer länger, als bereits für eine spezielle Plattform kompilierten Code aufzurufen und auszuf¨hren.

Allerdings wird an Verbesserungen gearbeitet:

Der JIT-Compiler (Just In Time Compiler) versucht Abhilfe zu schaffen: Der Byte-code wird nun nicht mehr ausschschließich interpretiert, sondern bei seinem ersten Aufruf zur Laufzeit compiliert. Die JVM startet dann den Maschinencode, der viel schneller abläuft als der Java Byte Code. Seit der Version 2.0 (Dezember 1998) ist der JIT-Compiler fester Bestandteil der Java-Entwicklungsumgebung.

multi-threaded

Das Thread-Konzept ist in Java fest integriert. Es ermöglicht, dass Programme in mehrere unabhängig voneinander ablaufende Programmstränge (Threads) aufgeteilt und implementiert werden, so dass mehrere Aktivitäten quasi gleichzeitig ausgeführt werden können.

Stehen mehrere Prozessoren zur Verfügung, laufen die einzelnen Threads nicht nur beinahe, sondern real gleichzeitig ab und sorgen so, für eine optimierte Ressourcenauslastung.

 Zurück zum Inhaltsverzeichnis


Geschichte

Die Entwicklung von Java begann im Jahr 1991 bei Sun Microsystems. Innerhalb eines Projektes namens "Green" sollten Programme zur Steuerung von elektronischen Haushaltsgeräten und für interaktives Fernsehen (Settop Boxen) geschrieben werden.

Die Entwickler fanden schnell heraus, dass bestehende Programmiersprachen wie C oder C++ dafür nicht geeignet waren, da in C oder C++ geschriebene Programme für einen bestimmten Prozessor compiliert werden.

Da die einzelnen Geräte, wie z.B. Toaster und Waschmaschine sich in ihrem Aufbau stark voneinander unterscheiden, die Größen zum Teil sehr klein sind und häufig Komponenten ausgetauscht werden, ist eine Grundanforderung der neu zu entwickelnden Sprache die Plattformunabhängigkeit.

Das Entwicklerteam schuf eine neue, objektorientierte Sprache, die in ihrer Syntax an C++ angelehnt war - allerdings vermieden sie einige fehlerträchtige Sprachkonstrukte aus C++, wie Zeigerarithmetik und Mehrfachvererbung.

Bei der Präsentation der fertig entwickelten Sprache Oak (so hieß Java damals noch, steht für Object Application Kernel), interessierte sich allerdings niemand so recht für die neuen Möglichkeiten, die Oak bot. Die Sprache wäre wohl bald in Vergessenheit geraten, wenn nicht das WWW gewesen wäre:

Ein Web-Browser muss auf den unterschiedlichsten Plattformen arbeiten, stellt also genau die Anforderungen, für die Oak geschaffen wurde. Mit Oak können Programme ausgeführt werden, die für alle Plattformen gleich aussehen, egal ob auf Unix, Mac, dem Pc oder auf einer SunStation. Da bereits eine Computersprache namens "Oak" existierte, nannten die Entwickler Oak kurzerhand in Java um und stellten sie der Internet-Gemeinde vor - Java steht trotz hartnäckiger Gerüchte nicht für "Just Another Vague Acronym", sondern bedeutet im amerikanischen Umgangsenglisch schlicht und ergreifend "Kaffee".

Und plötzlich boomte Java: in den Nachrichten, in Zeitungen und Magazinen, überall war und ist von Java die Rede.

Ein Sun-Entwickler erklärt dieses Phänomen so:

» Java ist eine Lösung, die nur noch auf das passende Problem gewartet hat.«

Mittlerweile ist die Java-Virtual-Machine, = der Interpreter des compilierten Byte-Codes, in den Browsern von Netscape und Microsoft standardmäßig enthalten.
DatumEreignis
1991
seit 1991
1993
1994
1995
1996
1997
1998
1999

 Zurück zum Inhaltsverzeichnis


Wie funktioniert Java?

Ein ausführbares Java-Programm entsteht in zwei Schritten: Zuerst wird der Quellcode des Programmieres von dem Javacompiler javac compiliert, anschließend wird der erzeugte Byte-Code bei Ausführung des Programms interpretiert.

Grafisch sieht der Entstehungsprozess eines Java-Programms so aus:

1.
Zuerst wird mit einem beliebigen Editor ein Java-Programm geschrieben und mit der Endung .java abgespeichert. Der Dateiname entspricht dem Klassennamen in dem Programm.

Bsp:

public class ersteAnwendung
{public static void main(String[] argv)
{system.out.println("**********************");
System.out.println("* Hello World *");
System.out.println("* *********************");
}
}

Gespeichert wird dieses Programm unter dem Namen "ersteAnwendung.java".

2.
Das abgespeicherte Programm ersteAnwendung.java wird dann von einem compiler, z.B. Javac, in eine Datei mit der Endung "class", also ersteAnwendung.class umgewandelt. Die Datei .class enthält den sogenannten ByteCode. Der Byte Code selbst ist noch kein Maschinencode, so dass ein Rechner mit dem Code noch nichts anfangen könnte.

3.
Der ByteCode wird zur Laufzeit des Programms von der Java Virtual Machine interpretiert und ausgeführt. Und erst die JavaVirtual Machine wurde speziell für eine Plattform entwickelt und wandelt den systemneutralen Byte-Code in einen plattformspezifischen Maschinencode um.

Voraussetzung für das Ablaufen des Programms ist, dass eine Java Virtual Machine auf dem Rechner installiert ist. In Web-Browsern, wie z.B. Netscape Navigator, InternetExplorer und HotJava ist die Java Virtual machine implementiert. Andere JVM sind z.B. Jview oder Java.

Durch das Verfahren der Java Virtual Machine bleibt es dem Java-Programmierer also erspart, sich mit den Schnittstellen der einzelnen Betriebssysteme herumzuschlagen, er kann auf einer höheren Programmierebene arbeiten. Sein Programmcode sieht für jedes Betriebssystem gleich aus.

 Zurück zum Inhaltsverzeichnis PackagesWas sind Packages?