Pesquisa de tecnologia FRONTEND para Java Web

Preciso ajuda dos mais experientes no desenvolvimento de uma plataforma Web, mais especificamente no que se trata da tecnologia usada no frontend, sim resolvi abrir o tópico aqui em java para ver se podem me dizer oque vocês utilizam de front.
Basicamente já tenho experiência com Struts, VRaptor, Spring Boot e JSF. De front já fiz coisas puras(mas é custoso) e no último sistema usei Angular 1, também não fui muito feliz com esse. Ainda nem está certo que o backend será Java, pode ter uma reviravolta para Node.js, mas tirando isso, estou pensando em usar Spring Boot de back, mas o front está me dando mais dor de cabeça por que precisa ser “bonito” (como o RunrunIt), bem personalizável(isso removeu JSF da jogada) e tempo é um fator importante (como sempre, rsrs) ai vem os milhares de frameworks front e isso está me deixando louco.
A aplicação precisa ser bem escalável(multi empresa, mas com servidor único para todas), também terá acesso por mobile.
Estou analisando React, Vue, Angular 2/4, VanillaJS(puro), mas podem sugerir outros.
Agradeço a quem puder contribuir com sua experiência ou com aquilo que usaria se começasse hoje um novo sistema.

1 curtida

Bom dia!

Vejo aqui no Brasil o cresimento especificamente de Angular 2, BootStrap e REACT, mas, cada um tem suas particularidades e vc deve levar em conta o que cada um oferece.

Dando uma rápida pesquisada, acabei achando esses tópicos. Claro que tem que ver o mesmo pra todos, mas hj, acho que não dá pra fugir muito não:

No meu último projeto usei Vue.js, para testar mesmo e gostei do resultado. É um framework bem simples mas poderoso, além disso tem várias bibliotecas de UI como essa. Usei ele pois era um sistema pequeno, mas tenho outros projetos pra refatorar e estou pensando em Angular com PrimeNg.

Minha dica é: se for um sistema grande e complexo eu iria de Angular por ser mais robusto, para algo simples usaria Vue.

Para o front-end ser original e bonito profissionalmente o ideal é pelo menos ter um web designer na equipe. Se não puder, pode usar o Bootstrap como já falaram, é bem flexível para personalizar, mas logicamente tem que saber bem CSS.

Sobre JavaScript, trabalho com a biblioteca jquery há pelo menos 10 anos, super leve e bem simples de trabalhar, não amarra minhas mãos, me deixa programar livremente e não é intrusivo no HTML. Para quem prefere trabalhar da mesma forma que JS puro, mas sem dispensar algo para produtividade quando necessário, recomendo jquery.

Sobre frameworks da moda que surgem e desaparecem a cada minuto, como o Angular (que já teve que ser todo rescrito e com total quebra de compatibilidade), o Vue é mais tranquilo deles, mas como o Angular tem o nome do Google por atrás (mesmo sem eles usarem essa coisa), acaba atraindo muito mais interessados, mesmo tendo mais complexidades desnecessárias do que o Vue, Aurelia, etc. Enfim, você vai ter que conviver preso na forma de trabalhar desses frameworks.

Angular e similares são mais voltados para SPA, mas infelizmente muitos usam para qualquer coisa, pela moda.

Sobre reviravolta do back-end, recomendo Golang, pelo desempenho.

1 curtida

Vlw pelas dicas gnt!
Continuo pesquisando e fazendo testes, agora estou testando Sprint Boot + React.
Consegui um tutorial bem completo:


Porém como a maioria, não responde os PQs. Ai fico na dúvida se esta realmente é a estrutura ideal para usar em produção.

Não entendi o que quis dizer.

Quiz dizer sobre os tutoriais, eles dão o passo-a-passo, porém não comentam pq fazer daquela forma, se é a mais indicada, a maioria dos tutoriais ensina pelo mais fácil, mas não necessariamente é o mais indicado pra produção.
Se alguém tiver alguma experiência de produção com sistema React + Spring Boot e puder contribuir com boas práticas agradeço.

Hoje em dia não existe “a melhor forma”, até mesmo usando a mesma tecnologia. Existem várias formas de entregar a mesma coisa. Isso vai da decisão e experiencia de cada equipe, de acordo com cada caso, sem soluções genéricas.

Sua base teórica e experiencia em outras tecnologias devem ajudar nessas decisões também. Comigo por exemplo, não é por que este tutorial está usando JPA que eu usaria também, JdbcTemplate seria a melhor opção se eu estivesse trabalhando com Java, por eu ser mais produtivo e eficiente com SQL. Então pra mim não é a melhor forma, pra voce pode ser a melhor forma. Assim como React.js nao traz vantagens pro meu caso, pro seu pode trazer. Entao voce mesmo tem que se perguntar sobre cada item, o que realmente vai te trazer mais vantagens principalmente pensando na manutenção. Fora isso, coloque a dúvida pontual pro pessoal refinar as sugestões, de acordo com seu caso.

1 curtida

Concordo.
Porem, somos uma equipe de 4 desenvolvedores(1 designer), incumbidos de encontrar soluções tecnológicas mais inovadores/eficientes/escaláveis para o próximo projeto. Nesse momento não importando o conhecimento nosso.
Por isso gostaria ver, não exatamente o melhor, mas sim oque a comunidade indica de tecnologias para sistemas web robustos.

A inovação está no resultado final. React ou Angular não mudam isso, são só ferramentas intermediárias, não tendo inovação pro usuário. De uma forma ou outra vão entregar uma aplicação em HTML/CSS/JavaScript, independente da ferramenta de preferencia da equipe. São pesos adicionais na verdade.

Já no back-end as opções são bem variadas mesmo. Para melhor desempenho por exemplo, se não importa conhecimento, Java não é uma das melhores opções.

1 curtida

É bem por aí mesmo, meu maior receio é levar meses desenvolvendo a plataforma ai quando chegar a milhares de usuários ela não atender a demanda. Até agora não consegui encontrar nada em pesquisas que apontasse algo relacionado a quantos usuários eu conseguiria atender dentre os frameworks, ou mesmo que fosse entre java, node ou Golang.
Até encontrei vários benchmarks de performance, mas não diz nada em número de usuários ou requisições. Também sei que é algo bem dependente daquilo que vou desenvolver, mas posso estar viajando em fazer esta pesquisa e qualquer framework atenderia, sei lá.

Sei que um código bem escrito influencia muito, mas não quero algum framework que me deixe na mão.
Se vc souber oque o MercadoLivre ou a Netshoes ou a Olx ou algum outro destes grandes usam de estrutura já ajudaria muito, pois é um case real. Não é um ecomerce que vou fazer, é quase um ERP online, mas por ser um servidor central deve suportar tranquilamente 10mil usuários, expansível a 100k.

Agradeço as dicas até agora.

O ideal seria vocês mesmos realizarem esses testes de stress, de acordo com o caso de vocês.

Aqui fala sobre um caso de experiencia no mercado livre:

1 curtida

Dá uma olhada na página de vagas do Magazine Luiza, creio ser um bom exemplo…

https://luizalabs.workable.com/

Antes de falar de como construir, te pergunto: esse sistema é realmente estratégico para sua empresa? Ah menos que o negócio da sua empresa seja construir ERPs, geralmente vale mais a pena comprar uma solução pronta e madura.

Se realmente precisar criar, a escalabilidade de um sistema vai depender mais da arquitetura do que da linguagem em si ou (até certo ponto) da qualidade do código.
Se você construir um sistema onde pode adicionar facilmente mais máquinas para suportar mais usuários, estará no caminho certo. Ao contrário de precisar trocar um servidor pra uma máquina mais poderosa a cada ano.

Dito isso, acho Java uma excelente escolha nesse sentido. Mesmo gigantes da internet usam java pra aplicações escaláveis e o número de bibliotecas existentes e maduras é imenso.

Para o front-end, se não há especialistas no time, evite se comprometer de vez com uma tecnologia.
Deixe a equipe gastar um dia fazendo um projeto em cada candidata, vendo na prática o que parecem gostar mais.
Depois disso, comece o projeto em uma delas, mas deixe claro que isso ainda pode ser mudado. Construa o sistema em módulos, que te facilite jogar fora ou reescrever, se uma escolha for errada.
O maior aprendizado que terá é quando o sistema tiver rodando em produção, dando manuntenção. Evite tomar decisões definitivas até lá.

2 curtidas

Bom dia,

Na minha experiência ao longo dos anos, tenho feito aplicações de todo o tipo, com qze todas as linguagem do mercado, como PHP, .net e Java que é meu melhor skill.

No que tange a performance e quantidade de usuários, as coisas que podem mais impactar o uso de um sistema, seja ele qual for é a quantidade de conexões de DB, mips de Mainframe, Webservices e outras coisas além da fronteira da aplicação que requerer algum tipo de pool.

O front-end é a parte que terá uma complexidade alta, dependendo do quanto de perfumaria que o cliente pode querer, contudo, temos aí muita coisa em Ajax que pode auxiliar nessas horas pra vc ter seus controles visuais de forma limpa, mas que tb requer muita atenção. Haja vista o exemplo de combos aninhados, que, dependendo de onde vem as tais informações e de como estão as consultas que as compõem, podem acarretar em lentidão.

O envolvimento de um DBA é sempre importante para te ajudar a fazer as consultas da melhor forma no banco e a se conectar tb com a melhor performance para manter os recursos sempre “frios”.

Testes de stress seriam procedimentos que eu iria utilizar com certeza, independentemente da minha arquitetura, pois, isso me mostraria o que mais eu teria que fazer para melhorar a disponibilidade do sistema que eu estiver trabalhando.

Outra coisa bem importante e, eu, na minha opinião, tb creio que é um risco é saber quanto de infraestrutura se servidores vc terá disponível para esse trabalho, já pensando na possibilidade de aumentar processadores, disco e outros features, como já foi comentado aqui. Servidor físico é osso mesmo, pq, geralmente, vai atrapalhar quando vc perceber que tal servidor pode não estar compliance com a sua solução como um todo.

Eu concordo tb com o que já foi dito aqui que, a equipe é quem tem que ficar a vontade com qual a linguagem ou o framework que será utilizado e, tb concordo que a solução tem que ser analisada e entendida como um todo para evitar entregar uma solução que não vai atender as necessidades de seu cliente.

Tente gastar um tempo analisando tudo junto com a equipe para vc ir extraindo o “feeling” deles e depois, monte uma proposta que seja viável para a equipe e para o cliente, utilizando o melhor que vc tiver nas mãos, sem se matar ou matar os demais…(a parte de se matar foi uma piada…rsrs)

1 curtida

Obrigado, muito útil sua resposta.
Ajudou a reforçar nossa escolha.

1 curtida

Boa Sorte aí, meu amigo e sucesso!

Só para deixar uma feedback final, estamos indo de React + Spring (Kotlin)
Novamente obrigado pelas respostas!

Bacana, sobre a escolha do React poderia apontar vantagens dele sobre o Angular, no momento sei os dois, mas vejo que o Angular é mais completo.

Na verdade minha área é mais backend. Mas oq levou a escolha é que já usamos Angular 1 em outro projeto e não gostamos mto. Além de q quando vc usa uma versão dele, é praticamente inviável atualizá-lo para uma nova e agora já está na 5.