Grails vale a pena? [fechadas]

87

Isso é meio discurso retórico, meio pergunta.

Vale a pena usar Grails? Estou tentando desenvolver um aplicativo da web baseado em banco de dados relativamente simples. Minha experiência é em Java, então, naturalmente, Grails parecia uma boa escolha. A princípio pensei em usar Spring, JPA e Hibernate, mas já usei isso anteriormente e me deparei com todos os tipos de configuração tediosa e trabalho de codificação. Grails se anuncia como uma solução para isso.

Minha maior frustração com Grails são todas as pequenas coisas que não funcionam. O que quero dizer é que não funciona como se pensaria intuitivamente que deveria. É muito áspero nas bordas. Tenho problemas constantemente. Às vezes é a minha falta de compreensão do Grails - outras vezes, descobri bugs legítimos do Grails.

Um grande problema é a falta de uma boa integração do Eclipse. Existe um plugin Groovy e Grails, mas ele não faz muito além do realce de sintaxe. Chamar Groovy de Java e vice-versa é muito difícil de configurar . Não ter um bom suporte IDE é uma grande chatice.

O que acontece é que me sento tentando desenvolver meu aplicativo da web. No final do dia, percebo que passei cerca de 85% do dia depurando problemas relacionados ao Grails. Se não forem problemas do Eclipse, então é carregamento rápido , busca na visualização , relacionamentos um-para-muitos , comportamento estranho de bug de arquivo vazio , um bug estranho de propriedade / getter - ele simplesmente continua e continua. Esta é apenas uma amostra dos problemas que encontrei hoje. Minha última reunião com Grails rendeu um monte de questões diferentes.

Às vezes me pergunto se vale a pena. Estou curioso para saber se outras pessoas já passaram por isso. Existem pessoas realmente usando Grails para criar um aplicativo da web de forma produtiva? Existem outras estruturas para desenvolvimento rápido da web que eu deva considerar?

Steve Kuo
fonte
7
Você fez essa pergunta meses atrás, mas só quero dizer que me afastei do Java nos últimos anos e acabei sendo forçado a usar Ruby on Rails recentemente. Não consigo explicar como é simples e fácil fazer tudo. Eu pessoalmente detesto Ruby e é uma flexibilidade boba, mas comparado a fazer um aplicativo da web em QUALQUER framework em Java ... RoR tem uma enorme comunidade e muitas pessoas inteligentes respondendo coisas. O desenvolvimento voltou a ser divertido ... Claro que tem que começar do zero, mas nunca é como da primeira vez.
Dan Rosenstark
4
O Netbeans tem uma integração Grails / Groovy muito boa agora.
James McMahon
1
Groovy + Grails às vezes parece combinar o pior dos mundos Java e Ruby. Ele resolve muitos problemas de Spring e outros problemas de configuração, mas nunca é tão fácil quanto Ruby + Rails. Pode chegar perto, mas requer trabalho. Ao mesmo tempo, apresenta algumas das inseguranças / imprevisibilidade do Ruby + Rails. Atualmente estou me perguntando como diabos é possível que Grails não suporte parâmetros de solicitação de vinculação para objetos de domínio / comando. Tenho que adicionar código extra para que ele reconheça Enums corretamente.
mcv
Há um plugin para Grails no eclipse recentemente, não é? ( docs.codehaus.org/pages/viewpage.action?pageId=133464433 )
leeand00
Depois de ler todos os comentários, compartilho as frustrações iniciais de usar Grails. Honestamente, o que todos nós estávamos experimentando é a curva de aprendizado íngreme se você está vindo de um desenvolvimento Java simples. Minha sugestão é reservar um tempo para ler primeiro sobre Grails. Vá até um tutorial completo que cobre todos os componentes MVC. Experimente os erros wtf o mais cedo possível para que eles não o prejudiquem em um projeto real com prazos reais. Por exemplo, levei duas semanas para ler e praticar os capítulos 1 a 7 do Grails em ação (2ª edição). Agora tenho o conhecimento básico para continuar com as consultas do Google.
Salvador Valencia

Respostas:

85

Tínhamos uma equipe de 12 pessoas, todas experientes desenvolvedores Java sênior que aprenderam Grails com o 0.6B e ainda estamos trabalhando em projetos baseados em Grails. Eu não voltaria para o Java de bom grado, e estamos todos aliviados por descobrir como chegar a algum lugar rapidamente com um aplicativo Grails.

Foi uma luta, não foi fácil e houve / há frustração.

No entanto, entregamos algo muito rapidamente devido aos nossos esforços contínuos. Existem bugs, muitos dos quais têm soluções alternativas.

Eu ouvi falar de vários exemplos de desenvolvedores que são bons em Java tentando mergulhar em encantamentos profundos e complexos de projetos Grails. Evitamos todo o Java e nos tornamos puros Grails e Groovy. Certificamo-nos de que começamos de forma simples, construímos a complexidade da maneira mais gerenciável e prática possível. Não ousamos mergulhar no fundo do poço e esperamos que nosso conhecimento de Java fosse suficiente para nos sustentar.

Eventualmente, criamos algo enorme e complexo que funcionou fabulosamente e foi muito mais rápido do que escrever uma versão Java / Spring / Hibernate pura; e isso sem suporte IDE decente e uma situação muito pior em termos de bugs do que hoje.

No que diz respeito ao suporte ao Eclipse, o único IDE real a ser usado para Grails / Groovy é o Intellij - o suporte ao Eclipse está muito atrás, infelizmente: eu era um amante do Eclipse e estou longe de ser um convertido do Intellij - o suporte Grails / Groovy surpreendeu todo o resto Apesar.

Sim, Grails é imaturo em comparação com a primavera, talvez. Ou Hibernate. E eu apostaria que nos primeiros 1,5 anos de sua existência eles foram igualmente repletos de problemas.

Sendo assim, coloca sobre você o ônus de cuidar para que mantenha a complexidade ao mínimo absoluto, de testar primeiro cuidadosamente (em nossa opinião) e aumentar a complexidade gradualmente e com cuidado.

Não existe uma solução de código rápida com Java, uma vez que você envolve Spring / Hibernate na pilha. A complexidade que Grails incorpora é um reflexo da própria complexidade do Spring / Hibernate. Se você acha que é melhor gastar seu tempo fazendo isso com Java puro, eu não diria o contrário .. Ainda tenho meus WTFs, mas agora que a curva de aprendizado íngreme ficou para trás, acho que vou ficar com Grails um pouco mais.

j pimmel
fonte
2
Legal. Acho que sua decisão de escolher o groovy foi acertada.
krosenvold
9
1 Também sou um usuário do Intellij, mas felizmente tenho colegas de trabalho usando o netbeans 6.5 e ouvi dizer que o suporte a eclipse também está melhorando. Temos usado grails desde .5 e estamos muito felizes com grails. Houve solavancos, mas também melhorias rápidas e uma grande comunidade.
Ted Naleid
Meus pensamentos exatamente e posso sentir a dor enquanto passei anos tentando descobrir os relacionamentos muitos-para-muitos e mapeando classes de domínio para um banco de dados legado, mas com o plugin de teste de grails e grails 1.1 são dias felizes
andHapp
@j pimmel como estão as coisas 18 meses depois?
Armand
7
Melhor do que nunca! Trabalhando no meu 4º projeto empresarial Grails; emprega processamento de grade paralelizado para grandes volumes de processamento XML, atualizações muito menos dolorosas (embora ainda para dar o salto para 1.3), plug-ins ficando melhores, IDEs muito bons agora. Em uma reunião recente, um programador .Net estava me contando como Grails e Groovy é um dos segredos Java mais azarados que não recebeu a atenção que merece. Com SpringSource a bordo, no entanto, a sensação de nos beneficiarmos de uma plataforma inovadora, intuitiva e em evolução está realmente sobre nós.
j pimmel
36

Gosto muito de escrever um aplicativo grails por dois motivos:

  • Eu não tenho que usar Java
  • Eu posso usar Java

Acho que depois de se familiarizar com os Grails, as coisas são feitas de maneira muito rápida e elegante.

Tanto para o lado positivo O lado negativo é o desempenho, que me atinge em dois aspectos: implantação e desenvolvimento orientado a teste.

Não consegui executar mais do que 3 aplicativos grails em um único servidor (alugado), porque rapidamente atingi os limites de memória e desempenho. Simplesmente, há muitos frameworks incluídos.

Além disso, o testrunner de grails não vale esse nome. Quando eu executo testes de unidade, eles devem ser feitos em um instante, não em 10 a 20 segundos. Então, encontro-me o tempo todo escrevendo lógica de negócios em java puro, porque posso testá-lo muito mais rápido. Mas acho que isso pode ser resolvido com uma melhor integração no IDE (eclipse).

Ole
fonte
Quando você diz teste, quer dizer testes de integração ou teste de unidade e integração, pois estou usando o IntelliJ e os testes de unidade não demoram tanto. Eu concordaria em caso de testes de integração.
eHapp
o tamanho do frasco está diminuindo: thevirtualmachine.wordpress.com/2008/12/04/… , doente estes em uma área comum ou jre / lib / ext / grails.org/Testing+Plugin agora vem com grails 1.1. eles podem simular objetos de domínio, portanto, os testes de unidade são executados rapidamente .
Ray Tayek
O plugin de teste parece muito legal, obrigado.
Ole
Bom ponto aí; teste usando java. Por que não pensei nisso antes.
padippist
10

Acho que o apoio do Spring a Grails será um grande impulso. Se alguém pode mover para além do CRUD na web, são esses caras.

Também acho que está atingindo uma massa crítica. Há vários livros novos que chegarão ao mercado em 2009. Acho que eles ajudarão na taxa de adoção.

duffymo
fonte
9

Eu concordo totalmente com os sentimentos dos pôsteres originais.

Somos uma loja Java + Spring e aproveitamos para experimentar o Grails. Primeiro, criamos um aplicativo de teste muito pequeno que acabou sendo muito simples de fazer e funcionou muito bem. Os principais problemas que tivemos aqui foram devido à nossa falta de conhecimento com Groovy e Grails.

Após esse sucesso (aumento de confiança), decidimos que tentaríamos um projeto um pouco maior. Esta foi uma experiência muito mais dolorosa. Conforme mencionado por outros, nós descobrimos todos os tipos de bugs e problemas que não eram imediatamente aparentes na superfície. Os ciclos de reinicialização do aplicativo são extremamente dolorosos e, a menos que você tenha uma cobertura de teste realmente boa, é um pesadelo fazer qualquer tipo de reformulação.

Realmente frustrante é ver o código falhar sem uma única mensagem de erro! Simplesmente não funciona e você não sabe por quê?

Eu gosto da facilidade de uso dos plug-ins para JMS, Quartz e Remoting, para citar alguns. Elimina muito XML tedioso.

Quase gosto do GORM por sua simplicidade, embora também tenhamos enfrentado vários problemas.

Eu não gosto da natureza vagamente tipada do Groovy e do fato de que você precisa executar seu aplicativo apenas para ser capaz de detectar um monte de erros, me lembra muito de PHP ou Rails.

No final do dia, estamos nos perguntando se é possível escrever uma peça complexa de software gerenciável usando Grails ...

Temos um aplicativo Grails prestes a entrar em produção ... então veremos.


fonte
2
Como foi o aplicativo Grails que você tinha em produção?
MauroPorras 03/08/12
Você pode escrever código gerenciável com qualquer coisa, apenas o fato de que os frameworks da web são inerentemente complexos, então não esperaria que em pouco tempo você saberia como fazê-lo. Não use o servidor de aplicativos da web para trabalhos agendados com quartzo, você precisa ter o desempenho do aplicativo da web em primeiro lugar.
Andrew
7

Estamos usando grails + na camada web + java com hibernate e spring na camada de serviço. São as três camadas clássicas (web, lógica, dados) onde a web é grails e a lógica é implementada em java. Como é normal em java, usamos objetos de bean que representam os dados entre diferentes camadas.

Funcionou muito bem e foi a melhor solução para o nosso caso, pois os objetos de bean já estavam lá, assim como a estrutura do banco de dados. Pela nossa experiência, acho que grails tem um grande valor como camada de apresentação da web, mas eu ficaria com o java para escrever as regras de negócios e persistir os dados do aplicativo - como grails "é" java, toda a integração grails-java é bonita direto.

Usamos o eclipse para desenvolver o aplicativo grails e é uma integração pobre, como as pessoas disseram aqui. Mas, como sugestão de outro desenvolvedor, executamos o aplicativo grails a partir da linha de comando e apenas usamos o eclipse para salvar os arquivos de origem, e funciona muito bem, já que o aplicativo é atualizado na hora.

Ainda não me sinto confortável para usar grails em outros lugares além da camada de apresentação.

Ravi Wallau
fonte
Tudo isso faz sentido para mim. É assim que pretendo usar Grails. ou seja, para o front-end.
Conor,
7

Tenho muito mais experiência com Ruby on Rails do que com qualquer coisa no mundo Java, então estou vindo de uma perspectiva diferente. No geral, Grails é muito mais complicado do que Rails, parcialmente devido à sua imaturidade, e parcialmente porque ele depende de dois frameworks insanamente complexos ocultos (Spring e Hibernate). Rails também tem uma comunidade muito maior.

Mas Groovy como linguagem fez grandes avanços e é um prazer trabalhar com ele. Graças às melhorias feitas no Groovy 1.6, Grails é um pouco mais rápido do que JRuby on Rails, e você obtém um suporte XML incrivelmente bom via GPath. Há muitos recursos interessantes que você obtém por estar na JVM (como simultaneidade e toneladas de código threadsafe), mas sem ter que mexer com Java (uma linguagem para a qual não me importo muito), então estou realmente momento difícil de me convencer a usar qualquer coisa na ressonância magnética.

Python parece tentador, devo admitir.

Quanto aos seus problemas com o Eclipse, não posso ajudar. Eu uso Vim e Emacs, principalmente porque não suporto usar IDEs. Para linguagens dinâmicas como Groovy, Ruby e Python, entretanto, não acho que IDEs realmente apresentem qualquer benefício real, já que não há realmente nenhum lugar para geração de código ou a necessidade de compilar. Talvez tente trabalhar sem IDE por um tempo e veja se as coisas estão mais suaves?

Então, sim, acho que Grails vale a pena. Eles fizeram um excelente trabalho em fazer as coisas funcionarem tão rapidamente quanto fizeram, e as equipes Grails e Groovy são muito, muito dedicadas.

Don Werve
fonte
6

Estou totalmente com você! Grails ainda parece tão áspero nas bordas que é quase uma piada compará-lo com Rails. Se pelo menos o relatório de erros fosse um pouco melhor. Mas eu acho que provavelmente também é devido à grande quantidade de bibliotecas que ele usa nos bastidores. Uma palavra: stacktrace! Eu também não sou um grande fã da abordagem model-> db (Rails tem db-> model). O andaime também deixa muito espaço para melhorias. Então, "não é necessário reiniciar" também não funciona conforme anunciado. (Não tenho certeza do que é pior - ter que reiniciar o tempo todo ou às vezes encontrar comportamentos estranhos que desaparecem quando você reinicia) E não me fale sobre o GORM. (Quando leva horas para encontrar uma maneira do que seria um SQL simples, você começa a se perguntar se todo esse ORM realmente economiza seu tempo). Talvez desde que seja simples.

Quer dizer: ainda é uma das melhores escolhas de framework quando você vem do mundo java. (Tanta porcaria inútil por aí que se autodenomina uma estrutura da web) ... tem potencial. Eu só queria que não tivesse sido construído em cima de tantas outras coisas complexas.

De qualquer forma, esperemos que essas coisas sejam resolvidas. No momento, estou à espreita em playframework.org, que também parece muito bom e promissor.

tcurdt
fonte
Quando você usa muito grails, fica acostumado com o relatório de erros. Agora que o Spring Sources tem o controle, eles irão torná-lo melhor e fornecer um suporte melhor.
padippist
4

Vai valer a pena quando eles terminarem o plugin do eclipse. Quanto mais cedo melhor eu digo. Tentar vender algo bacana para meu chefe não vai ser simples até que isso aconteça.

Branchgabriel
fonte
3
Plug-in do Eclipse? Céus, não. O IntelliJ já tem um excelente suporte para Groovy e Grails. Eu recomendo que você obtenha um IDE melhor - IntelliJ.
duffymo
+1, mas algumas pessoas não têm dinheiro para comprar intellij e estão presas ao eclipse.
Chii
4

Acho que a maior vantagem do Grails é que não preciso mais me preocupar com o banco de dados - o esquema é criado / atualizado automaticamente e a persistência é amplamente feita para mim (não preciso mais escrever consultas SQL). Este é um grande alívio. A outra coisa que é bastante interessante é que, uma vez que você definiu os modelos para controladores e visualizações, adicionar novos objetos de domínio é muito rápido. Embora eu suspeite que você fará mudanças contínuas para suas visões, pelo menos, ajustando-as às existentes.

Quanto ao IDE - parece que o IntelliJ é a melhor opção, mas estou feliz com o Netbeans 6.5. Eu uso MyEclipse para todos os outros desenvolvimentos, mas o Netbeans agora tem um suporte melhor para Grails.

Karsten Silz
fonte
3

Eu era um usuário do Eclipse antes de começar a usar Grails. Ficou rapidamente claro que isso não iria resolver. Então tentei o Intellij e o NetBeans. Na época, o Intellij era melhor no que diz respeito a Groovy e Grails. No entanto, o NetBeans era gratuito e isso o tornava bom o suficiente para mim. Desde então, todos os três tiveram novas versões ou novos plug-ins lançados. Ainda estou usando o NetBeans por causa do custo do Intellij. Com a aquisição da G2One pela Spring Source, uma das expectativas é mais suporte para Groovy e Grails no Eclipse. Isso será necessário para uma maior adoção.

Usar Grails para um novo projeto é maravilhoso. Grande parte da bagagem Enterprise Java não é mais necessária. Posso imaginar que tentar portar algo seria difícil porque, até que você entenda onde estão os pontos fortes e fracos de um framework, é difícil utilizá-lo com eficiência. É prometido que o suporte JSP será mais fácil no Grails 1.1, não sei se usar uma versão beta enquanto tento grok um novo framework é uma boa idéia. O teste também passou por uma grande revisão para a nova versão. Se o tempo permitir, você pode considerar a espera, pois o lançamento 1.1 deve ser muito em breve.

Se você tiver a oportunidade de dar uma chance ao Grails em um IDE diferente ao iniciar um projeto do zero, acho que você verá sob uma luz diferente.

Edt
fonte
3

Acabei de começar a usar grails em um novo projeto ... não ter que escrever NENHUM arquivo xml e ainda ter o poder do Spring e o Hibernate é realmente incrível.

Porém, use IntellijIDEA para o IDE, na verdade descobri Grails por meio do IDE (posso ser tendencioso, odeio eclipse).


fonte
2

Totalmente. Existem tantos frameworks Java que o padrão é muito alto para os novatos, e é uma prova de Grails que ele foi capaz de se destacar em um espaço tão lotado.

Ainda tem algumas arestas que são nítidas, mas é apenas uma questão de tempo antes de estarem emaranhadas, o projeto subjacente vale MUITO a pena.

Hendrixski
fonte
1

Grails pode ser muito grande para o seu tipo de aplicativo (com base nos vários arquivos que ele criou na primeira inicialização e nos recursos necessários). Se você está procurando por algo simples, Grails pode não ser o que você está procurando. Se você está procurando algo simples e que funcione, acho que o django pode fazer bem o seu trabalho. Dê uma olhada em como é simples (quantos arquivos são necessários) criar aplicativos CRUD a partir de seu tutorial . A partir daqui, seus aplicativos podem (relativamente) facilmente escalar conforme suas necessidades e requisitos aumentam.

Joshua Partogi
fonte
0

Eu não tenho certeza se eles serão capazes de consertar Grails, você sabe. E por certo quero dizer abordar todos os detalhes (pequenos e grandes) que no final o tornam frágil e frágil. Eu nem tenho certeza se há uma equipe de desenvolvimento real (ou seja, mais de 2 pessoas) por trás disso.

Cada vez que itero sobre um recurso de meus projetos Grails, tentando melhorar algo, é o mesmo fluxo de trabalho: tudo desmorona, então são cem ciclos de teste 'google', então você descobre o motivo pelo qual não pode fazer o que você quer e você faz outra coisa.

No final, você fica frustrado porque não quer nem tocar em nada que esteja funcionando. E as coisas que não vão bem, você as larga!

Estou pensando em mudar para Rails via JRuby. Isso pode ser o melhor dos dois mundos: um framework web capaz com uma comunidade grande e ativa, uma equipe dedicada de desenvolvedores, uma plataforma que não é baseada em frameworks questionáveis ​​e complexos como Spring ou Hibernate, um ciclo de lançamento rápido e ambicioso. E JRuby porque, francamente, tantos ativos Java na minha mochila, não posso simplesmente jogá-los fora.

Rollo Tomazzi
fonte
Definitivamente, há uma equipe de desenvolvimento real por trás do Grails, há pelo menos 4 pessoas. Você está eliminando seu código testando primeiro? Embora eu sinta sua frustração, o grande número de histórias de sucesso do Grails sugere que alguma perseverança é necessária. grails.org/Success+Stories
j pimmel
A perseverança é realmente necessária, como para todas as coisas de TI. Uso grails em projetos corporativos há cerca de 2 anos. Cada nova versão do Grails introduz regressões, então não tenho certeza de quem deve testar primeiro e perseverar ;-) Obrigado pelos comentários e parabéns pelo seu sucesso com o Grails!
Rollo Tomazzi
Sim, eu concordo que lidar com as atualizações do Grails é algo bastante caro sobre o uso do Grails ... caso você decida justificar a atualização - todos os nossos sistemas ainda funcionam em 1.0.3
j pimmel
Eu realmente gosto do Grails, mas as atualizações podem ser uma verdadeira dor.
user955732
0

Se sua especialidade é em Java como você diz. Você deve dar uma olhada no Play Framework - é um framework da web inspirado em Ruby on Rails com um ciclo de desenvolvimento muito curto - basta salvar seu arquivo fonte Java e atualizar seu navegador da web. E se você quiser tentar outra linguagem, Play Framework tem um módulo que permite que você use Scala.

Eu gosto do Play Framework porque é fácil de entender e tem bom desempenho. Você também pode usar JPA e Hibernate para a camada ORM, se desejar.

Jonas
fonte