Erst 2003 entwickelt, hat die Open-Source-Scriptsprache Groovy sich rasant von einem Geheimtipp zu einer ernst zu nehmenden Programmiersprache für den Einsatz in Enterprise-Projekten gemausert. Dazu hat gewiss auch beigetragen, dass Groovy als offizielle Standard- sprache der Java Virtual Machine (JVM) anerkannt und damit neben Java erst die zweite Sprache überhaupt ist, die dieses Zertifikat besitzt (Java Specification Request JSR 241).
Trotz ihres geringen Alters überzeugt Groovy immer weitere Teile der Entwicklergemeinde durch ihren hohen Reifegrad. Das ist angesichts der mächtigen Community, an der seit 2006 zum Beispiel auch Spitzenprogrammierer von Oracle beteiligt sind, aber kaum verwunderlich. Groovy setzt unmittelbar auf Java auf, ist aber alles andere als ein Java-Clone.
Diese Hauptargumente sprechen für Groovy und heben sie von Java ab:
- Prägnante, ausdrucksstarke, kurze und lesbare Syntax: Einerseits ermöglicht das Java-Entwicklern die schnelle Einarbeitung. Andererseits heißt weniger Programmcode auch leichtere Wartung (und die damit einhergehende Produktivitätssteigerung) und weniger Bugs. Es ist unbestritten, dass die Anzahl von Fehlern proportional zum Code-Umfang ansteigt.
- Ausgezeichnete Interaktion mit Java: Groovy interagiert mit Java – und das nicht nur partiell, sondern vollständig und in beide Richtungen. Groovy kann problemlos sämtliche bereits entwickelten Java-Klassen im Klassenpfad wiederverwenden. Zudem ist es ohne weiteres möglich, Groovy-Programme von Java aus zu nutzen.
- Eigenschaften einer dynamischen Sprache und Script-Fähigkeit: Groovy erweitert Javas Klassenbibliotheken um etliche Funktionen, unterstützt Standardtypen und führt die bei Java nicht mehr vorhandene Operatorüberladung wieder ein. Javas Compiler muss im Voraus wissen, welche Datentypen zur Initialisierung von Variablen verwendet werden sollen. Groovy erlaubt es, den Inhalt einer Variablen via Late Binding nachträglich festzulegen.
Die Probleme, die früher oder später bei der Entwicklung von Closures mit Java auftreten, fallen bei Groovy weg. Auch können Groovy-Applikationen, ohne sie ausdrücklich zu Klassendateien kompilieren zu müssen, unmittelbar aus dem Quellprogramm gestartet werden. Groovy wird zudem von mehreren bekannten IDEs (z.B. Eclipse und NetBeans) unterstützt. In Eclipse kann Groovy dadurch beispielsweise wie ein normales Java-Projekt debuggt werden (Breakpoints setzen, Variablen zur Laufzeit inspizieren etc.).
Groovys dynamischer Charakter eröffnet zahlreiche Optionen, die Java und statische Programmier- sprachen nicht bieten. Aus der Verbindung von Groovy mit dem Framework Grails, auf das an dieser Stelle noch ausführlich eingegangen wird, ergeben sich zusätzliche wertvolle Funktionalitäten.
Einsatzgebiete von Groovy
Generell kann Groovy überall dort eingesetzt werden, wo auch Java zum Einsatz kommt. Sie eignet sich zur Entwicklung von
- Scripts,
- reinen Java-Applikationen,
- Servlets,
- Benutzeroberflächen und
- vollständigen Anwendungen sowie deren Integration in Java EE-Projekte,
- zur Datenverarbeitung (XML-Parsen),
- zur Steuerung von COM-Komponenten,
- zur Zugriffsregelung auf Datenbanken usw.
Dabei nehmen weder Entwickler noch User die komplexen Vorgänge wahr, die im Hintergrund ablaufen, denn Groovy-Programme werden wie Webdienste behandelt. Groovy ist stabil, flexibel und dynamisch, Programme dabei wenig anfällig gegen Bugs und wenig wartungsintensiv.
//SEIBERT/MEDIA prüft den professionellen Einsatz von Groovy für Unternehmen
Die neue Programmiersprache Groovy und das Framework Grails müssen im Rahmen eingehender Tests gegen die etablierten, professionellen und erfolgreichen Lösungen in Perl antreten. Die Entwickler von //SEIBERT/MEDIA/TECHNOLOGIES prüfen Goovy und Grails in den folgenden Kategorien:
- Performance (Geschwindigkeit und Skalierbarkeit im Vergleich zu Apache2 und mod_perl)
- Tool-Unterstützung und Debugging (Integration in Eclipse IDE und/oder NetBeans, Debugging in den "Untiefen" des Frameworks, in Groovy und den generierten Javaklassen, Reflection API, Debugging-Tools, Exception-Handling)
- Fähigkeiten des ORM (Datenbankabfragen außerhalb des ORMs, Transaktionen)
- Erweiterbarkeit (Recherche von Plug-ins für die typischen Problemstellungen unserer Anwendungen, Session-Management, Rollenverwaltung, E-Mail-Versand, SOAP)
- Fähigkeiten des mitgelieferten Template-Parsers (Tag-Libraries, SiteMesh, Austauschmöglichkeit des Template-Parsers, Möglichkeit der Benutzung von XSLT)
Grundsätzlich streben wir nicht an, Systeme gegeneinander auszutauschen. Das Anliegen der //SEIBERT/MEDIA-Entwickler besteht vielmehr darin, etablierte Lösungen sinnvoll zu ergänzen. Die ersten vielversprechenden Ergebnisse liegen bereits vor.
Weitere Informationen:
- Die Groovy-Website
- Tonabnehmer #13: Dierk König - Groovy und Grails (Podcast-Interview mit dem Groovy-Experten Dierk König)
- Einführung in Groovy (ausführliches Tutorial)
- Extreme Programming: Vorgehensmodell zur Software-Entwicklung bei //SEIBERT/MEDIA (eigener Artikel)
- Die Website von //SEIBERT/MEDIA/TECHNOLOGIES
Mehr über die Creative-Commons-Lizenz erfahren
Das wichtigste dabei: es geht nicht um Groovy vs. Java sondern Groovy und Java 🙂