Groovy: Vorwort

Aus Wikibooks

Was ist Groovy?[Bearbeiten]

Groovy ist eine neue Open-Source-Programmiersprache, die mit dem Ziel erschaffen wurde, produktivitätssteigernde Features moderner Interpretersprachen wie Python, Ruby und Smalltalk nahtlos in die Java-Welt zu integrieren.

Anders als häufig behauptet, ist Groovy keine Skriptsprache, auch wenn Sie Groovy-Programme wie Skriptprogramme einsetzten können. Die Sprache selbst lehnt sich stark an Java an, enthält aber eine Reihe wesentlicher Erweiterungen und Besonderheiten, die sie um einiges mächtiger und sehr viel flexibler machen.

  1. Skriptfähigkeit. Sie können – aber müssen nicht – Groovy-Programme direkt aus dem Quellprogramm heraus starten, ohne sie explizit zu Klassendateien kompilieren zu müssen.
  2. Eine mächtigere Sprache. Groovy umfasst einige Erweiterungen wie Closures, überladbare Operatoren und die Unterstützung von Standardtypen, durch die sie viel mächtiger wird als Java. In Verbindung mit den Klassen der Groovy-Laufzeitbibliothek kann der Programmcode gegenüber Java oft auf ein Bruchteil reduziert werden.
  3. Der dynamische Charakter der Sprache Groovy eröffnet eine Fülle neuer Möglichkeiten, die weit über das hinausgehen, was konventionelle statische Programmierung erlaubt.

Diese neue Sprache würde es vielleicht nicht geben, hätten nicht in letzter Zeit eine neue Skriptsprache namens Ruby und das darauf basierende Web-Entwicklungsframework Ruby on Rails enormes Aufsehen wegen der Geschwindigkeit erregt, die sie bei der Anwendungsentwicklung erlauben. Groovy ist aber keine Portierung von Ruby auf die Java-Plattform, wie sie das Open-Source-Projekt JRuby bietet, sondern ein völlig eigenständiges Konzept. Allerdings übernimmt Groovy einige wichtige Ideen von Ruby (und anderen Sprachen), darunter deren dynamischen Charakter und die Anlehnung an funktionale Programmierung. Entscheidend ist, dass Groovy im Unterschied zu einer bloßen Portierung einer fremden Sprache fest in der Java-Welt verwurzelt ist. Die Sprache ist konsequent als Weiterentwicklung von Java konzipiert, und die Integration mit konventionell programmierten Java-Programmen ist – in beiden Richtungen – völlig problemlos.

Wenn Sie sich also mit Java auskennen und sich mit Groovy beschäftigen möchten, brauchen Sie nicht etwas völlig Neues zu lernen. Sie fangen mit dem an, was Sie kennen: Das schlichte „Hello World“ funktioniert ohne jede Änderung auch in Groovy. Binnen kürzester Zeit werden Sie aber feststellen, dass es anders geht, dass sich so manche Konstruktion, die in Java umständlich und undurchsichtig ist, mit Groovy auf wenige Zeilen verkürzen lässt, die das Wesentliche Ihres Programms ausdrücken. Und noch etwas später werden Sie erkennen, dass Ihnen Groovy Möglichkeiten eröffnet, die weit über das hinausgehen, was das klassische Java Ihnen bieten kann.

Sie müssen sich nur ein wenig darauf einlassen.

Erwarten Sie aber nicht, dass Sie Ihr nächstes größeres Projekt komplett in Groovy implementieren werden. Die Sprache ist jung, vieles ist noch in Bewegung, und es gibt noch so manchen Bug und manche Ungereimtheit, die zu beseitigen noch einige Versionsnummern dauern wird. Darüber hinaus wirft auch der dynamische Charakter der Sprache Fragen nach der Stabilität und der Performanz auf, die vor einem Einsatz in Projekten beantwortet werden müssen. Schon jetzt gibt es aber eine Reihe von Anwendungsfällen, für die Groovy sich als Mittel der Wahl darstellt:

  • Mit seiner Scripting-Fähigkeit bietet sich Groovy besonders für die Anpassung von Softwaresystemen an lokale oder zeitliche Gegebenheiten an, insbesondere wenn die üblichen Mittel wie Properties- und XML-Dateien nicht mehr ausreichen.
  • In Zusammenhang mit Grails ist Groovy eine hoch interessante Möglichkeit für den Aufbau von Web-Anwendungen oder Web-Frontends, die die bewährten Mittel der Java-Webentwicklung nutzen, aber gleichzeitig viel rascher und flexibler erstellt werden können.
  • Als Hilfsmittel für kleine Adhoc-Tools, die von Java-Entwicklern aufgrund der vertrauten Syntax und Umgebung mit geringem Aufwand selbst geschrieben werden können, insbesondere wenn sie beliebige Java-Bibliotheken nutzen.
  • Implementierung von Build-Prozessen und sonstigen automatisierten Vorgängen, in denen sich die deklarativen Gestaltungsmittel von Apache Ant und mit prozeduralen Sprachmitteln von Groovy kombinieren lassen
  • Testskripte sowie Dummies und Mock-Objekte, die den isolierten Test einzelner Module erleichtern.
  • Prototypen von Anwendungen oder Komponenten, mit denen Sie die Machbarkeit von Softwareprojekten nach nachweisen können und die als Platzhalter für noch in Entwicklung befindliche Anwendungsteile dienen.
  • Schließlich, und das nicht zu unterschätzen, ist Groovy eine hervorragende Möglichkeit für Java-Programmierer, sich mit neuen, agilen Programmierkonzepten auseinandersetzen, ohne sich erst einmal mühsam in die Spezifika einer unbekannten Plattform wie Python oder Ruby einarbeiten zu müssen.

Mit dem Java Specification Request (JSR) 241 ist sie in die Standardisierung durch den Java Community Process einbezogen und wird damit quasi die zweite „amtliche“ auf der Java-Plattform Sprache neben Java selbst. Groovy versteht sich somit als eine Implementierung des JSR-241. Entwickelt wird sie in einem bei Codehaus (www.codhaus.org) gehosteten Open-Souce-Projekt, das von Bob McWhirter und James Strachan gegründet wurde; derzeitiger Project Manager ist Guillaume Laforge. Nach einer Reihe von Überarbeitungen erfolgte die Freigabe der Groovy-Version 1.0 Anfang 2007.

Dieses Buch hat die Groovy-Version 1.5 zur Grundlage, die Ende 2007 etwa gleichzeitig mit der Erstauflage der Papierversion dieses Buchs erschien.

Zu diesem Buch[Bearbeiten]

Groovy für Java-Entwickler ist eine Einführung in die Programmierung mit Groovy für Menschen, die sich mit Java schon etwas auskennen und mehr über diese neue Programmiersprache erfahren möchten. Das Buch soll Ihnen die wesentlichen Konzepte verdeutlichen, die hinter der Sprache stehen, und Ihnen zeigen, welche neuen Möglichkeiten sich damit erschließen. Da Groovy syntaktisch auf Java aufsetzt (viele Java-Quellprogramme können ohne oder mit geringfügigen Änderungen auch mit Groovy genutzt werden) und auch die Java-Standardbibliotheken nutzt, werden wir nur die Unterschiede und die zusätzlichen Möglichkeiten gegenüber Java darstellen, nicht aber das, was man auch mit Java alleine schon machen kann.

Folglich ist dieses Buch keine Einführung in die Programmierung, sondern setzt zumindest Grundkenntnisse in der Entwicklung von Java-Programmen voraus; besser noch ist ein gewisses Fundament an Erfahrungen mit der Technik, den Konventionen und diversen Möglichkeiten der Software-Entwicklung auf Java-Basis. Wir werden diese Grundlagen nicht immer erläutern können, wohl aber hier und da Hinweise zum Nachlesen geben.

Der Autor hat sich viel mit Groovy beschäftigt und im Laufe der Zeit immer mehr Geschmack an den neuen Möglichkeiten gefunden, die diese Sprache gegenüber der Programmierung mit dem konventionellen Java bietet. Er gehört aber nicht zum Groovy-Projekt und hält auch absichtlich eine gewisse kritische Distanz. Sie erleichtert es, auf Schwächen und problematische Aspekte hinzuweisen – ohne allerdings in kleinkarierter Krittelei zu verfallen, denn was das gemessen an der Aufgabe sehr kleine Team geleistet hat, ist bewundernswert. Aber Sie als Anwender von Groovy sollen nicht in Fallen laufen, die Ihnen leicht die Freude an der Arbeit mit diesem insgesamt wunderbaren Werkzeug verleiden könnten.

Das Buch gliedert sich in neun Kapitel und einige Anhänge, deren jeweilige Ziele hier kurz erläutert werden sollen.

Kapitel 1. Erste Schritte

Als Erstes und als Grundlage für alles Weitere wollen wir Ihnen zeigen, wie Sie Groovy auf ihrem Rechner installieren und wie Sie Ihr erstes kleines Programm schreiben und auf unterschiedliche Weise zum Laufen bringen können.

Kapitel 2. Die Sprache Groovy

Dieses Kapitel macht Ihnen mit allen Dingen vertraut, die Groovy als Sprache von Java unterscheidet. Es zeigt ihnen, wie Groovy insgesamt „funktioniert“; auf vieles, was hier nur kurz angedeutet werden kann, gehen spätere Kapitel ausführlicher ein.

Kapitel 3. Objekte in Groovy

Wie in Java, so schreiben Sie auch in Groovy Programme immer in Form von Klassen. Dabei ist jedoch in Groovy manches anders als in Java und es gibt eine Reihe zusätzlicher Möglichkeiten, die dieses Kapitel ausführlich erläutert.

Kapitel 4. Neue Konzepte

In Groovy gibt es einige Dinge, die Sie von Java und dem JDK nicht kennen, z.B. Closures, GStrings und Builder. Da sie eine wichtige Grundlage für die Arbeit mit Groovy und das Verständnis der Groovy-Bibliothek sind, stellen wir sie hier ausführlich vor und zeigen, wie man mit ihnen Arbeitet.

Kapitel 5. Das Groovy-JDK

Wenn Sie mit Groovy programmieren, können Sie an altbekannten Java-Standardklassen plötzlich Methoden aufrufen, die es dort gar nicht gibt. Wir nennen Sie vordefinierte Methoden und erklären hier, welche es gibt und wie sie funktionieren.

Kapitel 6. API-Highlights

Zu Groovy gehört neben der Programmiersprache eine Bibliothek mit einer Fülle fertiger Klassen, mit denen sich häufige Programmieraufgaben leichter und effizienter erledigen lassen. Dieses Kapitel gibt einen Überblick und gibt eine Einführung in die wichtigsten dieser Klassen.

Kapitel 7. Dynamisches Programmieren

Eine Spezialität von Groovy ist, dass es Objekt zur Laufzeit ganz anders erscheinen lassen kann, als es in seiner Klasse ursprünglich definiert ist. Hier zeigen wir Ihnen die verschiedenen Möglichkeiten, Objekte mit zusätzlichen Methoden und Properties zu versehen, Methoden zu verändern und sogar dem Methodenaufruf an sich eine neue Bedeutung zu geben.

Kapitel 8. Groovy integrieren

Groovy und Java sind eng verbunden; trotzdem gilt es Einiges zu beachten, wenn Sie Groovy-Klassen oder -Skripte in Ihre Java-Programme integrieren wollen. Dazu gehören Aspekte zur statischen und dynamischen Integration sowie Sicherheitsfragen, die bei der Laufzeitintegration von Skripten zu beachten sind.

Kapitel 9. Groovy im Entwicklungsprozess

Mit Groovy kann man nicht nur Anwendungen entwickeln. Es eignet sich auch hervorragend für den Einsatz im Werkzeug im Entwicklungsprozess – auch von normalen Java-Anwendungen. Wir zeigen Ihnen den Einsatz von Groovy in Zusammenhang mit Ant-Builds und Junit-Tests.

Im Anhang zum Buch finden Sie noch eine Reihe von Informationen zum Nachschlagen. Sie werden Ihnen sowohl beim Lesen des Textteils als auch später zum Nachschlagen hilfreiche Dienste leisten.

  • Anhang - Vordefinierte Methoden enthält eine Zusammenstellung aller vordefinierten Methoden; dies sind jene Methoden, die in einem Groovy-Programm für diverse Typen verfügbar sind, obwohl sie dort gar nicht definiert sind.
  • Anhang - Wichtige Klassen und Interfaces dokumentiert einen Teil der Klassen, die in der Groovy-Standardbibliothek enthalten sind und die für die alltägliche Groovy-Programmierung besonders wichtig sind.
  • Anhang - Tools erläutert die zu Groovy gehörenden Tools mit ihren jeweiligen Aufrufoptionen.
  • Anhang - Glossar erklärt einige Groovy-spezifische Bezeichnungen in aller Kürze.

Hinweise zur Lektüre[Bearbeiten]

Als Java-Programmierer werden Sie mit Hilfe dieses Buches rasch einen Zugang zur Arbeit mit Groovy finden. Lesen Sie auf jeden Fall die Kapitel 1 und 2, die Ihnen zeigen, wie Sie Groovy installieren, wie Sie Groovy-Skripte und -Programme zum Laufen bringen und worin die wesentlichsten sprachlichen (d.h. syntaktischen und semantischen) Unterschiede zwischen den Sprachen Groovy und Java bestehen.

Sinnvoll ist auch, die Kapitel 3 bis 5 anfangs zumindest „diagonal“ zu lesen. Sie zeigen wichtige Grundlagen für das Programmieren in Groovy, die aber an manchen Stellen sicher etwas tiefer ins Detail gehen, als es am Anfang notwendig ist. Irgendwann sollten Sie die drei Kapitel allerdings auch etwas eingehender studieren, um sich sicher in der Groovy-Welt bewegen zu können.

Die restlichen Kapitel (6 bis 9) betreffen dann verschiedene Spezialfragen, die eher dann von Interesse sind, wenn Sie ein bestimmtes Problem lösen müssen, für das Groovy Ihnen eine spezielle Lösung bieten kann. Auch hier ist es sicher sinnvoll, die Seiten anfangs einmal zu überfliegen, damit Sie überhaupt wissen, was es so gibt und wo Ihnen Groovy helfen kann. Eingehendes Lesen lohnt sich aber in erster Linie dann, wenn es für Sie konkret wird.

Weitere Informationen[Bearbeiten]

Wenn auch Groovy einen gewissen Reifegrad erreicht hat, wird es doch auf absehbare Zeit work in progess sein, Vorhandenes wird sich ändern und Neues wird hinzukommen. Dieses Buch kann Ihnen nur einen ersten Einstieg bieten und zeigen, welche Möglichkeiten Ihnen mit Groovy prinzipiell zur Verfügung stehen. Spätestens wenn Sie vertiefte Informationen benötigen, wenn Zweifelsfälle auftreten oder wenn sich Dinge ändern, werden Sie sicher auf weitere Informationen zugreifen wollen. Dazu seien hier schon mal einige mögliche Quellen genannt. Zunächst jene im Internet:

  • Die Projekt-Website http://groovy.codehaus.org. Hier finden Sie unter Documentation eine Fülle von Informationen, allerdings – wie häufig in Open-Source-Projekten mit knappem Budget, nicht immer lückenlos und nicht immer ganz aktuell. Auch das JavaDoc zu Groovy ist hier zu finden, aber auch darin fehlt so mancher Kommentar oder manche Erläuterung ist etwas knapp geraten oder schlichtweg falsch.
  • Angesichts dessen kann es durchaus hilfreich sein, einen Blick in den Quellcode dieser und jener Groovy-Standardklasse zu werfen. Laden Sie sich die Quellen von der den Download-Seiten des Projekts oder betrachten Sie sie live unter http://fisheye.codehaus.org/browse/groovy/trunk/groovy/groovy-core/src/main.
  • Bei der äußerst lebendigen Mail-Liste (mailto:user@groovy.codehaus.org) können Sie im Falle eines konkreten Problems mit Groovy auf Unterstützung rechnen. Scheuen Sie sich nicht, Ihre Fragen auf Englisch zu stellen; in der weltweiten Groovy-Community gibt es viele Teilnehmer mit einer anderen Muttersprache. Bisherige Beiträge lassen sich bei Nabble unter http://www.nabble.com/groovy---user-f11867.html nachlesen.
  • Immer wieder erscheinen interessante Blog-Beiträge, die sich mit Themen im Umfeld von Groovy befassen. Der mit Groovy und Grails implementierte spezielle Aggregator groovy.blogs() sammelt sie und erleichtert uns, auf dem Laufenden zu bleiben: http://groovyblogs.org

Was die gedruckte Literatur angeht, hat sich das Angebot zwar im Laufe inzwischen beträchtlich verbessert, ist aber zwangsläufig nicht immer ganz aktuell. Folgende Bücher können generell empfohlen werden.

  • Groovy in Action von Dierk Koenig, Andrew Glover, Paul King und Guillaume Laforge (Manning-Verlag, englisch). Obwohl allgemein als die definitive Dokumentation zu Groovy angesehen, kann angesichts der rasanten Weiterentwicklung auch dieses dicke Buch (knapp 700 Seiten) nicht alle Bereiche vollständig abdecken und ist in Teilen veraltet. Eine Neuauflage dieses Standardwerks soll im Sommer 2010 erscheinen.
  • Groovy im Einsatz ist die deutsche Übersetzung von Groovy in Action (Hanser Fachbuch Verlag). Gegenüber der Originalversion leicht aktualisiert, aber ebenfalls nicht mehr vollständig up-to-date.
  • Groovy: Grundlagen und fortgeschrittene Techniken von Joachim Baumann (dpunkt-Verlag) ist eine umfangreiche, lesbare, bisweilen recht launig geschriebene Einführung in viele Aspekte der Groovy-Programmierung.

Wie oben bereits gesagt, setzten wir in diesem Buch ein solides Grundwissen über die Programmiersprache Java und die Java-Standardbibliotheken voraus. Das ist natürlich ein weites Feld, und es kann durchaus sein, dass Sie an der einen oder anderen Stelle noch einmal nachschauen müssen, wie es denn mit Java genau funktioniert. Es gibt diverse gute Bücher über Java; zwei davon sind sehr verbreitet und können auch online kostenlos gelesen oder heruntergeladen werden, daher möchten wir es an diese Stelle benennen: