Grails vs Roo - warum treibt SpringSource zwei sehr ähnliche Technologien voran?

74

SpringSource (jetzt VMWare) verfügt über zwei sehr ähnliche Technologien: Grails und Spring Roo. Ich habe Grails verwendet, aber ich sehe, dass SpringSource aktiv an etwas arbeitet, das ein Konkurrent für diese Technologie ist und das mich über die Zukunft von Grails beunruhigt.

Weiß jemand, wie diese Technologien zusammenhängen, werden sie zusammengeführt oder eine von ihnen wird aufgegeben?

Gibt es außerdem wichtige technische Unterschiede zwischen Grails und Roo?

Piotr Kochański
quelle

Antworten:

88

Das Ziel von SpringSource ist es, den Mitarbeitern das Erstellen, Ausführen und Verwalten von Spring-basierten Lösungen so schnell und einfach wie möglich zu machen. Wir haben sowohl Grails als auch Spring Roo, weil uns die Entwicklerproduktivität sehr am Herzen liegt und beide Tools zweifellos einen ernsthaften Schub für das liefern, was Teams zusätzlich zu Spring erreichen können.

Wir haben beide Technologien, weil Roo und Grails auf philosophischer und Implementierungsebene sehr unterschiedlich sind (wie bereits in den anderen Antworten erwähnt). Jede Technologie nähert sich ihrer Primärsprache (Java oder Groovy) und ihrem Betriebsmodell (Entwicklungszeit oder Laufzeit) mit der Philosophie "Wie können wir das Wertversprechen mit dieser Kombination aus Sprache und Betriebsmodell unglaublich gut machen?". Als solches werden Sie sehen, dass jede Technologie einen anderen Stil annimmt, der diese Kombination (Roos Java + Dev-Zeit oder Grails Groovy + Runtime) und die entsprechenden Vorteile maximiert.

Diese Unterschiede sind tatsächlich sehr positiv, da die Spring-Community wählen kann, welchen "Geschmack" der Produktivitätslösung sie bevorzugen. Während diese anfänglichen Unterschiede in Bezug auf die Sprachauswahl und den Laufzeit- / Entwicklungszeitbetrieb sofort erkennbar sind, erstreckt sich die Auswahl von Grails oder Roo auch auf subtilere Überlegungen wie die verwendeten Standardtechnologien, das Benutzerinteraktionsmodell, die IDE-Unterstützung, Abhängigkeiten, Standards, Roadmap, Erweiterungen usw. Fast alle diese Unterschiede sind eine natürliche Folge der Suche nach einer Best-of-Breed-Lösung für einen bestimmten Sprachstil.

Unser bester Rat ist, beide Lösungen in Betracht zu ziehen. Jeder hat seine Sweet Spots, aber es gibt Unterschiede zwischen den beiden, die Ihre Gesamterfahrung mit der einen oder anderen Technologie in einem bestimmten Kontext verbessern. Beide Nachschlagewerken detailliert die jeweiligen Vorteile der einzelnen Lösungen . Denken Sie natürlich daran, dass der Zeitaufwand für das Ausprobieren von beiden minimal ist. In 10 Minuten können Sie ein Projekt in Roo oder Grails erstellen. Probieren Sie sie aus und sehen Sie, was sich für Sie angesichts Ihres spezifischen Hintergrunds und Ihrer Projektanforderungen natürlicher anfühlt.

Ben Alex
quelle
1
Vielen Dank für eine ausführliche Antwort!
Piotr Kochański
3
10 Minuten? Ich verbringe fast 10 Stunden damit, die 1.1.1 GAE- und GWT-Kostenbeispiele zu kompilieren (ganz zu schweigen von der Arbeit). Welche Verbesserungen des GAE-Datenspeichers wurden genau eingeführt und wie werden sie verwendet? Ich bin verblüfft und beginne wirklich, den QS-Prozess bei SpringSource in Frage zu stellen ... das Hinzufügen einer JUnit, die allen Roo-Samples einen Roo - Script + MVN - Build hinzufügt, ist die echte Investition von 10 Minuten;)
Eran Medan
Eran, ich bin mir nicht sicher, was für Sie schief gelaufen ist, aber wir führen unter roobuild.springsource.org ein kontinuierliches CI durch , das Integrationstests für die Beispiele abschließt, einschließlich des Hochfahrens von Webservern, um sicherzustellen, dass die resultierenden Anwendungen funktionieren usw.
Ben Alex
3
Diese Antwort wäre großartig, wenn nicht der Begriff "Best-of-Breed" verwendet würde - ich hasse Schlagworte!
mjaggard
Die Roo-Samples funktionieren nie, die Sache mit den Startern auf der Titelseite ist Müll. Wenn Sie nach dem Web-GWT-Setup alle Web-GWT-Dateien ausführen --proxyPackage com.foo.client.request --requestPackage com.foo.client.request, dann funktioniert es mit GWT, aber nicht mit Tomcat :)
Rob Grant
22

Der Hauptunterschied besteht darin, dass Roo ein reines Java-Framework ist, während Grails sowohl Groovy als auch Java nutzt. Beide basieren auf den Kernbibliotheken von Spring und verwenden beliebte Java-Open-Source-Bibliotheken.

Diese Frage wurde zurückgestellt, als Roo angekündigt wurde und Graeme Rocher (Grails Lead) sagt, dass beide Frameworks einen Platz im Frühling haben und gleichermaßen unterstützt werden.

