Jboss vs spring

Você não deveria.

A inicialização por mola é uma estrutura bem-feita e uma maneira consistente de lidar com várias preocupações. A inicialização por primavera também é comprovada em empresas, pois muitos aplicativos de negócios críticos são executados nela.

Ultimamente, o JavaEE adotou muita noção da inicialização do Spring, mas ainda assim, a inicialização do Spring vai um passo além ao fornecer muitas integrações prontas que ajudam a criar aplicativos mais rapidamente.

Para ver um exemplo de implementação do servidor API usando a inicialização do Spring, verifique em

Servidor API baseado em descanso

.

(Isenção de responsabilidade: esta é a minha postagem no blog).

Ambos fornecem muitas das mesmas coisas, expressadas de maneira um pouco diferente em alguns casos. Eu fiz as duas coisas profissionalmente, e eu fiz coisas nos dois mundos, embora eu deva admitir que mudar de um lado para outro pode ser um pouco confuso (nunca fui totalmente ligado ao CDI, para ser honesto).

Eu sempre escolherei o Spring (Boot), se for deixado por meus próprios dispositivos. Não é onerado por (muitos) processos da comunidade e pode apenas prosseguir de maneira lógica com boas características e deixar o mercado decidir se deve usá-lo. Os padrões são superestimados, às vezes, na IMO.

Mas você quer saber os motivos pelos quais você prefere o Java EE em vez do Spring Boot, portanto, darei algumas razões pelas quais o fundador de um empregador anterior utilizou: 1) ele tinha clientes e parceiros de negócios muito conservadores e encontrou é mais fácil defender uma pilha de tecnologia “padronizada / suportada” com a qual essas entidades estavam familiarizadas. E 2) Java EE era o que ele estava acostumado.

Não é o meu motivo favorito, mas ele era o chefe, e escrevemos software de trabalho com Java EE e é isso que importa.

Eu uso principalmente o Spring. Em novos projetos, como Spring Boot, mas também trabalho em um aplicativo grande e antigo, com configuração de contexto de aplicativo Spring "manual". Conheço principalmente o Java EE atual de conferências, webinars e colegas.

Primeiro: em muitos casos, do ponto de vista de um desenvolvedor, ambos não são tão diferentes. Para muitos aplicativos diretos de banco de dados para API REST (relacional), o código será bastante semelhante. Para uma interface Web (do lado do servidor), as tecnologias JSF (parte do Java EE) e Spring View são um pouco diferentes, mas ambas são utilizáveis ​​(essa é uma parte em que eu prefiro fortemente o Spring, se eu tiver que fazer uma interface do usuário da Web) ) O restante do aplicativo ainda é bastante semelhante.

Atualmente, o Java EE pode ser um pouco mais simples. A primavera é uma estrutura bastante grande e, às vezes, complexa, e em aplicativos grandes possui algumas sutilezas que nem sempre são intuitivas. Muitos aplicativos Spring (Boot) nunca atingem esse grau de complexidade.

Mesmo na versão atual do Java EE, a noção de que um servidor de aplicativos gerencia os recursos utilizados por um aplicativo é bastante forte, e a configuração desses recursos é feita no nível do servidor de aplicativos. No Spring, muitos recursos fazem parte da estrutura, e não no servidor de aplicativos, e no Spring Boot, o servidor de aplicativos com sua configuração é incorporado às fontes de aplicativos e ao artefato de implementação. Mais uma vez, eu pessoalmente prefiro o modo Spring, embora dependa da sua organização e processos, qual deles funciona melhor. Acredito que a diferença é insignificante para aplicações simples.

O Spring possui um grande ecossistema em torno da estrutura principal e evolui mais rápido que o Java EE - o que é natural por padrão descrever algumas semelhanças estabelecidas, enquanto um (conjunto de) estruturas de um único fornecedor pode inovar por conta própria. Portanto, o ecossistema do Spring é mais evoluído em relação às tecnologias modernas de nuvem, como bancos de dados não relacionais, certos tipos de sistemas de mensagens ou tecnologias de descoberta de serviço. Há esforços no mundo Java EE para ir nessa direção também - ou seja, Microprofile - mas esses não são (ainda) partes do Java EE padronizado.

Portanto, o Java EE oferece mais estabilidade aos desenvolvedores, embora, na minha experiência, a estrutura principal do Spring e o Spring Boot tenham um histórico muito bom de tornar as atualizações fáceis de manusear. Este não é necessariamente o caso de outras tecnologias dentro do ecossistema Spring. Mover do Spring Data 1.x para 2.x foi bastante trabalhoso para um aplicativo grande.

Portanto, para aplicativos mais simples baseados em bancos de dados relacionais e interfaces REST ou Web, onde a compatibilidade a longo prazo é uma preocupação, o Java EE é uma escolha sólida. Também para operação de produção, existem opções comerciais suportadas de diferentes fornecedores, ou seja. Redhat, IBM e Oracle.

Costumo usar o Spring para esses aplicativos e o conheço muito melhor.

Para acesso oportuno às tecnologias em evolução e uma seleção maior de novas tecnologias atualmente estabelecidas, a Spring tem mais a oferecer.

Por que devo preferir o Java EE ao Spring Boot? Aqui está o meu top 10:

  1. Você deseja que seu servidor leve (muitos) minutos para iniciar, em vez de segundos
  2. Você deseja ter muito mais funcionalidades do que as fornecidas pelo Spring Boot e garantir que nunca as use
  3. Você deseja que a imagem do servidor cresça rapidamente em vários milhares de megabytes
  4. Você deseja ter problemas com o carregador de classes
  5. Você quer ter ainda mais problemas de dependência
  6. Você quer preencher seu currículo como se fosse 1999
  7. Você deseja pagar 10 ou 100 milhares de dólares pelo privilégio das palavras "Enterprise Edition"
  8. Você deseja que pelo menos uma coisa sobre as bibliotecas de padrões com as quais você está trabalhando não funcione como o padrão especifica e deseja garantir que uma coisa esteja enterrada muito profundamente na documentação para que demore semanas ou meses para encontrá-la quando você encontra o problema que ele causa (agradecimentos especiais aos carregadores de classe EAR do JBoss e Weblogic por esse recurso muito especial)
  9. Você deseja que suas implantações sejam o mais personalizadas possível, para que nada funcione com mais nada (essa não é verdadeira em todas as plataformas de EE, apenas em muitas delas ... Então, isso pode ser um pouco complicado ... Alguém se lembra do Oracle Application Server? Netscape é para esse assunto… uau retrocesso! :-)
  10. Você quer que sua pilha de chamadas passe por um terreno mágico estranho que aumentará cada traço de pilha além da crença, de modo que, em vez de ocupar apenas 30 linhas, agora é preciso 300. Espaço bom é muito barato! (Grite para Splunk por isso)

Honestamente, embora

A resposta de Alan Mellor para Por que devo preferir o Java EE ao Spring Boot?

E

Resposta de Eduard Korenschi para Quais são as diferenças entre Java EE e Spring?

Porque é um monte de especificações nas quais você pode confiar.

Como cada uma dessas especificações realmente possui várias implementações, você pode escolher. E mude se necessário.

Porque o Spring, embora não implemente padrões e siga seu próprio caminho, geralmente não é superior de qualquer maneira. Tudo o que eles pretendem, eles não são realmente mais rápidos em implementar novas tecnologias.

Porque o MicroProfile envergonha a primavera ainda mais.

Por ser um padrão, você pode ver que há mais em todo o mundo: segurança de tipo, bom design versus abordagem rápida e suja

Porque as melhores implementações são rápidas e gratuitas: WildFly, Payara,…

Porque o Spring não quer ser padrão. Por exemplo, eles usam a anotação @Inject, mas de maneira não padrão, recusando-se a implementar o CDI. Acho que isso tornaria o Spring rapidamente obsoleto, daí a atitude de proteção ao emprego.

Como não precisamos de nenhuma inicialização Java EE: você acabou de implantar seu aplicativo, as tecnologias certas são fornecidas pelo servidor de aplicativos (é basicamente o seu contrato).

Porque você pode até usar o WildFly Swarm (agora Thorntail) em algumas linhas, se você realmente deseja executar um contêiner a partir da sua implantação, em vez de investir em contêineres.

Porque o que quer que seja dito, você ainda precisa de pontes não legais para integrar-se ao Java EE (até Servlet e boa sorte com JAX-RS).

Como o Spring promoveu o JdbcTemplate, então muito melhor, o HibernateTemplate, o Hibernate e o JPA de qualquer maneira (ou seja, você acha ... Java EE).

Como ninguém codificaria html específico para o IE atualmente, então por que não confiar nos padrões nesse caso?

Porque todas essas estruturas e tecnologias comuns não devem ser dependências que eu tenho que empacotar em cada aplicativo.