Zurück   Weiter

1 Java, die Sprache und ihre Entstehung

1.1 Die Entstehung

Die Entwicklung von Java begann 1990 bei der Firma Sun Microsystems. Als Anwendungsgebiet wurde dabei aber nicht an das Internet, sondern an Steuerungssysteme im Consumer Electronic Bereich gedacht. Ziel war es, eine allgemeine Hochsprache zu entwickeln, die sich sowohl zur Steuerung von Waschmaschinen, als auch von Telefonanlagen eignet. Als die Projekte in diesem Bereich nicht den gewünschten Erfolg brachten, kam man auf die Idee, Java für Internet-Anwendungen zu verwenden. Durch die, schon in der Konzeption der Sprache geforderte Portabilität ist die Sprache ideal dafür geeignet. Java wurde im Mai 1995 offiziell als Programmiersprache für das Internet vorgestellt. Gleichzeitig wurde auch mit HotJava ein Internet-Browser zur Verfügung gestellt, in dem die Java-Anwendungen ablaufen konnten. Ende des Jahres 1995 brachte die Firma Netscape Communication Coorporation eine neue Version ihres Netscape-Browsers auf den Markt, die ebenfalls Java unterstützt. Mit Hilfe dieses weitverbreiteten Internet-Browsers gelang Java der endgültige Durchbruch. Allerdings wurde so auch oft übersehen, dass Java nicht nur für Applets geeignet ist. Java ist eine komplette Programmiersprache, wie C/C++ oder Pascal ist, welche die spezielle Eigenschaft besitzt, dass der compilierte Code auf jedem Betriebssystem ausführbar ist und auch innerhalb eines Browsers ablaufen kann.

1.2 Die virtuelle Maschine

Die Plattformunabhängigkeit von Java ist leider nicht ganz so perfekt und einfach zu realisieren, wie es allgemein dargestellt wird. Die Plattformunabhängigkeit ist nur auf den Plattformen gegeben, für die eine virtuelle Maschine in der richtigen Version existiert. Was aber ist die virtuelle Maschine? Java wurde wie oben schon erwähnt für den Einsatz im Consumer Elektronik Bereich, d.h. zum Einsatz auf Microcontrollern entwickelt. Dabei wurde von speziell entwickelten Java-Chips ausgegangen. Die virtuelle Maschine emuliert nun genau diesen Java-Chip auf den verschienen Betriebssystemen. Das bedeutet, dass der vom Java-Compiler erzeugte Code nicht direkt ausgeführt, sondern von der virtuellen Maschine interpretiert wird. Dies hat auch den Vorteil, dass die Programme in der Regel stabiler und robuster ablaufen, als Programme welche direkt in ausführbaren Binärcode umgewandelt werden. Nachteil dieser Vorgehensweise ist ein Geschwindigkeitsverlust, der aber in den letzten Versionen von Java nicht mehr besonders gross ist.

1.3 Java als Internet/Intranet Programmiersprache

Ausser der Plattformunabhängigkeit, die für eine Internet-Programmiersprache schon fast Pflicht ist, hat Java noch einige weitere Besonderheiten, die sie für Internet-Anwendungen besonders interessant macht. Dazu gehört, dass alle Funktionalitäten die imInternet hierzu benötigt werden, bereits im Sprachstandard definiert sind. Der Java-Standard enthält alle Klassen, welche benötigt werden um HTTP, FTP oder einfache TCP/IP Verbindungen herzustellen. Für verteilte Netzwerke kann CORBA oder das Java spezifische RMI eingesetzt werden. Ebenso ist alles dafür vorbereitet beliebige Sicherheitsmechanismen einzubauen. In der Zwischenzeit gibt es auch von mehreren Softwareherstellern Frameworks, welche SSL verschlüsselte Verbindungen von allen genannten Verbindungsarten zulassen. Ein weiterer wichtiger Punkt ist die schon früh definierte Schnittstelle zur Anbindung von Datenbanken an Java-Programme. Für die meisten heute vorhandenen Datenbanken gibt es in der Zwischenzeit die benötigten JDBC-Treiber(Java DataBase Connectivity).

1.4 Java als Applikations-Programmiersprache

Zu Beginn des Bekanntwerdens wurde Java fast immer nur mit Applets in Verbindung gebracht. Dies hat zwar zur schnellen Verbreitung von Java beigetragen, aber oftmals wurde übersehen, dass mit Java auch eigenständige Applikationen entwickelt werden können. Bei Applikationen vereint Java die Möglichkeiten von lokalen Systemzugriffen 'normaler' Applikationen mit der einfachen Zugriffsmöglichkeit auf die Resourcen im Internet. Zudem enthielt schon die erste Version eine Bibliothek zum plattformunabhängigen Programmieren von graphischen Benutzeroberflächen.

1.5 Java im Web-Browser

