estamos no estágio de planejamento da migração de um site grande, construído em uma estrutura mvc desenvolvida sob medida para uma estrutura da web baseada em java, que fornece suporte interno para ajax, conteúdo rich media, mashup, layout baseado em modelos, validação, html máximo / separação de código java. Grails parecia uma boa escolha, no entanto, não queremos usar uma linguagem de script. Queremos continuar usando java. O layout baseado em modelo é uma das principais preocupações, pois pretendemos usar esse aplicativo da Web em vários sites com funcionalidade semelhante, mas com aparência e comportamento radicalmente diferentes.
A solução baseada em portal é uma boa opção para esse problema?
Quaisquer informações sobre o uso de "Spring Roo" ou "Play" serão muito úteis.
Eu encontrei posts semelhantes como este , mas tem mais de um ano. As coisas certamente mudaram nesse meio tempo!
EDIÇÃO 1: Obrigado pelas ótimas respostas! Este site está se tornando a melhor fonte única de informações sobre programadores nas trincheiras. No entanto, eu esperava mais informações sobre o uso de uma dupla portal-cms. Jahia parece mercadoria. Algo parecido?
fonte
Respostas:
Pessoalmente, eu ficaria longe das soluções grandes e pesadas do Portal (elas geralmente matam a produtividade). Já ouvi boas coisas sobre Gatein, mas não tenho nenhuma experiência real com isso.
Sobre o Spring Roo, li respostas anteriores, como o Spring roo Vs (Wicket e Spring) e outras coisas pela Internet, mas ainda não estou convencido (talvez não esteja entendendo), não tenho certeza de sua maturidade e, mais importante, estou realmente me perguntando o que o SpringSource está fazendo com Grails e Roo (não, Grails vs Roo - por que o SpringSource está desenvolvendo duas tecnologias muito semelhantes? não me convence de que ambos sobreviverão).
Não posso falar muito sobre o Play. Eu já vi a demonstração como todo mundo, mas gostaria de ler o feedback da vida real. Até lá, eu vou esperar.
Sim e não :) Mas vamos ao inferno das estruturas de apresentação: não há uma resposta única para sua pergunta (como um ano atrás), existem dezenas de estruturas por aí e nenhum vencedor claro. Apenas para citar alguns:
Na verdade, eu sugiro dar uma olhada na casa de Matt Raible apresentações , ele realmente fez um grande trabalho de comparar frameworks web, mostrando seus pontos fortes e fracos, recolhendo fatos e números, que mostram tendências ... Eu recomendo:
Realmente, dê uma olhada nessas apresentações, elas ajudarão você a encontrar uma estrutura apropriada (não há resposta única, mas você pode restringir a escolha por eliminação) e pode mudar seu ponto de vista.
fonte
Uso o Spring 3 e o Jquery há um tempo, mas ouvi falar do Play e tentei. Eu realmente gosto, o Play é um ótimo ajuste entre algo como PHP e os frameworks Java pesados, como o Spring.
As coisas que mais gosto no jogo são:
Coisas que não gosto no Play
fonte
A melhor escolha para mim é o Wicket . Separação clara da marcação e do código java. Muito fácil de escrever e usar componentes. Simples de usar Ajax, testabilidade. Você pode depurar diretamente em suas páginas / componentes e não recebe mensagens de erro enigmáticas da sua implementação JSF;)
Há também uma boa comparação wicket <--> JSF em termos de desempenho
fonte
As três principais opções para mim são (em ordem alfabética):
Eles:
fonte
O jogo é semelhante ao ROR, uma versão ROR em java
fonte
Em contraste com outras respostas, gostaria de destacar as desvantagens (IMHO) das estruturas da web populares:
JSF2 - Lançado e já envelhecido. Ainda restam apenas algumas notícias / artigos / postagens de blog / experiências. Eu sou cético. Ainda aguardando o próximo grande lançamento do Richfaces / Icefaces, que suporta totalmente o jsf 2 - atualmente apenas as versões alfa podem ser baixadas.
Struts 2 - Parece ser apenas uma coisa boa se você ainda depende de struts e deseja refatorar a maior parte do seu código. Caso contrário: não.
GWT - Não gosto da abordagem de página única e de java-> javascript. Não tenho certeza se uma sessão - várias visualizações / janelas podem ser facilmente alcançadas. Para mim, essa estrutura deve ser usada para aplicativos de Internet ricos em janelas únicas para usuários massivos.
Postigo - Abordagem agradável, mas um pouco detalhada e com menos documentação disponível (exceto o bom wicket no livro de ação, mas isso abrange apenas 1,3). Além disso, para mim, faltam grandes projetos que são construídos sobre ela. E atualmente não consigo ver para onde a estrada da wicket está viajando ou se ela já foi levada a um beco sem saída.
Spring MVC - Ainda não tentei isso, mas você deve incluir muitos jars (spring mess) em seu caminho de classe para trabalhar com essa estrutura corretamente. E depende do JSP (na maioria dos projetos), que considero já morto. E você obtém apenas uma estrutura MVC pura - todas as outras coisas (ajax e outras) precisam ser implementadas / integradas.
Listras - Uma estrutura MVC projetada pequena e agradável, mas com menos documentação, menos confirmações / confirmações, poucas versões, muito menos suporte do setor e muito menos atividade na lista de discussão.
Também estou curioso se perdi uma estrutura importante por aí (deixei a Tapeçaria intencionalmente) que pode ser uma opção para você (e também para mim também).
fonte
Tive grande sucesso com o JAX-RS . É o único Java Web Framework que possui algum tipo de especificação JSR e várias implementações diferentes da especificação de servlet e portlet (embora isso possa ser uma coisa ruim).
Uma coisa ruim e boa sobre Java é que você pode escolher e combinar estruturas (python também possui esse recurso / problema). É bom porque você não precisa colocar todos os seus ovos em uma cesta.
Aqui está uma receita geral da pilha de aplicativos da Web Java:
Javascript / Flash + Tratamento de solicitação / resposta + Injeção de dependência + Persistência
Javascript: JQuery, Protótipo, Dojo
Solicitação / resposta: Spring MVC, Stripes e meu JAX-RS favorito (Jersey, Apache CXF)
Injeção de Dependência: Mola, Guice
Persistência: JPA (Hibernate, armazenamento de aplicativos do Google), Hibernate, JDO e mais.
Eu também tive grande sucesso ao usar o AspectJ para tornar o Java "menos trabalhoso". Usando os mixins @Configurable e ITD da AspectJ, do Spring, você pode obter Rails como objetos de Domínio (isso é de fato o que o Roo faz, mas você não precisa do Roo para fazer isso).
fonte
Eu descobri que as listras são realmente eficazes e surpreendentemente leves ... ela pretende ser mais leve que as struts . Ouvi de amigos que são desenvolvedores da Web em tempo integral que não vale a pena se preocupar com o JSF, embora eu não tenha experiência em primeira mão e não possa apoiar isso com exemplos (!).
fonte
Dê uma olhada no RESThub , que segue os mesmos princípios que o Play! mas implementado reutilizando algumas estruturas / ferramentas de nível empresarial, como Maven 3 / Spring 3 / Jersey / jQuery.
O RESThub é muito perturbador em comparação com outras estruturas, pois é um kit de ferramentas de pilha completa, mas sem nenhum MVC do servidor ou framworks baseado em servlet. Em vez disso, ele usa uma GUI baseada em UI do jQuery que usa serviços da Web JAX-RS (REST) e um sistema de modelos Javascript baseado em JSs incorporados.
Os servidores são sem estado e usamos o HTML5 sessionStorage para manter a sessão no lado do cliente. Essa abordagem é projetada para RIA e escalabilidade.
Alguns aplicativos de demonstração são fornecidos (mesmo que em construção).
fonte
O JSF é um bom framewrok, mas o JSF 1.2 não teve visão nos próximos anos a partir de seu lançamento. O JSF 2.0 parece promissor e tem muitas novidades adicionadas a partir do JSF 1.2, como suporte ajax, facelets, suporte a anotações e convenções padrão (menos XML), criação fácil de componentes que 1.2.
Também se integra bem ao Spring, se você estiver preocupado com o suporte ao DI.
fonte
Eu recomendaria a recomendação da primavera. Eu não sou um grande fã de GWT, eu não acho que o crosscompiler Java -> Javascript já esteja lá. Estou trabalhando em um aplicativo AJAX que usa spring no servidor e jQuery no cliente. Embora tecnicamente não exista suporte "pronto para uso" ao jQuery, a implementação de um Spring-MVC AjaxView é simples e requer cerca de 25 linhas de código.
fonte
Talvez um pouco tarde para o show, mas eu tenho que mencionar Vaadin . A programação é feita exclusivamente em Java, com uma abordagem baseada em componentes. A comunicação cliente-servidor é mais sobre a interação do usuário do que o transporte de dados, toda a lógica de negócios reside no servidor.
fonte
Ext GWT + Mola
fonte
Eu acho que o que você está procurando é algo próximo a Jahia. Ele suporta GWT, Mashups, conteúdo de mídia etc.
http://www.jahia.org/cms/lang/en/home/Jahiapedia/Jahia_Templates http://www.jahia.net/downloads/jahia/jahia6.0.0/readme/index.html
fonte
SOFTWARE DO PORTAL DE BACKBASE
Alguns anos atrás, eles usavam o software de portal " Backbase ", mas isso não estava muito maduro. Mas foi bom e fácil para o desenvolvimento.
fonte
Dê uma olhada no ItsNat
O ItsNat é basicamente um navegador Java W3C no servidor, incrivelmente simples (DHTML no servidor), promovendo aplicativos de interface de página única intensivos em AJAX
fonte
Algo que merece mais do que apenas uma bala são as estruturas RIA baseadas em jogadores. Ex. Adobe Flex + Java (Claro que isso pode depender um pouco do fato de o seu "site" ser realmente um "site" ou mais como um "aplicativo", você não faria um blog no Flex.)
No sentido AJAX como palavra-chave, o Flex normalmente usa AMF (um protocolo binário mais eficiente que os protocolos usados pelos aplicativos AJAX), embora você também possa fazer coisas estritamente AJAX com o Flex. Portanto, o Flex suporta AJAX, mas também "melhor que AJAX".
Sendo que o Flex é executado na plataforma de 'máquina virtual' do Flash, acho que pouco precisa ser adicionado.
Não tenho certeza do que isso está acontecendo exatamente, mas parece o Flex mxml.
Suportado, é claro, embora você possa decidir fazer algumas coisas personalizadas, se quiser ser sofisticado. (Não que você precise.) O bom é que você pode ficar tão sofisticado quanto quiser - ou não.
Você não pode ficar mais separado usando uma abordagem de desenvolvimento de 'máquina virtual' como Flex / Silverlight / JavaFX. Isso não apenas permite que você mantenha seu código de apresentação separado da lógica do servidor e da camada de acesso a dados - garante que eles estejam separados. 'Virtualizar' seu ambiente de desenvolvimento oferece compatibilidade entre navegadores, uma plataforma de destino consistente, sem preocupações com novos navegadores ou novos lançamentos de navegador quebrando seu aplicativo, recursos de depuração semelhantes a java de primeira linha e um produto final com aparência mais profissional / impressionante .
fonte