2010-01-05 7 views
74

SpringSource (jetzt VMWare) hat zwei sehr ähnliche Technologien: Grails und Spring Roo. Ich habe Grails benutzt, aber ich sehe, dass SpringSource aktiv an etwas arbeitet, das ein Konkurrent für diese Technologie ist, und das macht mich besorgt über die Zukunft von Grails.Grails vs Roo - Warum treibt SpringSource zwei sehr ähnliche Technologien?

Weiß jemand, wie sich diese Technologien verhalten, ob sie zusammengeführt werden oder einer von ihnen aufgegeben wird?

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

Antwort

88

SpringSource Ziel ist es, den Benutzern so schnell und einfach wie möglich zu machen, Spring-basierte Lösungen zu erstellen, zu betreiben und zu verwalten. Wir haben sowohl als auch Spring Roo, weil wir uns sehr um die Entwicklerproduktivität kümmern, und ohne Zweifel liefern beide Tools einen echten Schub für das, was Teams zusätzlich zu Spring erreichen können.

Wir haben beide Technologien, weil Roo und Grails auf der philosophischen und der Implementierungsebene sehr unterschiedlich sind (wie bereits in den anderen Antworten erwähnt). Jede Technologie nähert sich ihrer Primärsprache (Java oder Groovy) und dem Betriebsmodell (Laufzeit oder Laufzeit) mit der Philosophie "Wie können wir das Wertangebot mit dieser Sprach- und Betriebsmodellkombination unglaublich gut machen?". Daher wird jede Technologie einen anderen Stil annehmen, der diese Kombination maximiert (Roos Java + Dev-Zeit oder Grails Groovy + Runtime) und die entsprechenden Vorteile.

Diese Unterschiede sind in der Tat sehr positiv, weil sie bedeuten, dass die Spring Community wählen kann, welche "Geschmacksrichtung" der Produktivitätslösung sie bevorzugen. Während diese anfänglichen Unterschiede in Bezug auf Sprachauswahl und Runtime/Dev-Time-Operation sofort offensichtlich sind, erstreckt sich die Wahl von Grails oder Roo auch auf subtilere Überlegungen wie die verwendeten Standardtechnologien, Benutzerinteraktionsmodell, IDE-Unterstützung, Abhängigkeiten, Standards, Roadmap, Erweiterungen usw. Nahezu alle diese Unterschiede sind eine natürliche Folge der Verfolgung 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 Lieblingspunkte, aber es gibt Unterschiede zwischen den beiden, die Ihre Gesamterfahrung mit der einen oder der anderen Technologie in einem gegebenen Kontext verbessern. Beide Referenz-Guides beschreiben die respective benefits von each solution. Denken Sie natürlich daran, dass die Zeit, die Sie investieren, minimal ist. In 10 Minuten kannst du ein Projekt in Roo oder Grails bauen, also versuche es und finde heraus, was sich für dich aufgrund deiner spezifischen Hintergrund- und Projektbedürfnisse natürlicher anfühlt.

+1

Vielen Dank für eine ausführliche Antwort! –

+3

10 Minuten? Ich verbringe fast 10 Stunden, um die 1.1.1 GAE- und GWT-Ausgaben-Beispiele zu kompilieren (von der Arbeit ganz zu schweigen).Genau, welche GAE Datenspeicherverbesserung wurde eingeführt, und wie man sie benutzt? Ich bin verblüfft und wirklich beginnt, den QA-Prozess bei SpringSource in Frage zu stellen ... Hinzufügen einer JUnit, die ein Roo - Skript + MVN Build zu allen Roo-Proben ist die echte 10 Minuten investieren lohnt;) –

+0

Eran, nicht sicher, was ging falsch für Sie, aber wir laufen kontinuierliche CI auf http://roobuild.springsource.org, die Integration Tests für die Proben abgeschlossen, einschließlich der sich drehenden Webserver, um sicherzustellen, die resultierenden Anwendungen arbeiten usw. –

22

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

Diese Frage wurde zurück gestellt, als Roo angekündigt wurde und Graeme Rocher (Grails Leitung) sagt, dass beide Frameworks einen Platz innerhalb Spring haben und gleichermaßen unterstützt werden.

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

+0

Vielen Dank für Ihre Antwort, Ben Alex Antwort bestätigt, was Sie geschrieben haben, geben einige weitere Details der SpringSource Ansicht der Grails vs. Roo Problem. –

9

IMO die beiden sind nicht sehr ähnlich. Auch wenn es Ähnlichkeiten sind folgende signifikante Unterschiede:

  • Roo verwendet "Aktien Standard-Java", Grails basiert auf Groovy
  • Grails ist ein Web-Framework, ist Roo nicht

Roo ist dem Kommandozeilensystem von Grails sehr ähnlich (zB die create-app, create-domain-class, test-app Befehle in Grails). Es würde mich nicht wundern, wenn ich zwischen diesem Teil des Grails-Rahmens und Roo eine "Fremdbestäubung" sehen würde.

4

Ben Alex von SpringSource spricht über Roo in this interview und er wird nach Grails vs Roo gefragt. Der Hauptunterschied neben der Verwendung verschiedener Sprachen (Groovy vs Java, wie andere erwähnt haben) ist, dass Roo hauptsächlich ein Entwicklungszeitwerkzeug ist und Grails mehr in die Laufzeit involviert ist.

+0

Das ist der Unterschied! – Bobo

1

Sie sind eigentlich nicht so ähnlich. Roo macht seine Magie zur Kompilierzeit, wo Grails es zur Laufzeit tut. Aus diesem Grund nimmt Roo projects zur Laufzeit keine Performance-Hits.

Ich kann nicht sehen, wie sie zusammengeführt werden konnten, wie Grails auf Groovy und Roo auf Java gebaut wird.

19

Grails und Roo sind sehr unterschiedlich. Der erste große Unterschied ist die verwendete Sprache. Während Sie Groovy-Code wie traditionellen Java-Code schreiben können, benötigen Sie die Groovy-Abhängigkeiten, um Grails-Anwendungen auszuführen. Um in Grails so produktiv wie möglich zu sein, müssen Sie auch Funktionen in Groovy kennen, die derzeit nicht Teil von Java sind, wie Closures. Ein weiterer Unterschied ist die Philosophie, die die Frameworks bei der Codeerstellung verfolgen. Grails erzeugt zur Laufzeit eine Vielzahl von Methoden, während Roo diese während des Entwicklungsprozesses auf Anfrage generiert. Roo hat keinen Hintergrund für die Verwendung von aspektorientierter Programmierung und Sie können den gesamten Code, den Roo generiert, anzeigen. Zum Beispiel müssen Sie in Roo einen Befehl verwenden, um dynamische Suchmethoden wie findByBook() generieren zu lassen und dann den generierten Code in den .aj-Dateien anzuzeigen. In Grails wird die Methode findByBook() zur Laufzeit erstellt, und Sie können den generierten Code nicht anzeigen. Roo ermöglicht es Ihnen auch, das Framework zu beenden, wenn Sie eine laufende Anwendung verwenden, indem Sie den generierten Code in normale .java-Dateien zusammenführen.Sie haben dann weder zur Laufzeit noch zur Entwurfszeit Abhängigkeiten von irgendwelchen Roo-Bibliotheken. Wenn Sie Grails nicht mögen, gibt es keine Möglichkeit, das Framework zu beenden, während Sie weiterhin eine funktionierende Anwendung haben.

1

Ich habe einige Kommentare zu den Grails-Mailinglisten gesehen, die darauf hindeuteten, dass die Autoren der Meinung waren, dass Roo nur als Sprungbrett zu den Grails existiert! Ich persönlich überlege mir aber einen möglichen Wechsel von Grails nach Roo. Ich denke, der Hauptunterschied zwischen dynamischen und statisch getippten Sprachen ist für mich enorm. Ich liebe viele Funktionen von Grails, aber ich bevorzuge die IDE-Unterstützung und die Kompilierzeitprüfung einer statisch getippten Sprache. Einige andere fühlen genau das Gegenteil, daher Pferde für Kurse. Statisches Groovy wird derzeit jedoch stark weiterentwickelt. Wer weiß, was die Zukunft bringt?

0

Wir hatten eine Anforderung, wo wir eine Anwendung in der Produktion hatten und in Spring MVC entwickelt wurden und die Geschwindigkeit der Entwicklung neuer Features war langsam. Wir mussten alternative Frameworks wie Grails und Roo erkunden. Ich persönlich verbrachte fast einen Monat damit, herauszufinden, welches besser war.

Wenn Sie @ die Details der Analyse Besuch sehen wollen http://krishnasblog.com/2012/05/08/roo-vs-grails/

Wir erkundeten diese beiden folgenden Merkmale und unten ist unsere Ergebnisse. Das endgültige Urteil wir sind nicht sicher, ob wir eines verwenden werden, wir sind immer noch auf der Suche

+1

Ich bekomme eine 404 bei http://ramya.bhaavana.net/krishna/?p=63 – Alexander

+1

Sorry Alex, ich reparierte den Link, bitte überprüfen Sie mich wissen. Danke – Krishna

+0

Der neue Link funktioniert, danke. – Alexander

Verwandte Themen