Zgadzam się z Jasonem, że Play może okazać się lepszym od Grails'a. Z czterema projektami Grails pod moim pasem (poprzedzonymi dwoma projektami Tapestry i jednym projektem Wicket), poważnie patrzę teraz na Play.
Jedną z rzeczy, które uważałem za fajne w Grails, jest to, że "wszystko jest Groovy". Oznacza to, że używasz Groovy do pisania wszystkiego (z wyjątkiem HTML i CSS) - domen, kontrolerów, usług, szablonów stron (GSP), bibliotek znaczników, interfejsu Hibernate API (GORM), testów jednostkowych (GUnit) i skryptów kompilacji (GANT). Możesz nawet pisać skrypty powłoki w Groovy. Tak więc ponowne kodowanie wszystkich aspektów aplikacji za pomocą jednego języka znów wydawało się uproszczeniem, które było dawno spóźnione - powracając do czasów pisania aplikacji komputerowych w jednym języku, takim jak C++ lub Delphi. Jednak nauczyłem się, że jeden rozmiar nie pasuje do wszystkich tutaj.
Po pierwsze, wsparcie IDE dla Groovy nie jest wspaniałe. IntelliJ robi najlepszą robotę, ale przy Groovy jest dynamiczny, może tylko posunąć się tak daleko. Narzędzia do refaktoryzacji nie (nie mogą) uchwycić wszystkiego, więc nie można im ufać w 100%. Oznacza to, że musisz być szczególnie czujny podczas testowania jednostkowego. Ponownie, ponieważ Grails polega tak bardzo na dynamicznej "magii", która dzieje się w czasie wykonywania, testowanie jednostki w Grails musi polegać na obszernej szyderczej warstwie, aby ją emulować, i że szydercza warstwa jest dziwaczna. Trzecią kwestią jest to, że znaczna część tak zwanego kodu Groovy, który piszecie, jest w rzeczywistości kodem specyficznym dla domeny (DSL). (Krótko mówiąc, DSL to skrót od Groovy'ego, wykorzystujący fakt, że w Groovy i wiele składni jest opcjonalna.) Grails używa różnych DSL dla różnych konfiguracji, mapowania adresów URL itp. I jest niespójny. Sposób określania ustawień log4j na przykład nie przypomina sposobu, w jaki określasz źródła danych, a żadna z nich nie przypomina czystej Javy, na której oparte jest Groovy. Tak więc obietnica "wszystkiego groovy" rozpada się.
W takiej sytuacji widzę, skąd pochodzi zespół Play.
Powrót do zwykłej Java dla domen, kontrolerów, usług i JUnits ma sens.Silne pisanie oznacza, że IDE może niezawodnie pomagać z intelisem, nawigacją kodu, refaktoryzacją itp. (A więc nie musisz płacić za IntelliJ, jeśli jesteś zadowolony z Eclipse.) Konieczność napisania bardziej szczegółowego kodu w celu odzyskać silne narzędzie wsparcia wydaje mi się teraz dobrą okazją. Zobaczymy.
Podoba mi się, że nadal używam Groovy w szablonach stron. Obawiam się, że mogę włożyć więcej kodu do szablonów niż powinienem.
Nie mam żadnego doświadczenia z JPA, ale wydaje mi się, że jest to bardzo zbliżone do tego, co GORM robi dla mnie, więc jest fajnie.
Wiosenne wsparcie IOC w Grails jest całkowicie przezroczyste, podczas gdy wsparcie Play wydaje się minimalne; jednak myślę, że IOC jest nadużywany i jestem całkowicie skłonny do ręcznego zakodowania mapowania Spring XML w rzadkich przypadkach, kiedy naprawdę go potrzebuję. (Jednym z moich otwartych pytań jest to, że zakładam, że JPA ma wsparcie transakcyjne, dlatego Play nie potrzebuje Springa na to jak Grails, czyż nie?)
Nigdy nie byłem fanem Pythona, więc wzdrygnęłam się, gdy przeczytałam, że Play używa Pythona do tworzenia skryptów. Ale zgadzam się, że skrypty GANT Grailsa działają dość wolno. Dodatkowo uważam, że chociaż GANT jest ogromnym ulepszeniem w stosunku do XML ANT, wciąż trudno jest objąć głowę koncepcjami ANT. Skrypty Grails GANT są dość zawiłe. Więc wejdę do tego z otwartym umysłem.
Model "modułu aplikacji" brzmi jak model "wtyczki" Grails, więc jest fajnie.
Jestem pod dużym wrażeniem dokumentacji Play, którą przeczytałem do tej pory. Miałem ogromną liczbę pytań, ale połowa z nich odpowiedziała od razu.
będę zgłosić ponownie później jak nurkować głębiej w
Wygląda na to, że mam jeszcze inną aplikację. – skaffman