Eu sou novo no StackExchange, mas achei que você poderia me ajudar.
Estamos criando um novo aplicativo Java Enterprise, substituindo uma solução JSP herdada. Devido a muitas mudanças, a interface do usuário e partes da lógica de negócios serão completamente repensadas e reimplementadas.
Nosso primeiro pensamento foi o JSF, pois é o padrão no Java EE. No começo, tive uma boa impressão. Mas agora estou tentando implementar um protótipo funcional e tenho algumas preocupações realmente sérias sobre o uso.
Primeiro, ele cria a pior e mais desorganizada mistura de pseudo-HTML / CSS / JS inválida que eu já vi. Ele viola todas as regras que aprendi no desenvolvimento da web. Além disso, ele se une, o que nunca deve ser tão fortemente associado: Layout, Design, Lógica e Comunicação com o servidor. Não vejo como eu seria capaz de estender essa saída confortavelmente, seja estilizando com CSS, adicionando candy de interface do usuário (como teclas de atalho configuráveis, widgets de arrastar e soltar) ou qualquer outra coisa.
Em segundo lugar, é muito complicado. Sua complexidade é notável. Se você me perguntar, é uma abstração pobre de tecnologias básicas da Web, aleijada e inútil no final. Quais benefícios eu tenho? Nenhuma, se você pensar. Centenas de componentes? Vejo dez mil trechos de HTML / CSS, dez mil trechos de JavaScript e milhares de plug-ins do jQuery. Resolve realmente muitos problemas - não teríamos se não usássemos o JSF. Ou o padrão do controlador frontal.
E, finalmente, acho que teremos que começar de novo daqui a 2 anos. Não vejo como posso implementar todo o nosso primeiro modelo de GUI (além disso, não temos nenhum JSF Expert em nossa equipe). Talvez pudéssemos hackear juntos de alguma maneira. E então haverá mais. Tenho certeza de que poderíamos hackear nosso hack. Mas em algum momento, estaremos presos. Devido a tudo acima, a camada de serviço está no controle do JSF. E teremos que começar de novo.
Minha sugestão seria implementar uma API REST, usando JAX-RS. Em seguida, crie um cliente HTML5 / Javascript com o MVC do lado do cliente. (ou algum sabor do MVC ..) A propósito; de qualquer maneira, precisaremos da API REST, pois também estamos desenvolvendo um front-end parcial para Android.
Duvido que o JSF seja a melhor solução hoje em dia. À medida que a Internet está evoluindo, realmente não vejo por que devemos usar esse 'rake'.
Agora, o que são prós / contras? Como posso enfatizar meu argumento de não usar o JSF? Quais são os pontos fortes do uso do JSF em relação à minha sugestão?
fonte
Respostas:
Há pelo menos uma boa razão para considerar o JSF.
É uma parte padrão da pilha do Java EE e, portanto, estará disponível - e funcionando - em TODOS os contêineres do Java EE por um período muito, muito longo. E mantido também, sem a necessidade de fazê-lo se você aderiu estritamente à especificação Java EE.
Se essa é uma preocupação para você, considere-a. A maioria dos softwares vive mais do que seus designers pensam, especialmente se levados em consideração ao serem escritos.
fonte
Você já parece ter se decidido sobre os contras, e eu tenho que concordar com alguns deles (ele não separa o layout e a lógica o suficiente, e o HTML resultante é muitas vezes atroz), mas discorda dos outros (se você usar Facelets, que eu recomendaria muito, então a saída deve definitivamente ser válida).
Então, aqui estão alguns profissionais:
Mas certamente nenhuma dessas vantagens é tão grande que você deve usar o JSF sobre alguma outra estrutura com a qual sua equipe já tenha experiência.
fonte
O JSF é uma estrutura da Web adequada e estável para Java, que é um padrão, o que significa que é suportado imediatamente por muitos fornecedores importantes (incluindo os FOSS). Possui forte suporte a bibliotecas de terceiros (PrimeFaces, IceFaces etc.). No entanto, fundamentalmente "quebra a web" devido à sua natureza estável (e várias outras coisas). Veja a comparação de Matt Raible das estruturas da Web baseadas em JVM , o JSF geralmente chega perto do último.
Editar - com o JSF 2.2 - você pode começar a argumentar que ele não quebra a Web tanto quanto antes. Na verdade, a integração com HTML5 não é de todo terrível :-).
fonte
Tínhamos um aplicativo JSP / Struts 1.0 herdado. Nós pulamos o Struts 2, o JSF e tudo o mais que aconteceu desde o Struts 1 e pulamos para o Spring 3.0. Possui suporte (e uma comunidade ativa) para a nossa lista de desejos - IDE Eclipse, MVC e REST. Além disso, descartamos nosso Javascript / ajax caseiro vintage para jquery.
YMMV, mas a primavera tem sido uma migração suave para nós.
fonte