© Excellent backgrounds/Shutterstock.com
Multilingual: Groovy-Code in Java-Applikationen

Everything is an Object


Die Sprache Groovy kann mit Java fast eins zu eins interagieren. Durch ihre optionale statische Typisierung und ihre dynamischen Features bis hin zu Closures ist sie ein interessanter Kandidat, um mit funktionaler Programmierung in Berührung zu kommen – ohne sich syntaktisch zu weit von Java zu entfernen.

Artikelserie

Teil 1: Clojure

Teil 2: Scala

Teil 3: Groovy

Teil 4: Jython

Im TIOBE Index [1] rangierte Groovy auf Platz 17 im Jahr 2015. Die Sprache lehnt sich in großen Teilen an die Syntax von Java an, ist gleichzeitig aber auch Vorbild für viele Java-Features. Der Einstieg fällt Java-Entwicklern dadurch besonders leicht. Vor allem mit dem erfolgreichen Webframework Grails hat sie viele Anhänger gefunden. Ihre Beliebtheit hat sie auch den vielfältigen Einsatzmöglichkeiten zu verdanken. Von einfachen Skripten, über umfangreiche Tests mit Spock [2], bis hin zu komplexen Applikationen mit durchgehender statischer Typisierung à la Java, deckt Groovy jedes Gebiet ab. Durch ihre Nähe interagiert sie mit Java laut der Groovy-Webseite [3] nahtlos. Aber die dynamischen Sprachfeatures verursachen an bestimmten Stellen doch Probleme. Im Laufe des Artikels wird klar, wie gut die Integration mit Java tatsächlich funktioniert.

Primitive Datentypen als Objekte

Als Erstes ist es wichtig, sich über die primitiven Datentypen einen Überblick zu verschaffen, um eine Basis für weitere Erkundungen zu schaffen. Bei primitiven Datentypen gibt es glücklicherweise keine Überraschungen, da es die gleichen sind wie in Java. Tatsächlich sind für Groovy durch seine Philosophie „Everything is an object“ auch primitive Datentypen Objekte. Ein Ausdruck wie 42.toString() würde keine Exception werfen. Dieses Verhalten wird mit Autoboxing erreicht, das jeden primitiven Datentyp mit seinem entsprechenden Wrapper-Typen umgibt. In [4] wird erläutert, dass beim Umgang mit Frameworks, die primitive Datentypen erwarten, diese explizit auch benutzt werden sollten.

Klassen: Was ändert sich?

Groovy-Klassen sind in Java eins zu eins verwendbar. Statische Methoden sowie Klassenvariablen verhalten sich genauso wie in Java. Listing 1 zeigt eine einfache Groovy-Klasse Person mit Klassenvariablen, einem Konstruktor und einer Methode.

Listing 1: Groovy-Klasse „Person“

class Person { String name Integer age Person(name = "Anonymous", age = 0) { this.name = name this.age = age } def increaseAge(Integer years) { this.age += years } }

Der Compiler erzeugt eine ganze Reihe von Kons­truktoren für diese Klass...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang