Groovy im Einsatz

von: Dierk König, Andrew Glover, Paul King, Guillaume Laforge

Carl Hanser Fachbuchverlag, 2007

ISBN: 9783446414129 , 629 Seiten

Format: PDF, OL

Kopierschutz: Wasserzeichen

Windows PC,Mac OSX geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 39,99 EUR

Mehr zum Inhalt

Groovy im Einsatz


 

Inhalt

7

Vorwort

17

Vorwort zur deutschen Ausgabe

19

Einleitung

21

Danksagungen

25

Über dieses Buch

27

Aufbau

27

Wer sollte dieses Buch lesen?

28

Code-Konventionen

28

Aktualisierungen

29

Die Autoren

31

1 Ihr Weg zu Groovy

33

1.1 Die Groovy-Story

34

1.1.1 Was ist Groovy?

35

1.1.2 Gutes Zusammenspiel mit Java: nahtlose Integration

36

1.1.3 Power in Ihrem Code: eine reichhaltige Sprache

37

1.1.4 Community-gesteuert, aber von Unternehmen gestützt

40

1.2 Was Groovy für Sie tun kann

41

1.2.1 Groovy für Java-Profis

41

1.2.2 Groovy für Skriptprogrammierer

42

1.2.3 Groovy für pragmatische, extreme und agile Programmierer

43

1.3 Groovy ausführen

44

1.3.1 „Hello World“ auf groovysh

44

1.3.2 Die groovyConsole

47

1.3.3 Der Befehl groovy

48

1.4 Groovy kompilieren und ausführen

49

1.4.1 Groovy mit groovyc kompilieren

50

1.4.2 Ein kompiliertes Groovy-Skript mit Java ausführen

50

1.4.3 Kompilieren und Ausführen mit Ant

51

1.5 IDE- und Editor-Unterstützung für Groovy

52

1.5.1 Das Plugin für IntelliJ IDEA

53

1.5.2 Das Eclipse-Plugin

53

1.5.3 Groovy-Unterstützung in anderen Editoren

54

1.6 Zusammenfassung

55

Teil 1 Die Programmiersprache Groovy

57

2 Die Ouvertüre: Groovy-Grundlagen

59

2.1 Allgemeines Aussehen des Codes

59

2.1.1 Kommentare in Groovy

60

2.1.2 Vergleich der Syntax von Groovy und Java

60

2.1.3 Kurz und gut

61

2.2 Testen der Sprache durch Zusicherungen

62

2.3 Groovy auf einen Blick

64

2.3.1 Klassen deklarieren

65

2.3.2 Verwendung von Skripten

65

2.3.3 GroovyBeans

66

2.3.4 Umgang mit Text

67

2.3.5 Zahlen sind Objekte

69

2.3.6 Listen, Maps und Ranges

69

2.3.7 Code als Objekt: Closures

72

2.3.8 Groovy-Kontrollstrukturen

74

2.4 Groovys Platz in der Java-Umgebung

75

2.4.1 Meine Klasse ist deine Klasse

76

2.4.2 GDK: Die Groovy-Bibliothek

77

2.4.3 Der Groovy-Lebenszyklus

78

2.5 Zusammenfassung

81

3 Die einfachen Groovy-Datentypen

83

3.1 Objekte, Objekte überall

83

3.1.1 Das Typsystem von Java: Basistypen und Referenztypen

84

3.1.2 Die Antwort ist Groovy – alles ist ein Objekt

84

3.1.3 Zusammenwirken mit Java – automatisches Boxing und Unboxing

86

3.1.4 Kein zwischengeschaltetes Unboxing

87

3.2 Das Konzept der optionalen Typisierung

88

3.2.1 Typen zuweisen

88

3.2.2 Statische versus dynamische Typisierung

89

3.3 Operatoren überschreiben

90

3.3.1 Überschreibbare Operatoren

90

3.3.2 Überschriebene Operatoren in Aktion

92

3.3.3 Automatische Typumwandlung

93

3.4 Umgang mit Strings

95

3.4.1 Varianten von Stringliteralen

95

3.4.2 Der Umgang mit GStrings

98

3.4.3 Von Java zu Groovy

99

3.5 Arbeiten mit regulären Ausdrücken

102

3.5.1 Angabe von Patterns in Stringliteralen