Bis zur Vorstellung von Java war ein Web-Browser nur ein Frontend. Alle Programmlogik, Verarbeitung oder auch nur Eingabeprüfung fand auf der Seite des Servers statt. Bei Java-Applets wird der Programmcode zum Browser übertragen und von diesem ausgeführt. Dieses Verfahren birgt eine ganze Menge Probleme, aus denen sich eine ganze Reihe von Forderungen an den Programmcode ergeben. Eine der wichtigsten Forderungen ist die Plattformunabhängigkeit, da auch die Browser für fast alle Plattformen verfügbar sind. Mindestens ebenso wichtig sind aber auch die Sicherheitsanforderungen, die an ein solches System gestellt werden. Es muss zu einem hohen Prozentsatz ausgeschlossen werden können, dass der Programmcode auf dem Clientrechner unerwünschte Funktionen, wie zum Beispiel das Formatieren der Festplatte ausführt. Sonst hätte ein solches System auf dem Markt keine Chance. Aus diesem Grund unterliegen Java-Browser-Anwendungen ganz strengen Beschränkungen. Sie dürfen nicht auf die Hardware des Clientrechners zugreifen, ebensowenig auf dessen Dateisystem. Ausserdem dürfen sie auch an dem Browser, in dem sie ablaufen, keine Veränderungen vornehmen. Sonst wäre über diesen Umweg wieder ein Zugriff auf den Clientrechner möglich.

1.6 Java im Web-Server

Applets wurden häufig eingesetzt um die Rechenleistung des Server-Rechners zu entlasten. Nachdem die preise für die Hardware in den letzten Jahren immer mehr gesunken sind und die Server-Rechner immer leistungsfähiger werden, ist dies nicht mehr unbedingt in Grund Applets einzusetzen. Zudem war die Programmierung grösserer Applet-Anwendungen sehr schwierig, da zwar alle Browser mit der Zeit eine virtuelle Maschine besassen, aber jede Virtuelle Maschine ein bisschen anders reagierte als die Andere. So war vor allem der Testaufwand, der betrieben werden musste sehr hoch. Auch die Download-Zeiten von grösseren Applet-Anwendungen wurden sehr lange, da ja der komplette ausführbare Code auf den Client-Rechner übertragen werden musste. Sehr schnell ist man daher dazu übergegangen eine Möglichkeit zu schaffen, Java auf dem Server-Rechner einsetzen zu können. Es entstanden die Servlets. Servlets werden innerhalb des Web-Servers ausgeführt und schicken als Antwort auf eine Anfrage aus dem Internet/Intranet HTML-Code an den Client zurück. Alle Rechenoperationen werden auf dem Server-Rechner ausgeführt. HTML-Code wird von den verschiedenen Browsern, auf den unterschiedlichen Plattformen zumindest einigermassen identisch interpretiert.

1.7 Eigenschaften von Java

1.7.1 Plattformunabhängig

Eine der herausragendsten Eigenschaften von Java ist die schon mehrfach erwähnte Plattformunabhängigkeit. Dadurch ist es z.B. möglich Entwicklung und Ausführung von Programme auf unterschiedlichen Betriebssystem auszuführen. Dies ist vor allem bei Internet-Anwendungen interessant, da es für Windows-Betriebssysteme zwar die grösste Auswahl an Entwicklungswerkzeugen gibt, die Applikationen meistens jedoch auf Unix/Linux-System eingesetzt werden.

1.7.2 Objektorientiert

Java ist eine objektorientierte Programmiersprache. Um eine möglichst rasche Verbreitung zu erleichtern, wurde die Sprachsyntax und der Aufbau sehr stark an C++ angelehnt. Auf einige Features von C++, die teilweise dem objektorientierten Gedanken widersprechen, oder hauptsächlich zur Fehlerhäufigkeit bei C++ Programmen beitragen, wurde dabei verzichtet.

1.7.3 Verteilt

1.7.4 Multithreaded

Java ist eine Multithread fähige Programmiersprache. Dies kann besonders bei Anwendungen die im Internet/Intranet ablaufen sollen sinnvoll sein. So kann sich zum Beispiel ein Thread um die Aktualisierung der Bildschirmausgabe kümmern, während ein zweiter Daten vom Server herunterlädt.

1.7.5 Robust

Der grösste Beitrag zur Robustheit von Java leistet der Verzicht auf die Möglichkeit direkt auf Speicheradressen des Computers zugreifen zu können. Um die Anforderung und Freigabe von Speicherplatz kümmert sich das System. Der Programmierer braucht sich nicht um die Speicherverwaltung zu kümmern und kann es auch nicht tun.
Auch die strenge Objektorientierung mit gleichzeitiger strenger Typenprüfung leistet hier einen Beitrag. Der Verzicht auf Operator-Overloading, multiple Vererbung und die Einschränkung der automatischen Typumwandlung tragen ebenfalls zu einer höheren Verlässlichkeit der Java-Programme bei.

1.7.6 Sicher

Um in einer verteilten Umgebung wie dem Internet sinnvoll zu funktionieren, muss besonders viel Wert auf Sicherheit gelegt werden. Das Laden und Ausführen von Applets von beliebigen Servern im Internet ist nur dann vertretbar, wenn sichergestellt werden kann, dass diese Applets keine Viren enthalten, und das lokale Computersystem nicht anderweitig kompromittieren können. Da Java-Programme keine echten Binärprogramme für ein bestimmtes Betriebssystem sind, sondern Bytecode für eine virtuelle Maschine, kann in der Umsetzung des Interpreters einiges an Sicherheit erreicht werden. So besteht z.B. bei Applets, welche nicht besonders verifiziert sind, keine Möglichkeit, auf das lokale Dateisystem zuzugreifen. Der Interpreter enthält zusätzlich einen sogenannten Bytecode-Verifier, der das Programm vor Ablauf nach einigen Regeln hin überprüft und im Fehlerfall abweist.
Created with Vim Zurück   Weiter