Einführung in Java am GZG

Grundlegendes zu Java

Java am GZG

Überblick über die wesentlichen Spracheigenschaften von Java, siehe hier.

Java ist eine objektorientierte Sprache (siehe auch) für verteilte, graphische Anwendungen, mit der man relativ einfach auch nebenläufige Aktivitäten, sogenannte Threads schreiben, auf Datenbanken zugreifen und Client/Server-Anwendungen schreiben kann. Bekannt wurden vor allem die Applets von Java, die im Rahmen eines Browsers ausgeführt werden. Der Browser weist den Applets eine Ausgabefläche, ein Panel, zu und er führt die Programme in einem geschützten Kontext aus, d.h. das Applet kann nur auf die Files des Rechners zugreifen, von dem der Code des Applets geladen wurde. Man kann mit Java aber auch eigenständige Programme (applications) schreiben, die wie C- oder Delphi-Programme ohne Browser auf einem Rechner laufen - aber die sogenannte Virtuell Machine (VM) von Java benötigen. Diesen Programmen (einführende Beispiele finden sich hier) kann auf einfache Weise eine moderne Windows-Oberfläche zugeordnet werden. Außerdem müssen sie nicht für jedes Betriebssystem erneut übersetzt werden. 

Jede Programmiersprache, also auch Java, hat als Ausgang ein Textfile, das sogenannte Quellfile, das prinzipiell mit jedem Editor erstellt werden kann, in der Praxis aber meist mit einem sogenannten IDE (Integrated Develpment Environment) bearbeitet wird, das neben dem Editor vor allem auch einen Compiler und einen Debugger enthält. Bei den klassischen Programmiersprachen erzeugt der Compiler aus dem Quellfile ein maschinenlesbares Programm, d.h. ein Programm, das vom Prozessor direkt ausgeführt wird. Dies bedeutet, dass das Quellfile für jedes Betriebssystem neu übersetzt - und erfahrungsgemäß neu bearbeitet - werden muss. Neben diesen klassischen Programmiersprachen gibt es die Interpretersprachen wie Basic, die bei jedem Lauf übersetzt werden und dadurch eine langsamere Ausführungsgeschwindigkeit besitzen, aber leicht zu ändern sind. Allerdings lassen sich die meisten Interpreterprogramme heutzutage auch compilieren, d.h. in dauerhafte exe-Programme verwandeln.

Der Javacompiler geht nun einen neuen Weg: Er erzeugt keinen Maschinencode, sondern einen sogenannten Bytecode. Dieser Bytecode muss von einem Programm, der Java Virtuell Machine (JVM oder kurz VM), auf dem Rechner in Maschinenbefehle umgesetzt werden. Jeder Rechner, der über eine JVM verfügt, kann den so erzeugten Byte-Code ausführen. Ein Programm muss also nicht für jedes Betriebssystem angepasst und nochmals übersetzt werden, sondern das Programm wird nur einmal übersetzt und läuft dann auf jedem Rechner mit jedem Betriebssystem und jedem Mikrocode. Solche JVMs gibt es (Anfang 2000) für Windows 95/98 und NT, Unix, Linux, Solaris, MacOS, OS/2 und einige andere unbekanntere moderne Betriebssysteme. Browser können diesen Bytecode, sofern er bestimmte Bedingungen erfüllt (vor allem Sicherheitsanforderung, d.h. es wird kein Zugriff auf die lokale Platte erlaubt, damit keine Viren verteilt werden können und kein Ausspionieren möglich ist), ebenfalls in Maschinenbefehle umsetzen und ausführen. Deshalb können Java-Applets mit Browsern gestartet werden. Damit sind Java-Programme langsamer als z.B. C-Programme, aber schneller und vor allem sicherer als Basic-Programme.