103

3.5.2 Anwendung von Patterns

105

3.5.3 Patterns in Aktion

107

3.5.4 Patterns und Performance

109

3.5.5 Patterns für die Klassifizierung

110

3.6 Arbeiten mit Zahlen

111

3.6.1 Automatische Typumwandlung mit numerischen Operatoren

111

3.6.2 GDK-Methoden für numerische Typen

113

3.7 Zusammenfassung

114

4 Die mengenwertigen Groovy-Datentypen

117

4.1 Der Umgang mit Ranges

118

4.1.1 Ranges spezifizieren

119

4.1.2 Ranges sind Objekte

120

4.1.3 Ranges in Aktion

121

4.2 Der Umgang mit Listen

123

4.2.1 Listen angeben

123

4.2.2 Der Umgang mit Listenoperatoren

124

4.2.3 Verwenden von Listenmethoden

127

4.2.4 Listen in Aktion

131

4.3 Der Umgang mit Maps

133

4.3.1 Maps angeben

133

4.3.2 Verwendung von Map-Operatoren

135

4.3.3 Maps in Aktion

139

4.4 Hinweise zu Groovy-Collections

140

4.4.1 Nebenläufige Änderungen

141

4.4.2 Der Unterschied zwischen Kopier- und Änderungs-Semantik

141

4.5 Zusammenfassung

142

5 Closures

143

5.1 Eine sanfte Einführung in Closures

144

5.2 Ein Fall für Closures

145

5.2.1 Verwendung von Iteratoren

145

5.2.2 Ressourcenbehandlung

146

5.3 Deklarieren von Closures

149

5.3.1 Die einfache Deklaration

149

5.3.2 Zuweisungen zur Deklaration verwenden

150

5.3.3 Methoden als Closures referenzieren

151

5.3.4 Die verschiedenen Möglichkeiten im Vergleich

153

5.4 Verwendung von Closures

154

5.4.1 Aufrufen einer Closure

154

5.4.2 Weitere Closure-Methoden

156

5.5 Gültigkeitsbereiche

159

5.5.1 Der einfache Gültigkeitsbereich einer Variablen

160

5.5.2 Der allgemeine Gültigkeitsbereich von Closures

161

5.5.3 Gültigkeitsbereiche: der klassische Akkumulator-Test

164

5.6 Rückgabe aus Closures

165

5.7 Unterstützung für Entwurfsmuster

166

5.7.1 Beziehung zum Besuchermuster

167

5.7.2 Beziehung zum Erbauermuster

167

5.7.3 Beziehung zu anderen Mustern

168

5.8 Zusammenfassung

169

6 Groovy-Kontrollstrukturen

171

6.1 Die Groovy-Wahrheit

171

6.1.1 Boolesche Tests auswerten

172

6.1.2 Zuweisungen in Booleschen Tests

173

6.2 Bedingte Ausführung

175

6.2.1 Die ganz bescheidene if-Anweisung

175

6.2.2 Der Bedingungsoperator ?:

176

6.2.3 Die switch-Anweisung

176

6.2.4 Plausibilitätsprüfung mit Zusicherungen

179

6.3 Schleifen

183

6.3.1 while-Schleifen

183

6.3.2 for-Schleifen

183

6.4 Blöcke und Methoden abbrechen

186

6.4.1 Normale Beendigung: return/break/continue

186

6.4.2 Exceptions: throw/try-catch-finally

187

6.5 Zusammenfassung

188

7 Dynamische Objektorientierung nach Groovy-Art

189

7.1 Definieren von Klassen und Skripten

190

7.1.1 Definieren von Feldern und lokalen Variablen

190

7.1.2 Methoden und Parameter

193

7.1.3 Mit dem Operator ?. sicher dereferenzieren

197

7.1.4 Konstruktoren

198

7.2 Organisieren von Klassen und Skripten

201

7.2.1 Beziehung zwischen Datei und Klasse

201

7.2.2 Organisieren von Klassen in Packages

202

7.2.3 Weitere Überlegungen zum Klassenpfad

206

7.3 Fortgeschrittene OO-Merkmale

207

7.3.1 Vererbung

207

7.3.2 Interfaces

208

7.3.3 Multimethoden

209

7.4 GroovyBeans

211

7.4.1 Deklaration von Beans

211

7.4.2 Umgang mit Beans

213

7.4.3 Bean-Methoden für alle Objekte

216

7.4.4 Felder, Zugriffsmethoden, Maps und Expando

217

7.5 Power-Features

218

7.5.1 Objekte mit GPaths abfragen

219

7.5.2 Den Spread-Operator injizieren

223

7.5.3 Kategorienmix mit use

223

7.6 Meta-Programmierung in Groovy

226

7.6.1 Das Konzept der MetaClass

226

7.6.2 Methoden aufrufen und abfangen

228

7.6.3 Abfangen von Methoden

230

7.7 Zusammenfassung

233

Teil 2 Die Groovy-Bibliothek

235

8 Builder

237

8.1 Learning by doing – Verwendung eines Builders

238

8.2 Erstellen von Objektbäumen mit NodeBuilder

241

8.2.1 NodeBuilder in Aktion – der Builder-Code

242

8.2.2 Das Builder-Konzept

243

8.2.3 Intelligente Builder mit Logik

244

8.3 Arbeiten mit MarkupBuilder

246

8.3.1 Erstellen von XML

246

8.3.2 Erstellen von HTML

247

8.4 Aufgaben automatisieren mit AntBuilder

249

8.4.1 Von Ant-Skripten zu Groovy-Skripten

250

8.4.2 Wie AntBuilder funktioniert

251

8.4.3 Intelligente Automatisierungsskripte mit Logik

252

8.5 GUIs ganz easy mit SwingBuilder

253

8.5.1 Passwort lesen mit dem SwingBuilder

254

8.5.2 Erstellen von Swing-Widgets

256

8.5.3 Widgets anordnen

259

8.5.4 Referenzieren von Widgets

262

8.5.5 Swing-Actions

265

8.5.6 Verwendung von Modellen

267

8.5.7 Von den Teilen zum Ganzen

269

8.6 Eigene Builder erstellen

275

8.6.1 Unterklassen für BuilderSupport

276

8.6.2 Das DebugBuilder-Beispiel

278

8.7 Zusammenfassung

280

9 Das GDK

281

9.1 Objekte

282

9.1.1 Interaktive Objekte

282

9.1.2 Bequemlichkeitsmethoden von Object

288

9.1.3 Iterative Object-Methoden

290

9.2 Arbeiten mit Dateien und I/O

293

9.2.1 Durchquerung des Dateisystems

295

9.2.2 Eingabequellen lesen

296

9.2.3 Ausgaben schreiben

298

9.2.4 Filter und Konvertierungen

299

9.2.5 Serialisierte Objekt-Streams

301

9.3 Threads und Prozesse

302

9.3.1 Groovy-Multithreading

302

9.3.2 Integrieren externer Prozesse

304

9.4 Die Arbeit mit Templates

309

9.4.1 Das Format von Templates

309

9.4.2 Templates in Aktion

310

9.4.3 Templates für Fortgeschrittene

312

9.5 Groovlets

313

9.5.1 „Hello World“

313

9.5.2 Die Groovlet-Bindung

315

9.5.3 Templates und Groovlets

318

9.6 Zusammenfassung

320

10 Datenbankprogrammierung mit Groovy

323

10.1 Grundlegende Datenbankoperationen

324

10.1.1 Datenbankzugriff einrichten

325

10.1.2 SQL ausführen

328

10.1.3 Daten abfragen

333

10.1.4 Von den Teilen zum Ganzen

336

10.2 DataSets für SQL ohne SQL

338

10.2.1 DataSet-Operationen verwenden

339

10.2.2 DataSets auf Datenbank-Views

342

10.3 Organisieren der Datenbankarbeit

344

10.3.1 Überblick über die Architektur

344

10.3.2 Verhalten der Anwendung spezifizieren

346

10.3.3 Implementierung der Infrastruktur

347

10.3.4 Ein transparentes Domain-Modell

351

10.3.5 Implementierung der Anwendungsschicht

352

10.4 Groovy und ORM

353

10.5 Zusammenfassung

354

11 Groovy-Integration

357

11.1 Vorbereitung auf die Integration

358

11.1.1 Richtig integrieren

358

11.1.2 Abhängigkeiten einrichten

360

