Eu sou novo no StackExchange, mas imaginei que você seria capaz de me ajudar.
Estamos criando um novo aplicativo Java Enterprise, substituindo uma solução JSP legada. Devido a muitas alterações, a interface do usuário e partes da lógica de negócios serão completamente repensadas e reimplementadas.
Nosso primeiro pensamento foi JSF, como é o padrão no Java EE. No começo eu tive uma boa impressão. Mas agora estou tentando implementar um protótipo funcional e tenho algumas preocupações realmente sérias sobre usá-lo.
Primeiro, ele cria o pior pseudo-HTML / CSS / JS inválido que já vi. Viola todas as regras que aprendi no desenvolvimento da web. Além disso, ele joga junto, o que nunca deve ser tão strongmente acoplado: Layout, Design, Logic e Comunicação com o servidor. Eu não vejo como eu seria capaz de estender essa saída confortavelmente, seja estilo com CSS, adicionando doces de interface do usuário (como teclas de atalho configuráveis, arrastar e soltar widgets) ou qualquer outra coisa.
Em segundo lugar, é muito complicado. Sua complexidade é excelente. Se você me perguntar, é uma má abstração de tecnologias web básicas, aleijadas e inúteis no final. Quais benefícios eu tenho? Nenhum, se você pensar. Centenas de componentes? Eu vejo dezenas de milhares de snippets HTML / CSS, dez mil snippets de JavaScript e milhares de plug-ins do jQuery. Resolve muitos problemas - não teríamos se não usássemos o JSF. Ou o padrão do controlador frontal em tudo.
E, finalmente, acho que teremos que começar de novo, digamos, dois anos. Não vejo como posso implementar todo o nosso primeiro mock-up de GUI (além disso, não temos JSF Expert em nossa equipe). Talvez pudéssemos hackear tudo de alguma forma. E então haverá mais. Tenho certeza 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 o JAX-RS. Em seguida, crie um cliente HTML5 / Javascript com o MVC do lado do cliente. (ou algum sabor de MVC ..) By the way; nós precisaremos da API REST, já que estamos desenvolvendo um front-end Android parcial também.
Eu duvido que o JSF seja a melhor solução hoje em dia. Como a Internet está evoluindo, eu realmente não vejo por que devemos usar esse 'rake'.
Agora, quais são as vantagens / desvantagens? Como posso enfatizar meu ponto de não usar o JSF? Quais são os pontos strongs para usar o JSF sobre minha sugestão?