Ich stimme Jason zu, dass Play einfach besser sein könnte als Grails. Mit vier Grails-Projekten (zwei Tapestry-Projekten und einem Wicket-Projekt vorangegangen) habe ich mich ernsthaft mit Play beschäftigt.
Eines der Dinge, die ich dachte, war cool über Grails ist, dass "alles groovy ist." Das heißt, Sie verwenden Groovy, um alles (außer HTML und CSS) zu schreiben - Domänen, Controller, Dienste, Seitenvorlagen (GSP), Tag-Bibliotheken, Hibernate API (GORM), Komponententests (GUnit) und Build-Skripte (GANT). Sie können sogar Shell-Skripte in Groovy schreiben. Es schien also eine längst überfällige Möglichkeit, alle Aspekte einer App in einer einzigen Sprache zu codieren - und damit auf die Zeit zurückzublicken, in der Desktop-Apps in einer Sprache wie C++ oder Delphi geschrieben wurden. Allerdings habe ich gelernt, dass eine Größe nicht alle hier passt.
Zum einen ist die IDE-Unterstützung für Groovy nicht großartig. IntelliJ macht den besten Job, aber da Groovy dynamisch ist, kann es nur so weit gehen. Die Refactoring-Tools fangen (nicht) alles ab, sodass Sie ihnen nicht 100% vertrauen können. Dies bedeutet, dass Sie besonders wachsam sein müssen mit Unit-Tests. Auch hier, weil Grails sich so sehr auf dynamische "Magie" verlässt, die zur Laufzeit passiert, muss sich das Unit-Testing in Grails auf eine ausgedehnte Spottschicht stützen, um es zu emulieren, und diese spottende Ebene ist eigenartig. Ein drittes Problem ist, dass ein großer Teil des sogenannten Groovy-Codes, den Sie schreiben, tatsächlich domänenspezifischer Sprachcode (DSL) ist. (Um es kurz zu machen, DSLs sind Short-Hand-Groovy, die Tatsache ausnutzend, dass in Groovy und viele der Syntax optional ist.) Grails verwendet verschiedene DSLs für verschiedene Konfigurationen, URL-Mapping, etc. und es ist inkonsistent. Wie Sie z. B. log4j-Einstellungen festlegen, sieht nicht so aus, wie Sie die Datenquellen angeben, und keiner sieht wie das reine Java aus, auf dem Groovy basiert. Das Versprechen von "everyone's Groovy" fällt trotzdem auseinander.
Das ist der Fall, ich sehe, woher das Play-Team kommt.
Zurück zur regulären Java für die Domänen, Controller, Dienste und JUnits macht Sinn.Starkes Schreiben bedeutet, dass die IDE zuverlässig mit Intelsinn, Code-Navigation, Refactoring usw. helfen kann (und somit müssen Sie nicht für IntelliJ bezahlen, wenn Sie mit Eclipse zufrieden sind.) Sie müssen mehr verbose Code schreiben, um eine starke Tool-Unterstützung zurückzugewinnen, scheint mir momentan ein gutes Geschäft zu sein. Wir werden sehen.
Ich mag, dass ich immer noch in den Seitenvorlagen Groovy verwenden. Ich befürchte, dass ich am Ende mehr Code in die Vorlagen schreiben werde, als ich sollte.
Ich habe keine Erfahrung mit JPA, aber es scheint, es ist ziemlich nah an dem, was GORM für mich tut, das ist cool.
Die Unterstützung von Spring IOC in Grails ist vollkommen transparent, während die Unterstützung von Play minimal erscheint; Ich denke jedoch, dass IOC viel zu oft benutzt wird, und ich bin durchaus bereit, ein Spring-XML-Mapping für den seltenen Fall zu programmieren, dass ich wirklich einen brauche. (Eine meiner offenen Fragen ist, dass ich annehme, dass JPA Transaction-Unterstützung hat, weshalb Play keine Spring dafür braucht, wie Grails, nein?)
Ich war noch nie ein Fan von Python, Ich habe mich geärgert, als ich gelesen habe, dass Play Python für seine Build-Skripte verwendet. Aber ich stimme zu, dass die GANT-Skripte von Grails ziemlich langsam laufen. Außerdem finde ich, dass GANT eine enorme Verbesserung gegenüber XML ANT ist, es aber immer noch schwierig ist, sich mit den ANT-Konzepten vertraut zu machen. Die Grails GANT Skripte sind ziemlich kompliziert. Also werde ich mit einem offenen Geist hineingehen.
Das Play "Anwendungsmodul" -Modell klingt wie das "Plugin" -Modell von Grails, das ist cool.
Ich bin ziemlich beeindruckt von der Play-Dokumentation, die ich bisher gelesen habe. Ich hatte eine große Anzahl von Fragen, aber die Hälfte von ihnen wurde sofort beantwortet.
Ich werde es später noch einmal berichten, wie ich tauche tiefer in
Sieht aus wie noch ein anderer Anwendungs-Framework für mich. – skaffman