Der Standardcompiler für Java ist das SDK (das Standard Development Kit) von Sun. Dieser Compiler wird auf der Homepage von SUN kostenlos zur Verfügung gestellt (siehe Versionen von Java bzw. die Homepage von Sun). Dieser Compiler stellt allerdings keine Entwicklungsumgebung , keine IDE (Integrated Development Environment) bereit. Da es mühsam ist, mit Editor und Compiler und der klassischen Befehlsoberfläche von DOS - in Java Konsole genannt- , ein Programm zu erstellen, haben diverse Firmen eigene  Entwicklungsumgebungen für Java entwickelt. Diese Entwicklungsumgebungen greifen teilweise direkt auf das Java SDK zurück (etwa Kawa) oder auf einen eigenen Compiler, der zusätzliche Möglichkeiten, zusätzliche Bibliotheken, bereitstellt (etwa J++ von Microsoft).

Java wurde in der Firma Sun von James Gosling und anderen (z.B. Bill Joy und Mike Sheridan) im Green-Projekt seit 1991 entwickelt. Das Ziel dieses Projekts war es, eine einfache und plattformunabhängige Programmiersprache zu schaffen, mit der nicht nur normale Computer wie PCs programmiert werden können, sondern auch die in Haushalts- oder Industriegeräten eingebauten Mikro-Computer oder Chips, wie sie z.B. in Waschmaschinen und Videorekordern, Autos und Verkehrsampeln verwendet werden. Als Basis für die zu entwickelnde Sprache ist C++ verwendet worden. Die neue Sprache sollte die Vorteile von C und von Smalltalk besitzen, aber einfacher zu handhaben sein. Ursprünglich sollte sie Oak (Eiche) heißen. Da dieser Name aber bereits an eine andere Sprache vergeben war, wurde der Name der Kaffeesorte Java gewählt, den das Entwicklerteam trank - zumindest wird dies so behauptet. Java wurde am 23. März 95 offiziell mit einem Alpha-Release vorgeführt. Im Jahr 96 erschien das erste offizielle Release des Java Development Kit JDK 1.0 von Java und Anfang 97 die Version 1.1, die die Geschwindigkeit des Java-Interpreters verdoppelte und durch das Hinzufügen von weiteren APIs (Abstract Programmer Interfaces, Klassenbibliotheken, die allgemein zugängliche Objekte enthalten) z.B. den Datenbankzugriff u.a. ermöglichte. Einer der größten Unterschiede zwischen Version 1.0 und 1.1 betrifft die Event-Steuerung - dabei muss allerdings beachtet werden, dass viele ältere Browser immer noch nur Java 1.0 unterstützen (dies trifft z.B. auf Netscape Gold und auf den Explorer 3 zu). 

Für weitere Informationen zur Geschichte von Java siehe 

Ende 1998 kam das sogenannte Java 2 heraus, die Version 1.2 von JDK, die am GZG in der Version 1.2.2 installiert ist. Seit Anfang 2000 gibt es die Version Java 1.3. Mit Hilfe des "Java Activator" (Java Plugin) von der Firma Sun kann man auch ältere Browser-Versionen auf die jeweils neueste Java-Version aufrüsten, sowie den Microsoft Internet Explorer, der Java 2 nicht vollständig unterstützt, zu einem 100-prozentig Java-fähigen Browser machen.

Auch wenn die mit Java 1.2 erstellten Programme und Applets inzwischen recht schnell sind, so ist ein in C geschriebenes Programm trotzdem noch bis zu 10 oder 15 mal schneller. Ein wesentlicher Grund hierfür ist, dass der Bytecode vor der Ausführung in Maschinencode umgewandelt werden muss. Für zeitkritische Programme wurde daher eine spezielle VM (Virtual Maschine, ein Programm, das den Java-Byte-Code in Maschinenbefehle übersetzt), der sogenannte JIT-Compiler (Just In Time Compiler), entwickelt, der den Bytecode während des Ladens oder Ausführens dauerhaft in Maschinencode umwandelt, so dass z.B. Schleifen nur einmal übersetzt werden müssen. Eine weitere Ursache für die im Vergleich zu C relativ langsame Geschwindigkeit sind die hohen Sicherheitsanforderung an Java. So wird ein Applet vor dem Starten daraufhin überprüft, ob kein Zugriff auf lokale Daten außerhalb des Java-Programmes erfolgt. Diese Geschwindigkeitseinschränkungen sind inhärent und können nicht optimiert werden, sie sind ein notwendiges Zugeständnis an die menschlichen Schwächen der Programmierer. Diese Sicherheitsanforderungen sind im Übrigen ein wesentlicher Grund für den Erfolg der Sprache Java, da die Programme dadurch wesentlich wartungsfreundlicher geworden sind. Bei großen Programmen machen ja die Wartungsarbeiten einen Großteil der Programmkosten aus und die meisten heutigen Computer sind so schnell, dass sie die meiste Zeit im Leerlauf verbringen.

