Groovy on Mac

wegus

wegus

MU Team
Thread Starter
Dabei seit
13.09.2004
Beiträge
19.705
Reaktionspunkte
7.557
Da Groovy als Skriptsprache ja sehr eng an Java angelehnt ist und die Basis für Groovy on Grails bei Web-Applikationen ist hat es mich mal interessiert. Das Groovy dabei nicht nur interpretiert werden muß, sondern auch compiliert werden kann fand ich dabei doppelt spannend. Gefallen hat mir auch das Groovy eben nicht ( wie etwa PHP) eine typlose Sprache ist. Es ist halt alles schlicht ein Objekt und typtreue läßt sich somit gewährleisten. Wenn man nicht will, muß man Typen aber nicht statisch definieren; dynamisch zur Laufzeit reicht aus.

Auf den ersten Blick fällt sehr viel Ballast von Java weg und das obwohl eben am Ende ( ob interpretiert oder compiliert) der selbe Bytecode herauskommt und alles wieder in der JVM läuft.

Für mich interessant genug um hier mal ein kleines

Groovy Howto für den Mac

zu starten. Vielleicht stößt das ja auf Interesse. Ich werde also hier peu a peu die Installation bis hin zu den ersten Groovy-Skripten vorstellen. Seht mir nach wenn es eine Weile dauert.

Gruß wegus
 
Download und Installation

Anlaufstelle für alles rund um Groovy ist http://groovy.codehaus.org/ Hier findet man dann auch unter:

http://groovy.codehaus.org/Download

die tar.gz der gesuchten Binary-Version ( zu meinem Zeitpunkt jetzt ist das 1.0 ) die wir downloaden. Bitte nicht vom Binary irritieren lassen, es handelt sich um Java-Binaries, somit ist es egal ob Windows/Linux oder Mac gemeint sind.

Die tar.gz-Datei extrahieren wir per Doppelclick und erhalten einen Groovy-Ordner, bei mir heißt er groovy-1.0 . Darin enthalten ist zunächst mal Alles was wir für Groovy brauchen. Wir müssen nur noch den Ordner an eine Stelle im Dateisystem schieben, ein paar Variablen setzen und sind fertig.

UNIXer tendieren dazu immer alles unter /usr/local abzulegen und eigentlich gehört unser Groovy dort auch hin. Unerfahrene User verwenden jedoch ungern die UNIX-eigenen Verzeichnisse und es ist IMHO auch wenig Mac-like dies zu tun. Ich hab mich daher dazu entschieden den Ordner zu verwenden den sich alle User teilen. Man erreicht ihn ganz gewöhnlich via Finder mit


Macintosh HD->Benutzer->Für alle Benutzer


