Gottfried Wolmeringer. Java 6 lernen mit Eclipse



Ähnliche Dokumente
Java 6 lernen mit Eclipse

Wolmerin; Java lernen y. mit Eclipse 3. Galileo Computing

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

! " # $ " % & Nicki Wruck worldwidewruck

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Artikel Schnittstelle über CSV

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Informatik I Tutorial

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

25 Import der Beispiele

Anleitung zur Erstellung einer Batchdatei. - für das automatisierte Verbinden mit Netzlaufwerken beim Systemstart -

Dokumentation: Balanced Scorecard

Installationsanleitung CLX.PayMaker Home

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Netzwerk einrichten unter Windows

Wie halte ich Ordnung auf meiner Festplatte?

Einführung in Eclipse und Java

Die Dateiablage Der Weg zur Dateiablage

Informatik 1 Tutorial

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote

VB.net Programmierung und Beispielprogramm für GSV

Warum beschäftigt sich ein Linux-Systemhaus mit der Installation von OTRS mit einem Microsoft SQL Server?

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

Installationsanleitungen

ODBC-Treiber Programmübersicht

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Durchführung der Datenübernahme nach Reisekosten 2011

TeamSpeak3 Einrichten

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Installation und Inbetriebnahme von Microsoft Visual C Express

Installationsanleitung CLX.PayMaker Office

SICHERN DER FAVORITEN

OP-LOG

1 Konto für HBCI/FinTS mit Chipkarte einrichten

Newsletter. 1 Erzbistum Köln Newsletter

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Installation des Zertifikats. Installationsanleitung für Zertifikate zur Nutzung des ISBJ Trägerportals

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Installationsanleitung

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

Ordnung auf/im (Win-)PC bzw. der Festplatte

Aber mancher braucht diese Funktionalität halt, doch wo ist sie unter Windows 8 zu finden?

Speichern. Speichern unter

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung:

Windows 10 > Fragen über Fragen

Starten der Software unter Windows 7

Mediator 9 - Lernprogramm

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012)

Microsoft Dynamics NAV 2013 R/2 Installationsanleitung. Inhalt: Begleitmaterial des ERP Übungsbuchs:

QTTabBar Einrichtung, ein Tutorial

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Updatehinweise für die Version forma 5.5.5

Firefox: Die Lesezeichen im Griff

Drägerware.ZMS/FLORIX Hessen

Neue Schriftarten installieren

Arbeiten mit dem Outlook Add-In

Informationen zur Verwendung von Visual Studio und cmake

Kurzanleitung. Einstieg in die TripleCard Profi-Software. Zeiterfassungs- Software für. TripleCard Terminal

KURZANLEITUNG CLOUD OBJECT STORAGE

Beispiel Shop-Eintrag Ladenlokal & Online-Shop im Verzeichnis 1

Arbeiten mit UMLed und Delphi

KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE

Bauteilattribute als Sachdaten anzeigen

Die Verwendung von Office 365

1 Dokumentenmanagement

Verschlüsseln Sie Ihre Dateien lückenlos Verwenden Sie TrueCrypt, um Ihre Daten zu schützen.

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Zwischenablage (Bilder, Texte,...)

Installation und Sicherung von AdmiCash mit airbackup

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

Step by Step Webserver unter Windows Server von Christian Bartl

NetStream Helpdesk-Online. Verwalten und erstellen Sie Ihre eigenen Tickets

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Serienbrief erstellen

Mit jedem Client, der das Exchange Protokoll beherrscht (z.b. Mozilla Thunderbird mit Plug- In ExQulla, Apple Mail, Evolution,...)

Installation älterer Programmversionen unter Windows 7

Leichte-Sprache-Bilder

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

Schritt 1 - Registrierung und Anmeldung

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

1. Handhabung Werkzeug- und Menüleiste

Memeo Instant Backup Kurzleitfaden. Schritt 1: Richten Sie Ihr kostenloses Memeo-Konto ein

Installieren und Verwenden von Document Distributor

Tipps und Tricks zu den Updates

Access Grundlagen für Anwender. Susanne Weber. 1. Ausgabe, 1. Aktualisierung, Juni 2013

GEONET Anleitung für Web-Autoren

O UTLOOK EDITION. Was ist die Outlook Edition? Installieren der Outlook Edition. Siehe auch:

ÖKB Steiermark Schulungsunterlagen

Transkript:

Gottfried Wolmeringer Java 6 lernen mit Eclipse

Auf einen Blick TEIL I Grundlagen 1 Grundwissen für Programmierer... 23 2 Werkzeugkunde für Programmierer... 41 3 Unsere Werkbank, die IDE... 53 TEIL II Installation 4 Die Installation von Java... 69 5 Die Installation von Eclipse... 95 6 Mit Eclipse arbeiten... 121 TEIL III OOP Objektorientierte Programmierung 7 Die Installation von objectif... 177 8 Konzepte der OOP... 193 9 Java Baukasten für Objekte... 243 10 OOP in der Praxis... 303 11 Vererbung und ähnliche Dinge... 337 TEIL IV Java-Techniken 12 Java-Oberflächen... 379 13 Ausnahmen und Threads... 453 14 Codekonventionen... 475 TEIL V Datenbanken 15 Datenbanken in Eclipse... 509 16 Datenbanken und Java... 539 17 Der etwas andere Ausblick... 561

Inhalt Danksagung... 15 Vorwort... 17 Hinweise zur Benutzung des Buches... 18 Learning by Doing... 19 TEIL I Grundlagen 1 Grundwissen für Programmierer... 23 1.1 Warum programmieren?... 23 1.2 Was ist eine Programmiersprache?... 25 1.3 Java und andere Programmiersprachen... 29 1.3.1 Die Java-Story... 29 1.3.2 Kann auch ich lernen, mittels Java zu programmieren?... 36 1.4 Zusammenfassung... 38 1.5 Aufgaben zum Kapitel... 38 1.6 Webseiten zum Kapitel... 39 2 Werkzeugkunde für Programmierer... 41 2.1 Wie funktioniert eine Programmiersprache?... 41 2.1.1 Compiler... 42 2.1.2 Interpreter... 43 2.1.3 VM-Sprachen... 45 2.1.4 Imperative und funktionale Sprachen... 46 2.2 Wie erlernt man eine Programmiersprache?... 49 2.3 Zusammenfassung... 51 2.4 Aufgaben zum Kapitel... 51 2.5 Webseiten zum Kapitel... 52 3 Unsere Werkbank, die IDE... 53 3.1 Was ist eine IDE?... 53 3.1.1 Konzepte einer IDE... 54 3.1.2 Die Konzepte von Eclipse... 57 3.1.3 Eclipse ein Framework als IDE... 58 3.2 Weitere Eclipse-Sprachen... 59 3.2.1 Perl... 60 5

Inhalt 3.2.2 Python... 60 3.2.3 C... 60 3.2.4 C++... 61 3.3 So funktioniert eine IDE und so Eclipse... 62 3.4 Zusammenfassung... 65 3.5 Aufgaben zum Kapitel... 66 3.6 Webseiten zum Kapitel... 66 TEIL II Installation 4 Die Installation von Java... 69 4.1 JDK oder JRE?... 69 4.2 Hardwarevoraussetzungen... 70 4.3 Die Installation... 71 4.4 Die Installation der Dokumentation... 79 4.4.1 Aufbau der JDK-Dokumentation... 79 4.4.2 Test und Einsatz der JDK-Dokumentation... 80 4.5 Der Einsatz von Java Web Start... 82 4.6 Demos und Beispiele... 86 4.7 Programmierung ohne Eclipse... 87 4.8 Deinstallation... 90 4.9 Zusammenfassung... 91 4.10 Aufgaben zum Kapitel... 92 4.11 Webseiten zum Kapitel... 93 5 Die Installation von Eclipse... 95 5.1 Versionen und Milestones... 95 5.2 Hardwarevoraussetzungen... 98 5.3 Die Installation... 98 5.3.1 Installation von Filzip 3.06... 99 5.3.2 Eclipse entpacken... 101 5.3.3 Eclipse zum ersten Mal starten... 102 5.4 Das Sprach-Paket installieren... 105 5.5 Den Spickzettel-Lehrgang»Die Sprache Java«installieren... 107 5.6 Callisto oder die Installation von Plugins... 110 5.6.1 Den Visual Editor installieren... 112 5.6.2 Jigloo installieren... 113 5.6.3 Ein Datenbank-Plugin installieren... 114 6

Inhalt 5.7 Übersicht der Plugins... 115 5.7.1 Plugins updaten/deinstallieren... 116 5.8 Zusammenfassung... 119 5.9 Aufgaben zum Kapitel... 119 5.10 Webseiten zum Kapitel... 120 6 Mit Eclipse arbeiten... 121 6.1 Grundkenntnisse Eclipse... 121 6.2 Die Bestandteile... 122 6.2.1 Bausteine in allen Formen... 122 6.2.2 Welt aus Perspektiven... 125 6.2.3 Auf der Suche nach dem verlorenen Editor... 127 6.2.4 Nutzerfreundlichkeit pur... 129 6.3 Die Geburt eines Projekts... 132 6.3.1 Ein neues Projekt anlegen... 133 6.3.2 Arbeitssets... 136 6.3.3 Projekte löschen... 138 6.4 Hilfestellung... 138 6.5 Der Aufbau von Eclipse... 139 6.5.1 Die Perspektiven... 140 6.5.2 Die Menüleiste (Menubar)... 142 6.5.3 Datei... 143 6.5.4 Bearbeiten... 144 6.5.5 Quelle... 145 6.5.6 Refactoring... 147 6.5.7 Navigieren... 153 6.5.8 Suchen... 154 6.5.9 Projekt... 154 6.5.10 Ausführen... 157 6.5.11 Restliche Menüs... 157 6.6 Die Views... 158 6.6.1 Die Navigator-View... 158 6.6.2 Die Editoren... 161 6.7 Projekte übernehmen... 169 6.7.1 JDK-Projekte und einzelne Dateien übernehmen... 170 6.7.2 Ganze Projekte von fremden IDEs übernehmen... 170 6.7.3 Andere Eclipse-Projekte übernehmen... 171 6.7.4 Änderungen an der Paketstruktur bestehender Projekte... 172 7

Inhalt 6.8 Zusammenfassung... 173 6.9 Aufgaben zum Kapitel... 173 6.10 Webseiten zum Kapitel... 174 TEIL III OOP Objektorientierte Programmierung 7 Die Installation von objectif... 177 7.1 Die Personal Edition... 177 7.2 Die Installation... 177 7.3 Adobe Acrobat Reader installieren... 186 7.4 Erste Erfahrungen mit ObjectiF und der Online- Dokumentation... 188 7.5 Zusammenfassung... 191 7.6 Aufgaben zum Kapitel... 191 7.7 Webseiten zum Kapitel... 192 8 Konzepte der OOP... 193 8.1 Eine uralte Idee für moderne Software... 193 8.1.1 Ein neues, altes Paradigma... 195 8.1.2 Das Objekt und seine Klasse... 196 8.1.3 Ein Baum voller Autos... 198 8.2 Ein Eclipse-Projekt... 199 8.2.1 Ein Projekt und seine Pakete... 201 8.3 UML-Zeichnen statt Programmieren... 204 8.3.1 ObjectiF mit neuem System starten... 205 8.3.2 Attribute für unsere Autos... 212 8.3.3 Auch Autos erben... 217 8.3.4 Aus konkret wird abstrakt... 221 8.3.5 Identität der Software in Objekten... 222 8.3.6 Klassifizierung... 228 8.3.7 Vererbung... 229 8.3.8 Polymorphismus... 232 8.4 Zum Beispiel... 237 8.5 Zusammenfassung... 240 8.6 Aufgaben zum Kapitel... 241 8.7 Webseiten zum Kapitel... 242 8

Inhalt 9 Java Baukasten für Objekte... 243 9.1 Java und OOP... 243 9.1.1 Vom Umgang mit Objekten... 244 9.1.2 Die API-Dokumentation als Quelle allen Seins... 246 9.1.3 Von abstrakten und konkreten Klassen bis zu den Schnittstellen... 251 9.2 Zum Innenleben der Objekte... 255 9.2.1 Primitive Datentypen... 259 9.2.2 Komplexe Datentypen... 262 9.2.3 Ein paar Worte zu Arrays, Listen und Stacks... 264 9.2.4 Übungen zu den primitiven Datentypen... 264 9.2.5 Die Sichtbarkeit in der Praxis... 275 9.2.6 Die main-methode... 282 9.2.7 Die Steuerung des Programmflusses... 288 9.3 Zusammenfassung... 298 9.4 Aufgaben zum Kapitel... 300 9.5 Webseiten zum Kapitel... 301 10 OOP in der Praxis... 303 10.1 Unser Projekt Carlipso... 303 10.1.1 Projektdesign ad hoc... 304 10.1.2 Die Geschäftsobjekte... 306 10.1.3 Innere Klassen... 308 10.2 Zusammenfassung... 333 10.3 Aufgaben zum Kapitel... 334 10.4 Webseiten zum Kapitel... 336 11 Vererbung und ähnliche Dinge... 337 11.1 Von Vererbung und Polymorphie... 337 11.1.1 Java-Klassen im Besonderen... 338 11.1.2 Die Syntax bei Java-Klassen... 341 11.2 Vom Umgang mit Objekten... 345 11.2.1 Das Zusammenspiel von Klassen, Objekten und Methoden... 347 11.3 ArrayList, auch ein komplexer Typ?... 354 11.3.1 Namensraum in Java... 362 11.4 Im Anfang war das Bild... 364 9

Inhalt 11.5 Zusammenfassung... 373 11.6 Aufgaben zum Kapitel... 374 11.7 Webseiten zum Kapitel... 374 TEIL IV Java-Techniken 12 Java-Oberflächen... 379 12.1 Mit AWT lernte Java»fensterln«... 380 12.1.1 Der Ast, an dem der Frame hängt... 383 12.1.2 Swing... 394 12.2 Oberflächen zeichnen... 396 12.2.1 Viele Werkzeuge ein Ergebnis... 396 12.2.2 Visual Editor, der Alleskönner... 397 12.2.3 Jigloo, ein Werkzeug für Swing-Oberflächen... 406 12.2.4 Zwischen Feld und Label... 421 12.2.5 Das Ereignismodell... 429 12.2.6 Modifizierungen an Ereignissen... 433 12.3 Für Meldungen aller Art... 434 12.3.1 Frame im Frame und interne Dialoge... 439 12.3.2 Faschingskostüme für Oberflächen... 441 12.4 SWT, das Standard Widget Toolkit... 444 12.5 Zusammenfassung... 448 12.6 Aufgaben zum Kapitel... 449 12.7 Webseiten zum Kapitel... 450 13 Ausnahmen und Threads... 453 13.1 Wo Ausnahmen zur Regel werden... 453 13.2 Multithreading mit Java... 460 13.3 Dämonen, die»dunkle Seite«in Java?... 465 13.4 Instanz-Initiatoren... 469 13.5 Zusammenfassung... 471 13.6 Aufgaben zum Kapitel... 472 13.7 Webseiten zum Kapitel... 474 14 Codekonventionen... 475 14.1 Ordnung ist das halbe Leben... 475 14.1.1 Weshalb sind Codekonventionen unverzichtbar?... 475 14.1.2 Umsetzung der Codekonventionen... 477 10

Inhalt 14.2 Dateiaufbau... 477 14.2.1 Dateinamen... 478 14.2.2 Der Klassenname... 478 14.2.3 Dateiendungen... 479 14.3 Innerer Dateiaufbau... 480 14.3.1 Die Bestandteile einer Datei... 480 14.3.2 Der Dateikommentar... 481 14.3.3 Klassen und Interfaces... 482 14.4 Einrücken... 483 14.5 Die Zeilenlänge... 483 14.6 Kommentare... 484 14.6.1 Quellcodekommentare... 485 14.7 Javadoc-Kommentare... 487 14.7.1 Methodenkommentar... 488 14.8 Deklarationen... 489 14.8.1 Eine Deklaration pro Zeile... 490 14.8.2 Position von Deklarationen... 491 14.9 Klassen- und Interface-Definitionen... 492 14.10 Anweisungen... 492 14.10.1 Einfache Anweisungen... 492 14.10.2 Blöcke oder gebündelte Anweisungen... 493 14.10.3 Die if- und if-else-anweisungen... 493 14.10.4 Die for-schleife... 494 14.10.5 Die while-schleife... 495 14.10.6 Die do-while-schleife... 495 14.10.7 Die switch-anweisung... 495 14.10.8 Die try-/catch-anweisung... 496 14.10.9 Die return-anweisung... 496 14.11 Leerräume... 496 14.11.1 Leerzeilen... 496 14.11.2 Leerzeichen... 498 14.12 Namenskonventionen... 499 14.12.1 Anwendungen... 499 14.12.2 Packages... 499 14.12.3 Klassenbibliothek... 500 14.13 Programmierpraktiken... 502 14.13.1 Zugriff auf Instanz- und Klassenvariablen... 502 14.13.2 Zugriff auf Klassenvariablen und -methoden... 502 14.13.3 Zuweisungen... 502 14.13.4 Instanziierung... 503 14.13.5 Rückgabewerte... 503 11

Inhalt 14.14 Zusammenfassung... 505 14.15 Aufgaben zum Kapitel... 505 14.16 Webseiten zum Kapitel... 506 TEIL V Datenbanken 15 Datenbanken in Eclipse... 509 15.1 Einstieg in das Thema... 509 15.2 Spielereien mit Access... 510 15.3 Die Einrichtung von SQL Explorer... 517 15.4 Allgemeine Betrachtungen zu Datenbanken... 520 15.4.1 Zugriffssysteme und Datenbank-Server... 521 15.5 MySQL... 523 15.5.1 MySQL installieren... 523 15.5.2 Die ersten Experimente mit einem Datenbank-Server... 527 15.5.3 Datenbanken erzeugen... 530 15.6 Eclipse und MySQL... 531 15.7 Zusammenfassung... 535 15.8 Aufgaben zum Kapitel... 536 15.9 Webseiten zum Kapitel... 537 16 Datenbanken und Java... 539 16.1 Java und die Datenbankanbindung... 539 16.2 Vom Treiber zur Verbindung... 542 16.3 Daten aus der Datenbank lesen... 544 16.4 Carlipso goes DB... 545 16.5 Daten in die Datenbank schreiben... 552 16.5.1 Die Reflection-API... 554 16.6 Zusammenfassung... 557 16.7 Aufgaben zum Kapitel... 558 16.8 Webseiten zum Kapitel... 560 17 Der etwas andere Ausblick... 561 17.1 Das Wichtigste zuerst... 561 17.2 Ausblick zum Einblick... 562 17.3 Die Zukunft der EDV... 563 17.4 Java-Techniken... 563 17.4.1 EJBs... 564 12

Inhalt 17.5 Datenbanken... 565 17.6 Eclipse... 565 17.7 Softwaredesign und Entwurf... 566 17.8 Vorgehensweisen und Vorgehensmodelle... 566 17.9 Steuerungsaufgaben während der Softwareentwicklung... 567 17.10 Andere Programmiersprachen... 567 17.11 Die Testphase... 568 17.11.1 Programmierertests mit JUnit... 568 17.12 Die Qualitätssicherung... 569 17.13 Zusammenfassung... 569 17.14 Webseiten zum Kapitel... 570 Anhang... 573 A Tipps... 575 A.1 Kommentare und andere Hilfen... 575 A.2 Mehr Übersicht schaffen... 576 A.2.1 Code minimieren... 576 A.2.2 Variablen markieren... 576 A.2.3 Views entnehmen... 576 A.2.4 Editoren automatisch schließen... 576 A.3 Einfachere Handhabung... 577 A.3.1 Inkrementelle Suche... 577 A.3.2 Zeilen verschieben... 577 A.3.3 Zeilen einfügen... 577 A.3.4 Groß- und Kleinschreibung... 577 A.3.5 Aktuelle Änderungen... 578 A.3.6 Code oder Dokument öffnen... 578 A.3.7 Methoden separiert anzeigen... 578 A.3.8 View minimiert ablegen... 578 A.3.9 Aktuelle Methode im Navigator oder Paket-Explorer suchen... 578 A.3.10 Andere Perspektive öffnen... 578 B Literatur und Webseiten... 579 Literaturverzeichnis... 579 Webseiten... 579 C Glossar... 581 Index... 589 13

Inhalt Video-Training auf der Buch-DVD 1 Das Java-Projekt in Eclipse 1.1 Der Workspace...[07:07 min.] 1.2 Projekte anlegen...[07:50 min.] 1.3 Arbeitssets...[06:10 min.] 1.4 Dateien anlegen...[08:06 min.] 14

Java ist die eine Seite unserer Medaille diese Sprache wollen wir erlernen. Die IDE ist die andere Seite. Unsere IDE heißt Eclipse. Bevor wir Eclipse installieren und damit das Entwicklungssystem auf unserem Rechner vervollständigen, fragen wir: Was ist Eclipse eigentlich? 3 Unsere Werkbank, die IDE 3.1 Was ist eine IDE? Gerade IDE ist eine ziemlich»strapazierte«abkürzung der EDV. Trotzdem fällt der Begriff immer wieder im Zusammenhang mit Eclipse. Aus diesem Grund soll er am Anfang unserer Betrachtung erläutert werden. Nutzt man IDE im Zusammenhang mit Programmiersprachen und Programmentwicklung, bedeutet es»integrated Development Environment«, auf Deutsch»integrierte Entwicklungsumgebung«. Trotz der deutschen Übersetzung sagt uns der Begriff fürs Erste nicht viel.»integriert«und»entwicklungsumgebung«sind ziemlich vage Begriffe. Hinzu kommt noch, dass IDE weitere Bedeutungen hat. Der Hardwarefachmann kennt IDE als»integrated Device Electronics«, aber auch als»intelligent Drive Electronics«. Wobei der erste Ausdruck frei übersetzt»geräteinterne Elektronik«bedeutet und der zweite»intelligente Laufwerkselektronik«. Dementsprechend ist IDE ein Standard für Festplatten, der weit verbreitet, aber veraltet ist. Unsere IDE ist dagegen ein Stück Software, die dazu dient, Programme zu entwickeln. Bereits vor 30 Jahren, als C-Programmierung noch in den Kinderschuhen steckte, merkte man, dass es nicht genügt, den Quellcode mit einem Editor zu erstellen, zu kompilieren und zu testen. Es war auch sinnvoll, eine Übersicht der Befehlssyntax greifbar zu haben. Außerdem konnte man effektiver arbeiten, wenn man Unterlagen zu den Routinen hatte, die man in seinen Programmen (entweder selbst entwickelte oder zugekaufte) nutzen konnte. Praktisch war es auch, wenn man den Compiler starten konnte, ohne den Editor zu verlassen. Man konnte dann während des oft langen Kompiliervorganges weiterentwickeln. Was die Unterlagen anging, half man sich anfangs mit Büchern weiter, später mit anspruchsvollen Editoren wie dem Emacs. Man nutzte Zusatzprogramme, die im Hintergrund zur Verfügung standen und zu denen man bei Bedarf wechseln konnte. Schließlich kam man auf die Idee, all diese Zusatzfunktionen für Programmierer in einem Programm zusammenzufassen. Die IDE, die 53

3 Unsere Werkbank, die IDE Integrated Development Environment, war damit geboren. Parallel dazu wurde der Begriff des CASE entwickelt. CASE steht für Computer Aided Software (oft auch System) Engineering, zu Deutsch: computerunterstützte Softwareentwicklung. 3.1.1 Konzepte einer IDE Zentrales Element einer IDE ist selbstverständlich der Editor. Mit ihm wird die neue Software geschrieben, folglich kommt ihm die größte Bedeutung bei diesem Werkzeug zu. Neben diesem Teil der Codeerstellung besitzen heutige Programme grafische Elemente, die mit den grafischen Oberflächenelementen des verwendeten Betriebssystems konform sind und interagieren. Um diese Bestandteile zu erstellen, setzt man einen sogenannten GUI-Builder ein. Früher gab es ihn als selbstständiges Programm, heute ist er vielfach in die Oberfläche der IDE integriert. Momentan gibt es außer Eclipse vier große IDEs: MS.NET Framework SUN Netbeans Borland JBuilder 2005 (Abbildung 3.1) IBM WebSphere Abbildung 3.1 Borlands JBuilder 2005 54

Was ist eine IDE? 3.1 Oberflächlich betrachtet, sieht man zwischen diesen Produkten in der Anwendung kaum noch Unterschiede. Zu hoch sind die Ansprüche der Anwender, dass sich jemand erlauben könnte, zu wenig Funktionalität zu bieten. So hat die.net IDE von der Projektverwaltung über den GUI-Builder bis zum Debugger alles in einem Programm zu bieten (Abbildung 3.2). Ein Sachverhalt, der eigentlich dem Vorhaben, keine monolithischen Programmriesen zu entwickeln, sehr widerspricht. Abbildung 3.2 Projektverwaltung in der.net IDE Die IDEs besitzen alle ausgeklügelte Editoren, die den Entwickler weitestgehend mit Codekomplettierung unterstützen, und die eine enge Verflechtung mit den anderen Elementen des Entwicklungssystems haben. Selbstverständlich kann man jederzeit kompilieren, debuggen sowie auf umfangreiche Nachschlagewerke zurückgreifen, die Beispielprogramme aufzeigen und alles Erdenkliche zur API zu sagen wissen. Microsoft bietet dabei mit msdn, dem Microsoft Developer Network, die umfangreichste Dokumentation. Sie finden hier fünf Programmiersprachen unter einer IDE (Abbildung 3.3). IDEs sind keine Entwicklung der letzten Jahre. Bereits unter DOS gab es ausgereifte Entwicklungsumgebungen für C (Microsoft Quick C) oder Assembler (Bor- 55

3 Unsere Werkbank, die IDE land TurboAssembler), die schon alle Bestandteile moderner IDEs aufwiesen. Einen Höhepunkt in der IDE-Entwicklung stellte IBM VisualAge for Smalltalk mit grafischer Programmierung dar (Abbildung 3.4). Es war damit möglich, Programme mithilfe von Symbolen zusammenzustellen. Abbildung 3.3 Die Hilfefenster des.net Frameworks Diese IDE wurde von OTI entwickelt, die gleiche Firma, die auch für Eclipse verantwortlich ist. Trotzdem ist Eclipse mit erstaunlichem Erfolg erst relativ spät in dieser»arena«aufgetaucht. Es besitzt nicht einmal einen integrierten GUI-Builder. Im Grunde hat es von allein eigentlich gar nichts, außer der Fähigkeit, Plugin-Zusatzprogramme in einer grafischen Oberfläche zusammenzufassen. Man war bei IBM nicht davon ausgegangen, dass man ein solches Produkt wie eine IDE allein auf die Beine stellen kann. Wie schon beim ersten PC hoffte man auf die Zuarbeit zahlreicher Firmen, indem man nur eine Plattform schuf, in die Softwarebausteine eingegliedert werden können, ähnlich wie Steckkarten in dem Personalcomputer. 56

Was ist eine IDE? 3.1 Abbildung 3.4 Programme zeichnen mit VisualAge 3.1.2 Die Konzepte von Eclipse Während eine IDE bisher für die Nutzer auch immer bedeutete, sich auf ein bestimmtes Produkt festzulegen, geht Eclipse einen ganz anderen Weg. Es bietet lediglich ein Framework an, in dem beliebige Plugins ablaufen können, die natürlich für Eclipse geschrieben sein müssen. So lockt IBM auf diese Weise zahlreiche Komponentenanbieter, deren spezielle Softwarelösungen Eclipse-fähig zu machen und anzubieten. Denn das gemeinsame Produkt ist interessanter als viele Einzelprodukte, die nur bedingt zusammenarbeiten. In diesem Fall ist Eclipse kein proprietäres Produkt mehr, sondern eine offene Lösung. Der Entwickler ist nicht mehr darauf angewiesen zu warten, bis sein Anbieter eine IDE-Version liefert, die einen verbesserten GUI-Builder enthält. Er kann das Plugin des besten GUI-Herstellers nutzen, von dem Moment an, wo dieser Hersteller sein Werkzeug als Plugin für Eclipse anbietet. Eclipse wird aber auch als Kern für verschiedene andere Komplettlösungen (Frameworks) verwendet. So z. B. für den bereits erwähnten WebSphere Studio Application Developer, Rationals XDE, Borlands Together und die sogenannte myeclipse Workbench. Außerdem bringt die Firma INNOOPRACT Informationssysteme GmbH mit Yoxos eine sogenannte Eclipse-Distribution heraus. 57

3 Unsere Werkbank, die IDE Zur Geschichte von Eclipse gibt es nicht viel zu sagen, weil Eclipse noch nicht viel Geschichte hat. Irgendwann 1999 fiel sozusagen der Startschuss. Ende 2001 gab es eine erste Version, deren»väter«, wenn man so will, IBM und OTI waren. Nachdem IBM Eclipse zu Open Source erklärte, ging die Entwicklung des Systems erst richtig los. Um alles zu koordinieren, wurde ein Eclipse-Konsortium ins Leben gerufen. In diesem Konsortium sind selbst vermeintliche Konkurrenten des Systems wie Borland oder SAP vertreten. Jedes der über 130 Mitglieder hat das Recht, einen sogenannten Steward zu den Sitzungen des Konsortiums zu entsenden. Dieses Board of Stewards entscheidet über die Zukunft der IDE und legt fest, in welcher Weise die Software weiterentwickelt werden soll. 3.1.3 Eclipse ein Framework als IDE Plugins von verschiedenen Softwareunternehmen in einem Projekt zu nutzen, bringt natürlich auch Probleme mit sich. Selten sind die neuesten Versionen zur gleichen Zeit verfügbar. Deshalb wurde das Callisto-Projekt ins Leben gerufen. Es ging darum zu zeigen, dass man auch unter der Open Source-Lizenz ein Projekt aus zahlreichen verschiedenen Komponenten termingerecht fertigstellen kann. Eclipse ist eine der wenigen IDEs, die selbst in Java entwickelt wurden und trotzdem auf einem Rechner mit dürftiger Hardwareausstattung verwendbar sind. Zum einen liegt es an dem hohen Grad der Modularität, zum anderen daran, dass man statt AWT oder Swing eigene GUIs eingesetzt hat. Hier muss man wissen, dass AWT und insbesondere Swing grafische Oberflächen sind, die einen größtmöglichen gemeinsamen»nenner«der Oberflächen aller unterstützten Betriebssysteme darstellen, weil Java betriebssystemunabhängige Programme möglich macht. Hinzu kommt noch, dass sie eine Oberfläche integrieren, die mit sich dynamisch verteilenden Elementen arbeitet, wenn man die Größe einer Dialogbox oder eines Fensters ändert. Dadurch wurden Java-Programme groß, unakzeptabel langsam und erhielten einen schlechten Ruf. Mit der Entwicklung von Eclipse ist man einen anderen Weg gegangen. Statt AWT und Swing zu verwenden, hat man eigene GUIs gebaut (SWT Windowing Toolkit und JFace), die speziell für das jeweilige Betriebssystem zusammengestellt wurden. SWT ruft direkt die API-Funktionen der Windows-Oberfläche auf. Damit bekommt man ein betriebssystemidentisches»look and Feel«, das zudem weit schneller ist als die bisher verwendeten grafischen Oberflächen von Java. JFace ist seinerseits eine Erweiterung in Richtung eines neuen Java-Stylings, aber auf Basis der SWT-GUI. Durch kompatible Versionen für die anderen Betriebssysteme erreicht man auch für SWT und JFace Betriebssystemunabhängigkeit. 58

Weitere Eclipse-Sprachen 3.2 Bei Eclipse selbst handelt es sich um ein OOP-Projekt der Firma IBM. Es wurde im Rahmen der WebSphere Studio Workbench von der Tochterfirma OTI entwickelt. Diese Softwareschmiede hat bereits die Entwicklungsumgebung VisualAge programmiert, sodass von dort gute Ideen eingebracht wurden. Eclipse ist ein Editor gestütztes Entwicklungstool zur Programmierung in verschiedenen Programmiersprachen. Die Akzeptanz von Eclipse war von Anfang an besonders groß. Nicht nur eingefleischte Java-Programmierer setzen dieses Werkzeug ein, auch C++-Entwickler und sogar Perl-Anhänger verwenden dieses überaus flexible Werkzeug. Da Eclipse selbst in Java realisiert ist, gibt es das System für eine ganze Reihe von Betriebssystemen selbst für»exoten«wie QNX. Eclipse ist beliebig skalierbar. Eine Forderung, die sich bei Anwendersoftware nur schwer verwirklichen lässt. Mit Eclipse ist es auf ideale Weise gelungen. Nicht zuletzt ist Eclipse ein Open-Source-Produkt, was bedeutet, dass es kostenlos verwendet werden darf und der Quellcode für eigene Verbesserungen zur Verfügung steht. Bei Eclipse sind das nicht nur Floskeln wie bei vielen Produkten der Open-Source-Gemeinde. Denn ein Open Source-Notendruckprogramm wird immer ein Druckprogramm bleiben. Aus Eclipse lässt sich im Prinzip alles entwickeln. Man kann das Framework nutzen, um eine Textverarbeitung daraus zu bauen oder ein CAD-Programm usw. So ist Eclipse nicht nur als Werkzeug interessant, sondern auch als Grundbaustein für eigene Applikationen. Genau das macht ein Framework aus. 3.2 Weitere Eclipse-Sprachen Es sind weniger die alten Sprachen, die man als Plugin für Eclipse downloaden kann, obwohl es auch ein Cobol-Plugin gibt, als vielmehr neue Sprachschöpfungen, die wir bereits angesprochen haben oder noch kennen lernen. Neben Java haben sich einige»modesprachen«etablieren können, die ebenfalls vom Boom des Internets profitierten. Es sind natürlich objektorientierte Sprachen. Es ist jedoch keine reine Programmiersprache dabei, wenn man von Eiffel einmal absieht, das allerdings bereits einige Jahre älter ist. Sie besitzen etwa so viel Objektorientierung wie Java, was zeigt, dass die»zwittersprachen«im Moment am erfolgreichsten sind. Die Sprachen, die ich meine, sind Perl, Python und PHP. Es bleibt zu hoffen, dass es durch den Erfolg von Java nicht zu einer lawinenartig gesteigerten Neuentwicklung von Sprachen kommt, ähnlich der Situation, die zur Entwicklung von Ada führte. Einige Sprachen gehen eindeutig auf Java zurück oder wurden gar als direkte Konkurrenz zu Java entwickelt. 59

3 Unsere Werkbank, die IDE Nachdem Microsoft mit J++ schon keinen Erfolg hatte, ist die Firma mit C# ins Rennen gegangen. Die große Ähnlichkeit zu Java ist nicht zu leugnen. Entscheidend ist immer die Akzeptanz einer Sprache. Immerhin hatte auch Java mit Oak einen erfolglosen Vorgänger. Jedenfalls scheint der letzte Epigone, die Sprache Ruby, sich auch nicht sonderlich gut zu schlagen. Für all diese Sprachen gibt es Plugins, um in ihnen mit Eclipse programmieren zu können. Damit man sich entscheiden kann, ob man es mit Eclipse, außer in Java, auch einmal mit ihnen versucht, hier noch einmal kurz, um was es sich bei den genannten Sprachen handelt (obwohl das Kapitel»Sprachen«eigentlich hinter uns liegt). 3.2.1 Perl Perl ist eine Interpretersprache und wird oft im Internet eingesetzt. Daneben begegnet man Perl auch immer öfter als Skriptsprache, um Konfigurierungen im Rahmen von Softwareprojekten durchzuführen. Perl ist ebenfalls eine imperativ funktionale Sprache und etwas kryptischer als Java. Es eignet sich jedoch aufgrund der kurzen Schreibweise hervorragend dazu, Texte zu bearbeiten und zu formatieren. Seit der 5. Version des Perl-Interpreters gibt es bei Perl auch objektorientiertes Programmieren. Das Perl-Plugin war eines der ersten»fremdsprachen«-plugins für Eclipse. Plugin: EPIC Eclipse Perl Integration 3.2.2 Python Diese Sprache gilt als ausgezeichnete Einsteigersprache. Sie ist vom Sprachdesign her besser als Java und einfacher zu erlernen und deshalb bestens geeignet als Erstsprache für Programmieranfänger. Python ist sehr mächtig, flexibel und gut geeignet für große Projekte. Plugin: Python Development Toolkit (Pydev) 3.2.3 C C ist als alte Sprache ziemlich nah mit Assembler verwandt. Als ANSI-C ist es eine rein imperative Sprache ohne jeden objektorientierten Ansatz. Jemand der sich intensiv mit Programmierung auseinander setzen möchte, sollte zumindest ansatzweise wissen, wie in C programmiert wurde. Man wird einige Beziehungen zu Java finden und endlich verstehen, warum in Java dieses oder jenes genau so und nicht anders gemacht wird. C selbst produktiv einzusetzen, ist nur noch dort interessant, wo sehr maschinennah programmiert wird. Beispiele wären Treiberprogrammierung und Softwareentwicklung in Linux. C ist ein guter Ein- 60

Weitere Eclipse-Sprachen 3.2 stieg in die Sprache C++, die objektorientiert ist. Beide Sprachen sind sich natürlich trotzdem sehr ähnlich. In C geschriebene Programme sind oft sehr schwer zu verstehen, weil es viele Programmiertricks in dieser Sprache gibt, die man nicht so leicht durchschaut. C ist eine sehr effiziente Sprache, es geht schonend mit den Ressourcen des Rechners um. Dafür muss man aber auch sehr viel von der Maschine verstehen und etliches ausprogrammieren, was man sich bei anderen Sprachen erspart, z. B. die Speicherverwaltung. Plugin: CDT 3.2.4 C++ Als C++ entwickelt wurde, gab es die objektorientierte Programmierung bereits etliche Jahre. Doch der erste wirkliche»durchbruch«der OOP kam mit C++. Ein gewisser Bjarne Stroustrup hatte 1979 die Idee, die Sprache C mit objektorientierten Konzepten aufzuwerten. Er orientierte sich dabei an Simula. Die ersten Versionen von C++ waren Erweiterungen in Library-Form für das übliche ANSI- C. Anfangs hieß es»c with Classes«, bis 1983 die Umbenennung in C++ vollzogen wurde. Die weitere Entwicklung von C++ verlief sehr erfolgreich. Es wurde standardisiert und in großem Umfang eingesetzt. Viele der wichtigsten Softwareprodukte von heute wurden in C++ entwickelt. Beispiele für die Leistungsfähigkeit von C++ sind: Betriebssysteme (Windows NT mit mehr als 11 Millionen Zeilen. Windows 2000 mit über 30 Millionen Codezeilen. OS 400 und Linux sind übrigens auch zum großen Teil in C++ geschrieben worden. Benutzeroberflächen (X-Windows bei Linux-Rechnern) Compiler (Turbo Pascal-Compiler und C/C#-Compiler) Datenbankmanagementsysteme (Oracle/Sybase/Informix) Plugin: CDT Mehrere Programmiersprachen zu beherrschen ist hilfreich, auch wenn man nicht immer mit den verschiedenen Sprachen arbeitet. Erfahrung aus mehreren Sprachen ist sinnvoll, um die verschiedenen Denkweisen kennen zu lernen, die mit den Programmiersprachen verbunden sind. Um wirklich objektorientiert denken zu lernen, ist es z. B. auch ratsam, eine echte OOP-Sprache wie Eiffel oder Smalltalk kennenzulernen. Wobei Smalltalk keine Sprache ist, die in Eclipse integriert werden kann. Denn Smalltalk bringt sozusagen seine eigene IDE mit. Es ist Sprache, grafische Oberfläche und eine Sammlung von Entwicklungswerkzeugen in einem. So war diese Sprache im Grunde ein Vorgriff auf ein Werkzeug, was jetzt Java und Eclipse in Kombination bieten. Der ganz große Erfolg war Small- 61

3 Unsere Werkbank, die IDE talk nicht vergönnt, weil es eine reine Interpretersprache mit einer völlig fremden Sprachsyntax und auch nicht typenstreng ist. 3.3 So funktioniert eine IDE und so Eclipse Um zu verstehen, wie man eine IDE prinzipiell nützt, sollte man wenigstens eine ungefähre Vorstellung davon haben, wie moderne Software entwickelt wird. In den Filmmachwerken Hollywoods entstehen Programme immer in den Köpfen genialer Hacker, die stets alleine in ihrem Versteck auf dem Dachboden die endlosen Programmzeilen einhämmern. Die Wirklichkeit sieht allerdings ganz anders aus. Deutschlands renommierteste Softwareschmiede SAP in Walldorf hat ca. 29.000 Mitarbeiter. Eine Anzahl, die durchaus mit der Belegschaftsstärke eines PKW-Produzenten oder Chemieriesen mithalten kann. Das zeigt deutlich, dass Software zu produzieren keine eine Ein-Mann-Tätigkeit sein kann. Softwareprojekte zählen zu den anspruchsvollsten Ingenieurleistungen der heutigen Zeit. Dementsprechend müssen sie geplant und koordiniert werden. Vor allem ist es wichtig, die Arbeit zahlreicher Mitarbeiter unter einen»hut«zu bringen. In diesem Buch geht es vorrangig darum, Java zu lernen, weshalb wir diese Probleme nur streifen. Eine gute IDE muss jedoch Möglichkeiten bieten, die Softwareentwicklung im großen Stil zu planen und durchzuführen. So wirbt Borland beispielsweise damit, dass der JBuilder vom Projektmanagement über die Projektdefinition bis zur Auslieferung alle Schritte im Entwicklungszyklus von Software unterstützt (Abbildung 3.5). Man nennt dabei die folgenden Phasen: Define Projektinitialisierung und Projektdefinition Design Entwurf der Software Develop Konkrete Programmierung an der Software Test Test und Qualitätssicherung Deploy Produktion und Erstellung des auslieferbaren Codes Manage Projektsteuerung und Projektmanagement Borland hatte bereits 2005 eine neue Version des JBuilder angekündigt, der auf Eclipse aufbauen sollte (Codename»Peloton«). Von der Leistung her sollte er dem JBuilder 2006 entsprechen, sodass zwei JBuilder-Versionen existieren. Wobei Borland verlautet haben soll, dass die Eclipse-Version des Werkzeugs favorisiert wird. In der Tat sollte eine gute IDE den größten Teil dieser Entwicklungsphasen abdecken. Eclipse bietet natürlich auch einige dieser Möglichkeiten. Schwächen gibt es im Bereich Projektmanagement, eindeutige Stärken beim Reengineering, also 62

So funktioniert eine IDE und so Eclipse 3.3 bei der Optimierung und Überarbeitung von Software. Da Eclipse jedoch durch zahlreiche neue Plugins ständig an Möglichkeiten hinzugewinnt, werden die Schwächen wohl bald behoben sein. Abbildung 3.5 JBuilder-Website Start und erster Überblick Es beginnt bereits mit dem Start. Eine IDE sollte dem Entwickler vor allem die Möglichkeit bieten, genau dort weiter zu arbeiten, wo er beim letzten Mal aufgehört hat. Zumindest beim ersten Start sollte sie umfangreiche Informationen zum Einsatz des Systems zur Verfügung stellen (Abbildung 3.6). Abbildung 3.6 Beim ersten Start von Eclipse 63

3 Unsere Werkbank, die IDE Projektverwaltung neues Projekt erstellen Programme sollten Teil eines Projekts sein, und Projekte müssen verwaltet werden. Das rührt schon daher, weil nicht jedes Projekt nur aus einem Programm besteht. In der Zeit der objektorientierten Programmierung und der modularen Programme (Plugins bei Eclipse) schon gar nicht. Prinzipiell hat man bei IDEs das Problem, wie man Projekte und Programme sowie die Dateien, aus denen sie bestehen, innerhalb der IDE und auf der Festplatte darstellt. Früher war es meist so, dass man mit sogenannten Repositories gearbeitet hat. Das sind Datenbanken, in denen alle Informationen über Projekte, Programme und den Programmfortschritt gespeichert werden. Problematisch dabei ist, dass man oft nur über die Entwicklungsumgebung Zugang zu dieser Datenbank hat. Sinnvoller schien es, einfach alle Dateien in einer Verzeichnisstruktur auf der Platte abzulegen. Eclipse besitzt deshalb eine Mixtur zwischen einer Abbildung der Projekte in Verzeichnissen und dem Speichern der Projektinformationen in einer Art Repository-Datei. So kommt es, dass Projekte bei Eclipse wie ein Dateibaum aussehen und sich auch so im Verzeichnis auf der Festplatte finden lassen. Editor-Codekomplettierung Nachdem ein Projekt eingerichtet ist, geht es natürlich ans Programmieren. Hierzu benötigt man nach wie vor einen Editor. Auch wenn es bereits mehr oder weniger erfolgreiche Versuche in eine andere Richtung gab, z. B. die grafische Programmierung unter VisualAge (siehe Abbildung 3.4). Bei IDEs hängt sehr viel von der Leistungsfähigkeit des verwendeten Editors ab. Bei Eclipse gibt es keinen Standardeditor für alle unterstützten Sprachen. Jedes Plugin richtet sozusagen einen eigenen Editor ein. Der Editor des JDT ist unglaublich mächtig und lässt kaum Wünsche offen. Eine enorme Hilfe bei der Eingabe vom Programmcode ist die Fähigkeit vieler IDE-Editoren, den Code zu vervollständigen. Ausgeklügelte Suchfunktionen helfen oft fast noch mehr, wenn es darum geht, ähnliche Stellen im bereits programmierten Teil aufzufinden, um sich daran zu orientieren. Speichern ausführen Die Speicherung des Codes sollte unmerklich im Hintergrund ablaufen. Natürlich nur, wenn es erforderlich ist, aber vor allem wenn kompiliert und ausgeführt werden soll, selbstverständlich auch wenn der Entwickler das Programm beenden möchte. Zum Speichern gehört auch die Fähigkeit, unter einem anderen Namen abzuspeichern und im Code automatisch auf den neuen Namen umzubenennen. 64

Zusammenfassung 3.4 Historie und CVS Eine sehr interessante Funktionalität ist die Historie, die es dem Programmierer möglich macht, beliebige frühere Releasestände wieder herzustellen. In gewisser Weise gehört die Undo-Funktion auch zur Historie. Ausgeklügelte Historien erlauben dem Entwickler, ganz bestimmte Teile, also markierten Code, in seiner Entstehung zu verfolgen und notfalls einen älteren Stand wiederherzustellen. CVS (Concurrent Versions System) reicht dagegen weit über eine lokale Historie hinaus. Mit CVS werden die Dateien aller Projektteilnehmer zusammengeführt und die Releasestände archiviert. Auch mit CVS ist es möglich, alte Versionsstände zu rekonstruieren. Tests und Auslieferung Es versteht sich von selbst, dass der Entwickler während der Programmerstellung immer wieder testen muss, um zu überprüfen, ob das Erstellte auch dem entspricht, was erwartet wird. Tests stützen sich heute nicht mehr nur auf eine gute Beobachtungsgabe. Längst gibt es Routinen, die den Entwickler und den Qualitätssicherer bei seinen Tests unterstützen. Das beginnt bei einem einfachen Debugger und reicht bis zu ausgeklügelten Test-Frameworks. Auch sollte die IDE ihren Beitrag leisten können. Zu guter Letzt muss eine IDE auch in der Lage sein, die erstellten Programme in eine Form zu bringen, die man ausliefern kann. 3.4 Zusammenfassung Da Eclipse eine IDE ist, galt es zunächst zu klären, was man darunter versteht. IDEs sind Entwicklungsumgebungen, die alles bereitstellen, was der Entwickler zum Schreiben von Programmen benötigt: einen Editor, einen Debugger, Startmöglichkeit für den externen Compiler und Zugriff auf die Dokumentation und die Hilfedateien. Große IDEs sind: MS.NET Framework Borland JBuilder IBM WebSphere Eclipse Eclipse verfolgt im Gegensatz zu den anderen IDEs eine neue Philosophie. Es geht nicht mehr darum, bei der Entwicklung der IDE die ganze Funktionalität zur Verfügung zu stellen, sondern nur eine Basis zu bilden für Plugins, die an Funktionalität das liefern, was der Anwender fordert. 65

3 Unsere Werkbank, die IDE Eclipse ist zwar in Java programmiert, was aber nicht bedeutet, dass man nur Java damit programmieren sollte. Es gibt eine Reihe anderer Sprachen, die sich bereits mit Eclipse»angefreundet«haben. Wir haben sie uns kurz angesehen. Abschließend haben wir verfolgt, wie eine IDE prinzipiell eingesetzt wird. 3.5 Aufgaben zum Kapitel 1. Welche Bedeutungen hat die Abkürzung IDE? 2. Was sollte eine IDE können? 3. Wie heißen die verbreitetsten IDEs? 4. Was ist das Grundkonzept von Eclipse? 5. Warum nennt man Eclipse ein Framework? 6. Welche Sprachen lassen sich mittels Eclipse-Plugins programmieren? 7. Welche Schritte im Entwicklungsprozess sollte eine IDE unterstützen? 3.6 Webseiten zum Kapitel URL http://www.java.de/link/category/9/ http://www.javamagazin.de/ http://www.eclipsemag.net/ http://www.rrze.uni-erlangen.de/dienste/ web/php/artikel/ides.shtml http://www.linux-magazin.de/artikel/ ausgabe/2001/09/python-ides/ python-ides.html http://www.yoxos.com/ http://www.java-forum.org/de/ http://www.gsug.org/ http://ladedu.com/cpp/ http://www.perl.com http://www.ruby-lang.org/en/ http://www.python.de/ http://www.eclipseproject.de/ Beschreibung Vergleich von Java-IDEs Java-Zeitschrift zu Eclipse Eclipse-Magazin Testbericht zu PHP-IDEs Python-IDEs Eclipse-Distribution Forum mit Thema»IDEs und Tools«Seiten zu Smalltalk Einführung in C++ Perl-Homepage Homepage der Sprache Ruby Deutsche Python-Homepage Deutsche Seite zu Eclipse 66

Unter Persistenz eines Objektes versteht man sein Überleben, wenn der Rechner einmal ausgeschaltet wird. Bisher haben wir unsere Objekte nur im Hauptspeicher gehegt und gepflegt. In diesem Kapitel befassen wir uns mit der Problematik, die Daten persistent zu machen, allerdings erst einmal in Bezug auf die Nutzung von Datenbanken. 15 Datenbanken in Eclipse 15.1 Einstieg in das Thema Mit Eclipse haben wir das Plugin SQL Explorer installiert. Es dient dazu, von Eclipse aus eine Datenbank zu pflegen. Um mit Datenbanken halbwegs professionell umgehen zu können, benötigt man allerdings einiges Wissen, das wiederum außerhalb von dem liegt, was man wissen muss, um Java programmieren zu können. Unter Dankenbanken stellt man sich zunächst einmal so etwas wie eine Festplatte vor. Das ist nicht ganz falsch. Bei Datenbanken geht es hauptsächlich darum, Daten zu speichern. Es gibt drei Typen von Datenbanken: die traditionelle Version, relationale und objektorientierte Datenbanken. Heute sind relationale Datenbanken vorherrschend. Während die ersten Datenbanken in erster Linie Techniken hatten, die eine optimale Speicherung von Datensätzen auf Festplatten realisierten, bieten heutige Datenbanken eine anwendungsorientierte Datenhaltung. Man arbeitete früher mit Zeigern, die Verbindungen zwischen den Datenpaketen darstellten. Heute sind relationale Datenbanken tabellenorientiert. Gleichzeitig kam mit den relationalen Datenbanken SQL auf. Der Vorläufer hieß SEQUEL (Structured English Query Language), daraus wurde die Structured Query Language (SQL), zu Deutsch: strukturierte Abfragesprache. Der Name sagt uns, dass sie vor allem dazu dienen soll, Daten aus einer Datenbank zu entnehmen. SQL ist relativ einfach zu erlernen, sie ist aber doch so umfangreich, dass wir hier nicht viel mehr als eine kurze Einführung geben können. Programmieren, ohne SQL zu können, ist eigentlich ein Unding. Sollte es also erforderlich sein, können Sie sich recht einfach anhand von Literatur oder Internetseiten (siehe Ende dieses Kapitels) SQL selbst beibringen. Es gibt zwar objektorientierte Datenbanken, und sie sind für die OOP ideal, weil man bei 509

15 Datenbanken in Eclipse ihnen direkt die ganzen Objekte ablegen kann. Aber sie halten sehr viele Daten mehrfach und sind deshalb nicht performant. Eigentlich spielen sie im praktischen Einsatz keine große Rolle. Ein schönes praktisches Beispiel für eine relationale Datenbank ist das Produkt MS Access. Falls Sie über das Programm verfügen, sollten Sie es nicht versäumen, folgende Ausführungen damit praktisch nachzuvollziehen. 15.2 Spielereien mit Access Grundlage der relationalen Datenbanken sind, wie erwähnt, die Tabellen. Eine Tabelle Kunde beispielsweise kann die Spalten Name, Vorname, Wohnort usw. enthalten. Nach dem Start von Access wählt man entweder Leere Datenbank erstellen, oder man lässt sich von einem Assistenten bei der Erzeugung der Datenbank KundenDB helfen (Abbildung 15.1). Abbildung 15.1 Erstellen einer leeren Access-Datenbank Bei der Erstellung der Tabelle hat man wieder mehrere Möglichkeiten. In der Entwurfsansicht gibt man die Spaltennamen und die gewünschten Typen an (Abbildung 15.2). Ist man fertig, wird die Tabelle auf den Namen Kunde getauft und ein Primärschlüssel erstellt. Schon hat man eine Tabelle, in die man Werte eingeben kann. Das Ganze kann man auch in SQL beschreiben. Es sieht dann etwa so aus: CREATE TABLE KUNDE ( ID NUMBER NOT NULL, 510

Spielereien mit Access 15.2 NAME VORNAME PLZ ORT STRASSENR TEL HANDY EMAIL ) CHAR (24) NULL, CHAR (16) NULL, CHAR (8) NULL, CHAR (24) NULL, CHAR (24) NULL, CHAR (24) NULL, CHAR (24) NULL, CHAR (40) NULL Abbildung 15.2 Felder der Tabelle festlegen Sie werden sich fragen, wie Sie aus diesen Anweisungen mit Access eine Tabelle erstellen sollen. Das ist eigentlich relativ einfach. Sie müssen die SQL-Anweisung nur als Datendefinitionsabfrage ausführen. Hierzu wählen Sie zunächst einmal im Menü Einfügen Abfrage aus. Wechseln Sie in die Entwurfsansicht. Schließen Sie den folgenden Dialog (falls ein Dialog kommt) und wechseln Sie auf die SQL-Ansicht Ansicht SQL-Ansicht. In dem großen Editor-Fenster geben Sie die SQL-Anweisung ein. Falls Sie bereits eine Tabelle Kunde haben, schreiben Sie einfach: CREATE TABLE KUNDE2 ( Danach schließt man den Editor einfach und lässt die Abfrage speichern. Wählt man nun Ansicht Datenbankobjekte Abfragen und klickt sie mit der RMT an, kann man sie ausführen lassen, und die gewünschte Tabelle wird erzeugt (Abbildung 15.3). 511

15 Datenbanken in Eclipse Abbildung 15.3 Erzeugen einer neuen Tabelle per Abfrage Man findet die Tabelle in der Tabellenübersicht. Sie sollte alle angegebenen Spalten besitzen. Jetzt haben wir bereits unsere erste SQL-Anweisung kennengelernt. Um genau zu sein, es ist eine DDL(Data Definition Language)-Anweisung. SQL trennt man nämlich eigentlich in zwei Sprachen, in die erwähnte DDL und in eine DML (Data Manipulation Language). Die Namen sind selbstredend und deuten an, was man mit den Sprachen macht. Die wichtigsten Befehle der DDL sind: Befehl create table create index drop table drop index truncate alter table add constraint alter table Bedeutung Erzeugt eine Tabelle Erstellt einen Index Löscht eine Tabelle Löscht einen Index Löscht alle Zeilen einer Tabelle Setzt eine Integritätsregel für eine Tabelle fest Ändert Spalten, fügt Spalten an Tabelle 15.1 Die wichtigsten DDL-Befehle Die wichtigsten Befehle der DML sind: Befehl insert update delete select commit work rollback Bedeutung Fügt eine Zeile in eine Tabelle ein Ändert die Zeile/n einer Tabelle Löscht eine Zeile/n einer Tabelle Liest in der Datenbank Daten aus Tabellen oder Views Schreibt alle Änderungen auf die Platte Setzt alle Änderungen seit dem letzten commit zurück Tabelle 15.2 Die wichtigsten DML-Befehle 512

Spielereien mit Access 15.2 Access lässt sich übrigens direkt aus Eclipse starten. Man kopiert die Datenbankdatei (z. B. KundenDB) ins src-verzeichnis des Projekts, das auf die Datenbank zugreifen soll. In Eclipse aktualisiert man das Projekt: RMT auf das Projekt Refresh oder (F5). Will man eine Änderung an der Datenbank durchführen, startet man Access einfach mit einem Doppelklick auf die Datenbankdatei im Projekt (Abbildung 15.4). Abbildung 15.4 Access direkt aus Eclipse starten Nachdem wir nun die erste Tabelle haben, geht es weiter. Daten bleiben nicht auf ewig festgeschrieben, die Strukturen leider auch nicht. Wenn neue Kommunikationsmöglichkeiten entstehen, oder wir beispielsweise nur eine Telefonnummer vorgesehen haben, viele Kunden jedoch mehr als eine Nummer besitzen, müssen wir die Tabelle erweitern. Das heißt zunächst einmal, eine Spalte anzufügen. Machbar ist das, wie aus unserer Tabelle (Tabelle 15.1) hervorgeht, mit alter table. Es bedeutet aber auch, dass alle bestehenden Datensätze um einen Wert in der neuen Spalte ergänzt werden müssen. Versäumen wir das, kann es zu schweren Problemen in unseren Programmen, die auf die Datenbank zugreifen, kommen. Genau an dieser Stelle versagten die ersten Datenbanken. Die relationalen Systeme lieferten eine gangbare Lösung. Man setzt einfach die einzelnen Tabellen miteinander in Beziehung und bildet Relationen zwischen den Daten der Datenbank. Ein Kunde kann beispielsweise zwei Telefonnummern haben. Tragen wir sie in die Tabelle Kunde ein, müssen wir zwei Datensätze Kunde schreiben und alle Daten, bis auf die Telefonnummer, verdoppeln. Ein sehr unrentables Verfah- 513

15 Datenbanken in Eclipse ren. Erzeugen wir dagegen eine neue Tabelle TELNR, können wir die Tabelle Kunde und das ist der wichtigste Punkt völlig unverändert lassen. Erstellen wir also eine neue Tabelle. Ihre erste Spalte soll die ID der Kundentabelle enthalten, damit wir eine Beziehung aufbauen können. Also heißt sie KUNDE_ID. Dann folgt die Spalte für die Telefonnummer. Versuchen wir es einmal alleine mit SQL: CREATE TABLE TELNR( ID NUMBER NOT NULL, KUNDE_ID NUMBER NULL, TELEFON CHAR (24) NULL ) Nachträglich müssen wir allerdings in Access das ID-Feld mit AutoWert belegen. So haben wir das Problem natürlich noch nicht gelöst. Wir müssen eine Beziehung zwischen der ID in der Tabelle Kunde und dem Feld Kunde_ID in der Tabelle TelNr herstellen. Das gelingt in Access mittels Extras Beziehungen... In einem Dialog können wir die beiden Tabellen auswählen, oder wir klicken mit der RMT in das leere Feld und nutzen Tabelle anzeigen. Beide Tabellen werden markiert und mittels der Schaltfläche Hinzufügen aufgenommen. Nun klicken wir die ID in der Tabelle Kunde an und ziehen sie zu KUNDE_ID. Im Dialog Beziehungen bearbeiten klicken wir die Schaltfläche Verknüpfungstyp... an. Als Eigenschaft wird ausgewählt:»beinhaltet alle Datensätze aus Kunde und nur die Datensätze aus TELNR, bei denen die Inhalte der verknüpften Felder gleich sind«(abbildung 15.5). Die Auswahl wird bestätigt. Abbildung 15.5 Verknüpfung zwischen zwei Tabellen aufbauen 514

Spielereien mit Access 15.2 Nun sollte die Verknüpfungslinie eine Pfeilspitze bei Kunde_ID haben. Wir schließen und bestätigen, danach kann die Verknüpfung genutzt werden. Wir öffnen die Tabelle Kunde über Ansicht Datenbankobjekte Tabellen und klicken Kunde doppelt an. Tragen Sie einen ersten Kunden ein. Zum Eintragen der Telefonnummer klickt man vorne auf das kleine Pluszeichen und trägt die Nummer ein. Wie zu erkennen ist, kann man nun beliebig viele Nummern eingeben (Abbildung 15.6). Abbildung 15.6 Verknüpfte Tabellen füllen Die Access-Datenbank KundenDB findet man auf der DVD unter \Zum_Buch\ kap-0015\access-start. Um Access mit Java nutzen zu können, müssen wir einen ODBC-Treiber einrichten. Dazu wählt man Start Systemsteuerung und dann das Symbol Leistung und Wartung Verwaltung Datenquellen (ODBC). Hinzufügen... anklicken und Microsoft Access-Treiber (*.mdb) auswählen. Fertig stellen anklicken und als Datenquellenname CarlipsoDB eintippen. Man wählt die Datenbank KundenDB.mdb aus, die man mit Access eben erstellt hat. Name und Passwort braucht man nicht anzugeben. Nach den Bestätigungen ist die ODBC-Verbindung zur Datenbank erzeugt (Abbildung 15.7). Abbildung 15.7 ODBC-Treiber einrichten 515

15 Datenbanken in Eclipse Nun kann man darangehen, auf die Datenbank aus Eclipse mit SQL Explorer zuzugreifen. Da wir SQL Explorer bereits installiert haben, ruft man die Eclipse- Installation auf, die den SQL Explorer beinhaltet. Das Plugin hält sich auf den ersten Blick diskret im Hintergrund. Man kann allerdings überprüfen, ob es installiert ist, indem man Hilfe aufruft. Ein neuer Menüpunkt (About SQL Explorer) zeigt uns, dass unser DB-Plugin noch verfügbar ist (Abbildung 15.8). Wir öffnen die zugehörige Perspektive über Fenster Perspektive öffnen Andere... SQL Explorer. Die Perspektive ist zwar unübersichtlich, weil sie viele Sichten vereint, aber sinnvoll (Abbildung 15.9). Abbildung 15.8 SQL Explorer ist installiert. Abbildung 15.9 Zeigt viel, ist aber (noch) leer 516

Die Einrichtung von SQL Explorer 15.3 15.3 Die Einrichtung von SQL Explorer Klicken wir in die Sicht Connection links oben mit der RMT New Connection Profile... Als Name für das Profil sollten wir vielleicht CarlipsoDB nutzen. Der Treiber ist zwar eigentlich eine JDBC ODBC Bridge, aber wir können ihn nicht einfach darauf einstellen. Der SQL Explorer muss wissen, wo der Treiber liegt. Das können wir ihm nur über die New Driver... Schaltfläche mitteilen. Im folgenden Dialog geben wir als Name JDBC Treiber an. Dann gilt es, den Pfad anzugeben, in dem die Jar-Datei mit dem Treiber zu finden ist. Der liegt unter der JRE in der Datei rt.jar. Diese Datei geben wir unter dem Reiter Extra Class Path mit der Schaltfläche Add an (Abbildung 15.10). Abbildung 15.10 Pfad und Treiber angeben Mit der Schaltfläche List Drivers nach dem Treiber in der rt.jar suchen zu lassen, ist nicht sehr sinnvoll und der Rechner»hängt sich eventuell auf«. Man kann aber den Treiber direkt im Driver Class Name-Feld angeben: sun.jdbc.odbc.jdbcodbcdriver (Abbildung 15.10). Es ist erforderlich, im Feld Example URL die URL zur Datenbank anzugeben, um die OK-Schaltfläche klicken zu können. Sie lautet: jdbc:odbc:carlipsodb. Nun braucht man im vorigen Dialog nur noch den erstellten Treiber auszuwählen. Den Nutzernamen und das Passwort lässt man weg, weil sie unter Access auch nicht festgelegt wurden (Abbildung 15.11). 517

15 Datenbanken in Eclipse Abbildung 15.11 Das Verbindungsprofil Es kann jedoch sein, dass der angelegte Treiber nicht angezeigt wird. Wenn man die Funktion noch einmal aufruft, ist er in den meisten Fällen da. Nach dem OK wird die Verbindung im Connections-Fenster angezeigt. Mit einem Doppelklick ruft man den Verbindungdialog auf (Abbildung 15.12). Abbildung 15.12 Verbindung aufbauen Nachdem mit OK bestätigt wurde, wird mit der Datenbank eine Verbindung aufgebaut. Sichtbar wird es schon durch die Anzeige der Struktur in der Database Structure-Sicht. Die Bestandteile werden in Form eines Baums angezeigt. Man kann sich alles bis zu den Spalten der Tabellen ansehen (Abbildung 15.13). Der SQL Editor ermöglicht uns nun, SQL-Anweisungen an die Datenbank zu senden. Es ist die Sicht, die den Java-Editor in dieser Perspektive ersetzt hat. Versuchen wir es mit einer ganz einfachen Anweisung. select * from Kunde 518

Die Einrichtung von SQL Explorer 15.3 Abbildung 15.13 Die Datenbank-Struktur Machen Sie es wie im Scrapbook, markieren aber dann nicht mit RMT sondern mit dem Männchen in der Icon-Leiste. Die SQL-Abfrage soll uns nun den gesamten Inhalt der Tabelle Kunde ausgeben. In der Tat wird in der SQL Results die Tabelle angezeigt (Abbildung 15.14). Abbildung 15.14 Per»SQL-Statement«Daten aus der Tabelle lesen 519

15 Datenbanken in Eclipse Versuchen wir etwas mehr. Tragen wir doch einmal einen neuen Kunden mittels SQL ein. INSERT into Kunde values (5, 'Prof', 'Berger', 'Herbert', 'Frankfurter Str 12', '02524', 'Schlangenbad', '034634634', '87438278', 1, '23.2.1961') Ein erneutes select * from Kunde sollte den neuen Kunden ebenfalls zeigen (Abbildung 15.15). Abbildung 15.15 Einen Kunden eintragen und ansehen 15.4 Allgemeine Betrachtungen zu Datenbanken Wenn auch der erste Eindruck sein könnte, bei relationalen Datenbanken handele es sich nur um Tabellen mit Daten darin, so ist dem nicht so. Datenbanken sind weit mehr. Neben den eigentlichen Daten bestehen sie aus Benutzerrechten, Regeln, Funktionen, Zugriffsbedingungen und Zugriffsberechtigungen, Tabellen und den Beziehungen zwischen den Tabellen, die wir bereits kennengelernt haben. Datenbanken dienen dazu, umfangreiche Datenmengen zu speichern, bereitzuhalten und aufbereitet zurückzuliefern und das für mehrere Anwender gleichzeitig. Datenbanken sind also wahrhaftig nicht einfach nur Datenspeicher, sondern verwalten auch Regeln, die in Beziehungen zu den Daten stehen. So kann man bei- 520

Allgemeine Betrachtungen zu Datenbanken 15.4 spielsweise dafür sorgen, dass nur bestimmte Benutzer gewisse Daten lesen oder ändern dürfen. Man kann aber auch sicherstellen, dass die Daten gewissen Konsistenzbedingungen genügen. Beispielsweise sollen die gespeicherten Adressen entweder gar keine oder aber eine fünfstellige Postleitzahl besitzen, die nur aus Ziffern besteht. Sogenannte Datenbank-Managementsysteme (DBMS) verwalten die Daten der Datenbanken. Nur über das DBMS wird auf die Datenbank zugegriffen. Das DBMS prüft und kontrolliert dabei und führt komplexe Operationen im Auftrag der Anwendungen aus. Wie das DBMS dabei vorgeht, interessiert die Anwendungsprogramme nicht. Sie haben nicht einmal direkten Kontakt zum DBMS, weil meist noch ein ODBC-Treiber dazwischen»sitzt«, der die Wünsche der Anwendungsprogramme entsprechend umsetzt. Datenbank-Managementsysteme nutzen eigene Regeln, um Redundanzen in den Daten gering zu halten. Erst bei der Rücklieferung der Daten werden sie wieder so zusammengestellt, wie es sich gehört. 15.4.1 Zugriffssysteme und Datenbank-Server Datenbanken werden heute viel häufiger in Form sogenannter Datenbank-Server genutzt als in der Form von Standalone-Datenbanken, wie wir bis jetzt Access genutzt haben. Wie kann man sich das vorstellen? Im Grunde ist es nur eine Datenbank mit DBMS und angehängtem Server, der dazu dient, die Daten über das Netz zahlreichen Nutzern zur Verfügung zu stellen. Wenn wir von Datenbanken sprechen, meinen wir eigentlich den Plattenplatz, auf dem ein DBMS die Daten einer Datenbank ablegt, oder wir meinen das DBMS selbst. Schnittstellen zu einer Datenbank sind eigentlich immer nur Schnittstellen zum DBMS. Man spricht jedoch üblicherweise nur von Datenbankschnittstellen. Die Schnittstellen zu den Datenbanken über das DBMS sind aus verschiedenen Schichten (Layer) aufgebaut. Viele dieser Schnittstellen sind Remoteschnittstellen, also netzwerkfähig. DBMS verwenden dabei meist das TCP/IP-Protokoll, das uns vom Internet geläufig ist. Genau wie unter Access werden auch über die Netzwerk-Connection die Befehle oder Kommandos in Datenbanksprachen abgesetzt. Um über das Netz Daten zu senden, müssen diese serialisierbar sein. Tabellen sind aber nichts Serielles. SQL aber kann man als fortlaufenden Zeichenstrom darstellen. 521

15 Datenbanken in Eclipse Natürlich verfügt jede Datenbank über eine eigene Schnittstelle. Das bedeutet, dass sich der genaue Aufbau der Kommandos und vor allem die Übertragung über das Netzwerk erheblich unterscheiden selbst bei der Verwendung von SQL. Wir werden das noch feststellen, wenn wir bald SQL-Befehle für MySQL erzeugen. Sie unterscheiden sich ein wenig von dem SQL, das von Access verstanden wird. Zu den Datenbank-Servern gibt es Dienstprogramme, die über diese Schnittstellen mit der Datenbank kommunizieren können. Wir werden für MySQL eine Reihe von Dienstprogrammen benötigen, die alle über einen Remotezugriff auf die Datenbank zugreifen. Meist ist ein Dienstprogramm für bestimmte Aufgaben gedacht, beispielsweise für die erste Einrichtung. Andere Dienstprogramme bieten Zusatzfunktionen, die man für die Administration (Anlegen von Benutzern usw.) benötigt. Manche Datenbanken bieten solche Zusatzfunktionen auch über SQL an. Bei der Datenbank Oracle findet man beispielsweise einen so erweiterten SQL-Dialekt. Die Kommandos sind so aufgebaut, dass sie den SQL-Standards genügen und ihnen nicht widersprechen. Es handelt sich dabei um sogenannte SQL-Erweiterungen. Da man mit Java jedoch datenbankunabhängig programmieren kann, sollte man solche speziellen SQL-Befehle möglichst wenig einsetzen. Man erspart sich so Probleme bei der Nutzung anderer Datenbanken. SQL sorgt für eine gewisse Unabhängigkeit auf der Anwendungsebene, die aber nur gewährleistet ist, wenn man die genormten Befehle einsetzt, die von allen Datenbanken verstanden werden. Die Unabhängigkeit auf der Programmierebene wird durch eine andere Art von Schnittstellen gewährleistet. Es sind eine Reihe von Funktionen, die aus einer Programmiersprache aufgerufen werden können. Die Schnittstellen, die diese Vereinheitlichung bewirken, sind ODBC und JDBC. ODBC, OpenDataBaseConnectivity, beschreibt, wie Programme mit der Datenbank (eigentlich dem DBMS) kommunizieren sollen. ODBC ist eigentlich eine Funktionsbibliothek, die SQL bereits voraussetzt. ODBC regelt aber auch eine Ebene tiefer den Verbindungsaufbau zu einer Datenbank und berücksichtigt dabei die Benutzerauthentifizierung und andere Sicherheitsmechanismen. JDBC ist, wie wir bereits wissen, das Gegenstück für Java. Selbst wenn man aufgrund des Einsatzes von ODBC und JDBC davon ausgeht, dass alles Genormte problemlos zusammenpasst, ist das in der Praxis eigentlich nie so. Falls Sie den Fehler beim Zugriff von SQL Explorer auf unserer Access- Datenbank auch hatten, haben Sie diese Praxis bereits eingehend kennengelernt. Leider ist es oft so, und es kostet oft mehr Mühe als erforderlich, die Datenbankzugriffe halbwegs brauchbar zu realisieren. 522

MySQL 15.5 15.5 MySQL 15.5.1 MySQL installieren Auf der DVD befindet sich eine Version von MySQL für Windows. Es ist zwar nicht so nutzerfreundlich wie Access, entspricht aber weit mehr der üblichen Art, einen Datenbank-Server zu nutzen. Die Installationsroutine befindet sich unter \software\datenbank und heißt: mysql-essential-4.1.9-win32.msi. Man startet sie mit einem Doppelklick. Zuerst gibt es den üblichen Begrüßungsdialog zu sehen (Abbildung 15.16). Abbildung 15.16 MySQL-Setup Nun kann man auswählen, ob man eine Installation mit den üblichen Funktionalitäten (Standard) durchführt, oder ob man alles installiert oder eine benutzerdefinierte Installation wählt (Abbildung 15.17). Abbildung 15.17 Auswahl des Setup-Typs 523

15 Datenbanken in Eclipse Wir wählen die Standardinstallation (Typical). Die Installation wird vorbereitet, und die Dateien werden kopiert (Abbildung 15.18). Abbildung 15.18 Die Installation läuft. Jetzt bietet MySQL an, einen Account auf MySQL.com einzurichten, damit man immer Zugriff auf die neuesten Versionen hat. Das ist zwar durchaus sinnvoll, wird hier jedoch nicht näher beschrieben. Mit Skip Sign-Up lässt sich dieser Punkt überspringen (Abbildung 15.19). Abbildung 15.19 Account einrichten übersprungen Der nächste Dialog fragt, ob man eine Konfiguration des MySQL-Servers durchführen möchte (Abbildung 15.20). 524

MySQL 15.5 Abbildung 15.20 Die Konfiguration starten Man lässt den Merkerkasten aktiviert und wählt die Schaltfläche Finish an. Es wird in einem weiteren Dialog auf den Start der Konfiguration hingewiesen. Anschließend folgt eine Abfrage, ob eine detaillierte Konfiguration oder die Standardkonfiguration durchgeführt werden soll (Abbildung 15.21). Hier wird die Standardkonfiguration gewählt. Abbildung 15.21 Auswahl der Standardkonfiguration Des Weiteren fragt MySQL, ob es als Windows-Service laufen soll und wie der Service heißt. Außerdem kann man den Pfad setzen lassen, damit man die Clientund Service-Routinen direkt im Kommandozeilen-Fenster starten kann, ohne die Verzeichnisnamen angeben zu müssen. Das wird natürlich aktiviert (Abbildung 15.22). 525

15 Datenbanken in Eclipse Abbildung 15.22 Als Service einrichten Im nun folgenden Account-Dialog gibt man ein Passwort für den Root-Zugang zur Datenbank an. Den Root-Zugang über das Netzwerk braucht man meist nicht zu aktivieren, weil man wahrscheinlich nur einen Rechner zur Verfügung hat, um die Datenbank zu nutzen. Zusätzlich sollte man aber den anonymen Zugang aktivieren (bei Abbildung 15.23 nicht geschehen). Abbildung 15.23 Das Root-Passwort festlegen Im nächsten Schritt wird die Konfiguration schließlich ausgeführt (Abbildung 15.24). 526

MySQL 15.5 Abbildung 15.24 Übernahme der Konfiguration Wichtig ist heutzutage, die lokale Kommunikation an der Firewall vorbei zu führen. Dazu sollte man den genutzten Port auf der lokalen Maschine freigeben. Das kann etwas problematisch werden. Und falls es später Probleme mit dem Zugriff gibt, kann es eventuell an der Firewall liegen (Abbildung 15.25). Abbildung 15.25 Die Firewall spielt auch mit Zum Schluss muss noch einmal die Schaltfläche Finish angeklickt werden. Die Installation ist abgeschlossen. 15.5.2 Die ersten Experimente mit einem Datenbank-Server Nun müssen wir irgendwie Kontakt zu dem Server auf unserem Rechner aufnehmen. Um zu testen, ob der Server aktiv ist, öffnet man die Eingabeaufforderung und gibt folgendes Kommando ein: mysqladmin -u root -h localhost p ping 527

15 Datenbanken in Eclipse Zurück kommt zunächst nur ein: Enter password: Geben Sie das festgelegte Passwort ein. Als Antwort von MySQL sollte nun die Meldung»mysqld is alive«kommen. Sollte eine Fehlermeldung erscheinen, ist irgendeine Einstellung nicht in Ordnung oder die Firevall fängt alles ab. Es kann aber auch sein, dass der Server gar nicht läuft. In Windows bedeutet das, dass man bei den Diensten nachsieht: Start-Icon Systemsteuerung Verwaltung Dienste. In der Liste der Dienste sollte sich ein Eintrag MySQL finden lassen. Ist er nicht gestartet, kann er mit den Links neben der Tabelle gestartet werden. Hier lässt er sich auch herunterfahren, wenn einmal Änderungen an den Einstellungen (ini- Datei) erforderlich sind. Der Server kann aber auch per mysqladmin heruntergefahren werden. Lassen Sie die Dienste offen. Geben Sie in der Eingabeaufforderung folgendes Kommando ein: mysqladmin -u root -h localhost -p shutdown An der Anzeige in der Dienste-Liste läßt sich verfolgen, wie der Dienst nun beendet wird. Spätestens wenn man im Dienstedialog den Menüpunkt Aktion Aktualisieren wählt, sollte das»gestartet«im Status verschwinden. Bei mysqladmin handelt es sich sozusagen um die Admin-Konsole. Man kann den Dienst nun entfernen. Das gelingt mit folgendem Befehl. mysqld-nt remove Nun sollte der Dienst aus der Liste der Dienste verschwunden sein. Man sollte in der Eingabeaufforderung den Dienst auch wieder installieren, und zwar mit: mysqld-nt -install Allerdings ist es sinnvoll, dies nur aus dem Verzeichnis zu tun, in dem die Datei mysqld-nt liegt, oder den Pfad absolut angeben. Starten Sie den Server-Dienst wieder über den Link an der Dienste-Liste. Was mysqladmin noch bietet, ist ein kleiner Status, der die nötigsten Informationen zum Server liefert. Man ruft ihn auf mit: mysqladmin -u root -h localhost -p status Wir werden zwar in erster Linie mit dem SQL Explorer aus Eclipse heraus am Server arbeiten, es ist aber vorteilhaft, wenn man auch die Tools kennt, die für 528

MySQL 15.5 die Pflege des Systems gedacht sind. Ganz wichtig ist der sogenannte Client mysql. Er dient dazu, remote auf die Datenbank zuzugreifen. Dabei funktioniert er wie ein zeilenorientiertes Programm und erlaubt uns, SQL-Befehle an die Datenbank zu schicken. mysql -u root -h localhost -p Statt des»dos-prompts«erhält man ein Prompt, das anzeigt, dass man sich im Client-Programm befindet. mysql> Vor dem Prompt stehen noch einige Begrüßungsworte, aus denen hervorgeht, dass wir jeden SQL-Befehl mit einem Semikolon abschließen müssen. Mit der Eingabe von help kann man sich einen Überblick über die verfügbaren Kommandos verschaffen. Doch wir wollen uns natürlich die Datenbank selbst ansehen. Ist überhaupt eine Datenbank vorhanden? Die Entwickler von MySQL haben natürlich eine kleine Testdatenbank mitgeliefert. Man kann sich die Datenbank test und die Datenbank mysql ansehen. Um auf eine Datenbank zuzugreifen, muss man sie zuerst aktivieren, das gelingt mit dem Befehl USE. mysql> USE mysql; Der SQL-Befehl, um sich eine Datenbank oder besser gesagt eine Liste der darin enthaltenen Tabellen anzusehen, lautet: mysql> SHOW TABLES; Abbildung 15.26 Tabellen der Datenbank mysql 529

15 Datenbanken in Eclipse 15.5.3 Datenbanken erzeugen Wir wollen nun zunächst eine eigene Datenbank erzeugen. mysql> CREATE DATABASE Carlipso; Um diese neue Datenbank zu nutzen, müssen wir sie wieder aktivieren. mysql> USE carlipso; Eine Anzeige der Tabellen mit SHOW TABLES darf natürlich noch nichts anzeigen. Auch das wollen wir ändern. Legen wir die Tabelle Kunde an. Der Editor funktioniert so, dass man mittels der Return-Taste in eine neue Zeile wechselt. Am Ende wird mit einem Semikolon abgeschlossen. mysql> CREATE TABLE kunde( -> id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, -> titel CHAR(16) NULL, -> name CHAR(24) NULL, -> vorname CHAR (24) NULL, -> strassenr CHAR (24) NULL, -> plz CHAR (5) NULL, -> ort CHAR (25) NULL, -> tel CHAR(25) NULL, -> handy CHAR (25) NULL, -> geschlecht BINARY, -> geburtsdatum CHAR (25) NULL, -> PRIMARY KEY(id), -> INDEX(name, plz, ort)); Die einzelnen Typen findet man in der API-Dokumentation unter JDBC sehr schön erklärt (in Englisch). Der Pfad innerhalb der Dokumentation ist \docs\ guide\jdbc\getstart\gettingstartedtoc.fm.html. Die Tabelle ist rasch angelegt (Abbildung 15.27). Mit desc kunde kann man sie sich anschauen. Mit drop Table kunde; hat man die Tabelle aber auch genauso rasch wieder gelöscht. Aber wir wollen wenigstens einen Datensatz eintragen. Versuchen wir es mit unserem Herrn Berger. mysql> INSERT into kunde values ( -> 1, 'Prof', 'Berger', 'Herbert', -> 'Frankfurter Str 12', -> '02524', 'Schlangenbad', -> '034634634', '0187438278', true, '23.2.1961'); 530

Eclipse und MySQL 15.6 Abbildung 15.27 Neu angelegte Tabelle anzeigen Diesen ersten Datensatz kann man sich bereits mit dem Befehl select * from kunde; anschauen. Es lassen sich auch mehrere Datensätze mit einer into-anweisung einstellen. mysql> INSERT INTO kunde VALUES -> (1, '', 'Brunninger', ), -> (2, '','Müller', ), -> (3, 'Ing','Beerg', ); Gelöscht werden Datensätze mit mysql> DELETE FROM kunde WHERE id = 2; oder alle Datensätze in einer Tabelle mit mysql> DELETE FROM kunde; 15.6 Eclipse und MySQL Da wir den SQL Explorer bereits mit Access genutzt haben, sollte es jetzt ein Einfaches sein, mit dem Plugin auf den Datenbank-Server aufzusetzen. Öffnen wir die SQL Explorer-Perspektive Fenster Perspektive öffnen Andere... und SQL Explorer. Für MySQL benötigen wir allerdings einen anderen JDBC-Treiber. Er befindet sich auf der DVD zum Buch unter \Software\Datenbank\Driver und heißt mysql-connector-java-5.0.4-bin.jar. Man kopiert ihn am besten in das Eclipse- Verzeichnis der Eclipse-Installation mit dem SQL Explorer-Plugin. Bei der neu zu erstellenden Konfiguration wird er natürlich unter New Driver in Extra Class Path mit Add angegeben. Jetzt kann man mit der Schaltfläche List Drivers den Treiber suchen lassen und im Feld Driver Class Name sollte man dadurch 531

15 Datenbanken in Eclipse com.mysql.jdbc.driver auswählen können. Ins Feld Server URL kommt jdbc:mysql://localhost:3306/carlipso. Nun kann man auch Name und Passwort nutzen. Als Name wird man root eingeben; das zugehörige Passwort ist auch erforderlich. Mit einem Doppelklick auf der erstellten Connection wird der Verbindungsaufbau gestartet. Zunächst wird in der rechten Database Structure View die Datenbank mit der Tabelle kunde angezeigt. Die Tabelle kann wie ein Verzeichnis aufgeklappt werden. Abbildung 15.28 Eclipse riskiert einen Blick auf MySQL. Um einen Kunden zu erfassen, müssen wir wieder den SQl-Editor des SQL Explorers bemühen. Inzwischen kennen wir uns ja bereits ein wenig damit aus. Sie sehen auch, dass im Bereich der Datenbanken auf Kenntnisse in SQL nicht verzichtet werden kann. Versuchern wir also unser Glück mit MySQL und folgender Zeile: INSERT INTO kunde VALUES (2, '', 'Brunninger', 'Isolde', 'Hauptstrasse 10', '12603', 'Berlin ', '0245 334588', '', false, '22.07.1955'); Es kann sein, dass wir das Ergebnis nicht gleich zu sehen bekommen. Dann klicken wir mit der RMT auf MySQL in der Sicht Database Structure und dann auf Refresh. Um den Inhalt der Tabelle zu sehen, müssen wir dort auf den Tabellennamen einen Doppelklick ausführen (Abbildung 15.29). 532

Eclipse und MySQL 15.6 Abbildung 15.29 Daten in Tabelle einfügen SQL Explorer bietet weitere Editiermöglichkeiten. Klickt man mit der RMT auf den Datenbanknamen in der Database Structure, kann man über das Menü eine SQL-Anweisung (Generate CREATE TABLE Script) zum Erzeugen der aktuellen Tabelle generieren lassen. Wir versuchen es einmal und verwenden dieses Script, um eine neue Tabelle aufzubauen. Erzeugen Sie die folgenden Spalten: ID, Marke, Modell, Fahrzeugart, Baujahr, Leistung, Kilometerstand, Getriebeart, Kraftstoff, Farbe, Ausstattung. Überlegen Sie jeweils genau, welchen Typ Sie nehmen müssen. Die Abbildung 15.30 zeigt eine mögliche Lösung. Das ganze Script sieht so aus: CREATE TABLE `Kfz` ( `id` tinyint(3) unsigned NOT NULL auto_increment, `Marke` char(64) default NULL, `Modell` char(64) default NULL, `Fahrzeugart` char(32) default NULL, `Baujahr` char(25) default NULL, `Leistung` tinyint(3) default NULL, `Kilometerstand` int(6) default NULL, 533

15 Datenbanken in Eclipse `Getriebart` char(25) default NULL, `Kraftstoff` char(25) default NULL, `Farbe` binary(25) default NULL, `Ausstattung` char(32) default NULL, PRIMARY KEY (`id`), KEY `Modellart` (`marke`,`model`,`fahrzeugart`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Abbildung 15.30 Tabelle»Kfz«anlegen Diese Lösung benötigt eine weitere Tabelle für die Ausstattung. Sie muss die ID des Kfz, dazu einen Namen und eine Beschreibung sowie den Preis als Felder enthalten (Abbildung 15.31). Das Script dazu lautet: CREATE TABLE `Ausstattung` ( `id` tinyint(3) unsigned NOT NULL auto_increment, `kfz_id` tinyint(3) unsigned default NULL, `Name` char(32) default NULL, `Beschreibung` char(255) default NULL, `Preis` decimal(10) default 0, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 534

Zusammenfassung 15.7 Abbildung 15.31 Tabelle»Ausstattung«erzeugen 15.7 Zusammenfassung Relationale Datenbanken gehören heute fast zu jeder Anwendung. Man speichert in ihnen alles: von einfachen Ganzzahlen bis zu Bildern und Objekten. Es gibt zwar objektorientierte Datenbanken, aber sie haben sich nie richtig durchsetzen können. Als gutes Beispiel für eine nutzerfreundliche relationale Datenbank kann Access dienen. Es erlaubt auf einfache Weise eine recht detaillierte Konstruktion von Datenbanken. Wir haben damit eine Kundendatenbank aufgebaut. Sie enthielt zwar lediglich eine Tabelle, hat uns aber gezeigt, wie man Tabellen anlegt und befüllt. Vor allem aber diente sie zu einer Einführung in SQL, der weltweit eingesetzten Datenbanksprache. Eigentlich besteht sie aus zwei Sprachen, der DDL und der DML. Die wichtigsten Befehle der beiden Sprachen haben wir uns in Übersichten angeschaut. Nachdem mit Access eine minimale Datenbank aufgebaut war, wurde das Plugin SQL Explorer in Eclipse konfiguriert, sodass man damit auf die Datenbank zugreifen konnte. Ganz entscheidend ist dabei die Einrichtung eines JDBC-Treibers, weil er die Verbindung zum ODBC-Treiber von Access aufbaut. 535

15 Datenbanken in Eclipse Nachdem wir uns mit Datenbanken im Allgemeinen beschäftigt haben, wurde ein Datenbank-Server eingerichtet. Er nennt sich MySQL und lag in einer Version für Windows vor. Datenbank-Server werden über eine Remoteverbindung gewartet, deshalb benötigen sie zusätzliche Routinen. Für MySQL gibt es den Client mysql.exe und das Wartungstool mysqladmin.exe. Auf dem Server richteten wir die Datenbank Carlipso ein und realisierten auf ihr auch eine Tabelle Kunde. In einem letzten Schritt verbanden wir auch hier das SQL Explorer-Plugin mit der Datenbank und pflegten sie aus Eclipse heraus. Das ging bis zum Anlegen von neuen Tabellen und dem Eintragen von Datensätzen. Im nächsten Kapitel werden wir aus unserem Java-Programm heraus auf die Datenbanken zugreifen. 15.8 Aufgaben zum Kapitel Theorie 1. Welche Arten von Datenbanken haben wir in diesem Kapitel genannt? 2. Mit welchen Mitteln arbeiten relationale Datenbanken? 3. Warum werden objektorientierte Datenbanken kaum verwendet? 4. Was bedeuten die Buchstaben SQL? 5. Wozu dient SQL? 6. Aus welchen beiden Sprachen ist SQL aufgebaut? 7. Der ODBC-Treiber ist für die Kommunikation zwischen Java und Access wichtig. Inwieweit ist diese Aussage richtig? 8. Was ist die Aufgabe des JDBC-Treibers? 9. Welche JDBC-Treiber haben wir kennengelernt? 10. Wie kann man den SQL Explorer mit MySQL verbinden? Praxis 1. Sie ahnen es schon? Natürlich haben wir wieder mit Absicht die Kundennummer weggelassen. Versuchen Sie, eine Spalte Kundennummer mittels Eclipse in der Tabelle Kunde einzufügen. 2. Erzeugen Sie mit Eclipse eine Tabelle Preis, die drei Felder enthält: eine Kfz- ID, eine Kategorie als Ziffer und ein Feld für den Preis. 536

Webseiten zum Kapitel 15.9 15.9 Webseiten zum Kapitel URL http://www.mysql.de/ http://www.mysql.com/ http://java.seite.net/jdbc/index.html http://postgres.de/ http://www.fh-wedel.de/~si/projekte/ss98/ Ausarbeitung/HTTPandJDBC/javadb/ ausarbeitung/jdbcb.htm http://www.codefutures.com/java-mysql/ http://tecfa.unige.ch/guides/tie/html/ java-mysql/java-mysql.html http://www.webservertalk.com/ MySQL_Java_277.htm http://www.linux-magazin.de/artikel/ ausgabe/2001/04/postgres-mysql/ postgres-mysql.html http://rs50.bv.tu-berlin.de/lehre/ seminare/jdbc/ http://www.java.de/forum/forumlist/1/ http://www.java.de/forum/messagelist/8/ http://jdbc.postgresql.org/ http://www-db.stanford.edu/~ullman/ fcdb/oracle/or-jdbc.html http://web.f4.fhtw-berlin.de/hartwig/jdbc/ jdbc.html Beschreibung Deutsche MySQL-Homepage MySQL-Homepage Anleitung zu JDBC Postgres-Homepage Ausarbeitung zu Java und Datenbanken MySQL und Java MySQL und Java MySQL und Java Vergleich zwischen Datenbanksystemen TU Berlin zu Datenbanken und Java Java User-Group-Forum allgemein Java User-Group-Forum JDBC Postgres-JDBC-Treiber JDBC-Infos Einführung in JDBC von der FHTW Berlin 537

Index 3-Tier-Modell 541 A abstrakt 221, 253 abstrakte Klassen 236, 251 abstrakte Methode 251 Alan Turing 26 Algol 60 26 Amigos 205 Analyse 304 Anekdote 23 Anwendungsfall 304 Anwendungsobjekte 208, 305 anzeigen 328 API 203, 246 API-Doku 356 API-Dokumentation 70, 485 APL 50 Apple imac 23 Applikation 303 Arbeitsset 130, 136 Archivart 101 ArrayList 320 Arrays 264 ASCI 351 Assembler 26 Ast 198 atomare Typen 262 AtomicInteger 263 AtomicLong 263 Attribute 196, 306, 342 Aufbau 139 auflösen 250 Aufrufstelle 234 Auslieferung 65 Ausnahmefälle 453 AWT 58 AWT-Oberfläche 252 B Basisklassen 198 Baum 198 Bauplan 195 Bausteine 122 Bedingungen 293 Bertrand Russell 193 Betriebssystemebene 122 Bezeichnungen 198 Beziehungen 198 Bibliotheken 135 BigDecimal 263 BigInteger 263 Blöcke 493 Booch 205 boolean 259 Build-Vorgang 136 Businessobjekte 208, 305 byte 260 Bytecode-Datei 98 C C 55, 60 C# 60 C++ 59, 61 CAD 59 CAD-System 122 CASE 54 Castings 24 catch 369 CDT 61 CeBIT 24 Chain of Responsibility 478 char 259 Child 131 class 196 ClassNotFoundException 456 Cobol 24, 59 Code Assistant 367 Codekomplettierung 64 Codekonventionen 475 Combobox 76 Compiler 53, 269 Component 252, 253 Computer 25 connect 543 Constructor Summary 270 Custom Setup-Dialog 79 589

Index CVS 65, 96 CVS-Sichten 131 D daemon 465 Dämon 47, 465 Darwin 195 Datei 144 Dateiaufbau 477 Dateiendungen 479 Dateiname 478 Datenbank 64, 509 Datenbank-Server 521 Datenbankzugriffe 539 Datendefinitionsabfrage 511 Datenkapselung 341 Datenkonstrukte 480 Datenquellenname 515 Datentypen 261 DbEdit 509 DBMS 521 DDL 512 Deaktivierung 116 debuggen 458 Debugger 55, 65, 127, 284 Dechriffrierung 26 Decompiler 43 default 273 Define 62 definiert 267 Definition 230 Deinstallation 90, 119 Deklarationen 490 deklariert 267 Design 62 Designpattern 479 Deutsch 105 Develop 62 Dialog 326 Dialogbox 46, 133, 208 Dialogfeld 249 DML 512 do-schleife 289 double 260 do-while 495 Drag-and-Drop 172 DVD-Player 25 E Early Binding 234 Ebenen 158 Eclipse starten 102 Editor verlinken 158 Editoren 123, 140 Eiffel 59 Eigenschaften 104, 196, 216, 248 Eingabeaufforderung 88 Einrückung 483 einzeiliger Kommentar 485 Emacs 53 Embeded System 29 Endemarke 485 Enigma 26 Enterprice Java Beans 73 entkoppeln 252 Entwicklerwerkzeug 122 Entwurfsansicht 510 Entwurfsmuster 326, 479, 546 Entzipper 99 erben 217, 253 erfassen 328 error-handling 368 Erscheinungen 193 erweitern 348, 352 EVA 328 Event-Behandlung 453 Exception 453, 455 Exception-Handling 456 exist 279, 282 External JARs 136 F Fachliteratur 37 Fall-Throughs 496 Fallunterscheidung 234 Fehlermeldung 249, 267, 458 Fehlersymbol 219, 250 Fenster 142 Fernsteuerung 29 Festplatte 99 Fields 255 final 269, 281 finalize 362 Flag 463 float 260 590

Index Formatierprogramm 476 for-schleifen 289, 494 Forth 50 Frame 365 Framework 49, 59, 122 frühe Bindung 234 funktionale Sprache 46 G Ganzzahl 46 Garbage-Collection 345 GByte 41 Gebäudesteuerung 25 gecastet 357 gelistete Attribute 314 Generalisation 219 Geschäftsobjekte 208, 209 getlength 46 getter-methoden 146, 453, 555 Green 29 Griechenland 193 Grundausstattung 306 Grundsystem 107 GUI 19 GUI-Applikationen 48 GUI-Builder 54 GUI-Klassen 252 H Hardware 98 Hardwarevoraussetzungen 70 Hauptteil 481 Haupt-Thread 461 Header-Datei 33 Hersteller 199 Hilfedatei 271 Hinweise 18 Historie 65, 482 Homepage 106 HotJava 30 HTML 25 I IBM 106 IDE 19, 53 Ideenlehre 193 IllegalThreadStateException 465 imperative Sprache 46 implementieren 253 importieren/exportieren 160 Index 246, 356 inner class 306 innere Klassen 308 Installation 69, 98 Installation von Plugins 110 Installationsprogramm 74 instanceof 557 Instanz 199 Instanziierung 34, 199, 222, 312, 338 Instanz-Initiatoren 469 int 258, 260 Interface 226, 251, 253, 500 InterruptedException 368 invoke 555 isdaemon 467 J J++ 60 Jacobson 205 Jar-Dateien 245 Java Web Start 70 Java-Compiler 45 Javadoc-Kommentar 481 Java-Handy 24 Java-Lebenslauf 30 Java-Oberflächen 252 Java-Pakete 203 Java-Perspektive 123, 539 Java-Story 29 Java-Trainer 89 JBuilder 54, 63 JDBC 539 JDBC-Aufrufe 541 JDK 69 JDK EE 71 JFace 58 JRE 69 JSP-Anwendungen 131 JVM 23 K Kaffeesorte 23 Key 264 591

Index Kfz 198 Klassen 258 Klassenbezeichnung 197 Klassendiagramm 303 Klassenkopf 257 Klassenkörper 313 Klassennamen 367, 478 Klassifizierung 228 Kommandozeilen-Programme 48 Kommentare 276, 307, 481 Kommunikation 286 komplexe Datentypen 258, 262 Komprimierung 307 Konfiguration 526 konkret 221 konkrete Klassen 251 Konsole 99 Konsolen-Ansicht 268 Konsortium 58 Konstanten 269, 501 Konstruktor 196, 214, 312, 551 Konstruktormethode 271 Konsumelektronik 29 Konventionen 475 Kunden 243 L Language-Pack 105 Late Binding 234 Latest Release 96 Laufvariablen 491 Lebenszyklus 477 Leerzeichen 498 Leerzeilen 496 Lesbarkeit 477 Libraries 69 Library 246 Linné 195 Linux 23, 263 Liste 264, 357 Literale 33 Lizenz 75 LMT 19 long 260 M main-methode 282, 309 Manage 62 Markierung 267 Maschinencode 27 Mathematik 35 mehrdeutig 543 mehrzeiliger Kommentar 485 Meldung 455 Menubar 142 Menüleiste 142 Menüs 125 Methoden 215, 251, 307, 501 Methodenkörper 236, 271 Methodik 132 Micro-Edition 73 Middleware 540 Mikroprozessor 41 Milestones 95 Millisekunden 463 Modell 199, 545 Model-View-Controller 326 Müllbeseitigung 345 Multithreading 460 MVC-Prinzip 478 MySQL 524, 525 N Nachrichten 216, 255 Namenskonventionen 499 Navigatorview 158 navigieren 153 neuronale Netze 47 new 310 Nomenklatur 195 null 311 NumberFormatException 454 O Oak 29 Oberklassen 198 Object 331 Object-relational mapping 541 Objekt 194, 196 objektorientierte Sprache 28 Objektvariablen 232 592

Index ODBC-Bridge 543 ODBC-Verbindung 515 offene Attribute 314 Office-System 122 OMG 205 OOP 19, 232, 326 Open Source 37, 58 Operationen 198, 216 Operatoren 34 Ordner 202 OTI 56 P Package Explorer 337, 356 Paket 246, 363 Paket-Explorer 202 Paketstrukturen 245 Paradigma 195 Parameter 343 parseint 454 PDA 73 Perl 59, 60 Perspectives 123 Perspektive öffnen 140 schließen 142 zurücksetzen 142 Perspektiven 123 Pfade 136 Phasenmodell 303 PHP 59 PL/1 24 Plato 193 Plattformunabhängigkeit 45 Plugin 47, 56 Polymorphie 337 Polymorphismus 232 PowerPC 23 primitive Datentypen 258, 259 println 33, 361 private 212, 229, 273, 329 Programmautoren 342 Programmiersprache erlernen 49 Programmierung ohne Eclipse 87 Projekt 64, 133, 154 Projektdesign 304 Projekte löschen 138 Projektname 128, 245 Projektverwaltung 64 proprietäre Sprache 28 protected 273 Protokollname 543 Prozedur 234 prozedurale Programmierung 244 prozedurale Sprache 28 public 273 Python 59 Q QNX 59 Qualifizierung 311 Quellcode 27, 53, 306, 486 Quelle 146 Quelle-Registerkarte 135 Quick C 55 R rational 57 Rechenoperationen 351 Redundanzen 227, 341 Refactoring 147 Refection-Klassen 341 referenzieren 343, 350 Registerleisten 169 relationale Datenbanken 509 Relationen 513 resume 463 RMT 19 Ruby 60 Rückgabewerte 503 Rumbaugh 205 run 461 Runnable 461 Runtime Environment 90 S SAP 58 Schleife 288, 357 schließende Klammer 255 Schlüsselwörter 33 Scrapbook-Page 309 Scrapbook-Seite 127, 264 screensize 367 SE 71 593

Index Seiteneffekte 488 Semantik 33 Semikolon 236 SEQUEL 509 Serializable 226 Servlets 131 setlength 46 setlocation 367 Setter 146, 453 Setup 74 SGML 25 short 260 Shortcuts 124 Sicht 327 Sichtbarkeit 274 Sichten 123 Signal 454 Signalwerfen 454 Signatur 271, 345 Singleton 546 sleep 368 Smalltalk 56, 127 Smalltalk 80 32 Snippet-Editor 127, 264 Softwareobjekt 196, 243 Softwarewelt 24 Sonderausstattung 306 Spaltennamen 510, 556 späte Bindung 234 Speicher 256 Speicherbereinigung 345 Spezialisierung 219 Splash-Screen 339, 364 Sprachinstallation 106 SQL 509 SQL-Befehle 529 SQL-Statements 541 Squeak 32 Stacks 264 Standardkonstruktor 349 Startmarke 485 static 270, 281 Statusbar 169 steuern 328 Steuerung 326 stop 463 Stream Stable Builds 96 String 128, 262 Subjekte 194 Subklassen 198 Sun 23 Sun World 30 Sun-Workstation 23 super 220 Superklasse 198, 248, 313, 348 suspend 463 Swing 58 switch 495 Symbole 204 Symbolleiste 125 synchron 327 Syntax 30 Sysouts 455 T Tabelle 510, 556 Tabellenkalkulation 122 Tastenkürzel 123, 162 Team 160 Test 62, 309 Texteditor 162, 246 Textverarbeitung 59, 122 Thread 263, 368 throw 455 throwable 455 tostring 261 Treiber 542 try 369 try-catch 453 Try-catch-Block 147, 456 Turing-Maschine 26 Turing-Test 26 Tutorials 104 Typstrenge 340 U überladen 348, 350, 361 überschreiben 252, 348 UML 19, 243 UML-Diagramme 199 Umwandlung in eine Zahl 453 Undo 65 UNICODE 351 Unified Modeling Language 204 Unikat 194 Unterfenster 131 594

Index Unterklasse 233, 348 untersuchen 277 URL 19 usecases 205 V Variablen 255, 501 VBA-Routinen 47 Verbindung 544 Vererbung 195, 229, 337 Vererbungspfeil 230 Verknüpfungslinie 515 Versionen 95, 190 Verteilte Anwendungen 48 Verzeichnisse 136 Verzeichnisstruktur 203 Views 123 View-Verzeichnis 135 visibility 276 VM 19 void 282 Von-Neumann-Rechner 42 Vorgehensmodell 304 W wapperklassen 261 Wartung 477 Webseite 79 Werkbank 123 while-schleife 289, 495 Windows 122 Windows 2000 23 Workbench 123 Workspace 104 Wrapperklassen 35 X XML 25, 69 Z Zahlenformatausnahme 454 Zeichenkette 35 Zugriff 349 Zusicherungen 217 Zuständigkeitskette 478 Zuweisungen 502 595