Posted on Jul 16, 2012 in Allgemein, Blog, Development, Java

Nach vielen Jahren Webprogrammierung, unzähligen Versuchen und Projekten mit PHP samt verschiedener Frameworks, Python und Zope, sogar ein bisschen Perl und letztlich Java in verschiedenen Geschmacksrichtungen bin ich zu dem Punkt gekommen, seit etwa zwei Jahren für mich die beste Lösung  gefunden zu haben. Eine Lösung, die nicht für jedes kleine Web-Projekt passt, aber für die mittleren und großen, ganz gleich ob im fortgeschrittenen Agentureinsatz oder im Unternehmensumfeld.

Groovy & Grails

Grails ist ein Web-Framework, das auf der Sprache Groovy basiert. Groovy wiederum ist eine Weiterentwicklung oder Ergänzung von Java, die das dynamische Programmieren mit der Verlässlichkeit und der Skalierbarkeit der Java Plattform verbindet. Das Gespann Groovy & Grails erlaubt es, Funktionalitäten mit bislang kaum möglich geglaubten wenigen Lines of Code zu implementieren.

Grails integriert verschiedene, etablierte Enterprise Frameworks aus dem Java Umfeld, wie Hibernate (objektrelationales Mapping), Spring MVC (Model View Controller Framework) und Spring Security, Sitemesh (Templating System) und einiges mehr. Jeder Bestandteil ist im Unternehmensbereich etabliert und bietet die Zuverlässigkeit und Sicherheit, die man von etablierten Java-Lösungen erwartet. Grails integriert diese Frameworks und macht sie sehr leicht konfigurierbar und zugänglich. Durch Groovy werden diese Frameworks zudem auch mit weniger und leichter lesbarem Quellcode nutzbar. Und all das läuft selbstverständlich auf der Java Virtual Machine und einem Application Container.

Abgrenzung zu anderen Technologien

Um Grails gegen andere Technologien abzugrenzen, werde ich den Vergleich mit PHP kurz antreten. PHP gilt als die meist verbreitete Technologie für Webanwendungen. Vorteile von PHP sind die Verfügbarkeit der Entwickler und die vergleichsweise niedrigen Sätze, was beides an den zum Teil niederschwelligen Eingangsvoraussetzungen liegt. Auf der Negativseite ist die Performance von PHP zu nennen. Auch in Sachen Sicherheit ist PHP in der Vergangenheit immer wieder negativ auffällig geworden – es vergeht kaum ein Vortrag über die Sicherheit von Webanwendungen, bei dem nicht PHP als Sicherheitsrisiko dargestellt wird, wenn man es nicht richtig nutzt und konfiguriert.

Letztlich sieht man am Einsatz der Sprache ihre Schwerpunkte: Im Bankenumfeld beispielsweise sind viele Webseiten mit Hilfe von PHP erstellt, aber es gibt meines Wissens keine transaktionsorientiere Bankingsoftware, die auf PHP basiert — die sind in der Regel in Java geschrieben. Außerdem wird Java im Unternehmensumfeld in der Regel als Implementierungstechnologie akzeptiert — PHP ist davon noch weit entfernt (es sei denn als Frontend-Technologie).  Das ist wichtig, wenn es um die Anschlussfähigkeit an andere Systeme geht.

Referenzimplementierungen und Investitionssicherheit bei Grails

Grails wird in einer ganzen Reihe von hochfrequentierten Sites zum Einsatz gebracht. Neben den britischen Steuerwesen sind vor allem die Sites von Sky.com und Wired.com zu benennen. Auch die Backendlogik von NetFlix basiert in großen Teilen auf Groovy und Grails. Tendenziell wird Grails aber vorwiegend im Unternehmensbereich für interne Anwendungen eingesetzt, die selten das Licht einer breiten Öffentlichkeit erblicken. Die Gründe für den Einsatz sind die schnellen Entwicklungszeiten und vor allem die nahtlose Integration in die zumeist vorhandenen Java-Infrastruktur.

Grails ist wie Groovy OpenSource und zwar in einer businessfreundlichen Apache 2 Lizenz, die es erlaubt den Quellcode zu verändern, ohne die Veränderungen wiederum publizieren zu müssen, wie es etwa die GPL (GNU Public License) fordert. Groovy und Grails werden von einer aktiven Entwicklercommunity weiterentwickelt.

Hinter beiden Technologien steckt die Firma SpringSource als Förderer, einer der maßgeblichen Technologiefirmen im Java Enterprise Bereich. SpringSource wurde durch das gleichnamige Spring Framework bekannt. Ziel des Unternehmens ist es, die Java Enterprise Entwicklung zu vereinfachen ohne die Vorteile von Java aufzugeben (etwa Sicherheit, Transaktionssicherheit oder Skalierbarkeit). Dieses Ziel setzen Groovy & Grails hervorragend um. Durch die Einbettung in ein großes Unternehmen, stehen auch professionelle Support- und Schulungsleistungen zur Verfügung, eines der Ausschlusskriterien für Unternehmenseinsätze.

SpringSource gehört mittlerweile zum börsennotierten Virtualisierungs- und Cloudspezialisten VMWare, der die Größe hat, Groovy & Grails auch mittel- und langfristig mit Mitteln zu unterstützen, um weiterhin das Tempo und die Qualität der Entwicklung zu gewährleisten. Groovy & Grails verbinden somit die besten Elemente von freier und kommerzieller Software.

Laufzeitumgebung

Grails läuft auf allen denkbaren Betriebssystemen, so lange dafür eine Java Laufzeitumgebung existiert (was zumindest für Windows, Mac, Linux und Solaris zutrifft). Im weiteren wird ein Application Container wie Tomcat oder Jetty benötigt, im Unternehmensumfeld lassen sich aber auch Application Server wie WebSphere oder JBoss nutzen. Grails läuft Dank Hibernate mit den meisten Datenbanken von MySQL oder PostGreSQL bis Oracle oder DB 2 und auch mit den modernen auf Map-Reduce basierenden Massenspeichern wie Hadoop. Es ist möglich, hochkomplexe Grails Projekte zu realisieren, ohne dass Lizenzkosten anfallen.

Nachteile von Grails

Technologisch bietet Grails äußerst wenige Nachteile, weil es vor allem eine Assemblage von verschiedenen bewährten Technologien ist. Grails läuft kaum merkbar langsamer als „pures“ Java –- ein Sachverhalt, der aber durch die bis zu 60% kürzere Entwicklungszeit ausreichend kompensiert wird. Im Vergleich zu PHP ist Grails aber immer noch deutlich schneller.

Auf den ersten Blick ist nachteilig, dass es relativ wenige Entwickler mit Groovy- und Grails-Kenntnissen und -Erfahrung gibt. Es ist jedoch ohne weiteres möglich, Java Entwickler für das Framework zu gewinnen. Diese sollten binnen zwei oder drei Tagen, die nötigen Kenntnisse erwerben können, da Groovy auch in klassischer Java-Syntax programmiert werden kann – der Übergang also durch die Ähnlichkeit fließend erfolgen kann. Die Nutzung und Integration von vorhandenen Java-APIs, die den Entwicklern zum Teil bekannt sein dürften, wird empfohlen und durch die Technologie nahtlos unterstützt.

Grails und Java Entwickler sind in der Regel teurer als PHP-Entwickler, was durch die Vorteile, die die Umgebung mit sich bringt, aber kompensiert wird.

Einsatz-Szenarien

Theoretisch lässt sich Grails für jede dynamische Webanwendung einsetzen. Praktisch scheitert es aber vor allem daran, dass Java-Hosting noch nicht die Verbreitung und Preisspanne hat, wie etwa PHP. Für mittlere bis große Projekte lohnt sich der Aufwand, einen eigenen oder virtuellen Server zu verwenden, schnell. Zumal man auch problemlos einen Cloud-Hoster nutzen kann, sofern dieser Java unterstützt.

Zielgruppe von Groovy & Grails sehe ich in Internetagenturen, die an Projekte gelangen, die zu komplex für die Standardlösung Typo3 / PHP sind oder die besondere Ansprüche an Performance, Skalierbarkeit oder Sicherheit erfordern. Aber auch das Unternehmensumfeld hat das dynamische Gespann gerne aufgenommen. Sei es um schnell Prototypen zu entwickeln aber auch die Entwicklungszeiten für große Projekte zu reduzieren. Da Groovy und Grails zu Java-Bytecode kompiliert werden, lässt sich ziemlich jede Infrastruktur, die für Java gemacht ist, auch für Groovy und Grails nutzen.

Ökosystem

Neben Grails haben sich um die Programmiersprache Groovy herum mittlerweile eine ganze Reihe von Technologien entwickelt, die die dynamische Programmierung auf der Java-Plattform nutzen. Griffon – soeben in der Version 1.0 erschienen – ermöglicht es mit ähnlichen Techniken wie Grails, Desktop Anwendungen zu entwickeln. Gradle ist ein auf Groovy basierendes Build-System, das das Beste von Ant und Maven aufnimmt und die Funktionalität in einfach lesbaren Groovy-Klassen definiert.

4 Comments

  1. Robert Reiz
    19. Juli 2012

    Vielen Dank für den ausführlichen Artikel. Hat spass gemacht es zu lesen.

    Die Ausführungsgeschwindigkeit des Codes ist bei einer Webanwendung nicht so wichtig. Die meisste Zeit geht bei TCP/IP und bei der DB drauf.

    Ich halte am 29.08.2012 den Vortrag “Ruby für Java Entwickler” an der JUG KA:
    http://jug-karlsruhe.mixxt.de/networks/events/show_event.64646
    Würde mich freuen wenn du kommst.

    Reply
  2. Steffen Müller
    20. Juli 2012

    Hallo Reto, danke für den guten Artikel. Davon braucht es mehr, um Grails etwas bekannter zu machen – wir sind übrigens nach deinem flammenden Plädoyer für Grails beim Lean Startup Meeting nochmal drüber gegangen und haben uns jetzt auch verliebt – Grails wird bei uns jetzt für die neuen mittleren bis großen Webprojekte eingesetzt.

    (Vielleicht lohnt sich doch eine Grails User Group Darmstadt :)

    Grüße!

    Reply
    • Reto Kiefer
      20. Juli 2012

      Hallo Steffen,

      wenn wir auf Rhein-Main ausweiten (und uns trotzdem in DA treffen) bin ich sofort dabei – auch in Sachen Orga. Einfach mal anvisieren und sehen wer kommt.

      Ich ruf’ Dich kommende Woche mal an…

      Schöne Grüße

      Reto

      Reply
  3. G-Force [G4ce] » Grails im Alltagseinsatz
    13. Dezember 2012

    [...] [Dieser Beitrag erschien zuerst am 16. Juli 2012 auf http://www.retokiefer.com [...]

    Reply

Leave a Reply