JavaRush /Blog Java /Random-ES /Lo que necesita saber sobre Spring: historia, módulos cla...

Lo que necesita saber sobre Spring: historia, módulos clave, comparación con Java EE

Publicado en el grupo Random-ES
¡Hola! Por el momento, la dirección de desarrollo más popular para un desarrollador con conocimientos de Java es el desarrollo web. Por supuesto, para esta especialidad existe una lista de tecnologías necesarias para estudiar. Una de las principales es la Primavera . Lo que necesita saber sobre Spring: historia, módulos clave, comparación con Java EE - 1Se podría argumentar que, en su lugar, se puede aprender Java EE . Esto es cierto, por supuesto, pero ahora la gran mayoría de los nuevos proyectos utilizan Spring , lo que la ha convertido prácticamente en la tecnología obligatoria y predeterminada para un desarrollador web Java. Y si quieres estar al día con las necesidades del mercado, tendrás que estudiarlo. Hoy me gustaría hablar sobre Spring , es decir, ampliar un poco su visión: hablar sobre la historia de su creación, las diferencias clave con la pila Java EE y brindar una breve descripción general de los componentes clave de la pila Spring . ¡Empecemos! Lo que necesita saber sobre Spring: historia, módulos clave, comparación con Java EE - 2

1. Cómo y cuándo apareció la primavera y en qué evolucionó con el tiempo

Todo comenzó en octubre de 2002 , cuando Rod Johnson escribió el libro “Expert One-onOne J2EE Design and Development”: Lo que necesita saber sobre Spring: historia, módulos clave, comparación con Java EE - 3En este libro, publicado por Wrox , el autor describe el estado del desarrollo empresarial de Java en ese momento y señala una serie de Deficiencias de Java EE y entornos (Enterprise Java Bean)EJB . Al mismo tiempo, Rod Johnson propone una solución más simple basada en clases Java regulares (POJO - objetos Java antiguos) e inyección de dependencia. En el libro, explica cómo se puede crear una aplicación de reservas en línea escalable y de alta calidad sin utilizar EJB. Aquellos. demostró claramente cómo eliminar la complejidad del desarrollo de aplicaciones y hacer posible el uso de JavaBeans simples para lograr todo lo que antes solo era posible usando EJB. Sin embargo, el alcance de Spring no se limita al desarrollo de componentes de software que se ejecutan en el lado del servidor. Cualquier aplicación Java puede aprovechar las ventajas del marco en términos de simplicidad, capacidad de prueba y acoplamiento flexible. Su diseño de desarrollo J2EE se convirtió en un éxito instantáneo. Gran parte del código de la aplicación, proporcionado gratuitamente como parte del libro, era reutilizable y varios desarrolladores pronto comenzaron a utilizarlo en sus proyectos. Wrox tenía una página web para el libro con el código fuente y los parches. También proporcionaron un foro en línea para el libro. En febrero de 2003, los desarrolladores Jürgen Heller y Jann Karoff convencieron a Rod Johnson para que creara un proyecto de código abierto basado en el código del marco. A partir de ese momento, Rod, Jurgen y Yann comenzaron su colaboración para crear algo completamente nuevo. De hecho, fue Yann Karoff quien ideó el nombre “Spring” para el nuevo marco. Lo que se quiso decir aquí es que la primavera es como la primavera: un nuevo comienzo después del “invierno” del J2EE tradicional.
  • En junio de 2003, se lanzó Spring 0.9 bajo la licencia Apache 2.0.
  • Spring 1.0 se lanzó en marzo de 2004. Curiosamente, incluso antes del lanzamiento de Spring 1.0, la versión anterior 0.9 fue muy bien recibida y ampliamente adoptada.
  • En agosto de 2004, Rod Johnson, Jürgen Heller, Keith Donald y Colin Sampaleanu cofundaron interface21 , una empresa de consultoría, formación y soporte de Spring.
  • Octubre de 2006: se lanza Spring 2.0, que simplifica los archivos de configuración XML.
  • Spring 2.5, lanzado en noviembre de 2007, introdujo configuraciones de anotaciones.
  • Spring 3.2, lanzado en diciembre de 2012, introdujo la configuración de Java, admitió Java 7, Hibernate 4, Servlet 3.0 y también requirió al menos Java 1.5.
  • Yann Karoff abandonó pronto el equipo. Rod Johnson dejó el equipo de primavera en 2012. Jürgen Heller sigue siendo un miembro activo del equipo de desarrollo de Spring.
  • Spring 4.0, lanzado en 2014, agregó soporte para Java 8.
  • También en 2014, se presentó Spring Boot al mundo.
  • Spring 5.0 se lanzó en 2017. Como Spring Boot 2.x, que es compatible con Spring 5.
  • En realidad, así es como nuestro marco favorito se convirtió en lo que conocemos ahora.

2. Primavera frente a Java EE

Hagamos una pequeña comparación de dos pilas de Java clave para desarrolladores web: Spring y Java EE. Lo que necesita saber sobre Spring: historia, módulos clave, comparación con Java EE - 4
JavaEE
Ventajas Defectos
  • Las aplicaciones escritas en Java EE se consideran más confiables, seguras y escalables
  • Java EE es un estándar API aprobado por la industria
  • Basado principalmente en anotaciones y CDI (inyección de contexto y dependencia), al igual que Spring
  • Implementación basada en contenedores EJB y POJOs
  • JEE maneja muy bien aplicaciones complejas con una gran cantidad de transacciones
  • Uso exitoso para una aplicación monolítica escalable
  • Java EE tiene su propio lenguaje OOP que contiene un estilo y una sintaxis específicos.
  • Un entorno de desarrollo de aplicaciones muy complejo que es difícil de entender para los principiantes (y a veces también para los mayores)
  • El coste final del proyecto, incluido el diseño, la implementación y el desarrollo de aplicaciones, puede ser prohibitivo.
Java EE, con licencia de Oracle, está diseñado para organizaciones y empresas que requieren un entorno distribuible y ampliamente adaptable para crear aplicaciones para el mercado masivo. Al igual que Spring, Java EE incluye bibliotecas adicionales para acceso a bases de datos (JDBC, JPA), invocación de ingeniería remota (RMI), información (JMS), administración web, procesamiento XML y caracteriza API estándar para JavaBeans empresariales, portlets, servlets, páginas de servidor Java, etc. Lo que necesita saber sobre Spring: historia, módulos clave, comparación con Java EE - 5El objetivo fundamental de Java EE es desentrañar los principales problemas que enfrentan los desarrolladores con respecto a la creación de aplicaciones actuales utilizando varias API. Al mismo tiempo, el desarrollo en Java EE tiene un alto nivel de complejidad, lo que eleva el listón a niveles prohibitivamente altos no sólo para los principiantes. Y para los especialistas experimentados puede resultar difícil comprender la funcionalidad ya escrita, por lo que el desarrollo en Java EE lleva más tiempo y, en consecuencia, es más caro. Acerca de Java EE en pocas palabras podemos decir esto: Complejo, pero flexible. Bueno, ahora hablemos un poco de Spring . Lo que necesita saber sobre Spring: historia, módulos clave, comparación con Java EE - 6
Primavera
Ventajas Defectos
  • Le permite organizar eficazmente las interacciones entre objetos.
  • Más simple que Java EE
  • Implementado sobre la base de IOC y AOP , lo que garantiza un acoplamiento flexible de aplicaciones.
  • Funciona basado en XML, Groovy o configuración de anotaciones.
  • Le permite utilizar objetos Java antiguos y simples: POJO, los desarrolladores no necesitan un contenedor empresarial como un servidor de aplicaciones.
  • Proporciona a los desarrolladores de Java un alto nivel de modularidad
  • Proporciona implementaciones de bibliotecas Java EE, pero a su manera, haciendo mucho más fácil su uso.
  • Licencia de código abierto
  • Spring Boot simplifica enormemente la configuración inicial de la aplicación
  • El código de la aplicación Spring es generalmente fácil de probar
  • La primavera es relativamente difícil de desarrollar porque carece de un enfoque claro.
  • Para un nuevo desarrollador de Java, aprender el marco Spring puede ser un desafío (pero aún más fácil que Java EE)
  • Spring es más lento que Java EE
Spring es un marco Java de código abierto para grandes empresas. El marco Spring tiene como objetivo proporcionar la implementación más simple posible de ideas J2EE y aprovechar excelentes prácticas de programación al ampliar las capacidades del modelo de programación basado en POJO. Aquellos. Java EE es más un estándar oficial, mientras que Spring es más un marco que implementa este estándar a su manera.

Resultados de la comparación

Según tengo entendido, Java EE y Spring son como JDBC e Hibernate, donde JDBC es una tecnología más rápida, pero al mismo tiempo con mucho código innecesario. E Hibernate ya usa JDBC, pero al mismo tiempo simplifica y reduce significativamente el desarrollo (aunque impone algunas restricciones). Es imposible decir con seguridad cuál de ellos es mejor. Esto también recuerda un poco a la pregunta: cuál es mejor: ArrayList o LinkedList. Después de todo, la respuesta será la misma, dependiendo de la situación. Cada uno de ellos tiene sus propias fortalezas y debilidades, y debe elegirlos con cuidado, sopesando su situación y entendiendo cuál de ellos traerá el mayor beneficio ahora. Lo que necesita saber sobre Spring: historia, módulos clave, comparación con Java EE - 7

3. Componentes del resorte

Bueno, ahora hablemos un poco de los frameworks que componen Spring.

marco de primavera

Es el módulo principal que proporciona un modelo integral de programación y configuración para aplicaciones empresariales modernas basadas en Java, en cualquier plataforma de implementación. Contiene muchas de las tecnologías principales (centrales) de Spring :
  • núcleo : funcionalidad básica que implementa los conceptos de IoC (inversión de control) y DI (inyección de dependencia) ;
  • AOP - Programación orientada a aspectos: programación orientada a aspectos destinada a implementar una lógica de un extremo a otro;
  • MVC y WebFlux : marcos para la interacción web;
  • JDBC , ORM : tecnologías para interactuar con bases de datos;
  • Prueba : funcionalidad para realizar pruebas transparentes y sencillas de los datos del contenedor Spring;
  • SpEL - Lenguaje de expresión Spring - Lenguaje de expresión Spring;
  • etc.

Bota de primavera

Simplifica la creación de aplicaciones basadas en Spring minimizando la configuración inicial de la aplicación y configurando automáticamente los elementos de la aplicación Spring. Ejemplo de inicio de Spring Boot en 5 minutos

Datos de primavera

Simplifica significativamente el uso de tecnologías de acceso a datos, bases de datos relacionales y no relacionales (elimina código repetitivo y simplifica la interacción con los datos). Este artículo contiene un buen tutorial sobre cómo conectar Spring Data.

Nube de primavera

Se utiliza en arquitectura de microservicios, simplificando la interacción de microservicios entre sí y automatizando la implementación de aplicaciones en plataformas en la nube como AWS , Azure , etc. Vea un tutorial detallado sobre Spring Cloud aquí , pero le advierto que este tema no es fácil y está dirigido a especialistas cercanos al nivel superior.

Seguridad de primavera

Proporciona una herramienta de autenticación (autenticación) y control de acceso (autorización) potente y personalizable para una aplicación. Puede encontrar un ejemplo sencillo de cómo conectar Spring Security a su aplicación en esta publicación . Lo que necesita saber sobre Spring: historia, módulos clave, comparación con Java EE - 8

Gráfico de primaveraQL

Este módulo proporciona soporte para aplicaciones Spring creadas en GraphQL Java. GraphQL es un lenguaje de consulta para API que permite a los clientes consultar un conjunto limitado de datos que necesitan, lo que a su vez permite recopilar datos en un número limitado de consultas. Si ya estás familiarizado con JPA, es posible que ya te hayas topado con EntityGraph, con un concepto similar (o el mismo). Puede leer más sobre GraphQL aquí .

Sesión de primavera

Esta parte del marco Spring proporciona API e implementaciones para administrar la información de la sesión del usuario (los datos de la sesión del usuario se almacenan en un almacenamiento persistente como Redis , MongoDb , HazelCast , etc.). Puede encontrar un ejemplo del uso de Spring Session aquí .

Integración de primavera

Este módulo está diseñado para simplificar la mensajería en aplicaciones basadas en Spring y admitir la integración con sistemas externos a través de adaptadores declarativos. Estos adaptadores proporcionan un mayor nivel de abstracción que el soporte de Spring para comunicación remota, mensajería y programación. Artículo detallado .

DESCANSO de primavera

Proporciona un amplio conjunto de herramientas que simplifican el desarrollo de API REST: herramientas para enrutar solicitudes, para convertir JSON/XML en objetos de los tipos requeridos, etc. En este material se puede encontrar un ejemplo de un servicio RESTful en Spring .

Flujo web de primavera

Spring Web Flow se basa en Spring MVC y le permite implementar "flujos" de una aplicación web. Dichos flujos encapsulan una secuencia de pasos que guían al usuario a través de la realización de alguna tarea comercial. Abarcan múltiples solicitudes HTTP, tienen estado, funcionan con datos transaccionales, son reutilizables y pueden ser de naturaleza dinámica y duradera. En esta guía en inglés se puede ver un ejemplo de conexión de Spring Web Flow .

Servicios web de primavera

Este módulo está diseñado para facilitar el desarrollo de servicios SOAP basados ​​en contratos al permitirle crear servicios web flexibles utilizando una de las muchas formas de manipular cargas útiles XML. SOAP - Protocolo simple de acceso a objetos - Protocolo simple de acceso a objetos.

Primavera HATEOAS

El módulo proporciona algunas API para facilitar la creación de controladores REST que sigan el principio HATEOAS cuando se trabaja con Spring y especialmente Spring MVC. HATEOAS - Hipermedia como motor del estado de la aplicación - Hipermedia como motor del estado de la aplicación. Puedes ver el uso de esta biblioteca Spring aquí .

Lote de primavera

Este módulo proporciona funcionalidad para el procesamiento de datos por lotes (cuando los datos se procesan en piezas grandes: lotes), vital para el funcionamiento diario de los sistemas corporativos. Spring Batch proporciona funciones reutilizables necesarias para manejar grandes volúmenes de registros, incluido el registro/rastreo, la gestión de transacciones, las estadísticas de procesamiento de trabajos, el reinicio, la omisión de trabajos y la gestión de recursos. Puede encontrar una reseña interesante sobre Spring Batch en este enlace .

Primavera AMQP

El módulo aplica conceptos básicos de Spring al desarrollo de soluciones de mensajería basadas en AMQP. Proporciona una plantilla como una abstracción de alto nivel para enviar y recibir mensajes. También proporciona soporte para POJO controlados por mensajes con un contenedor de escucha. AMQP - Protocolo avanzado de cola de mensajes - Protocolo avanzado de cola de mensajes. El proyecto contiene dos partes: spring-amqp es la abstracción base y spring-rabbit es la implementación de RabbitMQ . Ejemplo con conexión RabbitMQ usando Spring Lo que necesita saber sobre Spring: historia, módulos clave, comparación con Java EE - 9

Primavera para Apache Kafka

Este proyecto aplica conceptos básicos de Spring al desarrollo de soluciones de mensajería basadas en Kafka . Se proporciona una plantilla como una abstracción de alto nivel para enviar mensajes. También proporciona soporte para POJO controlados por mensajes con las anotaciones necesarias y un contenedor de escucha. Aquí hay una clara similitud con Spring AMQP, pero este módulo está adaptado específicamente para Kafka. Aquí se puede ver un ejemplo de conexión de Spring Kafka .

CredHub de primavera

Proporciona soporte del lado del cliente para almacenar, recuperar y eliminar credenciales de un servidor CredHub que se ejecuta en la plataforma Cloud Foundry . CredHub : proporciona una API para almacenar, crear, recuperar y eliminar de forma segura varios tipos de credenciales. Spring CredHub proporciona un enlace Java para la API de CredHub, lo que facilita la integración de aplicaciones Spring con CredHub.

FLO de primavera

Es una biblioteca de JavaScript que ofrece un diseñador visual integrable en HTML5 simple para canalizaciones y gráficos simples para monitorear la transmisión y los datos por lotes. Una demostración de esta tecnología se encuentra en el vídeo del enlace .

LDAP de primavera

Esta biblioteca simplifica las operaciones LDAP y se basa en Spring JdbcTemplate. El marco permite buscar y cerrar contexto, ver resultados, codificar/decodificar valores, filtros y mucho más (basado en los mismos principios que Spring Jdbc). Puede encontrar un ejemplo de implementación de Spring LDAP aquí .

primavera roo

Este módulo proporciona una herramienta RAD que puede crear y administrar su aplicación basada en Spring. Su objetivo es mejorar la productividad de los desarrolladores de Java. No puede escribir la lógica empresarial de su aplicación, pero puede manejar aspectos de configuración e infraestructura.

Concha de primavera

La biblioteca facilita la creación de una aplicación de shell con todas las funciones (también conocida como línea de comandos) confiando en los archivos jar de Spring Shell y agregando sus propios comandos (que vienen como métodos en Spring beans). Crear una aplicación de línea de comandos puede resultar útil, por ejemplo, para interactuar con la API REST de su proyecto o para trabajar con el contenido de archivos locales. Lee más aquí y aquí .

Máquina de estados de primavera

Este módulo permite a los desarrolladores de aplicaciones utilizar conceptos de máquina de estados con aplicaciones Spring. Puede encontrar un ejemplo detallado del uso de esta funcionalidad aquí y aquí .

Bóveda de primavera

Spring Vault proporciona abstracciones familiares de Spring y soporte del lado del cliente para acceder, almacenar y revocar secretos. Ofrece abstracciones de bajo y alto nivel para interactuar con Vault , liberando al usuario de preocupaciones de infraestructura. Ejemplo de implementación de Spring Vault Lo que necesita saber sobre Spring: historia, módulos clave, comparación con Java EE - 10"¿Necesito aprender todo esto?" - preguntas con asombro. ¡No tengas miedo! ¡Esto está mal! Más precisamente, no tanto. Esta fue la lista completa de tecnologías disponibles en Spring. La lista de tecnologías que un principiante debe conocer es mucho más modesta:
  • Núcleo de resorte
  • Bota de primavera
  • Spring Web (MVC y REST)
  • Datos de primavera (Spring ORM, Spring JDBC, Spring JPA)
  • Prueba de primavera
También hay otras tecnologías que se encuentran a menudo en los proyectos, pero debido a su complejidad, generalmente las manejan desarrolladores más experimentados en lugar de novatos ecológicos. Sin embargo, también es útil para los principiantes tener al menos una comprensión general de:
  • Seguridad de primavera
  • AOP de primavera
  • Nube de primavera
Otras tecnologías se utilizan con mucha menos frecuencia, por lo que basta con estudiarlas seriamente para trabajar en un proyecto específico. Por cierto, puedes encontrar una lista de verificación completa de lo que un desarrollador de Java debe saber en mi otro artículo. Eso es todo para mí hoy, ¡hasta pronto! Lo que necesita saber sobre Spring: historia, módulos clave, comparación con Java EE - 11
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION