Antworten:
IMO war der schwächste Teil von Grails das Fehlen von Datenmodell-Migrationsfunktionen (ala Rails ActiveRecord-Migrationen). Es gab einige Plugins von Drittanbietern unterschiedlicher Qualität, aber keine offiziellen.
Ich habe jedoch gerade festgestellt, dass Liquibase erweitert und in das Datenbank-Migrations-Plugin umgewandelt wurde. Das sieht vielversprechend aus: http://www.grails.org/plugin/database-migration
Positiv ist zu vermerken, dass Grails für alles, wofür ich Grails verwendet habe (einfache bis mittelschwere Webanwendungen), größtenteils fantastisch war. Ich würde sagen, dass ich mit einem Java / Hibernate / Spring / Spring-MVC-Stack die Entwicklungsproduktivität in etwa um den Faktor 2 bis 3 steigern kann.
Das Ausführen der Integrationstests war langsam, da das Laden der Grails-Umgebung einige Zeit in Anspruch nimmt und nur ein Bruchteil dieser Zeit zum Ausführen des Tests erforderlich ist. Dies verlängert die Bearbeitungszeit, wenn Sie Code entwickeln, der in die Datenbank schreibt. Das andere Problem wurde bereits von Kaleb in seiner Antwort erwähnt (über die Datenmigration). Ich stellte auch fest, dass die Anzahl der Foren, in denen ich Hilfe bekommen konnte, begrenzt war, verglichen mit der Hilfe, die für den Winterschlaf und den Frühling zur Verfügung stand.
Ein aktuelles Problem bei der Verwendung des Frameworks ist die derzeit schlechte Integration in das Gradle-Build-System. Es verwendet derzeit ein Plugin, um dies zu erreichen, aber das Plugin selbst bricht mit neuen Versionen von Grails (wie ich kürzlich versucht habe, es zu verwenden und zu beheben). Sie planen, dieses Problem in zukünftigen Versionen zu beheben, indem sie gradle zum Bestandteil des Grails-Build-Systems machen (anstelle von gant). Das Fehlen eines Build-Systems, das Sie einfach integrieren können, ist jedoch ein Problem. Diese Falle wird jedoch in Zukunft verschwinden.
Eine weitere Gefahr ist die Dynamik der Sprache. Sie müssen wirklich Tests für alles schreiben. Die meisten Fehler in Ihrem Code werden zur Laufzeit gefunden. Es ist wirklich eine andere Art, über ein Programm nachzudenken. Wenn Sie sich darauf verlassen, dass der Compiler einige Ihrer Fehler findet, passiert dies mit diesem Framework nicht. Ich sage nicht, dass es schlecht ist, es ist einfach anders (und eine Falle, wenn Sie nicht damit vertraut sind).
Ich mag das ganze Grails / Groovy-Konzept, obwohl ich persönlich eher einfaches Groovy als Grails verwendet habe. Ich denke, sie sind beide großartig.
Der einzige Nachteil (meiner persönlichen Erfahrung nach) ist die schlechte IDE-Unterstützung. Ich dachte (ziemlich optimistisch), dass SpringSource eine exzellente Eclipse-Version hat und Grails stark unterstützt. Das wäre der richtige Weg. Die Groovy-Plugins sind schwierig zu installieren, die Codevervollständigung ist unzuverlässig (immer ein Problem mit dynamischen Sprachen, aber die Auswahl von 60 Methoden ist nicht so hilfreich). In der neuesten Version bricht die Installation des groovigen Plugins den Java-Debugger!
Momentan werden auch abstrakte Klassen unterstützt. Beispielsweise können Sie eine Liste von Implementierungen nicht an eine einzige List<T>
in einem Befehlsobjekt binden . Zugegeben, das ist in erster Linie ärgerlich, weil ich daran gewöhnt bin, alles andere magisch zu binden! : D
Im Allgemeinen ist es immer noch eine Art "grün"; Sie stoßen schließlich auf merkwürdige kleine Einschränkungen und Fehler. Es ist wirklich ein langer Weg in ein paar Jahren.