Estou projetando um website cujo backend será em Java.
Pois bem, minha pergunta é: Preciso utilizar JSP/JSF na construção das páginas OU posso utilizar apenas HTML5 fazendo chamadas assíncronas (AJAX e derivados) ao backend em Java?
Até o que sei, ambas as opções da pergunta são “possíveis” (ainda assim, gostaria da confirmação de vocês); porém, gostaria de saber quais seriam as considerações e relevâncias para cada uma delas.
Penso que você deve buscar estudar mais sobre projetos WEB com Java, seja Java SE ou Java EE. Isso vai ajudar você a esclarecer esse e muitas outras dúvidas. De qualquer forma, vou ser direto na resposta, sim, é possível e é simples, por sinal.
Por isso há inúmeros frameworks frontend (AngularJS, Backbone, JSF e etc) que se comunicam com um servidor Java. Lógico que cada um com um tipo de comunicação e outros podem “compartilhar” a mesma, como chamadas AJAX com GET, POST (Angular, Backbone e etc) ou chamadas ao famosos “Beans”, do JSF, sem falar em chamadas “na unha” de Servlets, com JSP.
Enfim, existe e é tranquilo essa “ligação”. Só não sei se o mais adequado a um site é o Java como backend, pois acredito que tenha outras linguagens com foco maior nesse caso.
Minha experiência é com Java SE e Java EE (ênfase aqui). Mas sempre desenvolvi voltado para sistemas, produtos e não websites. A priori não vejo problemas do seu backend ser Java EE, todavia, nada impede de tu estudar mais sobre backends para sites.
Obviamente, tem que entender o teu site, um globo.com da vida eles tem arquitetura com microservicos, inclusive, para atender demandas de programas ao vivo, vídeos e etc, então, tu precisa entender o “nível” do seu site, o que ele vai oferecer, perspectiva de acesso e etc.
Como sempre a resposta é: depende. Eu não acho que JSF seja uma boa opção para websites, por exemplo. Geralmente nesse caso você tem poucas páginas, mas precisa de muita customização de CSS e JS. Nesse caso, talvez seja interessante usar um controller MVC mas consumir dados via REST. Assim você tem mais liberadade para customizar seu front. Um outro caso, seria um sistema Web, que seja acessado somente internamente em uma empresa. Nesse caso, talvez o JSF seja uma boa opção, já que você precisaria de muitas telas “padronizadas”.
Enfim,um bom exercício para você seria listar os requisitos não-funcionais que precisam ser atendidos e avaliar quais tecnologias atendem ou não o seu caso.
rmendes08 e igor_ks, obrigado pelas considerações sobre o JSF. Analisando o comentário de vocês, já é mais fácil compreender que JSF não é o caminho que vou seguir.