Ne vale la pena Grails? [chiuso]


87

Questa è metà sproloquio, metà domanda.

Vale la pena usare Grails? Sto cercando di sviluppare un'applicazione web basata su database relativamente semplice. La mia esperienza è in Java, quindi naturalmente Grails mi è sembrata una buona scelta. All'inizio pensavo di usare Spring, JPA e Hibernate, ma l'ho usato in precedenza e mi sono imbattuto in ogni sorta di noioso lavoro di configurazione e codifica. Grails si pubblicizza per risolvere questo problema.

La mia più grande frustrazione con Grails sono tutte le piccole cose che non funzionano. Quello che voglio dire è che non funziona come si potrebbe intuitivamente pensare che dovrebbe. È molto ruvido intorno ai bordi. Mi imbatto costantemente in problemi. A volte è la mia mancanza di comprensione di Grails, altre volte ho scoperto bug legittimi di Grails.

Uno dei problemi principali è la mancanza di una buona integrazione con Eclipse. C'è un plugin Groovy e Grails, ma non fa molto altro che l'evidenziazione della sintassi. Chiamare Groovy da Java e viceversa è molto doloroso da configurare . Non avere un buon supporto IDE è un grave peccato.

Quello che succede è che mi siedo cercando di sviluppare la mia applicazione web. Alla fine della giornata mi rendo conto di aver trascorso circa l'85% della giornata a eseguire il debug di problemi relativi a Grails. Se non si tratta di problemi di Eclipse, allora è desideroso di caricare , recuperare nella vista , relazioni uno-a-molti , strano comportamento di bug di file vuoti , uno strano bug di proprietà / getter - va solo avanti e avanti. Questo è solo un esempio dei problemi che ho riscontrato oggi. Il mio ultimo incontro con Grails ha prodotto un sacco di problemi diversi.

A volte mi chiedo se ne valga la pena. Sono curioso se altri l'hanno sperimentato. Ci sono persone che usano effettivamente Grails per lanciare in modo produttivo un'applicazione web? Esistono altri framework per lo sviluppo web rapido che dovrei prendere in considerazione?


7
Hai posto questa domanda mesi fa, ma voglio solo dire che mi sono allontanato da Java negli ultimi anni e sono stato costretto a usare Ruby on Rails solo di recente. Non so spiegare quanto sia semplice e facile fare tutto. Personalmente detesto Ruby e la sua sciocca flessibilità, ma rispetto a fare un'app web in QUALSIASI framework in Java ... RoR ha una comunità enorme e molte persone intelligenti che rispondono a cose. Lo sviluppo è diventato di nuovo divertente ... Ovviamente devi iniziare da zero, ma non è mai come la prima volta.
Dan Rosenstark,

4
Netbeans ha una buona integrazione Grails / Groovy ora.
James McMahon

1
Groovy + Grails a volte sembra combinare il peggio dei mondi Java e Ruby. Risolve molti problemi di Spring e altri problemi di configurazione, ma non è mai così facile come Ruby + Rails. Può avvicinarsi, ma richiede lavoro. Allo stesso tempo, introduce alcune delle inaffidabilità / imprevedibilità di Ruby + Rails. Attualmente mi chiedo come diavolo sia possibile che Grails non supporti i parametri di richiesta di associazione agli oggetti dominio / comando. Devo aggiungere del codice extra per fargli riconoscere correttamente Enums.
mcv

C'è un plugin per Grails in Eclipse solo di recente, no? ( docs.codehaus.org/pages/viewpage.action?pageId=133464433 )
leeand00

Dopo aver letto tutti i commenti condivido le frustrazioni iniziali derivanti dall'uso di Grails. Onestamente quello che stavamo sperimentando tutti è la curva di apprendimento ripida se vieni dal semplice sviluppo Java. Il mio suggerimento è di dedicare del tempo alla prima lettura di Grails. Segui un tutorial completo che copre tutti i componenti MVC. Sperimenta gli errori wtf il prima possibile in modo che non ti rimangano indietro in un progetto reale con scadenze reali. Ad esempio, ho impiegato due settimane per leggere ed esercitarmi nei capitoli da 1 a 7 del Grails in Action (2a edizione). Ora ho le conoscenze di base per continuare con le query di Google.
Salvador Valencia

Risposte:


85

Avevamo un team di 12 persone tutti esperti sviluppatori Java senior che hanno imparato Grails da 0.6B e stiamo ancora lavorando a progetti basati su Grails. Non tornerei volentieri a Java e siamo tutti sollevati di aver rotto la schiena di come arrivare da qualche parte velocemente con un'app Grails.

È stata una lotta, non è stato facile e c'era / c'è frustrazione.

Tuttavia, abbiamo fornito qualcosa molto rapidamente, visti i nostri sforzi in corso .. Ci sono bug, molti dei quali hanno soluzioni alternative.

Ho sentito di diversi esempi di sviluppatori bravi in ​​Java che cercano di immergersi in incantesimi profondi e complessi dei progetti Grails. Abbiamo evitato tutto Java e siamo diventati puri Grail e Groovy. Ci siamo assicurati di iniziare in modo semplice, di costruire la complessità nel modo più gestibile e pratico possibile. Non abbiamo osato immergerci fino in fondo e sperare che la nostra conoscenza di Java fosse sufficiente per sostenerci.

Alla fine avevamo creato qualcosa di enorme e complesso che funzionava in maniera favolosa ed era molto più veloce della scrittura della versione Java / Spring / Hibernate pura; e questo è senza un supporto IDE decente e una situazione molto peggiore in termini di bug rispetto a oggi.

Per quanto riguarda il supporto Eclipse, l'unico vero IDE da usare per Grails / Groovy è Intellij - il supporto Eclipse è molto indietro, purtroppo: ero un amante di Eclipse e sono lontano dall'essere un convertito Intellij - il supporto Grails / Groovy ha spazzato via tutto il resto anche se.

Sì, Grails è immaturo rispetto alla primavera forse. O ibernazione. E scommetterei che nei primi 1,5 anni della loro esistenza erano ugualmente pieni di problemi.

Stando così le cose, ti affida l'onere di fare in modo di mantenere la complessità al minimo assoluto, di testare attentamente prima (a nostro avviso) e di costruire la complessità gradualmente e con cura.

Non esiste una soluzione di codice veloce con Java una volta coinvolto Spring / Hibernate nello stack. La complessità che Grails incarna è un riflesso della complessità di Spring / Hibernate. Se ritieni che il tuo tempo sia meglio speso a farlo con Java puro, non sosterrei altrimenti .. Ho ancora i miei WTF ma ora che la curva di apprendimento ripida è dietro di me penso che continuerò con Grail ancora un po '.


2
Freddo. Penso che la tua decisione di andare con Groovy sia stata solo saggia.
krosenvold

9
+1 Anch'io sono un utente Intellij, ma ho colleghi che usano netbeans 6.5 felicemente e ho sentito che anche il supporto di eclipse sta migliorando molto. Usiamo il Graal dal .5 e siamo molto contenti del Graal. Ci sono stati ostacoli ma anche rapidi miglioramenti e una grande comunità.
Ted Naleid

I miei pensieri esattamente e posso sentire il dolore mentre ho passato anni a cercare di capire le relazioni molti-a-molti e mappare le classi di dominio a un database legacy, ma con il plugin di test di
Grails

@j pimmel come vanno le cose 18 mesi dopo?
Armand

7
Meglio che mai! Sto lavorando al mio quarto progetto aziendale Grails; impiega l'elaborazione a griglia parallela per grandi volumi di elaborazione XML, gli aggiornamenti sono molto meno dolorosi (anche se devono ancora fare il salto a 1.3), i plugin stanno migliorando, gli IDE sono molto buoni ora. In un recente incontro un programmatore .Net mi ha spiegato come Grails e Groovy siano uno dei più sfortunati segreti di Java che non ha avuto l'attenzione che merita. Con SpringSource a bordo, tuttavia, la sensazione di beneficiare di una piattaforma innovativa, intuitiva e in continua evoluzione è davvero su di noi.
j pimmel

