Spring facilita la creación de aplicaciones Java empresariales. Proporciona todo lo necesario más allá del propio lenguaje Java. También proporciona extensiones y soporte para aplicaciones creadas en Groovy y Kotlin.
Spring soporta una amplia gama de escenarios de aplicación. En una empresa grande, a menudo existen aplicaciones durante mucho tiempo y tienen que ejecutarse en un JDK y en un servidor de aplicaciones cuyo ciclo de actualización es más allá del control del desarrollador. Otras pueden correr como un solo jar con el servidor embebido, posiblemente en un ambiente de la nube. Sin embargo, otras pueden ser aplicaciones independientes (como lotes o cargas de trabajo de integración) que no necesitan un servidor.
Spring es de código abierto. Tiene una comunidad grande y activa que proporciona una retroalimentación continua basada en una amplia gama de casos de uso en el mundo real. Esto ha ayudado a Spring a evolucionar con éxito durante un tiempo muy largo.
¿Por qué Spring Framework?
Spring Framework tiene como objetivo ayudar a las personas a escribir código sin preocuparse demasiado del middleware con el que interactúa el código. Dejándonos utilizar la inyección de la dependencias, la cual es una forma elegante de decir que se escribe código para Interfaces. Y debido a que tienes interfaces, puedes conectar implementaciones. Puedes intercambiar estas implementaciones.
¿Qué quiere decir “Spring”?
El término “Spring” significa cosas diferentes en diferentes contextos. Puede utilizarse para referirse al proyecto Spring Framework, que es donde todo comenzó. Con el tiempo, otros proyectos de se han construido por encima del framework Spring. Muy a menudo, cuando la gente dice, “Spring”, se refieren a toda la familia de proyectos.
Spring Framework está dividido en módulos. Las aplicaciones pueden elegir los módulos que necesitan. En el corazón están los módulos del núcleo, incluyendo un modelo de configuración y un mecanismo de inyección de dependencia. Más allá de eso, Spring Framework proporciona soporte fundamental para diferentes arquitecturas de aplicaciones, incluyendo mensajería, datos transaccionales y persistencia, y web.
También incluye el framework web Spring MVC basado en servlets y, en paralelo, el framework web reactivo Spring WebFlux.
Historia de Spring y el Spring Framework
Spring nació en 2003 como una respuesta a la complejidad de las primeras especificaciones J2EE. Mientras algunos consideran que Java EE y Spring están en competencia, Spring es, de hecho, complementario de Java EE. Spring no soporta todas las especificaciones de Java EE. Por el contrario, se integra con un subconjunto cuidadosamente seleccionado de las especificaciones de Java EE más ampliamente utilizadas:
- JPA (JSR 338)
- JMS (JSR 914)
- Servlet API (JSR 340)
- WebSockets (JSR 356)
- JSON Binding API (JSR 367)
- Bean Validation (JSR 303)
Spring Framework también soporta las especificaciones de Inyección de dependencia (JSR 330) y Anotaciones comunes (JSR 250), que los desarrolladores de aplicaciones pueden elegir utilizar en lugar de los mismos mecanismos proporcionados por Spring Framework.
Con el tiempo, el papel de Java EE en el desarrollo de aplicaciones ha evolucionado. En los primeros días de Java EE y Spring, se crearon aplicaciones para implementarlas en un servidor de aplicaciones. Hoy en día, con la ayuda de Spring Boot, las aplicaciones se crean de una forma amigable a los devops y la nube, con el contenedor de servlets embebido y fácil de cambiar.
Spring continúa innovando y evolucionando. Más allá del Spring Framework, hay otros proyectos, como Spring Boot, Spring Security, Spring Data, Spring Cloud, Spring Batch, entre otros. Es importante recordar que cada proyecto tiene su propio repositorio de código fuente, rastreador de incidencias y cadencia de lanzamiento. Echa un vistazo en spring.io/projects para ver la lista completa de proyectos Spring. Y a la nueva documentación de referencia de Spring 5, la cual me motivo a escribir este post.