Unter Java Beans ("Kaffeebohnen") versteht man kleine Java-Programme (Klassen) mit genau festgelegten Konventionen für die Schnittstellen, die eine Wiederverwendung in mehreren Anwendungen (Applikationen und Applets) ermöglichen, ähnlich wie bei Unterprogramm-Bibliotheken in anderen Programmiersprachen. Dies ist vor allem in Hinblick auf das Software-Engineering von komplexen Programmsystemen interessant. Dafür gibt es ein eigenes Beans Development Kit BDK, das ab Version 1.2 im JDK enthalten ist, und ein Package java.beans.

Eine gute Einführung in die Programmierung von Java-Applets ist das Buch von Bell und Parr (siehe Literatur, Buch B845). Dieses Buch führt den Lehrenden von Grund auf und ausführlich anhand von Java-Applets in die (objektorientierte) Programmierung ein. Ein Buch für Programmierer, die bereits C (oder eine andere Sprache) beherrschen, ist das Buch von David Flanagan: Java in a Nutshell (B863). 

Das Buch (B879) oder die Online-Fassung von Bruce Eckel: Thinking in Java (siehe JK03) sei vor allem denjenigen empfohlen, die bereits etwas Erfahrung mit Programmierung haben und Java gründlich kennen lernen wollen. Von einzelnen Kapiteln gibt es eine deutsche Übersetzung. Am GZG findet sich eine Zusammenstellung der Kapitel (deutsche Fassung (teilweise) / englische Ausgabe 1 / englische Ausgabe 2, siehe hier)

 

Das Internet

Das Internet ist die weltweite Ansammlung von all den Rechnern, die durch ein wählbares Netz, z.B. das Telefonnetz oder durch eine Standleitung, verbunden sind. Jeder Rechner im Internet ist durch eine eindeutige Nummer gekennzeichnet, so wie jeder Telefonanschluß auf der Welt. Diese sogenannte IP-Nummer besteht aus vier Zahlen, die durch einen Punkt getrennt sind, und alle Werte zwischen 0 und 255 annehmen. Z.B. besitzen die Rechner am GZG die Nummern 141.37.248.129 bis 141.37.248.191. Da sich diese Zahlen schwer merken lassen, wird üblicherweise jedem Rechner ein sogenannter Domain-Namen zugeordnet. Z.B. lautet der Domainname des Rechners R21 am Graf-Zeppelin-Gymnasium r21.gzg.fn.bw.schule.de. Die Zuordnung zwischen den Rechnernamen und den IP-Adressen wird von sogenannten Domain-Servern vorgenommen.

Browser sind Programme, die auf jedem Rechner gestartet werden können und die, wenn die Rechner am Netz angeschlossen sind, von allen WWW-Servern im Netz Files anfordern können. Die meisten Files sind HTML-Textdateien, die als Homepages am Bildschirm zur Anzeige gebracht werden können. Andere Files sind Programme, sogenannte CGI-Scripts, die entweder auf dem Client, dem Rechner, an dem der Nutzer den Browser gestartet hat, oder auf dem Server, dem Rechner, von dem der Browser die Daten anfordert, gestartet werden können.

Eine ausführlichere Einführung findet sich in der deutschen Fassung von Thinking in Java.

 

Inhaltsverzeichnis 
Java am GZG

Sprachelemente
Java am GZG