To jest pół rant, pół pytanie.
Czy warto używać Grails? Próbuję stworzyć stosunkowo prostą aplikację internetową opartą na bazie danych. Mam doświadczenie w Javie, więc oczywiście Grails wydawał się dobrym wyborem. Na początku myślałem o użyciu Springa, JPA i Hibernate'a, ale użyłem tego wcześniej i napotkałem wiele żmudnych prac związanych z konfiguracją i kodowaniem. Grails reklamuje się jako rozwiązanie tego problemu.
Moja największa frustracja związana z Grails to wszystkie małe rzeczy, które nie działają. Chodzi mi o to, że nie działa tak, jak można by intuicyjnie sądzić, że powinno. Jest bardzo szorstki na krawędziach. Ciągle napotykam problemy. Czasami jest to brak zrozumienia Grailsa - innym razem odkryłem uzasadnione błędy Grails.
Jedną z głównych kwestii jest brak dobrej integracji Eclipse. Istnieje wtyczka Groovy i Grails, ale nie robi ona nic poza podświetlaniem składni. Wywołanie Groovy z Java i odwrotnie jest bardzo bolesne w konfiguracji . Brak dobrego wsparcia dla IDE jest poważnym problemem.
Siadam, próbując rozwinąć swoją aplikację internetową. Pod koniec dnia zdaję sobie sprawę, że spędziłem około 85% dnia na debugowaniu problemów związanych z Grailsami. Jeśli to nie jest problem Eclipse to jest chętny do załadunku , pobierania w widoku , jeden do wielu relacji , dziwne zachowanie pustego pliku bug , bug nieruchomość dziwne / pochłaniacza - po prostu idzie dalej. To tylko próbka problemów, na które natknąłem się dzisiaj. Moje ostatnie spotkanie z Grailsem przyniosło wiele różnych problemów.
Czasami się zastanawiam, czy warto. Ciekaw jestem, czy inni tego doświadczyli. Czy są ludzie, którzy używają Grails do produktywnego tworzenia aplikacji internetowych? Czy są inne frameworki do szybkiego tworzenia stron internetowych, które powinienem rozważyć?
Odpowiedzi:
Nasz zespół składał się z 12 osób składających się z doświadczonych starszych programistów Java, którzy uczyli się Grails od 0.6B i wszyscy wciąż pracujemy nad projektami opartymi na Grails. Chętnie nie wróciłbym do Javy, a wszyscy odczuwamy ulgę, że złamaliśmy tylną część tego, jak szybko dostać się gdzieś z aplikacją Grails.
To była walka, nie było to łatwe i była / jest frustracja.
Niemniej jednak dostarczyliśmy coś bardzo szybko, biorąc pod uwagę nasze ciągłe wysiłki. Istnieją błędy, z których wiele można obejść.
Słyszałem o kilku przypadkach programistów, którzy są dobrzy w Javie, próbując zagłębić się w głębokie, złożone inkantacje projektów Grails. Zrezygnowaliśmy z Javy i poszliśmy na czyste Grails i Groovy. Postaraliśmy się, abyśmy zaczęli od prostoty, budując złożoność tak zarządzalnie i tak praktycznie, jak to tylko możliwe. Nie odważyliśmy się nurkować w najgłębszym końcu i mamy nadzieję, że nasza znajomość Java wystarczy, aby nas nieść.
W końcu stworzyliśmy coś ogromnego i złożonego, co działało bajecznie i działało o wiele szybciej niż pisanie czystej wersji Java / Spring / Hibernate; i to bez przyzwoitej obsługi IDE i znacznie gorszej sytuacji pod względem błędów niż obecnie.
Jeśli chodzi o obsługę Eclipse, jedynym prawdziwym IDE, którego można używać dla Grails / Groovy, jest Intellij - obsługa Eclipse jest niestety daleko w tyle: byłem miłośnikiem Eclipse i daleki jestem od konwertowania Intellij - obsługa Grails / Groovy rozwala wszystko inne chociaż.
Tak, Grails jest może niedojrzały w porównaniu do wiosny. Lub Hibernate. I założyłbym się, że przez pierwsze 1,5 roku ich istnienia były równie pełne problemów.
Taka sytuacja nakłada na Ciebie obowiązek zadbania o to, aby maksymalnie ograniczyć złożoność, aby najpierw dokładnie przetestować (naszym zdaniem) i stopniowo i ostrożnie budować złożoność.
Nie ma szybkiego rozwiązania kodu w Javie, jeśli użyjesz Spring / Hibernate w stosie. Złożoność, którą ucieleśnia Grails, jest odbiciem złożoności Springa / Hibernate'a. Jeśli uważasz, że lepiej spędzisz czas na czystej Javie, nie spierałbym się inaczej ... Nadal mam swoje WTF-y, ale teraz, gdy stroma krzywa uczenia się jest za mną, myślę, że będę trzymał się Grails jeszcze trochę.
źródło
Bardzo lubię pisać aplikację Grails z dwóch powodów:
Myślę, że po zaznajomieniu się z Graalami robi się to bardzo szybko i elegancko.
To tyle na plus. Wadą jest wydajność, która uderza mnie w dwa aspekty: wdrażanie i programowanie sterowane testami.
Nie udało mi się uruchomić więcej niż 3 aplikacji Grails na jednym (wynajętym) serwerze, ponieważ szybko przekroczyłem limit pamięci i wydajności. Zawiera po prostu zbyt wiele frameworków.
Poza tym tester Grails nie jest wart tego miana. Kiedy uruchamiam testy jednostkowe, należy je wykonać natychmiast, a nie w 10 do 20 sekund. Dlatego cały czas piszę logikę biznesową w zwykłej Javie, ponieważ mogę ją przetestować znacznie szybciej. Ale myślę, że można temu zaradzić dzięki lepszej integracji z IDE (zaćmienie).
źródło
Myślę, że wsparcie Grails przez Spring będzie dużym impulsem. Jeśli ktokolwiek może przenieść to poza CRUD w Internecie, to właśnie ci.
Myślę też, że osiąga masę krytyczną. Jest kilka nowych książek, które pojawią się na rynku w 2009 roku. Myślę, że pomogą one we wzroście rozpowszechnienia.
źródło
W pełni zgadzam się z sentymentami oryginalnych plakatów.
Jesteśmy sklepem Java + Spring i skorzystaliśmy z okazji, aby wypróbować Grails. Najpierw stworzyliśmy bardzo małą aplikację testową, która okazała się dość prosta do wykonania i działała całkiem dobrze. Główne problemy, które mieliśmy tutaj, wynikały z braku wiedzy na temat Groovy i Grails.
Po tym sukcesie (wzrost zaufania) zdecydowaliśmy, że spróbujemy nieco większego projektu. To było znacznie bardziej bolesne doświadczenie. Jak wspominali inni, odkryliśmy różnego rodzaju błędy i problemy, które nie były od razu widoczne na powierzchni. Cykle ponownego uruchamiania aplikacji stają się niezwykle bolesne i jeśli nie masz naprawdę dobrego pokrycia testowego, koszmar jest dokonywanie jakichkolwiek ponownych fakturowania.
Naprawdę frustrujące jest niepowodzenie kodu bez ani jednego komunikatu o błędzie! Po prostu nie działa i nie wiesz dlaczego?
Podoba mi się łatwość użycia wtyczek dla JMS, Quartz i Remoting, żeby wymienić tylko kilka. Eliminuje wiele żmudnego XML.
Prawie podoba mi się GORM ze względu na jego prostotę, chociaż mieliśmy też kilka problemów.
Nie podoba mi się luźno wpisana natura Groovy i fakt, że musisz uruchomić aplikację tylko po to, aby móc wyłapać kilka błędów, za bardzo przypomina mi PHP lub Railsy.
Pod koniec dnia zadajemy sobie pytanie, czy jest możliwe napisanie złożonego, zarządzalnego oprogramowania przy użyciu Grails ...
Wkrótce wejdzie do produkcji aplikacja Grails ... więc zobaczymy.
źródło
Używamy Grails + w warstwie internetowej + java z hibernacją i wiosną w warstwie serwisowej. Są to klasyczne trzy warstwy (sieć, logika, dane), w których sieć jest Graalami, a logika jest zaimplementowana w Javie. Jak zwykle w Javie, używamy obiektów bean, które reprezentują dane między różnymi warstwami.
Działa całkiem nieźle i było to najlepsze rozwiązanie w naszym przypadku, ponieważ obiekty bean już tam były, a także struktura bazy danych. Z naszego doświadczenia wynika, że grails ma wielką wartość jako warstwa prezentacji internetowej, ale wolałbym pozostać przy javie, aby napisać reguły biznesowe i utrwalić dane aplikacji - ponieważ grails "to" java, cała integracja Grails-Java jest całkiem niezła bezpośredni.
Używamy eclipse do tworzenia aplikacji Grails i jest to słaba integracja, jak mówili tutaj ludzie. Ale, zgodnie z sugestią innego programisty, uruchamiamy aplikację Grails z wiersza poleceń i używamy tylko eclipse do zapisywania plików źródłowych i działa całkiem dobrze, ponieważ aplikacja jest aktualizowana w locie.
Nie czuję się jednak komfortowo w używaniu Grails w innych miejscach niż warstwa prezentacji.
źródło
Mam dużo większe doświadczenie z Ruby on Rails niż z czymkolwiek w świecie Java, więc przychodzę z innej perspektywy. Ogólnie Grails jest znacznie bardziej szorstki na krawędziach niż Rails, częściowo z powodu swojej niedojrzałości, a częściowo dlatego, że opiera się na dwóch niesamowicie złożonych strukturach pod osłonami (Spring i Hibernate). Railsy mają również znacznie większą społeczność.
Ale Groovy jako język poczynił ogromne postępy i praca z nim jest przyjemnością. Dzięki ulepszeniom wprowadzonym w Groovy 1.6 Grails jest nieco szybszy niż JRuby on Rails, a dzięki GPath otrzymujesz niesamowicie dobrą obsługę XML. Jest wiele fajnych funkcji, które otrzymujesz będąc na JVM (jak współbieżność i mnóstwo kodu zabezpieczonego wątkami), ale bez konieczności grzebania w Javie (języku, na którym nie bardzo mi zależy), więc mam naprawdę ciężki czas przekonania się do użycia czegokolwiek na MRI.
Jednak Python wygląda kusząco, muszę przyznać.
Jeśli chodzi o twoje problemy z Eclipse, nie mogę pomóc. Używam Vima i Emacsa, głównie dlatego, że nie mogę znieść używania IDE. Jednak w przypadku języków dynamicznych, takich jak Groovy, Ruby i Python, nie sądzę, aby środowiska IDE rzeczywiście przynosiły jakiekolwiek korzyści, ponieważ tak naprawdę nie ma miejsca na generowanie kodu lub potrzebę kompilacji. Może spróbuj przez chwilę pracować bez IDE i zobacz, czy wszystko pójdzie gładko?
Więc tak, myślę, że Grails jest tego warta. Wykonali świetną robotę, aby wszystko działało tak szybko, jak oni, a zespoły Grails i Groovy są naprawdę bardzo oddane.
źródło
Jestem całkowicie z tobą! Grails wciąż jest tak szorstki na krawędziach, że porównywanie go z Railsami jest niemal żartem. Gdyby przynajmniej raportowanie błędów było trochę lepsze. Ale wydaje mi się, że jest to prawdopodobnie spowodowane ogromną liczbą bibliotek, których używa pod okładkami. Jedno słowo: stacktrace! Nie jestem też wielkim fanem podejścia model-> db (Railsy mają db-> model). Rusztowanie pozostawia również wiele miejsca na ulepszenia. Wtedy „ponowne uruchomienie nie jest wymagane” również nie działa zgodnie z reklamą. (Nie jestem pewien, co jest gorsze - konieczność ciągłego restartowania lub czasami znajdowanie dziwnych zachowań, które znikają po ponownym uruchomieniu) I nie zaczynaj mnie od GORM. (Kiedy znalezienie sposobu, który byłby prostym kodem SQL, zajmuje wiele godzin, zaczynasz się zastanawiać, czy cały ten ORM naprawdę oszczędza czas) Może tak długo, jak jest to proste.
Mam na myśli: to wciąż jeden z lepszych wyborów frameworka, gdy wychodzisz ze świata java. (Tyle bezużytecznych bzdur, które nazywa się frameworkiem sieciowym) ... ma potencjał. Chciałbym tylko, żeby nie opierał się na tak wielu innych złożonych rzeczach.
W każdym razie - miejmy nadzieję, że te sprawy zostaną uporządkowane. W tej chwili czai się na playframework.org, który również wygląda bardzo zgrabnie i obiecująco.
źródło
Warto, gdy skończą wtyczkę Eclipse. Im szybciej, tym lepiej powiem. Próba sprzedania fajnego mojego szefa nie będzie prosta, dopóki to się nie stanie.
źródło
Uważam, że największą zaletą Grails jest to, że nie muszę już martwić się o bazę danych - schemat jest automatycznie tworzony / aktualizowany, a trwałość jest w dużej mierze wykonywana za mnie (koniec z pisaniem zapytań SQL). To ogromna ulga. Inną przyjemną rzeczą jest to, że po ustaleniu szablonów kontrolerów i widoków dodawanie nowych obiektów domeny jest dość szybkie. Chociaż podejrzewam, że przynajmniej wprowadzisz ciągłe zmiany swoich poglądów, dopasowując je z powrotem do już istniejących.
Co do IDE - wydaje się, że IntelliJ jest najlepszą opcją, ale jestem zadowolony z Netbeans 6.5. Używam MyEclipse do wszystkich innych programów, ale Netbeans ma teraz lepszą obsługę Grails.
źródło
Byłem użytkownikiem Eclipse, zanim zacząłem używać Grails. Szybko okazało się, że to nie wystarczy. Więc wypróbowałem Intellij i NetBeans. W tamtym czasie Intellij był lepszy, jeśli chodzi o Groovy i Grails. Jednak NetBeans był darmowy i to sprawiło, że był dla mnie wystarczająco dobry. Od tego czasu wszystkie trzy miały nowe wersje lub nowe wtyczki. Nadal używam NetBeans ze względu na koszt Intellij. Wraz z nabyciem G2One przez Spring Source jednym z oczekiwań jest większe wsparcie dla Groovy i Grails w Eclipse. Będzie to konieczne dla zwiększenia adopcji.
Używanie Grails do nowego projektu jest cudowne. Tak duża część bagażu Enterprise Java nie jest już potrzebna. Mogę sobie wyobrazić, że próba przeniesienia czegoś byłaby trudna, ponieważ dopóki nie zrozumiesz, jakie są mocne i słabe strony frameworka, trudno jest go efektywnie wykorzystać. Obiecuje się, że obsługa JSP będzie łatwiejsza w Grails 1.1, nie wiem, czy używanie wersji beta podczas próby grokowania nowego frameworka jest dobrym pomysłem. Testy przeszły również poważną rewizję dla nowej wersji. Jeśli czas na to pozwoli, możesz rozważyć poczekanie, ponieważ wydanie 1.1 powinno nastąpić bardzo szybko.
Jeśli masz okazję wypróbować Grails w innym IDE, zaczynając projekt od zera, myślę, że zobaczysz to w innym świetle.
źródło
Właśnie zacząłem używać Grails w nowym projekcie ... nie muszę pisać ŻADNYCH plików xml, ale wciąż mam moc Spring i Hibernate, jest naprawdę niesamowity.
Użyj IntellijIDEA dla IDE, ale tak naprawdę odkryłem Grails poprzez IDE (chociaż mogę być stronniczy, nienawidzę zaćmienia).
źródło
Całkowicie. Jest tak wiele frameworków Java, że poprzeczka jest ustawiona dość wysoko dla nowoprzybyłych i jest świadectwem Grailsa, że był w stanie wznieść się ponad tak zatłoczoną przestrzeń.
Nadal ma kilka ostrych krawędzi, ale to tylko kwestia czasu, zanim zostaną zmatowane, podstawowy projekt jest BARDZO tego wart.
źródło
Grails może być zbyt duża dla twojego typu aplikacji (na podstawie wielu plików utworzonych podczas pierwszej inicjalizacji i wymaganych zasobów). Jeśli szukasz czegoś prostego, Grails może nie być tym, czego szukasz. Jeśli szukasz czegoś prostego i działa, to na razie uważam, że django może dobrze wykonać twoją pracę. Zobacz, jak proste (ile plików wymaga) tworzenie aplikacji CRUD na podstawie samouczka . Z tego miejsca aplikacje można (stosunkowo) łatwo skalować w miarę wzrostu potrzeb i wymagań.
źródło
Nie jestem pewien, czy kiedykolwiek będą w stanie naprawić Grails, wiesz. A mówiąc słusznie, mam na myśli wszystkie szczegóły (małe i duże), przez co w końcu wydaje się kruche i kruche. Nie jestem nawet pewien, czy stoi za tym prawdziwy zespół programistów (czyli więcej niż 2 osoby).
Za każdym razem, gdy powtarzam jakąś cechę moich projektów Grails, próbując coś ulepszyć, jest to ten sam przepływ pracy: wszystko się rozpada, a potem są setki cykli testowych `` google '', a potem dowiadujesz się, dlaczego nie możesz tego zrobić co chcesz i robisz coś innego.
W końcu jesteś sfrustrowany, ponieważ nie chcesz nawet dotykać niczego, co działa. A rzeczy, które nie są dobre, upuszczasz je!
Rozważam przejście na Railsy przez JRuby. To może być najlepsze z obu światów: sprawny framework sieciowy z aktywną i dużą społecznością, dedykowany zespół programistów, platforma, która nie jest oparta na wątpliwych i złożonych frameworkach, takich jak Spring czy Hibernate, szybki i ambitny cykl wydawniczy. I JRuby, ponieważ szczerze mówiąc, tak wiele zasobów Java w moim plecaku, nie mogę ich tak po prostu wyrzucić.
źródło
Jeśli mówisz, że masz doświadczenie w Javie. Powinieneś rzucić okiem na Play Framework - jest to framework sieciowy inspirowany Ruby on Rails z bardzo krótkim cyklem rozwoju - po prostu zapisz plik źródłowy Java i zaktualizuj przeglądarkę internetową. A jeśli chcesz wypróbować inny język, Play Framework ma moduł, który pozwala zamiast tego używać Scali.
Lubię Play Framework, ponieważ jest łatwy do zrozumienia i ma dobrą wydajność. Jeśli chcesz, możesz również użyć JPA i Hibernacji dla warstwy ORM.
źródło