11.2 Ausdrücke und Skripte auswerten mit GroovyShell

361

11.2.1 Aller Anfang ist leicht

361

11.2.2 Übergabe von Parametern in einer Bindung

363

11.2.3 Dynamische Klassen zur Laufzeit generieren

365

11.2.4 Skripte parsen

365

11.2.5 Skripte oder Klassen ausführen

366

11.2.6 Weitere Parametrisierung von GroovyShell

367

11.3 Die Groovy-Skript-Engine

371

11.3.1 Einrichten der Engine

371

11.3.2 Skripte ausführen

371

11.3.3 Abweichenden Ressourcenkonnektor definieren

372

11.4 Der GroovyClassLoader

373

11.4.1 Groovy-Klassen parsen und laden

373

11.4.2 Was war zuerst da: Die Henne oder das Ei?

375

11.4.3 Ein benutzerdefinierter Resource-Loader

378

11.4.4 Sicherheit in der Sandbox

379

11.5 Spring-Integration

382

11.5.1 GroovyBeans mit Spring verdrahten

383

11.5.2 Aktualisierbare Beans

385

11.5.3 Inline-Skripte

385

11.6 Mustang und JSR-223

386

11.6.1 Einführung in JSR-223

386

11.6.2 Der Skript-Engine-Manager und seine Skript-Engines

387

11.6.3 Kompilierbare und aufrufbare Skript-Engines

388

11.7 Die Wahl des richtigen Integrationsmechanismus

391

11.8 Zusammenfassung

392

12 Arbeiten mit XML

393

12.1 XML-Dokumente lesen

394

12.1.1 Arbeiten mit einem DOM-Parser

395

12.1.2 Daten lesen mit dem Groovy-Parser

399

12.1.3 Lesen mit einem SAX-Parser

404

12.1.4 Lesen mit einem StAX-Parser

405

12.2 XML verarbeiten

407

12.2.1 Vor Ort-Verarbeitung

408

12.2.2 Streaming-Verarbeitung

410

12.2.3 Kombination mit XPath

415

12.3 Verteilte Verarbeitung mit XML

422

12.3.1 Überblick über Webdienste

422

12.3.2 RSS und ATOM lesen

423

12.3.3 Ein REST-basiertes API

425

12.3.4 XML-RPC

428

12.3.5 Anwendung von SOAP

430

12.4 Zusammenfassung

435

Teil 3 Groovy für jeden Tag

437

13 Tipps und Tricks

439

13.1 Was Sie sich merken sollten

440

13.1.1 Gleichheit versus Identität

440

13.1.2 Klammern richtig setzen

440

13.1.3 Rückkehr aus Methoden und Closures

441

13.1.4 Methoden aufrufen im Builder-Code

442

13.1.5 Qualifizierter Zugriff auf „this“

444

13.1.6 Numerische Typen

445

13.1.7 Ant

446

13.1.8 Skripte sind Klassen, nur anders

448

13.2 Nützliche Codefragmente

451

13.2.1 Eine Collection mischen

451

13.2.2 Text durcheinanderwürfeln mit regulären Ausdrücken

452

13.2.3 Fortschrittsanzeige auf der Konsole

452

13.2.4 Selbstkommentierende Einzelschritte

453

13.2.5 GString für Fortgeschrittene

454

13.3 Groovy auf der Kommandozeile

455

13.3.1 Kommandozeilenskripte auswerten

456

13.3.2 Die Optionen print und line

457

13.3.3 Der Lauschmodus

458

13.3.4 Vor-Ort-Bearbeitung auf der Kommandozeile

459

13.4 Automatisierungsskripte

459

13.4.1 Konsistente Unterstützung für Kommandozeilenoptionen

460

13.4.2 Klassenpfad mit RootLoader erweitern

463

13.4.3 Ausführungsfahrplan für Skripte

465

13.5 Beispiele für die Automatisierung von Tasks

467

13.5.1 Scraping von HTML-Seiten

467

13.5.2 Automatisieren von Webaktionen

469

13.5.3 Versionskontrolle inspizieren

471

13.5.4 Pragmatische Codeanalyse

472

13.5.5 Weitere interessante Punkte

473

13.6 Layout des Arbeitsbereichs

474

13.6.1 IDE-Setup

475

13.6.2 Debugging

476

13.6.3 Profiling

480

13.6.4 Refactoring

481

13.7 Zusammenfassung

482

14 Unit Testing mit Groovy

483

14.1 Erste Schritte

484

14.1.1 Tests schreiben ist einfach

484

14.1.2 GroovyTestCase: Eine Einführung

485

14.1.3 GroovyTestCase

486

14.2 Unit Testing für Groovy-Code

487

14.3 Unit Testing für Java-Code

491

14.4 Tests organisieren

494

14.5 Fortgeschrittene Testmethoden

495

14.5.1 Testen wird groovy

496

14.5.2 Stubs und Mocks

497

14.5.3 GroovyLogTestCase

502

14.6 IDE-Integration

504

14.6.1 Verwenden von GroovyTestSuite

504

14.6.2 Verwenden von AllTestSuite

506

14.6.3 Fortgeschrittene IDE-Integration

507

14.7 Tools für Groovy-Testing

509

14.7.1 Code-Abdeckung mit Groovy

509

14.7.2 JUnit-Erweiterungen

512

14.8 Build-Automatisierung

515

14.8.1 Build-Integration mit Ant

515

14.8.2 Build-Integration mit Maven

516

14.9 Zusammenfassung

519

15 Windows wird Groovy

521

15.1 Scriptom herunterladen und installieren

522

15.2 Scriptom intern

523

15.2.1 Jacob

523

15.2.2 Instanzieren einer ActiveX-Komponente

525

15.2.3 Methoden aufrufen

527

15.2.4 Zugriff auf Properties und Rückgabewerte

529

15.2.5 Event-Unterstützung

529

15.3 Praxis-Szenario: Automatisieren der Lokalisierung

532

15.3.1 Entwurf des Dokumentformats

533

15.3.2 Entwurf des Thesaurus

533

15.3.3 Erstellen eines Word-Dokuments

535

15.3.4 Erstellung des endgültigen Dokuments

537

15.4 Automatisierung weiterer Anwendungen

539

15.4.1 Zugriff auf die Windows-Registrierung

539

15.4.2 Ein eigenes Automatisierungssystem programmieren

540

15.5 Verfügbare Dokumentation

542

15.6 Zusammenfassung

543

16 Ich sehe das Licht: Grails

545

16.1 Die Ausgangssituation

545

16.1.1 Grails installieren

546

16.1.2 Die ersten Schritte

547

16.2 Erstellen des Domain-Modells

549

16.2.1 Die Use Cases

550

16.2.2 Beziehungen designen

550

16.3 Implementierung des Domain-Modells

551

16.3.1 Scaffolding der Domain-Klassen

552

16.3.2 Scaffolding der Views und Controller

553

16.3.3 Testen der Webanwendung

554

16.3.4 Vervollständigen des Domain-Modells

555

16.4 Anpassen der Views

557

16.4.1 Bootstrapping von Daten

557

16.4.2 Arbeiten mit Groovy Server Pages

558

16.4.3 Arbeiten mit Tag-Bibliotheken

561

16.5 Arbeiten mit Controllern und Finder-Methoden

563

16.6 Ausarbeitung des Modells

566

16.7 Arbeiten mit der Session

567

16.8 Das Finish

571

16.8.1 Constraints validieren

571

16.8.2 Die Anwendung herausgeben

572

16.8.3 Abschied

574

A Installation und Dokumentation

577

A.1 Installation

577

A.2 Aktuelle Dokumentation beschaffen

578

A.2.1 Online-Ressourcen

578

A.2.2 Abonnieren von Mailinglisten

579

A.2.3 Verbindung mit dem Forum und Chat

579

B Infos zur Programmiersprache Groovy

581

B.1 Schlüsselwörter

582

C GDK-API-Kurzreferenz

583

C.1 Arrays und Primitives

583

C.2 Das Package java.lang

584

C.3 Das Package java.math

588

C.4 Die Packages java.util und java.sql

589

C.5 Das Package java.util.regex

591

C.6 Das Package java.io

592

C.7 Das Package java.net

595

D Spickzettel

597

D.1 Listen

597

D.2 Closures

598

D.3 Reguläre Ausdrücke

598

D.4 Unit Testing

600

D.5 Mocks und Stubs

600

D.6 XML-GPath-Notation

601

Register

603