Galileo Computing < openbook >
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.


Java ist auch eine Insel von Christian Ullenboom
Buch: Java ist auch eine Insel (Galileo Computing)
gp Kapitel 1 Schon wieder eine neue Sprache?
gp 1.1 Der erste Kontakt
gp 1.2 Historischer Hintergrund
gp 1.3 Eigenschaften von Java
gp 1.3.1 Bytecode und die virtuelle Maschine
gp 1.3.2 Kein Präprozessor
gp 1.3.3 Keine überladenen Operatoren
gp 1.3.4 Zeiger und Referenzen
gp 1.3.5 Bring den Müll raus, Garbage-Collector
gp 1.3.6 Ausnahmenbehandlung
gp 1.3.7 Objektorientierung in Java
gp 1.3.8 Java-Security-Model
gp 1.3.9 Wofür Java nicht geeignet ist
gp 1.4 Java im Vergleich zu anderen Sprachen
gp 1.4.1 Java und JavaScript
gp 1.4.2 Normierungsversuche
gp 1.5 Die Rolle von Java im Web
gp 1.6 Aufkommen von Stand-alone-Applikationen
gp 1.7 Entwicklungs- und Laufzeitumgebungen
gp 1.7.1 Aller Anfang mit dem Java SDK
gp 1.7.2 Die Entwicklungsumgebung von Sun: Sun ONE Studio und NetBeans
gp 1.7.3 Jikes und Eclipse von IBM
gp 1.7.4 JBuilder von Borland
gp 1.7.5 Together
gp 1.7.6 Die virtuelle Maschine Kaffe von Transvirtual Technologies
gp 1.7.7 Ein Wort zu Microsoft, Java und zu J++
gp 1.7.8 Direkt ausführbare Programme
gp 1.8 Installationsanleitung für das Java 2
gp 1.8.1 Das Java 2 SDK beziehen
gp 1.8.2 Java SDK unter Windows installieren
gp 1.8.3 Compiler und Interpreter nutzen
gp 1.8.4 Installation der Java Laufzeitumgebung unter Linux
gp 1.9 Das erste Programm compilieren und testen
gp 1.9.1 Häufige Compiler- und Interpreterprobleme
gp 1.10 Eclipse
gp 1.10.1 Eclipse starten
gp 1.10.2 Das erste Projekt anlegen
gp 1.10.3 Eine Klasse hinzufügen
gp 1.10.4 Übersetzen und Ausführen
gp 1.10.5 Nutzen des JDK und Starten ohne Bestätigungsdialog


Galileo Computing

1.7 Entwicklungs- und Laufzeitumgebungendowntop

In der Gründerzeit von Java gab es nur den spartanischen Java-Compiler und die virtuelle Maschine von Sun. Die Situation hat sich geändert, und viele Hersteller stürmen mit Compilern, Laufzeitumgebungen und integrierten Entwicklungsumgebungen (IDE) auf den Markt.


Galileo Computing

1.7.1 Aller Anfang mit dem Java SDKdowntop

Alles begann mit dem Compiler und der JVM von Sun. Der Compiler unterstützt zwar den gesamten (hausgemachten) Standard, ist aber, da er selbst in Java programmiert ist, langsam. Somit bedarf es für eine Architektur nur eines Interpreters, und schon können mit dem Sun-Compiler Programme übersetzt werden. Sun liefert das Paket bestehend aus Compiler und Interpreter kostenlos aus. Das Produkt ist dabei in drei Bereiche unterteilt:

gp Java 2 Standard Edition (J2SE). Die Standard Edition ist die normale Softwareumgebung und definiert das Java 2 Software Development Kit, kurz SDK. Geläufig ist immer noch die Bezeichnung JDK (Java Development Kit), die aber mittlerweile veraltet ist.
gp Java 2 Enterprise Edition (J2EE). Die Enterprise Edition ist ein Aufsatz auf das J2SE und integriert zusätzliche Pakete wie Enterprise Java Beans, Servlets, JSP, Java-Mail-API, JTS.
gp Micro Edition (J2ME). Die Micro Edition ist eine kleine Laufzeitumgebung für kleine PDAs oder Telefone. Für den PalmPilot liegt eine Referenzimplementierung vor. Die J2ME löst Personal Java und Embedded Java ab.

Das JDK 1.0.2 wurde 1996 veröffentlicht. Seit den ersten Versionen hat sich die Sprache Java nicht wesentlich verändert. In der Version 1.5 werden wir jedoch große Sprachänderungen erleben.


Galileo Computing

1.7.2 Die Entwicklungsumgebung von Sun: Sun ONE Studio und NetBeansdowntop

In den Anfängen der Java-Bewegung brachte Sun mit der Software Java-Workshop eine eigene Entwicklungsumgebung auf den Markt. Die Produktivitätsmöglichkeiten waren jedoch gering. Das änderte sich, als Sun das kalifornische Softwarehaus Forte übernahm und damit wieder eine bedeutende Rolle bei den Java-Entwicklungsumgebungen einnahm. Sun interessierte sich besonders für Fortes Produkt SynerJ, das im Kern die IDE enthält. So wurde kurze Zeit später Forte for Java auf den Markt gebracht. Nun wurde das Produkt wiederum umgetauft und heißt Sun ONE Studio.

Sun ONE Studio (http://wwws.sun.com/software/sundev/jde/index.html) gibt es in den Ausführungen Enterprise Edition, Mobile Edition und Community Edition. Die Community Edition (sowie die Mobile Edition) stehen zum kostenlosen Download zur Verfügung, die Profiversion kostet 1.995 Dollar. Die Umgebung ist komplett in Java implementiert und modular aufgebaut, sodass Entwickler zusätzliche Bausteine implementieren können. Die Internet und Enterprise Edition unterstützen die J2EE und hilft bei der Erstellung von Datenbank- und JSP/Servlets, EJB, CORBA, RMI und JNDI.

Auf dem gleichen Kern wie Sun ONE Studio baut NetBeans auf. Beide verwenden den gleichen Kern, nur ist NetBeans (http://www.netbeans.org/) ein Open-Source-Produkt und Sun ONE nicht.


Galileo Computing

1.7.3 Jikes und Eclipse von IBMdowntop

Den Programmierern von IBM, der größten Softwareschmiede der Welt, ist Java mittlerweile so ans Herz gewachsen, dass sie sich von Java nicht trennen können und nur noch damit programmieren wollen. Dabei ist viel Software entstanden, unter anderem der in C++ programmierte Compiler Jikes (http://www.ibm.com/research/jikes/), der im Quellcode unter der Open-Source-Lizenz vorliegt. Binärdateien liegen für Win32, Linux, AIX und OS/2 auf dem Server bereit. Für den allgemeinen Einsatz ist Jikes gut geeignet, da er sehr schnell ist, allerdings hat er einige Probleme mit Programmen, die vom Sun-Compiler akzeptiert werden. Dies führt zu spannenden Diskussionen, da IBM von sich behauptet, einen Compiler geschrieben zu haben, der aus Java-Quellcode, definiert in The Java Language Specification (Addison-Wesley 1996), Bytecode erstellt, wie unter The Java Virtual Machine Specification (Addison-Wesley 1996) spezifiziert. Leider ist in einigen Punkten die Sprachspezifikation unzureichend, sodass es zu unterschiedlichen Auslegungen kommt.

Die Entwicklungsumgebung Eclipse

Seit Ende 2001 arbeitet IBM an der neuen unabhängigen Java-basierten Open-Source-Software Eclipse (http://www.eclipse.org/). IBM löst damit die alte WebSphere-Reihe und die Umgebung Visual Age for Java ab. Eclipse macht es möglich, Tools verschiedenster Hersteller zu integrieren. Viele Anbieter haben ihre Produkte schon für Eclipse angepasst, und die Entwicklung läuft weltweit in einem raschen Tempo. Da Suns IDE NetBeans ebenfalls frei ist und mit anderen Fremdkomponenten bereichert werden kann, zog sich IBM den Groll von Sun zu. Sun wirft IBM vor, die Entwicklergemeinde zu spalten und noch eine unnötige Entwicklungsumgebung auf den Markt zu werfen, wo doch NetBeans schon so toll ist. Nun ja, die Entwickler werden entscheiden. Aktuelle Statistiken zeigen, dass an und mit Eclipse schon mehr Entwickler arbeiten, als mit NetBeans. Zudem scheint es so zu sein, dass sich auch Sun mit an Eclipse beteiligen könnte. Eine offene Aussage wird erwartet.

Eclipse hat gegenüber anderen Umgebungen den Vorteil, dass der Editor besonders Spracheinsteigern hilft, sich mit der Syntax anzufreunden. Dazu unterkringelt Eclipse ähnlich wie moderne Textverarbeitungssysteme fehlerhafte Stellen. Zusätzlich bietet die IDE die notwendigen Hilfen beim Entwickeln, wie etwa automatische Codevervollständigung. Eclipse setzt auf dem Java SDK auf und nutzt somit immer die neuesten Java-Versionen beziehungsweise beliebige andere Java-Umgebungen.

Eclipse ist ein Java-Produkt mit einer eigenen nativen grafischen Oberfläche, das erstaunlich flüssig seine Arbeit verrichtet - genügend Speicher vorausgesetzt (>256 MB). Die Arbeitszeiten sind auch deswegen so schnell, da Eclipse mit einem so genannten »inkrementellen Compiler« arbeitet. Wenn eine Java-Quellcodedatei gespeichert wird, übersetzt der Compiler automatisch diese Datei; dieses Feature nennt sich »autobuild«.

Bezug und Installation

Eclipse kann unter http://www.eclipse.org/downloads/index.php für die Systeme

gp Windows 98/ME/2000/XP
gp Linux (x86/Motif, x86/GTK 2)
gp Mac OSX (Mac/Carbon)
gp Solaris 8 (SPARC/Motif)
gp QNX (x86/Photon)
gp AIX (PPC/Motif)
gp HP-UX (HP9000/Motif)

geladen werden. Das ZIP-Archiv wird einfach entpackt und Eclipse aufgerufen. Eine Installation ist nicht erforderlich.

Plugins für Eclipse

Zusätzliche Anwendungen, die in Eclipse integriert werden können, werden Plugins genannt. Ein Plugin besteht aus einer Sammlung von Dateien in einem Verzeichnis. Dieses Verzeichnis wird einfach in das Plugin-Verzeichnis von Eclipse kopiert und dann automatisch erkannt und integriert. Bisher sind hunderte von Plugins verfügbar. Einige ausgewählte Plugins habe ich unter http://www.java-tutor.com/java/eclipse/plugins.html zusammengestellt. Die Webseiten http://www.eclipse.org/community/plugins.html, http://www.eclipse-workbench.com/jsp/plugins.jsp und http://eclipse-plugins.2y.net/ geben auch Suchhilfen für bestimmte Plugins.

Zu den Nachteilen gehört, dass Eclipse von Haus aus keine Unterstützung von grafischen Oberflächen (GUI-Builder) anbietet. Bei der großen Menge von Plugins ist es jedoch nur eine Frage der Zeit, wann es auch einen freien GUI-Builder gibt.


Galileo Computing

1.7.4 JBuilder von Borlanddowntop

Der JBuilder (http://www.borland.de/jbuilder/) ist ein Borland-Produkt zur Entwicklung von Java-Applikationen unter Windows, Linux und Solaris. Mit 256 MB Arbeitsspeicher und einem Rechner ab 1 GHz ist die Arbeitsgeschwindigkeit gut. Das Produkt kommt mit Editor, Compiler, Debugger, visuellen Designern und Wizards daher. Die IDE verfügt über zahlreiche Eigenschaften, die den Entwicklungszyklus von professionellen Anwendungen verkürzen. Dazu zählen zum Beispiel ein Debugger, ein GUI-Builder zum Entwurf von grafischen Oberflächen mit voller Swing-Unterstützung, Remote Debugging und vieles mehr.

Zurzeit liegt der JBuilder X in den Produktlinien Foundation, Enterprise, Developer, und MobileSet vor. Alle Versionen nutzen das aktuelle Java SDK 1.4. Die Foundation Version ist eine recht beschnittene, aber dafür frei verfügbare Version (http://www.borland.com/products/downloads/download_jbuilder.html). Bei einem Preis von etwa 4.000 Euro für die Enterprise-Version macht sich Borland aber wenig Freunde. Meine persönliche Meinung ist, dass JBuilder durch die immer höher werdenden Kosten die Entwickler vertreibt und Borland sich nicht wundern darf, wenn sich immer mehr Entwickler-Mannschaften gegen den JBuilder entscheiden. Sie werden zur kostengünstigeren Entwicklungsumgebung Sun ONE - die in der Leistungsfähigkeit nicht zurücksteht - abwandern oder in Richtung Eclipse plus Plugins gehen.


Galileo Computing

1.7.5 Togetherdowntop

Ende 2002 hat Borland die Firma Togethersoft1 (http://www.togethersoft.com/) übernommen. Der Hersteller liefert das Case-Tool Together (früher TogetherJ) aus, das UML-Design und Codegenerierung komfortabel vereint. Besonders interessant ist das Reverse- und Roundtrip-Engineering, welches es möglich macht, Java-Code zu importieren und UML-Diagramme zu generieren. Die Abbildungen in diesem Buch stammen allesamt von Together. Ein Editor mit Quellcodeerweiterung macht Together zu einer vollständigen IDE. Weiterhin unterstützt das Tool CVS (Concurrent Versioning System), und es lassen sich einfach Datenbankverbindungen über Dialoge aufbauen.

Together spaltet sich in Control-Center, Solo und Community Edition auf. Solo ist die »Einsteigerversion« mit den bekannten UML-Diagrammen Use Case, Sequence, Collaboration, State, Activity, Component und Deployment. Das Control-Center erweitert Solo im Wesentlichen um EJB-Funktionalität. Seit der Version 6 besitzt Together-Control-Center einen GUI-Builder und unterstützt JUnit, EJB2.0 und Web-Services. Die Community-Version (http://www.togethercommunity.com/tcccommunityedition.jsp) ist frei, darf aber nicht kommerziell genutzt werden. Da die Software in Java programmiert ist, sollte der Rechner gut mit Speicher ausgestattet sein. Das Programm wird zusammengepackt in einem Archiv geliefert, ist aber auf verschiedenen Plattformen wie Windows und Linux lauffähig.


Galileo Computing

1.7.6 Die virtuelle Maschine Kaffe von Transvirtual Technologiesdowntop

Neben der Java VM von Sun liefert die Firma Transvirtual Technologies eine JVM mit dem Namen Kaffe >http://www.kaffe.org/) aus, die unter Open Source steht. Der Name wurde gewählt, da der Anfang der Entwicklung im Elchland liegt und Kaffe das schwedische Wort für Kaffee ist. Transvirtual Technologies hat zwei JVMs im Angebot: eine offene Version, die Desktop Edition, die unter der GPL steht, und eine Custom Edition für eingebettete Systeme. Insgesamt wird damit eine große Anzahl von Prozessoren (x86, StrongARM, MIPS, m68k, Sparc, Alpha, PowerPC, PARisc) und Betriebssystemen (Embedded Linux, VxWorks, LynxOS, SMX, ThreadX, Linux, DOS, Windows NT 4.0, Windows 98, Windows 2000, Windows CE, Solaris) unterstützt.

Die Implementierung hält sich komplett an den Java-Standard und ist kompatibel zum Personal Java 1.1-System. Sie enthält nicht nur die virtuelle Maschine mit JIT-Compiler, sondern auch native Bibliotheken für Grafik, Ein-/Ausgabe, Dateimanagement und Netzwerkunterstützung. Das Gute dabei ist, dass der Einblick durch Open Source möglich ist. Wir werfen daher immer wieder einen Blick in die Quellcodes und vergleichen Implementierungsstile von Sun und Transvirtual Technologies.

Microsoft hat eine nicht näher benannte Summe in Transvirtual Technologies investiert. Da Microsoft aus Lizenzgründen kein Java mehr entwickeln darf, sichert sich der Konzern den Zugang zu einer moderneren JVM. Denn die Laufzeitumgebung von Kaffe arbeitet nicht nur herkömmliche Java-Programme ab, sondern auch die MS-Erweiterungen wie J/Direct, die Windows-typische Eigenschaften nutzen. Die Unternehmen Transvirtual, Microsoft und Hewlett-Packard sowie andere kleinere Firmen haben sich zum J-Consortium zusammengeschlossen, um einen alternativen Standard zu etablieren.

Kaffe ist bei einigen Linux-Distributionen schon dabei. Darunter sind Red Hat, Mandrake, SuSE, Debian, FreeBSD, NetBSD, OpenBSD.


Galileo Computing

1.7.7 Ein Wort zu Microsoft, Java und zu J++downtop

Der Hauptunterschied zwischen dem JDK von Sun und Microsoft liegt darin, dass Applikationen, die unter dem Microsoft Development Kit erstellt wurden, nicht zwangsläufig auf anderen Plattformen wie MacOS, UNIX und Netscape Navigator lauffähig sind. Da Microsoft mal wieder gegen alle Standards ist, sollte der J++-Compiler daher nicht verwendet werden. Microsoft fügte neue Schlüsselwörter (multicast und delegate) hinzu, entfernte einige Java-Methoden und fügte weitere Methoden und Eigenschaften hinzu. Dies ist zum Beispiel J/Direct. Microsoft versucht, der plattformunabhängigen Programmiersprache den Windows-Stempel zu verpassen. Denn Programme mit J/Direct laufen nur noch unter Windows-Plattformen. Mit J/Direct können Programmierer aus Java heraus direkt auf Funktionen aus dem Win32-API zugreifen und damit reine Windows-Programme in Java programmieren. So haben diese Programme auch Lese- und Schreibzugriff auf die Festplatte - ein Schrecken für alle Java-Programmierer. Durch Integration von DirectX soll die Internet-Programmiersprache Java multimediafähig gemacht werden. Es bleibt abzuwarten, wie es mit der Unterstützung von Java seitens Microsoft weitergeht. Die Aussagen von Microsoft-Projektleiter Ben Slivka über das Java Development Kit beziehungsweise die Java Foundation Classes, man müsse »sie bei jeder sich bietenden Gelegenheit anpissen« (»pissing on at every opportunity«), lassen keine harmonische Kooperation mit Sun vermuten.2

Suns Produkte, die JNI und RMI nutzen, laufen nicht mit dem IE 4.0 zusammen. Wegen dieser Unregelmäßigkeiten darf Microsoft nach richterlicher Anordnung das Java-Logo nicht mehr in seinen Produkten führen und auch nicht mehr damit werben. Jetzt droht Microsoft natürlich damit, künftige Java-Versionen nur noch bedingt zu unterstützen. Ungefähr zeitgleich nahm Microsoft alle Java-Applets von seinen Web-Seiten - offiziell wegen mangelnder Geschwindigkeit. Da auch der Netscape Navigator Java nicht 100% unterstützt, wurde das Java-Logo auch aus diesem Internet-Browser entfernt, um einer Klage im Vorfeld aus dem Weg zu gehen. Letztlich hat Sun sich aber durchgesetzt, und Microsofts Java-Variante J++ darf das geschützte Label »100% Java kompatibel« nicht mehr benutzen.


Galileo Computing

1.7.8 Direkt ausführbare Programmetoptop

Eine in Java geschriebene Applikation lässt sich natürlich nur mit der JVM ausführen. Doch einige Hersteller haben Compiler so ausgelegt, dass sie direkt unter Windows oder einem anderen Betriebssystem ausführbare Programme erstellen. Zwei Modelle werden unterschieden:

gp Native Compiler: Compiler, die direkt plattformabhängigen Maschinensprachcode erzeugen, heißen native Compiler. Unter ihnen sind zum Beispiel BulletTrain (http://www.naturalbridge.com/), Excelsior JET (http://www.excelsior-usa.com/jet.html), JOVE (http://www.instantiations.com/jove/product/productdetails.htm) für Windows und weitere Systeme. Ein freier Compiler unter der GNU-Lizenz ist der GNU-Compiler mit dem Namen gcj (http://gcc.gnu.org/java/).
gp Wrapper: Ein Wrapper ist ein ausführbares Programm und liegt wie eine Schale um die Java-Klassen. Der Wrapper ruft dann die virtuelle Maschine auf und übergibt ihr die Klassen. Es ist also immer noch eine Laufzeitumgebung nötig, doch lassen sich den Java-Programmen ein Icon mitgeben und Startparameter setzen.





1 Der Objekt-Guru Peter Coad ist Vorsitzender der Firma. Von 1988 bis Ende 1999 lag Together in den Händen des Stuttgarter Softwarehauses Object International. Die Konkurrenz, James Rumbaugh, Grady Booch und Ivar Jacobson (die drei Amigos), sitzt bei Rational Rose.

2 Würden wir nicht gerade im westlichen Kulturkreis leben, wäre diese Geste auch nicht zwangsläufig unappetitlich. Im alten Mesopotamien steht »pissing on« für »anbeten«. Da jedoch die E-Mail nicht aus dem Zweistromland ist, bleibt die wahre Bedeutung wohl unserer Fantasie überlassen.





Copyright (c) Galileo Press GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de