JavaRush /Blogue Java /Random-PT /O que você precisa saber sobre Spring: história, módulos ...

O que você precisa saber sobre Spring: história, módulos principais, comparação com Java EE

Publicado no grupo Random-PT
Olá! No momento, a direção de desenvolvimento mais popular para um desenvolvedor com conhecimento de Java é o desenvolvimento web. Claro que para esta especialidade existe uma lista de tecnologias necessárias para estudar. Um dos principais é a Primavera . O que você precisa saber sobre Spring: história, módulos principais, comparação com Java EE - 1Você pode argumentar que, em vez disso, você pode aprender Java EE . É claro que isso é verdade, mas agora a grande maioria dos novos projetos usa Spring , o que o tornou praticamente a tecnologia padrão e obrigatória para um desenvolvedor web Java. E se quiser acompanhar as necessidades do mercado, terá que estudá-lo. Hoje eu gostaria de falar sobre Spring , ou seja, expandir um pouco sua visão sobre ele: falar sobre a história de sua criação, as principais diferenças da pilha Java EE e dar uma breve visão geral dos principais componentes da pilha Spring . Vamos começar! O que você precisa saber sobre Spring: história, módulos principais, comparação com Java EE - 2

1. Como e quando a Primavera apareceu e em que evoluiu ao longo do tempo

Tudo começou em outubro de 2002 , quando Rod Johnson escreveu o livro “Expert One-onOne J2EE Design and Development”: O que você precisa saber sobre Spring: história, módulos principais, comparação com Java EE - 3Neste livro, publicado pela Wrox , o autor descreve o estado do desenvolvimento Java empresarial naquela época e aponta uma série de deficiências dos ambientes Java EE e (Enterprise Java Bean)EJB . Ao mesmo tempo, Rod Johnson propõe uma solução mais simples baseada em classes Java regulares (POJO - objetos Java simples e antigos) e injeção de dependência. No livro, ele explica como você pode criar um aplicativo de reservas on-line escalável e de alta qualidade sem usar EJB. Aqueles. ele demonstrou claramente como remover a complexidade do desenvolvimento de aplicações e tornar possível usar JavaBeans simples para alcançar tudo o que antes só era possível usando EJBs. No entanto, o escopo do Spring não se limita ao desenvolvimento de componentes de software executados no lado do servidor. Qualquer aplicação Java pode aproveitar as vantagens da estrutura em termos de simplicidade, testabilidade e baixo acoplamento. Seu projeto de desenvolvimento J2EE se tornou um sucesso instantâneo. Grande parte do código do aplicativo, fornecido gratuitamente como parte do livro, era reutilizável, e vários desenvolvedores logo começaram a usá-lo em seus projetos. Wrox tinha uma página web para o livro com o código-fonte e patches. Eles também forneceram um fórum online para o livro. Em fevereiro de 2003, os desenvolvedores Jürgen Heller e Jann Karoff convenceram Rod Johnson a criar um projeto de código aberto baseado no código do framework. A partir desse momento, Rod, Jurgen e Yann iniciaram a colaboração para criar algo completamente novo. Na verdade, foi Yann Karoff quem criou o nome “Spring” para a nova estrutura. O que quis dizer aqui é que a primavera é como a primavera: um novo começo após o “inverno” do J2EE tradicional.
  • Em junho de 2003, o Spring 0.9 foi lançado sob a licença Apache 2.0.
  • A primavera 1.0 foi lançada em março de 2004. Curiosamente, mesmo antes do lançamento do Spring 1.0, a versão anterior 0.9 foi muito bem recebida e amplamente adotada.
  • Em agosto de 2004, Rod Johnson, Jürgen Heller, Keith Donald e Colin Sampaleanu co-fundaram a interface21 , uma empresa de consultoria, treinamento e suporte Spring.
  • Outubro de 2006: O Spring 2.0 é lançado, o que simplifica os arquivos de configuração XML.
  • Spring 2.5, lançado em novembro de 2007, introduziu configurações de anotação.
  • Spring 3.2, lançado em dezembro de 2012, introduziu a configuração Java, suportava Java 7, Hibernate 4, Servlet 3.0 e também exigia pelo menos Java 1.5.
  • Yann Karoff deixou o time logo no início. Rod Johnson deixou a equipe de primavera em 2012. Jürgen Heller ainda é um membro ativo da equipe de desenvolvimento do Spring.
  • Spring 4.0, lançado em 2014, adicionou suporte para Java 8.
  • Também em 2014, o Spring Boot foi apresentado ao mundo.
  • A primavera 5.0 foi lançada em 2017. Como Spring Boot 2.x, que suporta Spring 5.
  • Na verdade, foi assim que nosso framework favorito se tornou o que conhecemos agora.

2. Primavera versus Java EE

Vamos fazer uma pequena comparação de duas pilhas Java importantes para desenvolvedores web: Spring e Java EE. O que você precisa saber sobre Spring: história, módulos principais, comparação com Java EE - 4
JavaEE
Vantagens Imperfeições
  • Aplicações escritas em Java EE são consideradas mais confiáveis, seguras e escaláveis
  • Java EE é um padrão de API aprovado pela indústria
  • Baseado principalmente em anotações e CDI (injeção de contexto e dependência), assim como Spring
  • Implementação baseada em containers EJB e POJOs
  • Aplicações complexas com grande número de transações são muito bem tratadas pelo JEE
  • Uso bem-sucedido para um aplicativo monolítico escalável
  • Java EE possui sua própria linguagem OOP contendo um estilo e sintaxe específicos
  • Um ambiente de desenvolvimento de aplicativos muito complexo e difícil de entender para iniciantes (e às vezes também para idosos)
  • O custo final do projeto, incluindo design, implantação e desenvolvimento de aplicativos, pode ser proibitivo
O Java EE, licenciado pela Oracle, foi projetado para organizações e empresas que exigem um ambiente amplamente adaptável e distribuível para a construção de aplicativos para o mercado de massa. Assim como o Spring, Java EE inclui bibliotecas adicionais para acesso a banco de dados (JDBC, JPA), invocação de engenharia remota (RMI), informações (JMS), administração web, processamento XML e caracteriza APIs padrão para JavaBeans corporativos, portlets, Servlets, Java Server Pages, etc. O que você precisa saber sobre Spring: história, módulos principais, comparação com Java EE - 5O objetivo fundamental do Java EE é desvendar os principais problemas enfrentados pelos desenvolvedores em relação à construção de aplicativos atuais usando várias APIs. Ao mesmo tempo, o desenvolvimento em Java EE possui um alto nível de complexidade, o que eleva a fasquia proibitivamente alta não apenas para iniciantes. E pode ser difícil para especialistas experientes entender a funcionalidade já escrita, portanto, o desenvolvimento em Java EE leva mais tempo e, conseqüentemente, é mais caro. Sobre Java EE em poucas palavras podemos dizer o seguinte: Complexo, mas flexível. Bom, agora vamos falar um pouco sobre Spring . O que você precisa saber sobre Spring: história, módulos principais, comparação com Java EE - 6
Primavera
Vantagens Imperfeições
  • Permite que você organize efetivamente as interações entre objetos
  • Mais simples que Java EE
  • Implementado com base em IOC e AOP , o que garante baixo acoplamento de aplicações
  • Funciona com base em XML, Groovy ou configuração de anotação
  • Permite que você use objetos Java simples e antigos - POJOs, os desenvolvedores não precisam de um contêiner corporativo como um servidor de aplicativos
  • Fornece aos desenvolvedores Java um alto nível de modularidade
  • Fornece implementações de bibliotecas Java EE, mas de uma maneira própria, facilitando muito seu uso
  • Licença de código aberto
  • Spring Boot simplifica muito a configuração inicial do aplicativo
  • O código do aplicativo Spring geralmente é fácil de testar
  • A primavera é relativamente difícil de desenvolver porque falta um foco claro
  • Para um novo desenvolvedor Java, aprender o framework Spring pode ser desafiador (mas ainda mais fácil do que Java EE)
  • Spring é mais lento que Java EE
Spring é uma estrutura Java de código aberto para grandes empresas. A estrutura Spring visa fornecer a implementação mais simples possível de ideias J2EE e alavancar excelentes práticas de programação, ampliando os recursos do modelo de programação baseado em POJO. Aqueles. Java EE é mais um padrão oficial, enquanto Spring é mais uma estrutura que implementa esse padrão à sua maneira.

Resultados de comparação

No meu entendimento, Java EE e Spring são como JDBC e Hibernate, onde JDBC é uma tecnologia mais rápida, mas ao mesmo tempo com muito código desnecessário. E o Hibernate já utiliza JDBC, mas ao mesmo tempo simplifica e reduz significativamente o desenvolvimento (embora imponha algumas restrições). É impossível dizer com certeza qual deles é melhor. Isso também lembra um pouco a pergunta: o que é melhor - ArrayList ou LinkedList. Afinal, a resposta será a mesma – dependendo da situação. Cada um deles tem seus pontos fortes e fracos, e você precisa escolhê-los com cuidado, pesando sua situação e entendendo qual deles trará mais benefícios agora. O que você precisa saber sobre Spring: história, módulos principais, comparação com Java EE - 7

3. Componentes da mola

Bom, agora vamos falar um pouco sobre os frameworks que compõem o Spring.

Estrutura de primavera

É o módulo principal que fornece um modelo abrangente de programação e configuração para aplicativos empresariais modernos baseados em Java — em qualquer plataforma de implantação. Ele contém muitas das principais tecnologias Spring :
  • core – funcionalidade básica que implementa os conceitos de IoC (inversão de controle) e DI (injeção de dependência) ;
  • AOP - Programação Orientada a Aspectos - programação orientada a aspectos que visa implementar lógica ponta a ponta;
  • MVC e WebFlux – frameworks para interação web;
  • JDBC , ORM - tecnologias para interação com bancos de dados;
  • Teste – funcionalidade para testes transparentes e descomplicados de dados de contêineres Spring;
  • SpEL - Linguagem de Expressão Spring - Linguagem de expressão Spring;
  • etc.

Bota Primavera

Simplifica a criação de aplicativos baseados em Spring , minimizando a configuração inicial do aplicativo e configurando automaticamente os elementos do aplicativo Spring. Exemplo de inicialização do Spring em 5 minutos

Dados da Primavera

Simplifica significativamente o uso de tecnologias de acesso a dados, bancos de dados relacionais e não relacionais (remove códigos repetitivos e simplifica a interação com os dados). Este artigo contém um bom tutorial sobre como conectar Spring Data.

Nuvem de primavera

É utilizado na arquitetura de microsserviços, simplificando a interação dos microsserviços entre si e automatizando a implantação de aplicações em plataformas de nuvem como AWS , Azure , etc. Veja aqui um tutorial detalhado sobre Spring Cloud , mas já aviso que esse tema não é fácil e é voltado para especialistas próximos ao nível sênior.

Segurança Primavera

Fornece uma ferramenta poderosa e personalizável de autenticação (autenticação) e controle de acesso (autorização) para um aplicativo. Você pode encontrar um exemplo simples de como conectar o Spring Security ao seu aplicativo nesta postagem . O que você precisa saber sobre Spring: história, módulos principais, comparação com Java EE - 8

Primavera GraphQL

Este módulo fornece suporte para aplicativos Spring desenvolvidos em GraphQL Java. GraphQL é uma linguagem de consulta para APIs que permite aos clientes consultar um conjunto limitado de dados de que precisam, o que, por sua vez, permite que os dados sejam coletados em um número limitado de consultas. Se você já conhece JPA, já deve ter se deparado com o EntityGraph, com um conceito semelhante (ou igual). Você pode ler mais sobre GraphQL aqui .

Sessão de Primavera

Esta parte da estrutura Spring fornece APIs e implementações para gerenciar informações de sessão do usuário (os dados da sessão do usuário são armazenados em armazenamento persistente como Redis , MongoDb , HazelCast , etc.). Um exemplo de uso do Spring Session pode ser encontrado aqui .

Integração Primavera

Este módulo foi projetado para simplificar o envio de mensagens em aplicativos baseados em Spring e oferecer suporte à integração com sistemas externos por meio de adaptadores declarativos. Esses adaptadores fornecem um nível mais alto de abstração do que o suporte do Spring para comunicação remota, mensagens e agendamento. Artigo detalhado .

Primavera REST

Fornece um rico conjunto de ferramentas que simplificam o desenvolvimento da API REST: ferramentas para rotear solicitações, para converter JSON/XML em objetos dos tipos necessários, etc. Um exemplo de serviço RESTful no Spring pode ser encontrado neste material .

Fluxo da Web da Primavera

Spring Web Flow é baseado em Spring MVC e permite implementar "fluxos" de uma aplicação web. Esses fluxos encapsulam uma sequência de etapas que orientam o usuário na conclusão de alguma tarefa de negócios. Eles abrangem várias solicitações HTTP, têm estado, funcionam com dados transacionais, são reutilizáveis ​​e podem ser dinâmicos e duráveis ​​por natureza. Um exemplo de conexão do Spring Web Flow pode ser visto neste guia em inglês .

Serviços Web Spring

Este módulo foi projetado para facilitar o desenvolvimento de serviços SOAP baseados em contrato, permitindo que você crie serviços da Web flexíveis usando uma das muitas maneiras de manipular cargas XML. SOAP - Simple Object Access Protocol - Protocolo simples de acesso a objetos.

Primavera ÓDIO

O módulo fornece algumas APIs para facilitar a criação de controladores REST que seguem o princípio HATEOAS ao trabalhar com Spring e especialmente Spring MVC. HATEOAS - Hipermídia como motor do estado da aplicação - Hipermídia como motor do estado da aplicação. Você pode ver o uso desta biblioteca Spring aqui .

Lote Primavera

Este módulo oferece funcionalidade para processamento de dados em lote (quando os dados são processados ​​​​em grandes pedaços - lotes), vitais para o funcionamento diário dos sistemas corporativos. Spring Batch fornece recursos reutilizáveis ​​que são necessários para lidar com grandes volumes de registros, incluindo registro/rastreamento, gerenciamento de transações, estatísticas de processamento de trabalhos, reinicialização de trabalhos, saltos e gerenciamento de recursos. Você pode encontrar uma visão geral interessante do Spring Batch neste link .

Primavera AMQP

O módulo aplica os principais conceitos do Spring ao desenvolvimento de soluções de mensagens baseadas em AMQP. Ele fornece um modelo como abstração de alto nível para envio e recebimento de mensagens. Ele também fornece suporte para POJOs acionados por mensagens com um contêiner de ouvinte. AMQP - Protocolo avançado de enfileiramento de mensagens - Protocolo avançado de enfileiramento de mensagens. O projeto contém duas partes: spring-amqp é a abstração base e spring-rabbit é a implementação do RabbitMQ . Exemplo com conexão RabbitMQ usando Spring O que você precisa saber sobre Spring: história, módulos principais, comparação com Java EE - 9

Primavera para Apache Kafka

Este projeto aplica os principais conceitos do Spring ao desenvolvimento de soluções de mensagens baseadas em Kafka . Um modelo é fornecido como uma abstração de alto nível para envio de mensagens. Ele também fornece suporte para POJOs acionados por mensagens com as anotações necessárias e um contêiner de ouvinte. Há uma clara semelhança aqui com Spring AMQP, mas este módulo é adaptado especificamente para Kafka. Um exemplo de conexão do Spring Kafka pode ser visto aqui .

Primavera CredHub

Fornece suporte do lado do cliente para armazenar, recuperar e excluir credenciais de um servidor CredHub em execução na plataforma Cloud Foundry . CredHub – Fornece uma API para armazenar, criar, recuperar e excluir com segurança vários tipos de credenciais. Spring CredHub fornece uma ligação Java para a API CredHub, facilitando a integração de aplicativos Spring com CredHub.

Primavera FLO

É uma biblioteca JavaScript que oferece um designer visual simples incorporável em HTML5 para pipelines e gráficos simples para monitorar streaming e dados em lote. Uma demonstração dessa tecnologia está no vídeo do link .

Primavera LDAP

Esta biblioteca simplifica as operações LDAP e é baseada no Spring JdbcTemplate. A estrutura permite pesquisar e fechar contexto, visualizar resultados, codificar/decodificar valores, filtros e muito mais (construído nos mesmos princípios do Spring Jdbc). Um exemplo de implementação do Spring LDAP pode ser encontrado aqui .

Primavera Roo

Este módulo fornece uma ferramenta RAD que pode criar e gerenciar seu aplicativo baseado em Spring. Seu objetivo é melhorar a produtividade dos desenvolvedores Java. Ele não pode escrever a lógica de negócios do seu aplicativo, mas pode lidar com questões de configuração e infraestrutura.

Concha Primavera

A biblioteca facilita a criação de um aplicativo shell completo (também conhecido como linha de comando), contando com jars do Spring Shell e adicionando seus próprios comandos (que vêm como métodos nos beans Spring). Criar um aplicativo de linha de comando pode ser útil, por exemplo, para interagir com a API REST do seu projeto ou para trabalhar com conteúdo de arquivo local. Leia mais aqui e aqui .

Máquina de Estado da Primavera

Este módulo permite que desenvolvedores de aplicativos usem conceitos de máquina de estado com aplicativos Spring. Um exemplo detalhado do uso desta funcionalidade pode ser encontrado aqui e aqui .

Cofre de Primavera

Spring Vault fornece abstrações familiares do Spring e suporte do lado do cliente para acessar, armazenar e revogar segredos. Ele oferece abstrações de baixo e alto nível para interagir com o Vault , liberando o usuário de preocupações com infraestrutura. Exemplo de implementação do Spring Vault O que você precisa saber sobre Spring: história, módulos principais, comparação com Java EE - 10“Preciso aprender tudo isso?” - você pergunta surpreso. Não tenha medo! Isto está errado! Mais precisamente, não é bem assim. Esta foi a lista completa de tecnologias disponíveis no Spring. A lista de tecnologias que um iniciante precisa conhecer é bem mais modesta:
  • Núcleo da Primavera
  • Bota Primavera
  • SpringWeb (MVC e REST)
  • Dados Spring (Spring ORM, Spring JDBC, Spring JPA)
  • Teste de Primavera
Existem também outras tecnologias que são frequentemente encontradas em projetos, mas devido à sua complexidade, são geralmente tratadas por desenvolvedores mais experientes, em vez de novatos verdes. No entanto, também é útil para iniciantes ter pelo menos uma compreensão geral de:
  • Segurança Primavera
  • Primavera AOP
  • Nuvem de primavera
Outras tecnologias são usadas com muito menos frequência, então você só precisa estudá-las seriamente para trabalhar em um projeto específico. A propósito, você pode encontrar uma lista completa do que um desenvolvedor Java deve saber em meu outro artigo. Isso é tudo para mim hoje, até breve! O que você precisa saber sobre Spring: história, módulos principais, comparação com Java EE - 11
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION