Sie sind auf Seite 1von 62

Gottfried Wolmeringer

Java 6 lernen mit Eclipse

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

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

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

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

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

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

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

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

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

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

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.]

Java ist die eine Seite unserer Medaille – diese Sprache wollen wir erler- nen. 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 Zusam- menhang mit Programmiersprachen und Programmentwicklung, bedeutet es »Integrated Development Environment«, auf Deutsch »integrierte Entwicklungs- umgebung«. 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 Hardware- fachmann kennt IDE als »Integrated Device Electronics«, aber auch als »Intelli- gent Drive Electronics«. Wobei der erste Ausdruck frei übersetzt »geräteinterne Elektronik« bedeutet und der zweite »intelligente Laufwerkselektronik«. Dem- entsprechend ist IDE ein Standard für Festplatten, der weit verbreitet, aber ver- altet ist.

Unsere IDE ist dagegen ein Stück Software, die dazu dient, Programme zu entwi- ckeln. 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 weiterentwi- ckeln. Was die Unterlagen anging, half man sich anfangs mit Büchern weiter, spä- ter mit anspruchsvollen Editoren wie dem Emacs. Man nutzte Zusatzpro- gramme, die im Hintergrund zur Verfügung standen und zu denen man bei Bedarf wechseln konnte. Schließlich kam man auf die Idee, all diese Zusatzfunk- tionen für Programmierer in einem Programm zusammenzufassen. Die IDE, die

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 Softwareentwick- lung.

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 die- sem Werkzeug zu. Neben diesem Teil der Codeerstellung besitzen heutige Pro- gramme grafische Elemente, die mit den grafischen Oberflächenelementen des verwendeten Betriebssystems konform sind und interagieren. Um diese Bestand- teile 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

SUN Netbeans Borland JBuilder 2005 (Abbildung 3.1) IBM WebSphere Abbildung 3.1 Borlands JBuilder 2005 54

Abbildung 3.1

Borlands JBuilder 2005

Was ist eine IDE?

3.1

Oberflächlich betrachtet, sieht man zwischen diesen Produkten in der Anwen- dung 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 wider- spricht.

Programmriesen zu entwickeln, sehr wider- spricht. Abbildung 3.2 Projektverwaltung in der .NET IDE Die IDEs

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 Net- work, die umfangreichste Dokumentation. Sie finden hier fünf Programmier- sprachen unter einer IDE (Abbildung 3.3).

IDEs sind keine Entwicklung der letzten Jahre. Bereits unter DOS gab es ausge- reifte Entwicklungsumgebungen für C (Microsoft Quick C) oder Assembler (Bor-

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, Pro- gramme mithilfe von Symbolen zusammenzustellen.

Pro- gramme mithilfe von Symbolen zusammenzustellen. Abbildung 3.3 Die Hilfefenster des .NET Frameworks Diese IDE

Abbildung 3.3

Die Hilfefenster des .NET Frameworks

Diese IDE wurde von OTI entwickelt, die gleiche Firma, die auch für Eclipse ver- antwortlich 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-Zusatz- programme 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 Softwarebau- steine eingegliedert werden können, ähnlich wie Steckkarten in dem Personal- computer.

Was ist eine IDE?

3.1

Was ist eine IDE? 3.1 Abbildung 3.4 Programme zeichnen mit VisualAge 3.1.2 Die Konzepte von Eclipse

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 zahl- reiche 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 lie- fert, die einen verbesserten GUI-Builder enthält. Er kann das Plugin des besten GUI-Herstellers nutzen, von dem Moment an, wo dieser Hersteller sein Werk- zeug als Plugin für Eclipse anbietet.

Eclipse wird aber auch als Kern für verschiedene andere Komplettlösungen (Fra- meworks) 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 Informations- systeme GmbH mit Yoxos eine sogenannte Eclipse-Distribution heraus.

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 Sys- tems 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 ent- senden. 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 trotz- dem 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ößt- möglichen gemeinsamen »Nenner« der Oberflächen aller unterstützten Betriebs- systeme 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 Dialog- box oder eines Fensters ändert. Dadurch wurden Java-Programme groß, unak- zeptabel 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 zusammenge- stellt 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.

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 entwi- ckelt. 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 ver- schiedenen 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 Sys- tem 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 kosten- los 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 entwi- ckeln. Man kann das Framework nutzen, um eine Textverarbeitung daraus zu bauen oder ein CAD-Programm usw. So ist Eclipse nicht nur als Werkzeug inter- essant, 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öpfun- gen, 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 Spra- chen. 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.

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 ein- mal 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 auf- grund der kurzen Schreibweise hervorragend dazu, Texte zu bearbeiten und zu formatieren. Seit der 5. Version des Perl-Interpreters gibt es bei Perl auch objek- torientiertes Programmieren. Das Perl-Plugin war eines der ersten »Fremdspra- chen«-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 Beziehun- gen 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-

Weitere Eclipse-Sprachen

3.2

stieg in die Sprache C++, die objektorientiert ist. Beide Sprachen sind sich natür- lich 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 objektorien- tierten 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++ vollzo- gen wurde. Die weitere Entwicklung von C++ verlief sehr erfolgreich. Es wurde standardisiert und in großem Umfang eingesetzt. Viele der wichtigsten Software- produkte von heute wurden in C++ entwickelt. Beispiele für die Leistungsfähig- keit 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 inte- griert 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-

3

Unsere Werkbank, die IDE

talk nicht vergönnt, weil es eine reine Interpretersprache mit einer völlig frem- den 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 end- losen 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. Software- projekte 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 die- sem Buch geht es vorrangig darum, Java zu lernen, weshalb wir diese Probleme nur streifen. Eine gute IDE muss jedoch Möglichkeiten bieten, die Softwareent- wicklung im großen Stil zu planen und durchzuführen. So wirbt Borland bei- spielsweise damit, dass der JBuilder vom Projektmanagement über die Projektde- finition 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 abde- cken. Eclipse bietet natürlich auch einige dieser Möglichkeiten. Schwächen gibt es im Bereich Projektmanagement, eindeutige Stärken beim Reengineering, also

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.

hinzugewinnt, werden die Schwächen wohl bald behoben sein. Abbildung 3.5 JBuilder-Website Start – und erster

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 aufge- hört hat. Zumindest beim ersten Start sollte sie umfangreiche Informationen zum Einsatz des Systems zur Verfügung stellen (Abbildung 3.6).

zum Einsatz des Systems zur Verfügung stellen (Abbildung 3.6). Abbildung 3.6 Beim ersten Start von Eclipse

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 wer- den. 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 Fest- platte 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 Verzeich- nisstruktur auf der Platte abzulegen. Eclipse besitzt deshalb eine Mixtur zwischen einer Abbildung der Projekte in Verzeichnissen und dem Speichern der Projekt- informationen 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 been- den möchte. Zum Speichern gehört auch die Fähigkeit, unter einem anderen Namen abzuspeichern und im Code automatisch auf den neuen Namen umzube- nennen.

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 Versions- stä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 ent- spricht, 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 Quali- tä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, Start- mö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 Funk- tionalitä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

Beschreibung

http://www.java.de/link/category/9/

Vergleich von Java-IDEs

http://www.javamagazin.de/

Java-Zeitschrift zu Eclipse

http://www.eclipsemag.net/

Eclipse-Magazin

http://www.rrze.uni-erlangen.de/dienste/

Testbericht zu PHP-IDEs

web/php/artikel/ides.shtml

http://www.linux-magazin.de/Artikel/

Python-IDEs

ausgabe/2001/09/python-ides/

python-ides.html

http://www.yoxos.com/

Eclipse-Distribution

http://www.java-forum.org/de/

Forum mit Thema »IDEs und Tools«

http://www.gsug.org/

Seiten zu Smalltalk

http://ladedu.com/cpp/

Einführung in C++

http://www.perl.com

Perl-Homepage

http://www.ruby-lang.org/en/

Homepage der Sprache Ruby

http://www.python.de/

Deutsche Python-Homepage

http://www.eclipseproject.de/

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 professi- onell umgehen zu können, benötigt man allerdings einiges Wissen, das wie- derum 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äch- lich 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 Daten- banken 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 Ver- bindungen zwischen den Datenpaketen darstellten. Heute sind relationale Daten- banken 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 Abfragespra- che. 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ön- nen. 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 prakti- schen 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).

Erzeugung der Datenbank KundenDB helfen (Abbildung 15.1). Abbildung 15.1 Erstellen einer leeren Access-Datenbank Bei

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

NAME

CHAR

(24)

NULL,

VORNAME

CHAR

(16)

NULL,

PLZ

CHAR

(8)

NULL,

ORT

CHAR

(24)

NULL,

STRASSENR

CHAR

(24)

NULL,

TEL

CHAR

(24)

NULL,

HANDY

CHAR

(24)

NULL,

EMAIL

CHAR

(40)

NULL

)

Spielereien mit Access

15.2

CHAR (40) NULL ) Spielereien mit Access 15.2 Abbildung 15.2 Felder der Tabelle festlegen Sie werden

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 (Abbil- dung 15.3).

511

15

Datenbanken in Eclipse

15 Datenbanken in Eclipse Abbildung 15.3 Erzeugen einer neuen Tabelle per Abfrage Man findet die Tabelle

Abbildung 15.3

Erzeugen einer neuen Tabelle per Abfrage

Man findet die Tabelle in der Tabellenübersicht. Sie sollte alle angegebenen Spal- ten 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

Bedeutung

create table

Erzeugt eine Tabelle

create index

Erstellt einen Index

drop table

Löscht eine Tabelle

drop index

Löscht einen Index

truncate

Löscht alle Zeilen einer Tabelle

alter table add constraint

Setzt eine Integritätsregel für eine Tabelle fest

alter table

Ändert Spalten, fügt Spalten an

Tabelle 15.1

Die wichtigsten DDL-Befehle

Die wichtigsten Befehle der DML sind:

Befehl

Bedeutung

insert

Fügt eine Zeile in eine Tabelle ein

update

Ändert die Zeile/n einer Tabelle

delete

Löscht eine Zeile/n einer Tabelle

select

Liest in der Datenbank Daten aus Tabellen oder Views

commit work

Schreibt alle Änderungen auf die Platte

rollback

Setzt alle Änderungen seit dem letzten commit zurück

Tabelle 15.2

512

Die wichtigsten DML-Befehle

Spielereien mit Access

15.2

Access lässt sich übrigens direkt aus Eclipse starten. Man kopiert die Datenbank- datei (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, star- tet man Access einfach mit einem Doppelklick auf die Datenbankdatei im Projekt (Abbildung 15.4).

auf die Datenbankdatei im Projekt (Abbildung 15.4). Abbildung 15.4 Access direkt aus Eclipse starten Nachdem wir

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 Kommunika- tionsmö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 unse- rer 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 Pro- grammen, die auf die Datenbank zugreifen, kommen.

Genau an dieser Stelle versagten die ersten Datenbanken. Die relationalen Sys- teme lieferten eine gangbare Lösung. Man setzt einfach die einzelnen Tabellen miteinander in Beziehung und bildet Relationen zwischen den Daten der Daten- bank. 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 Kundenta- belle 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 ein- mal 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 Bezie- hung 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.

gleich sind« (Abbildung 15.5). Die Auswahl wird bestätigt. Abbildung 15.5 514 Verknüpfung zwischen zwei Tabellen

Abbildung 15.5

514

Verknüpfung zwischen zwei Tabellen aufbauen

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 kli-

cken Kunde doppelt an. Tragen Sie einen ersten Kunden ein. Zum Eintragen der Telefonnummer klickt man vorne auf das kleine Pluszeichen und trägt die Num- mer ein. Wie zu erkennen ist, kann man nun beliebig viele Nummern eingeben (Abbildung 15.6).

man nun beliebig viele Nummern eingeben (Abbildung 15.6). Abbildung 15.6 Verknüpfte Tabellen füllen Die

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 einrich- ten. 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).

Bestätigungen ist die ODBC-Verbindung zur Datenbank erzeugt (Abbildung 15.7). Abbildung 15.7 ODBC-Treiber einrichten 515

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 aller- dings ü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

SQL Explorer. Die Perspektive ist zwar

Fenster Perspektive öffnen Andere

unübersichtlich, weil sie viele Sichten vereint, aber sinnvoll (Abbildung 15.9).

sie viele Sichten vereint, aber sinnvoll (Abbildung 15.9). Abbildung 15.8 SQL Explorer ist installiert. Abbildung 15.9

Abbildung 15.8

SQL Explorer ist installiert.

(Abbildung 15.9). Abbildung 15.8 SQL Explorer ist installiert. Abbildung 15.9 516 Zeigt viel, ist aber (noch)

Abbildung 15.9

516

Zeigt viel, ist aber (noch) leer

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).

Path mit der Schaltfläche Add an (Abbildung 15.10). Abbildung 15.10 Pfad und Treiber angeben Mit der

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.JdbcOd-

bcDriver (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äh- len. 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

15 Datenbanken in Eclipse Abbildung 15.11 Das Verbindungsprofil Es kann jedoch sein, dass der angelegte Treiber

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).

ruft man den Verbindungdialog auf (Abbildung 15.12). Abbildung 15.12 Verbindung aufbauen Nachdem mit OK

Abbildung 15.12

Verbindung aufbauen

Nachdem mit OK bestätigt wurde, wird mit der Datenbank eine Verbindung auf- gebaut. 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 sen- den. Es ist die Sicht, die den Java-Editor in dieser Perspektive ersetzt hat. Versu- chen wir es mit einer ganz einfachen Anweisung.

select

518

*

from

Kunde

Abbildung 15.13 Die Datenbank-Struktur Die Einrichtung von SQL Explorer 15.3 Machen Sie es wie im

Abbildung 15.13

Die Datenbank-Struktur

Die Einrichtung von SQL Explorer

15.3

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 gesam- ten Inhalt der Tabelle Kunde ausgeben. In der Tat wird in der SQL Results die Tabelle angezeigt (Abbildung 15.14).

der SQL Results die Tabelle angezeigt (Abbildung 15.14). Abbildung 15.14 Per »SQL-Statement« Daten aus der Tabelle

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).

sollte den neuen Kunden ebenfalls zeigen (Abbildung 15.15). Abbildung 15.15 Einen Kunden eintragen und ansehen 15.4

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 han- dele 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 ver- walten 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 Kon- sistenzbedingungen 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 Anwen- dungsprogramme 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-Managementsys- teme 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 zahlrei- chen 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 Datenbank- schnittstellen.

Die Schnittstellen zu den Datenbanken über das DBMS sind aus verschiedenen Schichten (Layer) aufgebaut. Viele dieser Schnittstellen sind Remoteschnittstel- len, 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 ver- standen wird.

Zu den Datenbank-Servern gibt es Dienstprogramme, die über diese Schnittstel- len 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 bie- ten 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 erweiter- ten 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 program- mieren kann, sollte man solche speziellen SQL-Befehle möglichst wenig einset- zen. 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 Daten- banken 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, OpenDataBaseCon- nectivity, 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 Verbindungs- aufbau zu einer Datenbank und berücksichtigt dabei die Benutzerauthentifizie- rung 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 Datenbank- zugriffe halbwegs brauchbar zu realisieren.

522

15.5

MySQL

MySQL

15.5

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üßungs- dialog zu sehen (Abbildung 15.16).

üblichen Begrüßungs- dialog zu sehen (Abbildung 15.16). Abbildung 15.16 MySQL-Setup Nun kann man auswählen, ob man

Abbildung 15.16

MySQL-Setup

Nun kann man auswählen, ob man eine Installation mit den üblichen Funktiona- litäten (Standard) durchführt, oder ob man alles installiert oder eine benutzerde- finierte Installation wählt (Abbildung 15.17).

oder eine benutzerde- finierte Installation wählt (Abbildung 15.17). Abbildung 15.17 Auswahl des Setup-Typs 523

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).

und die Dateien werden kopiert (Abbildung 15.18). Abbildung 15.18 Die Installation läuft. Jetzt bietet MySQL

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).

lässt sich dieser Punkt überspringen (Abbildung 15.19). Abbildung 15.19 Account einrichten übersprungen Der

Abbildung 15.19

Account einrichten übersprungen

Der nächste Dialog fragt, ob man eine Konfiguration des MySQL-Servers durch- führen möchte (Abbildung 15.20).

524

MySQL

15.5

MySQL 15.5 Abbildung 15.20 Die Konfiguration starten Man lässt den Merkerkasten aktiviert und wählt die Schaltfläche

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 Stan- dardkonfiguration durchgeführt werden soll (Abbildung 15.21). Hier wird die Standardkonfiguration gewählt.

15.21). Hier wird die Standardkonfiguration gewählt. Abbildung 15.21 Auswahl der Standardkonfiguration Des

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 Client- und 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

15 Datenbanken in Eclipse Abbildung 15.22 Als Service einrichten Im nun folgenden Account-Dialog gibt man ein

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 akti- vieren (bei Abbildung 15.23 nicht geschehen).

Zugang akti- vieren (bei Abbildung 15.23 nicht geschehen). Abbildung 15.23 Das Root-Passwort festlegen Im nächsten

Abbildung 15.23

Das Root-Passwort festlegen

Im nächsten Schritt wird die Konfiguration schließlich ausgeführt (Abbildung

15.24).

526

Abbildung 15.24 Übernahme der Konfiguration MySQL 15.5 Wichtig ist heutzutage, die lokale Kommunikation an der

Abbildung 15.24

Übernahme der Konfiguration

MySQL

15.5

Wichtig ist heutzutage, die lokale Kommunikation an der Firewall vorbei zu füh- ren. 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).

kann es eventuell an der Firewall liegen (Abbildung 15.25). Abbildung 15.25 Die Firewall spielt auch mit

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 aufneh- men. 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 Ord- nung 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 Sys-

temsteuerung 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 herunterge- fahren werden. Lassen Sie die Dienste offen. Geben Sie in der Eingabeaufforde- rung 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 been- det wird. Spätestens wenn man im Dienstedialog den Menüpunkt Aktion Aktu- alisieren wählt, sollte das »Gestartet« im Status verschwinden. Bei mysqladmin handelt es sich sozusagen um die Admin-Konsole. Man kann den Dienst nun ent- fernen. 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 Komman- dos 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 Daten- bank 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;

darin enthaltenen Tabellen anzusehen, lautet: mysql> SHOW TABLES; Abbildung 15.26 Tabellen der Datenbank mysql 529

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 anzei- gen. 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

Eclipse und MySQL 15.6 Abbildung 15.27 Neu angelegte Tabelle anzeigen Diesen ersten Datensatz kann man sich

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 Ein- faches sein, mit dem Plugin auf den Datenbank-Server aufzusetzen. Öffnen wir

und SQL

die SQL Explorer-Perspektive Fenster Perspektive öffnen Andere 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 Verbindungsauf- bau gestartet. Zunächst wird in der rechten Database Structure View die Daten- bank mit der Tabelle kunde angezeigt. Die Tabelle kann wie ein Verzeichnis auf- geklappt werden.

Die Tabelle kann wie ein Verzeichnis auf- geklappt werden. Abbildung 15.28 Eclipse riskiert einen Blick auf

Abbildung 15.28

Eclipse riskiert einen Blick auf MySQL.

Um einen Kunden zu erfassen, müssen wir wieder den SQl-Editor des SQL Explo- rers 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 ver- zichtet werden kann.

Versuchern wir also unser Glück mit MySQL und folgender Zeile:

INSERT

(2,

'',

INTO

kunde

'Brunninger',

VALUES

'Isolde',

'Hauptstrasse

',

'0245–334588',

'',

false,

'22.07.1955');

10',

'12603',

'Berlin

Es kann sein, dass wir das Ergebnis nicht gleich zu sehen bekommen. Dann kli- cken 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 Tabellen- namen einen Doppelklick ausführen (Abbildung 15.29).

532

Eclipse und MySQL

15.6

Eclipse und MySQL 15.6 Abbildung 15.29 Daten in Tabelle einfügen SQL Explorer bietet weitere Editiermöglichkeiten.

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 auf- zubauen.

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`

`Fahrzeugart`

char(64)

default

NULL,

char(32)

default

NULL,

`Baujahr`

char(25)

default

NULL,

`Leistung`

tinyint(3)

default