5.2.1 Was ist Java?
Java ist eine neue, von Sun Microsystems entwickelte, objektorientierte und plattformunabhängige Programmiersprache. Dabei wird oft davon gesprochen, daß Java das WWW revolutionieren wird. Denn mit Java lassen sich faszinierende Dinge auf Web-Seiten machen, die bisher nicht möglich waren. Herausragenstes Merkmal ist wohl das Ausmaß der Interaktivität, die doch bei weitem alles übersteigt, was bei CGI-programmierten Web-Seiten zur Zeit möglich ist. So eröffnet Java ganz neue Möglichkeiten Web-Seiten mit Multimedia-Inhalten wie flüssige Animationen, erweiterte Grafiken, Sound und Video effektvoll zu gestalten.
5.2.2 Wie entstand Java?
Das Java-Team bei Sun Microsystems wollte ursprünglich Software zur Gerätesteuerung entwickeln. Allerdings mußte das Team feststellen, daß die existierenden Programmiersprachen wie C und C++ dafür nicht geeignet waren.
In C oder C++ geschriebene Programme müssen für einen bestimmten Computerchip kompiliert werden. Kommt ein neuer Chip auf den Markt, so können seine Leistungsmerkmale nur dann voll genutzt werden, wenn der größte Teil der Software erneut kompiliert wird.
Da ein Computerchip, der zu teuer wird, umgehend durch einen neueren, kosteneffizienteren ersetzt wird, muß eben auch die Steuerungssoftware auf dem neuen Chip arbeiten.
So begann 1990 James Gosling bei Sun Microsystems in Mountain View, Kalifornien, mit der Arbeit an einer neuen Programmiersprache, die für Steuerungselektronik geeigneter und gleichzeitig die mit den traditionellen Sprachen wie C und C++ verbundenen Probleme umgehen sollte.
5.2.3 Die ersten Java-Projekte
Die ersten Java-Projekte kamen selbstverständlich von Sun selbst und beeinflußte die Java-Entwicklung nachhaltig.
Das Green-Projekt
Das Green-Projekt war das erste Projekt, bei dem Java eingesetzt wurde. Es sollte eine neue Form von Benutzeroberfläche für die Steuerung von Geräten im häuslichen Alltag wie Videorecorder, Fernseher, Lampen, Telefon usw. entwickelt werden. So bauten die beteiligten Mitarbeiter einen experimentellen, tragbaren Computer, dem sie den Namen "*7" (gesprochen: "star seven") gaben.
Die Benutzeroberfläche, die vollständig in Java geschrieben worden war, bestand nun aus einer farbigen, animierten Darstellung der häuslichen Umgebung, bei der verschiedene Geräte durch Bildschirmberührung bedient werden konnten.
Das Nachfolgeprojekt für den *7 war ein Demoprogramm für Video-On-Demand (VOD). Hier sollten kleine Programme über die TV-Kanäle übertragen werden, um das Fernsehen interaktiv und attraktiv zu gestalten. Dadurch konnte gezeigt werden, daß sich die Benutzeroberfläche (und natürlich Java) nicht nur zur Gerätesteuerung eignet, sondern auch für interaktives Fernsehen.
WebRunner und HotJava
Etwa 1993 entwickelte sich das World Wide Web von einem auf Text basierenden zu einem immer stärker grafisch ausgerichteten Interface, das immer mehr Interesse fand.
Da Java-Programme durch die Plattformunabhängigkeit auf all den verschiedenen Computertypen wie PC, Mac oder Unix ablauffähig sind und deren lokale Rechenpower nutzen, wurde den Java-Entwicklern klar, daß sich diese Sprache hervorragend für die Programmierung von Web-Anwendungen eignet, ja sogar eine neue Dimension eröffnet.
So entwickelte man einen Web-Browser vollständig in Java und nannte ihn "WebRunner". Aus urheberrechtlichen Gründen wurde dieser Browser später in "HotJava" umgetauft. So war "HotJava" der erste Web-Browser, der Java-Applets unterstützte. Dieser Web-Browser brachte nun die Programmiersprache Java erst ins Rampenlicht der Öffentlichkeit.
Im Mai 1995 stellte Sun Microsystems die Java-Technologie in San Francisco offiziell vor. Dadurch, daß Netscape Communications zusätzlich bekanntgab, daß der Netscape Navigator Java-Applets unterstützt, hat das schon ohnehin sehr große Interesse nur noch eingeheizt. So unterstützt der Netscape Navigator ab der Version 2.0 Java-Applets.
5.2.4 Das Java-Development-Kit (JDK) und dessen Nutzung
Das JDK wird von Sun Microsystems für verschiedene Plattformen kostenlos angeboten. So können mit dem JDK "Java Applets" als auch "Java Applications" (Stand-alone-Anwendungen, die mit dem Interpreter "java" zu starten sind) entwickelt werden. Aber auch andere Unternehmungen, wie etwa IBM, entwickeln an einem JDK für ihre jeweiligen Systeme. So steht inzwischen z.B. für OS/2 ein JDK 1.0 und ein Java-fähiger WebExplorer jeweils im Betastadium zur Verfügung. Anm.: Den WebExplorer kann man unter "https://www.ics.raleigh.ibm.com" beziehen. Anm.: Daß Java wohl keine Eintagsfliege ist, machen die Ankündigungen mehrerer großer Betriebssystemhersteller deutlich, daß sie in Zukunft Java in ihre Betriebssysteme integrieren wollen.
Wie man das JDK installiert und nutzt soll nun am Beispiel von OS/2 erläutert werden:
Das JDK für OS/2 besteht aus zwei gepackten Archiven:
. Runtime.zip und
. Toolkit.zip
Um die Archive zu entpacken, wechselt man mittels "cd" in ein Verzeichnis, welches das JDK erhalten soll und kopiert obige Dateien hinein.
Wenn man also z.B. das JDK auf Laufwerk C: im Verzeichnis C:\\Prg (in welchem mehrere Programmiersprachen installiert sind) installieren möchte, kopiert man eben dort die Archive hinein.
Nun entpackt man beide Archive. Dabei ist zu beachten, daß der Entpacker lange Dateinamen unterstützen muß und daß man den Parameter zur Generierung der Unterverzeichnisse nicht vergessen darf! Der Aufruf sieht dann z.B. folgendermaßen aus:
C:\\Prg>unzip -d runtime
C:\\Prg>unzip -d toolkit
Es wurde nun folgendes Unterverzeichnis erstellt:
C:\\Prg\\JavaOS2
In diesem Verzeichnis befinden sich nun alle benötigten Programme wie etwa Compiler, Interpreter, Appletviewer usw.
Es wurde folgende Verzeichnisstruktur erstellt:
Datenträger, Laufwerk C, hat den Namen OS2.
Datenträgernummer ist 667C:8C15
Verzeichnis von C:\\prg\\javaos2
2.05.96 14.19 0 .
2.05.96 14.19 0 ..
12.04.96 10.58 0 bin (Java-Tools)
12.04.96 11.00 0 demo (Beispiele)
12.04.96 10.58 0 dll
12.04.96 11.00 0 include (C/C++-Einb.)
12.04.96 10.58 0 lib (Java-Packages...)
12.04.96 0.15 483 0 copyrght
2.05.96 14.25 1068 0 index.html
12.04.96 0.15 3119 0 readme.run
12.04.96 0.15 5657 0 readme.tlk
12.04.96 10.55 3564 0 release.not
12 Datei(en) 13891 Byte belegt
48381440 Byte frei
So belegt das JDK für OS/2 etwas mehr als 7 MB auf dem Plattenspeicher (ohne Beispiele!).
Um nun damit arbeiten zu können, müssen noch einige Änderungen an der Systemdatei "Config.sys" gemacht werden:
. das PATH-Statement muß um C:\\Prg\\JavaOS2\\bin erweitert werden
. das LIBPATH-Statement muß um C:\\Prg\\JavaOS2\\dll erweitert werden
. SET JAVA_HOME=C:\\Prg\\JavaOS2
. SET JAVA_USER=C:\\Daten\\Internet\\JavaOS2 (Hier werden benutzerspezifische Daten gespeichert. Dieses Verzeichnis sollte von dem Programmverzeichnis verschieden sein!)
. SET JAVA_WEBLOGS=C:\\Daten\\Internet\\JavaOS2 (Hier wird für jeden gestarteten Java-Prozeß ein Logfile erstellt. Dieses Verzeichnis sollte von dem Programmverzeichnis verschieden sein!)
Nach einem Neustart des Rechners stehen nun folgende (grundlegenden) Befehle zur Verfügung:
. javac - Das ist der Java-Compiler. Durch Eingabe von "javac DasPrg.java" wird eine Datei "DasPrg.class" erzeugt, welches nun den Java-Bytecode enthält.
. java - Das ist der Java-Interpreter für Java-Applikationen, die NICHT das "Abstract Window Toolkit (AWT)" benutzen. Durch Eingabe von "java DasPrg.class" wird die Java-Applikation ausgeführt.
. javapm - Das ist der Java-Interpreter für Java-Applikationen, die das "Abstract Window Toolkit (AWT) benutzen. Durch Eingabe von "javapm DasPMPrg.class" wird das Programm auf der Workplace-Shell von OS/2 ausgeführt.
. applet - Das ist ein Programm, um Applets in HTML-Sites ohne einen Web-Browser ausführen zu können. Durch Eingabe von "applet WebSite.html" werden evtl. vorhandene Applets innerhalb der vorgegebenen Web-Site auf der Workplace-Shell von OS/2 ausgeführt. Anm.: Auf anderen Plattformen heißt das Programm zum starten von Applets meist "appletviewer".
. javadoc - Dies ist ein Programm, das aus bestimmt markierten Kommentaren automatisch eine Dokumentation im HTML-Format erzeugt. Die Dokumentation des JDK\'s wurde auf diese Weise erstellt.
5.2.5 Die Java-Packages
Neben Klassen, die es ermöglichen, Felder und Methoden zu gruppieren, existieren in Java die sogenannten Packages. Mit Hilfe dieser Packages ist es möglich, verwandte Klassen zu gruppieren. Klassen aus solchen Packages lassen sich durch einen von Modula-2 abgeleiteten import-Befehl durch andere Klassen benutzen. Der import-Befehle ist damit mit einem #include-Statement bei C oder C++ vergleichbar.
Die Java-Packages
In Java gibt es sechs (sehr umfangreiche) Packages, die standardmäßig zum JDK gehören:
. java.lang: Dieses Package beinhaltet wesentliche Java-Klassen. Dieses Package wird implizit in jede Java-Datei importiert. So muß ein "import java.lang.*" nicht in einer Java-Datei deklariert werden.
. java.io: Dieses Package enthält Klassen, die für die Datenein- bzw. ausgabe benutzt werden können.
. java.util: Enthält Utility-Klassen wie Hashtables, Vektoren, Zufallszahlen, Datum usw.
. java.net: Enthält Klassen für die Netzwerkverbindung. Diese Klassen können zusammen mit den Klassen aus dem java.io-Package benutzt werden, um Daten aus dem Netzwerk zu lesen oder in das Netzwerk zu schreiben.
. java.awt: Mit diesem Package lassen sich plattformunabhängige GUI-Applikationen schreiben. Es sei hier ausdrücklich darauf hingewiesen, daß speziell dieses Package Java für die Programmierung im Internet interessant macht. Mit diesem Package erreicht man einen Interaktivitätsgrad, der mit herkömmlicher CGI-Programmierung undenkbar wäre.
. java.applet: Enthält Klassen für die Java-Applet-Programmierung. Diese Applets können dann in jedem Java-kompatiblen Web-Browser ablaufen.
Das Package "java.awt"
Das Abstract Window Toolkit (AWT) ist ein GUI-Toolkit, das plattformübergreifend arbeitet. Es beinhaltet natürlich nicht alle Features, die die unterschiedlichen Betriebssysteme bieten, sondern hat eine allgemeine Reihe von Merkmalen, die von den meisten Plattformen unterstützt werden. Es ist eben so, daß man sich bei plattformunabhängiger Programmierung nun mal auf den kleinsten gemeinsamen Nenner einigen muß. Dabei werden die Methoden so weit als möglich auf die darunterliegenden plattformspezifischen GUI-APIs abgebildet.
Da das AWT wohl das wichtigste Package für zukünftige Java-Applikationen und besonders Java-Applets darstellt, sollen dessen Aufbau und Möglichkeiten kurz dargestellt werden.
Zusätzlich sei gesagt, daß das AWT natürlich erweiterbar ist, wobei man dann auch sicher sein kann, daß diese Erweiterungen ebenfalls plattformübergreifend arbeiten.
Die folgende Abbildung zeigt nun die wichtigsten AWT-Klassen in ihrer Hierarchie:
Abbildung : Die wichtigsten AWT-Klassen
. Component: Das ist die Basisklasse vieler AWT-Klassen. Der Hauptzweck dieser Klasse besteht darin, etwas mitsamt seiner Lage und Größe auf dem Bildschirm darzustellen.
. Container: Das ist die Basisklasse aller Komponenten. Sie selbst kann andere Klassen enthalten. Zu dieser Klasse gehört ein Hilfsobjekt: ein Layout-Manager, der die Komponenten im Container nach bestimmten Grundsätzen ordnet.
. Window: Ein Hauptfenster ohne Rahmen.
. Frame: Ein Hauptfenster mit Rahmen. Diese Klasse ist meist mit einem "MenuBar"-Objekt verbunden.
. Dialog: Ein Hauptfenster, zum Erstellen von Dialogen. Dieses Fenster kann modal oder nicht modal sein.
. FileDialog: Dialog zur Dateiauswahl.
. Panel: Dies ist eine von der Container-Klasse abgeleitete Klasse, die in anderen Containern benutzt werden kann. Dadurch können komplizierte Layouts erstellt werden.
. Button: Ein GUI-Aktionsknopf wie etwa "Abbruch".
. Canvas: Dies ist eine allgemeine Komponente, die es erlaubt, Eingabebefehle des Benutzers zu zeichnen oder abzufangen.
. Checkbox: Ein Feld mit Boolean-Charakter. Dieses Feld kann man setzen oder löschen.
. Label: Ausgabe einer Zeichenkette an einer bestimmten Stelle.
. List: Scollbare Liste von Zeichenketten.
. Scrollbar: Rollbalken, mit denen scrollbare Canvases erstellt werden können.
. TextArea: Einfache Texteditierung.
. Textfield: Textkomponente mit nur einer Zeile zur Erstellung von Formularen.
Dies ist natürlich nur ein kleiner Anriß der Möglichkeiten, die das AWT bietet.
5.2.6 Entwicklungsumgebungen für Java
Mit dem vorliegenden JDK ist natürlich ein angenehmes Arbeiten aufgrund der Kommandozeilen-Befehle nicht machbar. Dies haben die Software-Hersteller für Entwicklungsumgebungen natürlich erkannt und trimmen nun ihre bereits bestehenden C/C++-Entwicklungsumgebungen auf Java.
Daher sollen hier die derzeit wichtigsten Java-Entwicklungsumgebungen kurz vorgestellt werden:
. Sun Microsystems stellte auf der Cebit `96 eine erste Version ihrer Java-Entwicklungsumgebung "Java Workshop" vor, die selbst in Java geschrieben wurde.
. Rogue Wave Software bietet schon eine komplette, visuelle Java-Entwicklungsumgebung für Win32 und Solaris an. "JFactory" beteht aus einem Applikationsdesigner, einem Codegenerator und dem Compiler. Anm.: "Jfactory" ist unter "https://www.roguewave.com" zu beziehen.
. Symantec bietet schon jetzt "Espresso" für Win32 und "Caffeine" für den Macintosh an. Dabei handelt es sich aber lediglich um eine Einbindung von Sun\'s JDK in die Oberflächen der jeweiligen Symantec-Compiler. Die integrierte Lösung mit eigenem Compiler, Debugger usw. soll es bald als "Café" folgen. Anm.: Kontakt über "https://www.symantec.com".
. PowerSoft will mit "Optima++" auf den Markt. "Optima++" setzt zwar weiterhin als primäre Programmiersprache C++ ein, soll aber lernen, Java-Applets zu erzeugen.
. Innovative Software bietet ihr auf Java getrimmtes OEW als ein Reverse/Forward-Engineering- und Designwerkzeug an. Die Version 0.9 von "OEW/Java" ist zudem kostenlos vom Server "www.isg.de" zu beziehen.
. Metrowerks bietet für den Mac den "CodeWarrior 8" an. Der "Code Warrior 9" soll nach Auskunft von Metrowerks für den Mac Mitte Mai erscheinen. Dabei sollen sowohl der Compiler, als auch der Debugger Eigenbauten sein. Anm.: Kontakt über "https://www.metrowerks.com".
. Natural Intelligence bietet für den Mac die integrierte Java-Entwicklungsumgebung "Roaster" an.
. melonSoft Berlin bietet mit "ACupOfCoffee" den ersten kompletten GUI-Builder für das Java-Abstract-Window-Toolkit (AWT) an. "ACupOfCoffee" ist eine Palette für den NextStep InterfaceBuilder. Anm.: Kontakt über "mailto: suckow@contrib.de".
. Borland will in naher Zukunft ebenfalls eine integrierte Java-Entwicklungsumgebung anbieten. Diese soll ebenfalls plattformübergreifend sein (durch Entwicklung mit Java) und hofiert unter dem Codename "Latte".
. Microsoft will Java-Entwicklungstools in die nächste Version von Visual C++ integrieren.
|