Alguma experiência com a estrutura de desenvolvimento da web do Java "Play"? [fechado

StackOverflow https://stackoverflow.com/questions/1597086

  •  22-09-2019
  •  | 
  •  

Pergunta

Acabei de tropeçar no seguinte novo Java Web Framework: Play

http://www.playframework.org/

http://www.playframework.org/documentation/1.0/home

Com uma lista tão impressionante de recursos, estou muito surpreso por não ter ouvido falar antes ...

Parece que o desenvolvimento da web java prometia uma terra ...

Alguém já tentou? Alguma experiência real com isso? Você acha que vale a pena estudá -lo?

Foi útil?

Solução

Eu concordo com Jason que a peça pode ser melhor que seja melhor do que Grails. Com o Four Grails Projects Under My Binger (precedido por dois projetos de tapeçaria e um projeto de wicket), estou olhando seriamente para o jogo a seguir.

Uma das coisas que eu pensei que era legal nos Grails é que "tudo é groovy". Ou seja, você usa o Groovy para escrever tudo (exceto o HTML e o CSS) - domínios, controladores, serviços, modelos de página (GSP), bibliotecas de tags, API de hiberna (Gorm), testes de unidade (Gunit) e scripts de criação ( Gant). Você pode até escrever scripts de shell no Groovy. Portanto, poder codificar todos os aspectos de um aplicativo usando um único idioma novamente parecia uma simplificação que estava atrasada - ouvindo os dias de escrever aplicativos de desktop em um único idioma como C ++ ou Delphi. No entanto, aprendi que um tamanho não se encaixa aqui.

Por um lado, o apoio do IDE para Groovy não é ótimo. Intellij faz o melhor trabalho, mas com o Groovy sendo dinâmico, só pode ir tão longe. As ferramentas de refatoração não (não podem) pegar tudo, então você não pode confiar nelas 100%. Isso significa que você precisa estar especialmente vigilante com os testes de unidade. Aqui, novamente, como o Grails depende muito de "mágica" dinâmica que acontece em tempo de execução, os testes de unidade em Grails devem confiar em uma extensa camada de zombaria para imitá -la, e essa camada zombeteira é peculiar. Uma terceira edição é que grande parte do chamado código Groovy que você está escrevendo é realmente o código de linguagem específica do domínio (DSL). (Para encurtar uma longa história, as DSLs são groovy de mão curta, aproveitando o fato de que, no Groovy e a muita sintaxe, é opcional.) Grails usa DSLs diferentes para várias configurações, mapeamento de URL etc. e é inconsistente. Como você especifica as configurações de log4j, por exemplo, não se parece nada com a forma como você especifica as fontes de dados e nenhuma delas se parece com o java puro sobre o qual o Groovy se baseia. Então, a promessa de "Everything's Groovy" se desfaz de qualquer maneira.

Sendo esse o caso, vejo de onde vem o time de jogo.

  1. Voltar ao Java regular para os domínios, controladores, serviços e junits faz sentido. Digitação forte significa que o IDE pode ajudar com segurança com senso intelino, navegação de código, refatoração etc. (e, portanto, você não precisa pagar pelo Intellij se estiver satisfeito com o eclipse.) Ter que escrever mais código detalhado para Receber um forte suporte para ferramentas parece um bom negócio para mim agora. Veremos.

  2. Eu gosto de ainda usar o Groovy nos modelos de página. Receio que eu possa acabar colocando mais código nos modelos do que deveria.

  3. Não tenho experiência com o JPA, mas parece que está bem perto do que Gorm faz por mim, então isso é legal.

  4. O suporte do COI da primavera em Grails é completamente transparente, enquanto o apoio do Play parece mínimo; No entanto, acho que o COI é muito usado e estou perfeitamente disposto a codificar um mapeamento XML da primavera na rara ocasião que eu realmente preciso de um. (Uma das minhas perguntas abertas é que estou assumindo que o JPA tem suporte para transações, e por isso que o jogo não precisa da primavera para isso como Grails, não?)

  5. Eu nunca fui fã de Python, então me encolhi quando li que a peça usa o Python para seus scripts de construção. Mas eu concordo que os scripts Gant de Grails são muito devagar. Além disso, acho que, embora Gant seja uma grande melhoria em relação ao XML Ant, ainda é difícil envolver a cabeça nos conceitos de formiga. Os scripts Gant Grails são bastante complicados. Então, eu vou para isso com a mente aberta.

  6. O modelo "Module de Aplicativo" da peça parece ser o modelo "plugin" de Grails, o que é legal.

  7. Estou bastante impressionado com a documentação da peça que li até agora. Eu tive um grande número de perguntas, mas metade deles foi respondida logo de cara.

Vou relatar novamente mais tarde, quando mergulhar mais fundo.

Outras dicas

Eu tentei jogar e estou impressionado: faz um ótimo trabalho ao fornecer um modelo de desenvolvimento útil que é muito mais simples que a maioria das estruturas '. Mais do que qualquer outra coisa, a capacidade do tempo de execução no 'modo de desenvolvimento' de analisar diretamente os arquivos .java vale muito a pena: apenas recarregar a página da web no navegador sem executar um script de compilação ou esperar por uma reimplantação vale muita velocidade de desenvolvimento. As mensagens de erro mostradas no navegador também são realmente boas.

Outra coisa que me impressionou foi a estética geral: talvez seja uma coisa pequena que o aplicativo tutorial realmente pareça bom (tanto o código quanto o design da página da web), mas isso se estende a toda a estrutura, a API e a documentação.

Depois de tocar de um colega, olhei para ele, segui o tutorial e fiquei viciado. Obter feedback imediato no seu navegador significa que você não precisa usar um IDE. Eu amo o Eclipse, mas vamos ser sinceros: depois de adicionar alguns extras, não é tão estável quanto um simples editor de texto. Em um Mac com o TextMate, você pode até clicar na mensagem de erro no navegador e no TextMate aparece com o cursor nessa linha.

Os testes no jogo também são bem feitos, com um botão Pressione seu execução de testes de unidade, testes funcionais e testes baseados em selênio.

O jogo é emocionante porque ainda é pequeno e descomplicado. Ele usa apenas formiga para construir e faz isso em 25 segundos. Contribuir para a bela documentação é uma questão de editar os arquivos. Textil e recarregar os documentos em qualquer aplicativo de jogo.

Foi assim que acabei em uma busca para traduzir o tutorial para usar o Scala, aumentando o suporte do Scala, onde necessário para obtê -lo o mais bom possível.

Eu gosto, estou usando para pequenos projetos e até agora parece perfeito para o trabalho. No entanto, há uma coisa que sinto muita falta que foi deixada de fora de propósito: separação de serviços/dao/modelo! A documentação diz claramente, um dos objetivos do jogo é evitar o "modelo de dados anêmicos":http://www.playframework.org/documentation/1.0.1/model

Mas, na minha experiência, a separação de serviço clássico/DAO/modelo economiza toneladas de tempo de desenvolvimento quando o aplicativo precisa ser reformado! Com o jogo, você está preso a métodos estáticos que dependem do gerenciamento de transações e peculiaridades específicas para o jogo ...

No entanto, muitos polegares para: velocidade de desenvolvimento, limpeza de código e, no final ... Diversão!

Eu usei graals, tapeçaria 4/5 e java/jsp/spring/hibernato retos.

Eu acho que isso está indo na direção certa pela primeira vez em muito tempo. Grails foi um primeiro passo muito bom, mas jogue! Parece algo que realmente poderia ter pernas. O suporte da Scala está chegando em 1.1. Se houver uma chance de eu escrever meus controladores/domínio em Clojure, estou vendido;)

Desde um ano e nenhum bug visível após 18 pequenos lançamentos, usamos o jogo! 1.2.4 Em uma produção de "ausências", aplicação de intranet para uma escola (atores:> 100 professores,> 700 alunos, equipe do Administrativ). O lado do cliente foi escrito com o Flex 4.6 da Adobe (vistas muito bonitas). Os dados são enviados e recebem no formato AMF3 (módulo de canela). Utilizamos uma camada DAO simples e baseada no JPA Eclipselink e MySQL para o banco de dados. O aplicativo é armazenado em um servidor virtual Linux. Sou um desenvolvedor de fãs de jogo por sua simplicidade e sua abordagem muito produtiva.

Eu gosto da aparência do jogo, mas não tentei. Desde a digitalização através dos documentos, uma coisa que se destacou foi o uso pesado de métodos estáticos. Do ponto de vista do teste de unidade, isso sempre torna as coisas muito mais difíceis (estou pensando em zombares) e é um afastamento da abordagem de todos os lugares no desenvolvimento típico de Java. Talvez esse seja o ponto, mas é apenas algo que me deixou um pouco menos entusiasmado ...

Atualmente, construo aplicativos da Web no trabalho usando o Play Framework, que faz processamento enorme de dados. Devo dizer que a velocidade que a peça oferece sozinha é significativa e mais do que o que o ROR pode fornecer. Além disso, o jogo é uma estrutura baseada em Java e, portanto, multi-threading pode ser feita facilmente. Em seguida, é o desempenho que você obtém quando usa módulos baseados em Java como Japid e Netty, juntamente com o jogo. É uma quantidade infinita de ajustes pode ser feita para desempenho. Um deve tentar na minha opinião.

Estou usando o jogo em um pequeno projeto e parece ser exatamente o que eles disseram. Mas um recurso que eu acho que deveria estar presente por padrão na estrutura: capacidade de trabalhar com mais de um conjunto de dados (por exemplo, use mais de um esquema de banco de dados). Este é o único recurso ausente que encontrei até agora.

Atenciosamente, Uilian.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top