Ich denke, Grails hat eine bessere Zukunft als Roo. Ich liebe es, mich damit zu entwickeln und sehe keine Nachteile darin, dass es kein reines Java ist.

leebutts
quelle
Vielen Dank für Ihre Antwort. Die Antwort von Ben Alex bestätigt, was Sie geschrieben haben, und enthält einige weitere Details zur SpringSource-Ansicht des Problems Grails vs. Roo.
Piotr Kochański
19

Grails und Roo sind sehr unterschiedlich. Der erste große Unterschied ist die verwendete Sprache. Während Sie Groovy-Code wie herkömmlichen Java-Code schreiben können, benötigen Sie dennoch die Groovy-Abhängigkeiten, um Grails-Anwendungen auszuführen. Um in Grails so produktiv wie möglich zu sein, müssen Sie auch die Funktionen in Groovy kennen, die derzeit nicht Teil von Java sind, wie z. B. Closures. Ein weiterer Unterschied ist die Philosophie, mit der die Frameworks Code generieren. Grails generiert zur Laufzeit viele Methoden, während Roo sie auf Anfrage während des Entwicklungsprozesses generiert. Roo hat keine Magie hinter den Kulissen für die Verwendung von aspektorientierter Programmierung akzeptiert, und Sie können den gesamten Code anzeigen, den Roo generiert. In Roo müssen Sie beispielsweise einen Befehl verwenden, um dynamische Finder-Methoden wie findByBook () zu generieren und dann den generierten Code in den .aj-Dateien anzuzeigen. In Grails wird die findByBook () -Methode zur Laufzeit erstellt, und Sie können den generierten Code nicht anzeigen. Mit Roo können Sie das Framework auch beenden, wenn Sie dies wünschen, während Sie weiterhin eine Anwendung ausführen, indem Sie den gesamten generierten Code in normale Java-Dateien zusammenführen. Sie haben dann weder zur Laufzeit noch zur Entwurfszeit Abhängigkeiten von Roo-Bibliotheken. Wenn Sie entscheiden, dass Sie Grails nicht mögen, können Sie die Verwendung des Frameworks nicht beenden, während Sie weiterhin eine funktionierende Anwendung haben.

Jared
quelle
9

IMO sind sich die beiden nicht sehr ähnlich. Obwohl es Ähnlichkeiten gibt, sind die folgenden signifikanten Unterschiede:

  • Roo verwendet "Stock-Standard Java", Grails basiert auf Groovy
  • Grails ist ein Webframework, Roo nicht

Roo ist sehr ähnlich zu Grails' command line - System (zB die create-app, create-domain-class, test-app-Art - Befehle gefunden in Grails). Es würde mich nicht überraschen, eine "Fremdbestäubung" zwischen diesem Teil des Grails-Rahmens und Roo zu sehen.

Heinrich Filter
quelle
4

Ben Alex von SpringSource spricht in diesem Interview über Roo und wird nach Grails vs Roo gefragt. Der Hauptunterschied neben der Verwendung verschiedener Sprachen (Groovy vs Java, wie bereits erwähnt) besteht darin, dass Roo hauptsächlich ein Entwicklungszeit-Tool ist und Grails mehr an der Laufzeit beteiligt ist.

Csaba_H
quelle
1

Sie sind sich eigentlich nicht so ähnlich. Roo macht es magisch zur Kompilierungszeit, wo Grails es zur Laufzeit macht. Aus diesem Grund werden bei Roo-Projekten zur Laufzeit keine Leistungseinbußen vorgenommen.

Ich kann nicht sehen, wie sie zusammengeführt werden könnten, da Grails auf Groovy und Roo auf Java basiert.

Kimble
quelle
1

Ich habe einige Kommentare auf den Grails-Mailinglisten gesehen, die darauf hinwiesen, dass die Autoren glaubten, dass Roo nur als Sprungbrett für Grails existiert! Ich persönlich erwäge jedoch einen möglichen Wechsel von Grails zu Roo. Ich denke, der Hauptunterschied besteht zwischen dynamischen und statisch typisierten Sprachen - für mich ist das enorm. Ich liebe viele Funktionen von Grails, aber ich bevorzuge die IDE-Unterstützung und die Überprüfung einer statisch typisierten Sprache zur Kompilierungszeit. Einige andere fühlen genau das Gegenteil, daher Pferde für Kurse. Das heißt, statische Groovy befindet sich derzeit in einer starken Entwicklung, also wer weiß, was die Zukunft bringt.

Befiedern
quelle
0

Wir hatten eine Anforderung, bei der wir eine Anwendung in der Produktion hatten und die im Frühjahr MVC entwickelt wurde, und die Geschwindigkeit bei der Entwicklung neuer Funktionen war langsam. Wir mussten alternative Frameworks wie Grails und Roo untersuchen. Ich persönlich habe fast einen Monat damit verbracht, herauszufinden, welches besser ist.

Wenn Sie die Details der Analyse sehen möchten, besuchen Sie @ http://krishnasblog.com/2012/05/08/roo-vs-grails/

Wir haben die folgenden Merkmale sowohl in diesen als auch in den folgenden Ergebnissen untersucht. Das endgültige Urteil, von dem wir nicht sicher sind, ob wir eines davon verwenden werden, untersuchen wir noch

Krishna
quelle
1
Entschuldigung Alex, ich habe den Link repariert. Bitte überprüfen Sie mich. Danke
Krishna