¡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 . Se 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!
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”: En 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.
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. El 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 .
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.
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 :
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 .
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.
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
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.
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 "¿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!
GO TO FULL VERSION