hier legen wir uns einen Ordner opt ( für optional ) an und diesen kann man dann ganz genauso wie /usr/local/* verwenden nur ist es eben etwas mehr Mac-like und mag auch pot. Systemupdates (Leopard ruft) besser überstehen. Legt Euch also dort das Verzeichnis opt an und kopiert den ausgepackten Groovy-Ordner dort hinein.

Im Terminal erreicht man unseren neuen opt-Ordner übrigens fast genauso einfach wie /usr/local. Mit einem schlichten

Code:
ls /User/Shared/opt

sehen wir etwa im Terminal den Groovy-Ordner dort liegen. Was jetzt noch fehlt sind zweierlei:

- Im Groovy-Ordner befindet sich ein ./bin-Ordner er enthält Compiler,Interpreter, sowie eine Groovy-eigene Shell und Einiges mehr. Um mit den Programmen sinnvoll arbeiten zu können, sollten wir den bin-Ordner von groovy dem Suchpfad vom Terminal hinzufügen.

- damit auch Groovy herausfinden kann "wo es sich befindet", müssen wir eine GROOVY_HOME Variable setzen. Sie enthält dann den Pfad zu unserem Groovy-Ordner ( ohne bin).

Es gibt verschiedene Möglichkeiten solche Angaben zu setzen. Ich ziehe es vor das Systemprofil nicht anzufassen und auch anderen Usern nicht meine Variablen um die Ohren zu werfen. Es bleibt am Ende jedem selbst überlassen wie er das in die Startdateien seiner Shell integrieren mag ( .bashrc z.B.). Ich ziehe die Benutzereigene Profil-Datei vor. Sie liegt im eigenen User-Verzeichnis und sollte mittels

Code:
ls -la .profile

auffindbar sein. Ist das nicht der Fall, dann legt sie einfach selbst an. Das System sorgt dafür, das die .profile auch ausgeführt wird, sobald Ihr Euch anmeldet. Ladet die Datei also in Eueren Lieblingseditor oder erstellt sie neu und fügt folgende Zeilen an:

Code:
#
# Groovy
#
export GROOVY_HOME=/Users/Shared/opt/groovy-1.0
export PATH="$PATH:/Users/Shared/opt/groovy-1.0/bin"

ACHTUNG: Das pure speichern der Datei reicht nicht aus. Die Variablen werden erst gesetzt sobald ein neues Terminal genutzt wird. Wählt also bitte die Terminal-Applikation aus und startet ein neues Terminal. mit

Code:
echo $GROOVY_HOME

solltet Ihr dann also den Pfad zu Groovy im neuen Terminal angezeigt bekommen. Wenn die Erweiterung für den Pfad in der .profile-Datei funktioniert, dann dürfte ein

Code:
groovy -v

Eine Zeile wie diese hier ausgeben:

Groovy Version: 1.0 JVM: 1.5.0_07-87


Groovy ist also Startbereit und wir können erste kleine Skripte schreiben.


Eines sollten wir noch machen:

Per Voreinstellung sucht Groovy spätere Libraries in $GROOVY_HOME/lib und eprsönliche Libraries ( ewta weil wir auf eine Datenbank zugreifen möchten) in .groovy/lib im eigenen Home-Verzeichnis. Wir sollten also mittels

Code:
mkdir .groovy
cd .groovy
mkdir lib

ein solches Verzeichnis in unserem Home-Verzeichnis anlegen. Wer mysql oder postgres installiert hat und dafür einen JDBC-Treiber besitzt kann ihn gleich dorthin kopieren.
 
Zuletzt bearbeitet:
Hello World

Mit solchen Traditionen sollte man nicht brechen. Demzufolge nat. auch hier ein Hello-World mit Groovy. Zu erstellen mit jedem beliebigen Texteditor. Texmate soll bereits ein korrektes Syntaxhighlighting für Groovy liefern. Textwrangler tut es noch ( Version 2.2) nicht. Zu meinem erstaunen der gute alte vi auch nicht. Wer Infos zu Editoren mit Groovy hat, möge sie mir zukommen lassen. Ich pfleg das hier gern ein.


Hier aber erstmal unser HelloWorld:

Code:
#! /usr/bin/env groovy
println "Hello, Mac is grooving !"

Einfach speichern in eine Datei mit dem Namen hello.groovy, dann die Datei mit
Code:
chmod u+x hello.groovy
ausführbar machen und mit ./hello.groovy starten. Nach einer kurzen Pause erscheint dann die schlichte Ausgabe im Terminal.

Man bemerkt gleich eine Reihe von Unterschieden:

  1. Semikolon am Ende ist optional
  2. Klammern um die Parameter sind optional
  3. JEDE Klasse kennt System.out.println ( und einiges mehr!)
  4. Ein Skript muss keine Klassendefinition mit main()-Methode haben

Natürlich DARF man all dies weiter tun, wer mag kann also auch weiterhin

println "Hello, Mac is grooving !"; oder
println ("Hello, Mac is grooving !"); oder schreiben.

und nat. ist es erlaubt auch das initiale Skript selbst in eine Klasse mit main-Methode zu schreiben. Neu ist: man braucht es nicht.

Jedem wird die "Kunstpause" vor ausführen des Skriptes aufgefallen sein. Was zunächst lästig wirkt, ist in meinen Augen ein Riesenvorteil:
In dieser "Pause" wird aus dem groovy.Skript dynamisch eine Java-Klasse gemacht und diese wird dann tatsächlich ausgeführt. Groovy wir also vor der Ausführung einmal vollständig interpretiert und compiliert. Andere Sprachen interpretieren Zeilenweise Stück für Stück. Groovy hat so jedoch immer den Überblick über das komplette Skript und alle verwendeten Klassen!!!
Die Klassen können dabei innerhalb des Skriptes definiert werden oder eben, wie von Java gewohnt, extern definiert sein. Ein expliziter Import ist nicht nötig.
Kann man den Nachteil der langen Startphase für ein Skript nicht gebrauchen, hat man die angenehme Option das precompilieren mit dem Groovy-Compiler groovyc statische zu machen. Man erhält schlicht eine ausführbare Java-Klasse. Sehr praktisch.
 
Zuletzt bearbeitet:
Hi.

Also ich beschäftige mich innerhalb meines Studiums mit Java und wollte auch einmal in Groovy reinschnuppern.

Ab diesem Punkt funktioniert dein Guide bei mir leider nicht mehr. :/


Hast du vielleicht eine Idee, woran das liegen könnte?
 
Zurück
Oben Unten