88 Stimmen

Ist Grails es wert?

Dies ist halb Tirade, halb Frage.

Lohnt es sich, Grails zu verwenden? Ich versuche, eine relativ einfache datenbankgestützte Webanwendung zu entwickeln. Mein Know-how ist in Java, so natürlich Grails schien wie eine gute Wahl. Zuerst dachte ich an die Verwendung von Spring, JPA und Hibernate, aber ich habe das zuvor verwendet und bin in alle Arten von mühsamen Konfigurations- und Kodierungsarbeiten geraten. Grails wirbt damit, dieses Problem zu lösen.

Meine größte Frustration mit Grails ist all die kleinen Dinge, die nicht funktionieren. Was ich meine ist, dass es nicht funktioniert, wie man intuitiv denken, es sollte. Es ist sehr grob an den Rändern. Ich stoße ständig auf Probleme. Manchmal ist es mein Mangel an Grails Verständnis - andere Male habe ich legitime Grails Bugs entdeckt.

Ein großes Problem ist das Fehlen einer guten Eclipse-Integration. Es gibt zwar ein Groovy- und Grails-Plugin, aber außer Syntaxhervorhebung tut es nicht viel. Das Aufrufen von Groovy aus Java und umgekehrt ist sehr mühsam konfigurieren. . Keine gute IDE-Unterstützung zu haben, ist ein großes Manko.

Was passiert, ist, dass ich mich hinsetze und versuche, meine Webanwendung zu entwickeln. Am Ende des Tages stelle ich fest, dass ich etwa 85% des Tages damit verbracht habe, Grails-bezogene Probleme zu debuggen. Wenn es keine Eclipse-Probleme sind, dann sind es eifriges Laden , Abruf in der Ansicht , eins-zu-viele-Beziehungen , Merkwürdiges Verhalten bei leeren Dateien , ein seltsamer Eigenschafts-/Getter-Fehler - es geht einfach immer weiter. Dies ist nur eine Auswahl der Probleme, auf die ich heute gestoßen bin. Meine letzte Sitzung mit Grails ergab ein ganzes Bündel von verschiedenen Problemen.

Ich frage mich manchmal, ob es das wert ist. Ich bin neugierig, ob andere diese Erfahrung gemacht haben. Gibt es Leute, die Grails tatsächlich verwenden, um produktiv eine Webanwendung zu entwickeln? Gibt es andere Frameworks für die schnelle Webentwicklung, die ich in Betracht ziehen sollte?

7 Stimmen

Sie haben diese Frage schon vor Monaten gestellt, aber ich möchte nur sagen, dass ich mich in den letzten Jahren von Java entfernt habe und erst kürzlich gezwungen war, Ruby on Rails zu verwenden. Ich kann nicht beschreiben, wie einfach und leicht es ist, alles zu tun. Ich persönlich verabscheue Ruby und seine alberne Flexibilität, aber im Vergleich dazu, eine Webanwendung in irgendeinem Framework in Java zu entwickeln... RoR hat eine riesige Community und viele schlaue Leute, die Antworten geben. Entwicklung macht wieder Spaß... Natürlich muss man bei Null anfangen, aber es ist nie wie beim ersten Mal.

4 Stimmen

Netbeans hat jetzt eine ziemlich gute Grails/Groovy-Integration.

1 Stimmen

Groovy+Grails scheint manchmal das Schlimmste aus der Java- und Ruby-Welt zu vereinen. Es löst zwar viele Spring- und andere Konfigurationsprobleme, aber es ist nie so einfach wie Ruby+Rails. Es kann nahe dran sein, aber das erfordert Arbeit. Gleichzeitig führt es einige der Ruby+Rails-Unzuverlässigkeiten/Unvorhersehbarkeiten ein. Momentan frage ich mich, wie zum Teufel es möglich ist, dass Grails keine Bindung von Request-Parametern an Domain/Command-Objekte unterstützt. Ich muss zusätzlichen Code hinzufügen, damit es Enums richtig erkennt.

85voto

j pimmel Punkte 11593

Wir hatten ein Team von 12 Leuten, alles erfahrene Senior-Java-Entwickler, die Grails von 0.6B an gelernt haben, und wir alle arbeiten immer noch an Projekten, die auf Grails basieren. Ich würde nicht freiwillig zu Java zurückkehren, und wir sind alle erleichtert, dass wir das Problem, wie man mit einer Grails-App schnell ans Ziel kommt, gelöst haben.

Es war ein Kampf, es war nicht einfach und es gab und gibt Frustration.

Dennoch haben wir angesichts unserer laufenden Bemühungen sehr schnell etwas geliefert Es gibt Bugs, für viele davon gibt es Workarounds.

Ich habe von mehreren Fällen gehört, in denen Entwickler, die gut in Java sind, versuchen, in tiefe, komplexe Beschwörungen von Grails-Projekten einzutauchen. Wir haben uns von Java ferngehalten und sind rein auf Grails und Groovy umgestiegen. Wir stellten sicher, dass wir einfach anfingen und die Komplexität so überschaubar und so praktisch wie möglich aufbauten. Wir wagten es nicht, in die Tiefe zu gehen und zu hoffen, dass unsere Java-Kenntnisse ausreichten, um uns zu tragen.

Am Ende hatten wir etwas Riesiges und Komplexes geschaffen, das fabelhaft funktionierte und viel schneller war als eine reine Java/Spring/Hibernate-Version; und das ohne anständige IDE-Unterstützung und mit einer viel schlechteren Fehlersituation als heute.

Was die Eclipse-Unterstützung angeht, so ist die einzige echte IDE für Grails/Groovy Intellij - die Eclipse-Unterstützung ist leider weit hinterher: Ich war ein Eclipse-Liebhaber und bin weit davon entfernt, ein Intellij-Konvertit zu sein - die Grails/Groovy-Unterstützung bläst jedoch alles andere weg.

Ja, Grails ist unreif im Vergleich zu Spring vielleicht. Oder Hibernate. Und ich würde wetten, dass in den ersten 1,5 Jahren ihrer Existenz waren sie ebenso voller Probleme.

Das bedeutet, dass Sie darauf achten müssen, die Komplexität auf ein absolutes Minimum zu beschränken, zunächst sorgfältig zu testen (unserer Meinung nach) und die Komplexität schrittweise und mit Bedacht zu steigern.

Es gibt keine schnelle Codelösung mit Java, sobald man Spring/Hibernate in den Stack einbezieht. Die Komplexität, die Grails verkörpert, ist ein Spiegelbild der Komplexität von Spring / Hibernate. Wenn Sie das Gefühl haben, dass Sie Ihre Zeit besser mit reinem Java verbringen, würde ich nicht anders argumentieren. Ich habe immer noch meine WTFs, aber jetzt, dass die steile Lernkurve hinter mir ist, denke ich, ich werde w Grails einige mehr bleiben.

36voto

Ole Punkte 1214

Das Schreiben von Grails-Anwendungen macht mir aus zwei Gründen sehr viel Spaß:

  • Ich muss kein Java verwenden
  • Ich kann Java verwenden

Ich denke, nachdem man sich mit Grails vertraut gemacht hat, bekommt man seine Aufgaben sehr schnell und elegant erledigt.

So viel zu den positiven Aspekten. Die negative Seite ist die Leistung, die mich in zweierlei Hinsicht trifft: Bereitstellung und testgetriebene Entwicklung.

Ich habe es nicht geschafft, mehr als 3 Grails-Anwendungen auf einem einzigen (gemieteten) Server laufen zu lassen, weil ich schnell an die Grenzen von Speicher und Leistung stieß. Es sind einfach zu viele Frameworks enthalten.

Außerdem ist der Testrunner von Grails diesen Namen nicht wert. Wenn ich Unit-Tests ausführe, sollten sie in einem Augenblick erledigt sein, nicht in 10 bis 20 Sekunden. Daher schreibe ich die ganze Zeit Geschäftslogik in einfachem Java, weil ich sie viel schneller testen kann. Aber ich denke, dass dies mit einer besseren Integration in die IDE (Eclipse) behoben werden kann.

10voto

duffymo Punkte 298898

Ich denke, dass Spring's Unterstützung von Grails ein großer Schub sein wird. Wenn irgendjemand CRUD im Web überwinden kann, dann sind es diese Jungs.

Ich glaube auch, dass sie eine kritische Masse erreicht. Es gibt mehrere neue Bücher, die 2009 auf den Markt kommen werden. Ich denke, dass diese die Akzeptanzrate erhöhen werden.

9voto

Ich stimme mit der Meinung des ursprünglichen Posters völlig überein.

Wir sind ein Java + Spring Shop und haben die Gelegenheit genutzt, Grails auszuprobieren. Wir haben zunächst eine sehr kleine Testanwendung erstellt, die sich als ziemlich einfach herausstellte und ziemlich gut funktionierte. Die Hauptprobleme, die wir hier hatten, waren auf unsere mangelnden Kenntnisse von Groovy und Grails zurückzuführen.

Nach diesem Erfolg (Vertrauensschub) beschlossen wir, ein etwas größeres Projekt in Angriff zu nehmen. Dies war eine sehr viel schmerzhaftere Erfahrung. Wie bereits von anderen erwähnt, haben wir alle möglichen Fehler und Probleme aufgedeckt, die an der Oberfläche nicht sofort erkennbar waren. Die Neustart-Zyklen der Anwendung werden extrem schmerzhaft, und wenn man keine wirklich gute Testabdeckung hat, ist es ein Alptraum, irgendeine Art von Re-Factoring durchzuführen.

Wirklich frustrierend ist es, wenn Code ohne eine einzige Fehlermeldung fehlschlägt! Es funktioniert einfach nicht und Sie wissen nicht, warum?

Mir gefällt die Benutzerfreundlichkeit der Plugins für JMS, Quartz und Remoting, um nur einige zu nennen. Dadurch entfällt eine Menge mühsamer XML.

Ich mag GORM fast wegen seiner Einfachheit, obwohl wir auch einige Probleme hatten.

Ich mag die lockere Typisierung von Groovy nicht und die Tatsache, dass man seine Anwendung ausführen muss, nur um eine Reihe von Fehlern abfangen zu können, erinnert mich zu sehr an PHP oder Rails.

Am Ende des Tages fragen wir uns, ob es möglich ist, ein komplexes Stück überschaubarer Software mit Grails zu schreiben...

Wir haben eine Grails-Anwendung, die bald in Produktion gehen wird....so werden wir sehen.

7voto

Ravi Wallau Punkte 10137

Wir sind mit Grails + auf der Web-Schicht + Java mit Hibernate und Frühling auf die Service-Schicht. Es handelt sich um die klassischen drei Schichten (Web, Logik, Daten), wobei das Web in Grails und die Logik in Java implementiert ist. Wie in Java üblich, verwenden wir Bean-Objekte, die die Daten zwischen den verschiedenen Schichten darstellen.

Das funktioniert ziemlich gut und war für unseren Fall die beste Lösung, da die Bean-Objekte bereits vorhanden waren, ebenso wie die Datenbankstruktur. Aus unserer Erfahrung heraus denke ich, dass Grails einen großen Wert als Web-Präsentationsschicht hat, aber ich würde bei Java bleiben, um die Geschäftsregeln zu schreiben und die Anwendungsdaten zu persistieren - da Grails Java "ist", ist die gesamte Grails-Java-Integration ziemlich einfach.

Wir verwenden Eclipse, um die Grails-Anwendung zu entwickeln und es ist schlecht Integration, wie Leute hier gesagt. Aber, wie ein Vorschlag von anderen Entwicklern, führen wir die Grails-Anwendung von der Kommandozeile aus und verwenden nur Eclipse, um die Quelldateien zu speichern, und es funktioniert ziemlich gut, wie die Anwendung on the fly aktualisiert wird.

Ich fühle mich noch nicht wohl bei der Verwendung von Grails an anderen Stellen als in der Präsentationsschicht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X