36

Mi piace molto scrivere un'applicazione per i graal per due motivi:

  • Non devo usare Java
  • Posso usare Java

Penso che dopo aver preso confidenza con il graal si ottengano le proprie cose in modo molto rapido ed elegante.

Questo per quanto riguarda il lato positivo. Il lato negativo è la prestazione, che mi colpisce su due aspetti: la distribuzione e lo sviluppo basato su test.

Non sono riuscito a eseguire più di 3 applicazioni grails su un singolo server (noleggiato), perché ho raggiunto rapidamente i limiti di memoria e prestazioni. Ci sono semplicemente troppi framework inclusi.

Inoltre, il testrunner del Graal non vale quel nome. Quando eseguo gli unit test, dovrebbero essere eseguiti in un istante, non tra 10 e 20 secondi. Quindi mi ritrovo tutto il tempo a scrivere logica aziendale in java semplice, perché posso testarla molto più velocemente. Ma immagino che questo possa essere affrontato con una migliore integrazione nell'IDE (eclipse).


Quando dici test, intendi test di integrazione o sia test di unità che di integrazione poiché sto usando IntelliJ e il test di unità non richiede così tanto tempo. Sono d'accordo in caso di test di integrazione.
andHapp

la dimensione del vaso si sta riducendo: thevirtualmachine.wordpress.com/2008/12/04/… , li ammalate in un'area comune o jre / lib / ext / grails.org/Testing+Plugin ora viene fornito con grails 1.1. questi possono simulare oggetti di dominio, quindi gli unit test vengono eseguiti velocemente .
Ray Tayek

Il plugin di test sembra molto interessante, grazie.
Ole

Buon punto lì; testare usando java. Perché non ci ho pensato prima.
padippist

10

Penso che il sostegno della primavera a Grails sarà un grande impulso. Se qualcuno può spostarlo oltre CRUD sul web, sono quei ragazzi.

Penso anche che stia raggiungendo una massa critica. Ci sono diversi nuovi libri che arriveranno sul mercato nel 2009. Penso che aiuteranno il tasso di adozione.


9

Sono pienamente d'accordo con i sentimenti dei poster originali.

Siamo un negozio Java + Spring e abbiamo colto l'occasione per provare Grails. Per prima cosa abbiamo creato un'applicazione di test molto piccola che si è rivelata piuttosto semplice da fare e ha funzionato abbastanza bene. I problemi principali che abbiamo avuto qui erano dovuti alla nostra mancanza di conoscenza con Groovy e Grails.

A seguito di questo successo (aumento della fiducia) abbiamo deciso di tentare un progetto leggermente più grande. Questa è stata un'esperienza molto più dolorosa. Come accennato da altri, abbiamo scoperto tutti i tipi di bug e problemi che non erano immediatamente evidenti in superficie. I cicli di riavvio dell'app diventano estremamente dolorosi e, a meno che tu non abbia una copertura di test davvero buona, è un incubo fare qualsiasi tipo di rifattorizzazione.

Davvero frustrante è che il codice fallisca senza un singolo messaggio di errore! Semplicemente non funziona e non sai perché?

Mi piace la facilità d'uso dei plugin per JMS, Quartz e Remoting per citarne alcuni. Elimina un sacco di noioso XML.

Mi piace quasi GORM per la sua semplicità, anche se abbiamo avuto anche diversi problemi.

Non mi piace la natura vagamente tipizzata di Groovy e il fatto che devi eseguire la tua applicazione solo per essere in grado di rilevare un mucchio di errori, mi ricorda troppo PHP o Rails.

Alla fine della giornata ci chiediamo se sia possibile scrivere un pezzo complesso di software gestibile usando Grails ...

Abbiamo un'applicazione Grails che sta per entrare in produzione ... quindi vedremo.


2
Come è andata l'applicazione Grails che avevi in ​​produzione?
MauroPorras

Puoi scrivere codice gestibile con qualsiasi cosa, è solo la cosa che i framework web sono intrinsecamente complessi, quindi non mi aspetto che in breve tempo tu sappia come farlo. Tuttavia, non utilizzare il server di applicazioni Web per processi pianificati con quartz, è necessario che l'app Web funzioni al primo posto.
Andrew

7

Stiamo usando grails + sul livello web + java con ibernazione e primavera sul livello di servizio. Sono i classici tre livelli (web, logica, dati) in cui il web è grails e la logica è implementata in java. Come di consueto in java, utilizziamo oggetti bean che rappresentano i dati tra i diversi livelli.

Funziona abbastanza bene ed è stata la soluzione migliore per il nostro caso poiché gli oggetti bean erano già presenti, così come la struttura del database. Dalla nostra esperienza, penso che grails abbia un grande valore come livello di presentazione web, ma mi atterrei a java per scrivere le regole aziendali e per mantenere i dati dell'applicazione - poiché grails "è" java, tutta l'integrazione grails-java è carina straight-forward.

Usiamo eclipse per sviluppare l'applicazione grails e la sua scarsa integrazione, come hanno detto le persone qui. Ma, come suggerimento di un altro sviluppatore, eseguiamo l'applicazione grails dalla riga di comando e usiamo eclipse solo per salvare i file sorgente, e funziona abbastanza bene, poiché l'applicazione viene aggiornata al volo.

Non mi sento ancora a mio agio nell'usare i Graal in posti diversi dal livello di presentazione.


Tutto questo ha perfettamente senso per me. Questo è il modo in cui intendo usare Grails. cioè per la parte anteriore.
Conor

7

Ho molta più esperienza con Ruby on Rails che con qualsiasi altra cosa nel mondo Java, quindi arrivo da una prospettiva diversa. Nel complesso, Grails è molto più approssimativo di Rails, in parte a causa della sua immaturità, e in parte perché si basa su due strutture follemente complesse sotto le coperte (Spring e Hibernate). Rails ha anche una community molto più grande.

Ma Groovy come linguaggio ha fatto passi da gigante ed è un piacere lavorarci. Grazie ai miglioramenti apportati in Groovy 1.6, Grails è un po 'più scattante di JRuby on Rails e ottieni un supporto XML incredibilmente buono tramite GPath. Ci sono molte funzioni interessanti che ottieni essendo sulla JVM (come la concorrenza e tonnellate di codice threadsafe), ma senza dover perdere tempo con Java (un linguaggio che non mi interessa molto), quindi sto avendo un è stato difficile convincermi a usare qualsiasi cosa sulla risonanza magnetica.

Python sembra allettante, però, devo ammetterlo.

Per quanto riguarda i tuoi problemi con Eclipse, non posso aiutarti. Uso Vim ed Emacs, principalmente perché non sopporto di usare IDE. Per linguaggi dinamici come Groovy, Ruby e Python, tuttavia, non penso che gli IDE introducano davvero alcun vantaggio reale, poiché non c'è davvero alcun posto per la generazione di codice o la necessità di compilare. Forse provare a lavorare senza IDE per un po 'e vedere se le cose sono più fluide?

Quindi, sì, penso che Grails ne valga la pena. Hanno fatto un lavoro infernale nel far funzionare le cose con la stessa rapidità con cui hanno fatto, e i team di Grails e Groovy sono entrambi molto, molto dedicati.


6

Sono totalmente con te! Grails sembra ancora così ruvido intorno ai bordi che è quasi uno scherzo paragonarlo a Rails. Se almeno la segnalazione degli errori fosse un po 'migliore. Ma immagino che sia probabilmente anche dovuto all'enorme quantità di librerie che utilizza sotto le coperte. Una parola: stacktrace! Inoltre non sono un grande fan dell'approccio model-> db (Rails ha db-> model). Anche le impalcature lasciano ampi margini di miglioramento. Quindi "nessun riavvio richiesto" non funziona come pubblicizzato. (Non sono sicuro di cosa sia peggio: dover riavviare tutto il tempo o talvolta trovare comportamenti strani che scompaiono quando riavvii) E non farmi iniziare su GORM. (Quando ci vogliono ore per trovare un modo quello che sarebbe stato un semplice SQL, inizi a chiederti se questo intero ORM ti fa davvero risparmiare tempo) Forse finché è semplice.

Voglio dire: è ancora una delle scelte migliori di un framework quando vieni dal mondo java. (Così tante cazzate inutili là fuori che si autodefinisce framework web) ... ha del potenziale. Vorrei solo che non si fosse costruito sopra così tante altre cose complesse.

Comunque, speriamo che queste cose vengano sistemate. Al momento sono in agguato su playframework.org che sembra anche molto elegante e promettente.


Quando usi molto i graal, sarai abituato alla segnalazione degli errori. Ora che Spring Sources ha il controllo, lo renderanno migliore e daranno un supporto migliore.
padippist

4

Ne varrà la pena quando finiranno il plugin di eclipse. Prima è meglio dico. Cercare di vendere alla moda al mio capo non sarà semplice finché non accadrà.


3
Plug-in di Eclipse? Cielo, no. IntelliJ ha già un eccellente supporto per Groovy e Grails. Ti consiglio di ottenere un IDE migliore: IntelliJ.
duffymo

+1, ma alcune persone non possono permettersi di acquistare intellij ed è bloccato con eclipse.
Chii

4

Trovo che il più grande vantaggio di Grails sia che non devo più preoccuparmi del database: lo schema viene creato / aggiornato automaticamente e la persistenza è in gran parte eseguita per me (non più la scrittura di query SQL). Questo è un enorme sollievo. L'altra cosa piuttosto interessante è che una volta definiti i modelli per i controller e le viste, l'aggiunta di nuovi oggetti di dominio è piuttosto veloce. Anche se sospetto che apporterai continui cambiamenti almeno alle tue opinioni, adattandole a quelle esistenti.

Per quanto riguarda l'IDE, sembra che IntelliJ sia l'opzione migliore, ma sono contento di usare Netbeans 6.5. Uso MyEclipse per tutti gli altri sviluppi, ma Netbeans ha ora un supporto migliore per Grails.


3

Ero un utente Eclipse prima di iniziare a usare Grails. È stato subito evidente che non avrebbe funzionato. Quindi ho provato Intellij e NetBeans. All'epoca Intellij era migliore per quanto riguardava Groovy e Grails. Tuttavia, NetBeans era gratuito e questo lo rendeva abbastanza buono per me. Da allora tutti e tre hanno avuto nuove versioni o nuovi plugin rilasciati. Sto ancora utilizzando NetBeans a causa del costo di Intellij. Con l'acquisizione di G2One da parte di Spring Source una delle aspettative è un maggiore supporto per Groovy e Grails in Eclipse. Ciò sarà necessario per una maggiore adozione.

Usare Grails per un nuovo progetto è meraviglioso. Gran parte del bagaglio Enterprise Java non è più necessario. Posso immaginare che provare a portare qualcosa sarebbe difficile perché fino a quando non si capisce dove sono i punti di forza e di debolezza di un framework, è difficile utilizzarlo in modo efficiente. È stato promesso che il supporto JSP sarà più facile in Grails 1.1, non so se usare una versione beta mentre si cerca di creare un nuovo framework sia una buona idea. Il test ha anche subito una revisione importante per la nuova versione. Se il tempo lo consente, potresti considerare di aspettare poiché la versione 1.1 dovrebbe essere molto presto.

Se hai l'opportunità di provare Grails in un IDE diverso quando inizi un progetto da zero, penso che lo vedrai sotto una luce diversa.


3

Ho appena iniziato a usare graal su un nuovo progetto ... non dover scrivere NESSUN file xml ma avere ancora la potenza di Spring e Hibernate è davvero sorprendente.

Usa IntellijIDEA per l'IDE, in realtà ho scoperto Grails attraverso l'IDE (potrei essere di parte però, odio l' eclissi).


2

Totalmente. Ci sono così tanti framework Java che l'asticella è piuttosto alta per i nuovi arrivati, ed è una testimonianza di Grails che è stato in grado di elevarsi in uno spazio così affollato.

Ha ancora alcuni bordi che sono nitidi, ma quelli sono solo una questione di tempo prima che siano arruffati, il progetto sottostante ne vale MOLTO la pena.


1

Grails potrebbe essere troppo grande per il tuo tipo di applicazione (in base ai numerosi file creati alla prima inizializzazione e alle risorse necessarie). Se stai cercando qualcosa di semplice, Grails potrebbe non essere quello che stai cercando. Se stai cercando qualcosa di semplice e che funzioni, per ora ritengo che Django possa fare bene il tuo lavoro. Dai un'occhiata a quanto è semplice (quanti file richiede) creare un'app CRUD dal suo tutorial . Da qui, le tue app possono (relativamente) facilmente scalare man mano che le tue esigenze e requisiti crescono.


0

Non sono sicuro che saranno mai in grado di correggere Grail, sai. E per diritto intendo affrontare tutti i dettagli (piccoli e grandi) che alla fine lo fanno sembrare fragile e fragile. Non sono nemmeno sicuro che ci sia un vero team di sviluppo (ovvero più di 2 persone) dietro di esso.

Ogni volta che ripeto su una caratteristica dei miei progetti Grails, cercando di migliorare qualcosa, è lo stesso flusso di lavoro: tutto va a rotoli, poi ci sono un centinaio di cicli di test 'google', poi scopri il motivo per cui non puoi farlo quello che vuoi e fai qualcos'altro.

Alla fine, sei frustrato perché non vuoi nemmeno toccare qualcosa che corre. E le cose che non vanno bene, le lasci cadere!

Sto considerando un passaggio a Rails tramite JRuby. Questo potrebbe essere il meglio di entrambi i mondi: un framework web capace con una comunità attiva e ampia, un team dedicato di sviluppatori, una piattaforma che non si basa su framework discutibili e complessi come Spring o Hibernate, un ciclo di rilascio rapido e ambizioso. E JRuby perché francamente, così tante risorse Java nel mio zaino, non posso semplicemente buttarle via.


C'è sicuramente un vero team di sviluppo dietro Grails, ci sono almeno 4 persone. Stai eliminando il tuo codice testando prima? Mentre sento la tua frustrazione, il gran numero di storie di successo di Grails suggerisce che è necessaria una certa perseveranza. grails.org/Success+Stories
j pimmel

La perseveranza è davvero richiesta, come per tutte le cose IT. Uso graal su progetti aziendali da circa 2 anni. Ogni nuova versione di Grails introduce regressioni, quindi non sono sicuro di chi dovrebbe testare per primo e perseverare ;-) Grazie per i commenti e complimenti per i tuoi successi con Grails!
Rollo Tomazzi

Sì, sono d'accordo sul fatto che la gestione degli aggiornamenti di Grails sia una cosa piuttosto costosa dell'utilizzo di Grails .. se dovessi decidere di giustificare l'aggiornamento - tutti i nostri sistemi funzionano ancora con la 1.0.3
j pimmel

Mi piace molto Grails, ma gli aggiornamenti possono essere un vero dolore.
user955732

0

Se la tua esperienza è in Java come dici tu. Dovresti dare un'occhiata a Play Framework - è un framework web ispirato a Ruby on Rails con un ciclo di sviluppo molto breve - salva il tuo file sorgente Java e aggiorna il tuo browser web. E se vuoi provare un'altra lingua, Play Framework ha un modulo che ti consente invece di usare Scala.

Mi piace Play Framework poiché è facile da capire e ha buone prestazioni. Puoi anche usare JPA e Hibernate per il livello ORM, se lo desideri.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.