Montag, 10. September 2007

Lightning Talk "Groovy on Grails"


Heute gab es am FZI einen "Lightning Talk" zum Thema "Groovy on Grails" von
Raphael Volz. Hier ein "Live-Mitschrieb" von der Session, also eher knapp gehalten und nur wirklich verständlich, wenn man die Folien dazu kennt (Folien gibt es hier)


Kurz und knapp

Grails: Framework für das schnelle Bauen von Webapplikationen
Groovy: Die Sprache, auf der Grails aufbaut

Insgesamt sind das also zwei Frameworks, die auf diversen Frameworks für Java aufbauen. Die Argumentation für so ein vorgehen ist, dass man so das "Prototyping" einfacher macht. Java ist nach dieser Argumentation zwar gut, aber oft zu kompliziert, um agile Webentwicklung zu betreiben und/oder einfache Prototypen zu entwickeln.


Einführung in Groovy
Baut auf Java auf.

  1. Feststellung: Der Syntax ist deutlich einfacher als bei Java.
  2. Feststellung: Variablen können Code enthalten, den ich abspeichern und wieder verwenden kann (sog. Closures). Das ist wohl vergleichbar mit den anonymen Lambda-Funktionen in Lisp. Leider hab ich nie Lisp programmiert ;-)
  3. Feststellung: Listen sind einfach zu coden! Dazu gibt es auch schöne Operatoren (abziehen von Elementen (=Entfernen) etc.). Maps sind wie Listen nur mit key:value Notation. Sortieren ist schon eingebaut und einfach zu bedienen)
  4. Feststellung: Überladen von Operatoren ist möglich.
  5. Feststellung: Es gibt sogenannte Builders, mit denen man verschiedene Sachen erzeugen kann. Insbesondere interessant, da es schon diverse fertige Builder gibt (XML, HTML, Swing-GUI, ...). Dazu gibt es dann auch Parser, die Groovy Objekte aus den entsprechenden Repräsentationen erzeugen.
Fazit zu Groovy: Schnell zu entwickeln. Kleiner/kurzer Code. Aber: schwerer zu debuggen und deutlich langsamer in der Ausführung als einfacher Java-Code.


Einführung in Grails
Grails ist ein MVC Web-Framework, das auf Spring, Hibernate, Groovy, Ant etc. aufbaut
Als Default-Web-Server wird Jetty verwendet.
"Programing by Convetion" oder auch "Convention over configuration"

So mach ich ein Programm damit:
%> grails create-app
Domänenobjekte beschreiben
%> grails generate-all
%> grails run-app

  1. Feststellungen: Objekten und ihren Attributen können Constraints zugewiesen werden. Insbesondere gibt es schon fertige Constraints für oft vorkommende Attribut-Typen (Email, ...)
  2. Feststellung: Suchen über freie Funktionsnamen (findByTitel("xy") ==> "WHERE title='xy', findByTitleLikeOrAuthor('xy','Fritz') ==> "WHERE title LIKE 'xy' OR author = 'Fritz'). Hier gibt es fixe Konventionen anhand derer dies Übersetzung gemacht wird.
  3. Feststellung: Prozesse, die mehrere Seiten verwenden müssen, können mit Hilfe eines Chain-Objektes direkt und einfach implementiert werden.
  4. Feststellung: Jobs (ähnlich wie Cron) sind machbar. Diese werden entsprechend im Hintergrund ausgeführt.
Fazit zu Grails: Mit dem Framework kann man wirklich schnell Web-Applikationen "prototypen". Muss aber noch einiges daran gemacht werden. Für einige private und kleinere Projekte werde ich es mir allerdings mal genauer anschauen.


Fragen am Ende der Session

  • Wie nachhaltig schätzt der Referent Grails/Groovy ein
    • Groovy wird wohl ziemlich sicher bleiben (insbesondere da es diverse Preise gewonnen hat) und da "man" sich als JSR-XXXX (als dynamische Scripting-Sprache für Java) Spezifikation beworben hat.
    • Bei Grails ist das noch nicht abzuschätzen. Momentan viel Buzz aber noch zu neu und zu unausgegoren.
  • Gibt es IDEs
    • Noch nicht so recht. Das Eclipse Plugin ist noch im SVN Status und der Referent hat noch keine Umgebung installiert bekommen.


Hinweise und Sachen, die mir nebenbei aufgefallen sind

  • Hier kann man Groovy runterladen: http://groovy.codehaus.org/
  • Hier kann man Grails runterladen: http://grails.codehaus.org/
  • Gargoylesoft Webclient als Zugriff auf's web (com.gargoylesoft.xxx). Das muss ich mir mal noch genauer ansehen.
  • Das in den Folien vorgestellt Grails Buch ist inzwischen veraltet und mancher Code daraus funktioniert nicht mehr
  • Im September kommt angeblich Grails 1.0

Keine Kommentare:

Kommentar posten

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.