Participei de um Hackathon ano passado, onde para uma série de problemas propostos deveríamos escolher um e, em grupo, discutir uma solução, montar uma apresentação e um pequeno protótipo em linguagem / framework de nossa escolha. Foi um choque de realidade para mim e o meu grupo, inclusive implodiu.
Estudando as linguagens e frameworks mais modernos vi que Django/Python e Ruby on Rails poderiam ser esse conjunto de linguagem, quando me deparei com o framework Spring Bot, que é muito elogiado.
Minha pergunta então é QUAL OU QUAIS FRAMEWORKS JAVA DEVERIA ME FOCAR PARA UM DESENVOLVIMENTO RÁPIDO EM QUE PUDESSE APRESENTAR UM MVP EM APENAS 3 DIAS?
Desenvolvimento rápido em Java nenhum. Mas Spring Boot/Spring MVC é o que vai encontrar de melhor pra Java web.
Mas o Spring Boot e Spring MVC são frameworks mutuamente exclusivos ou podem trabalhar em complemento?
PS: Permita apenas discordar de você apenas quanto ao desenvolvimento desktop. Acredito que é possível desenvolver rápido em Java usando Java FX ou Swing. Claro. Não uma aplicação grande, mas pelo menos um protótipo de uma solução. Mas realmente quando propus a pergunta me referi ao desenvolvimento Web.
Complemento: https://www.devmedia.com.br/desenvolvendo-uma-aplicacao-web-com-spring-boot-e-spring-mvc/34122
Quis dizer web mesmo, não desktop.
Dá uma avaliada também no PHP e ASP.NET Core, são bem produtivos.
PHP é quick and dirty. Não gosto. ASP.Net Core com a aquisição da Xamarin pela Microsoft ficou muito forte com a possibilidade de se desenvolver em C# inclusive para o IOS.
Faz tempo que nao trabalho com PHP, mas sempre achei muito prático para o que ele atende. A boa escrita pra qualquer linguagem vai depender de você.
Não gosto da obrigação de se prefixar uma variável de cifrão e das funções adotarem snake case em lugar de cameo case. Curiosamente gosto de Perl, que usa os prefixos $, @ e % para escalar, vetor e dicionário, mas o Perl é bom para manipular textos em lugar de se usar o C ou comandos na linha de comando bash, como sed e grep.
Na minha opinião, o mais rápido é o JSF, desde que voce tenha domínio do framework e do PrimeFaces, do contrário irá demorar muito. Talvez não compensa criar um novo projeto JSF, depende muito do seu projeto…
De qualquer forma, um projeto com Spring é a melhor escolha para REST (não sei se é o que voce deseja), só que ai também terá que avaliar o front.
No Hackathon que participei a ideia eram equipes multidisciplinares trabalhando em um protótipo. Assim, eu poderia trabalhar no back-end com JSF ou Spring Boot, enquanto outro membro da equipe poderia desenvolver a camada de apresentação em React ou Angular, ainda outro prepararia/exporia a venda da ideia em Powerpoint/Presentation. Isso em apenas 3 dias corridos.
Da hora, aqui no trabalho eu e meu time desenvolvemos um sistema de agendamento que é composto de 3 projetos:
1)Spring - Onde fica os endpoint, services, dao e model
2)JSF - Sistema interno
3)React - Sistema externo
Ambos sistemas (2 e 3) consomem o endpoint do projeto 1 (Spring).
Muitas pessoas acham que um sistema JSF não se pode utilizar Spring, mas na verdade um não é o contrario do outro, eles se complementam.
Aqui todos nós conhecemos muito bem o JSF, ai usamos a produtividade do JSF para gerar a View e a produtividade do Spring para o restante.
Hoje em dia tem muitas lib de componentes para os frameworks/lib JS modernos, ai a produtividade aumenta muito também, para o React tem o Ant Design e Material UI que tem bastante componentes/recursos.
Abraços