¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
Black Friday: -15 € a partir de 50 € en todos los libros online, eformaciones... con el código BLACK15. Pulse aquí
  1. Libros
  2. Java Spring
  3. Componentes del framework
Extrait - Java Spring La base técnica de las aplicaciones Jakarta EE
Extractos del libro
Java Spring La base técnica de las aplicaciones Jakarta EE Volver a la página de compra del libro

Componentes del framework

Introducción

En primer lugar, este capítulo presenta Spring en su contexto histórico y, seguidamente, describe sus partes constitutivas y elementos de configuración.

Aspectos históricos

El framework Spring se diseñó para facilitar la creación de aplicaciones empresariales en un contenedor web ligero como Tomcat, es decir, sin administración de EJB.

En las siguientes tablas se proporciona una ubicación temporal.

Evolución de Java Enterprise

Año

Versión

Contenido

1999

J2EE 1.2

Servets, JSP, EJB (1.1), JMS, RMI

2001

J2EE 1.3

EJB (2.0 CMP), JCA

2003

J2EE 1.4

EJB (2.1 MDB), Web services, JAX-RPC, Deployment Specification

2006

Java EE 5

EJB (3.0 annotations), JPA, Annotations, JSF, JAX-WS

2009

Java EE 6

Profil web, Servlet 3.0, EJB (3.1 singletons, lite, asynchronous), CDI, JAX-RS

2013

Java EE 7

JMS 2.0, JAX-RS 2.0, Servlet 3.1, API JSON, WebSockets

2017

Java EE 8

CDI 2.0, JSON-B 1.0, Servlet 4.0, JAX-RS 2.1, JSF 2.3, JSON-P 1.1, Bean Validation 2.0, JPA 2.2, WebSocket 1.6

Poco después del lanzamiento de Java, aparecieron los principios de diseño basados en JavaBeans que, por ejemplo, se utilizarían posteriormente en librerías gráficas de Java, como AWT. Sin embargo, no existía nada que permitiera usarlo en el lado del servidor de aplicaciones. Se hace un intento con EJB 1, pero nos alejamos mucho de los aspectos principales, y la evolución hacia EJB 2 complicaría aún más las cosas.

En ese momento, las JVM eran de pequeño tamaño, lo que hacía necesario que se multiplicaran y se comunicaran entre sí para obtener una JVM más grande (compuesta por nodos). Una JVM utiliza prácticamente toda la RAM de una máquina. Se agrupaban las máquinas en clústeres especializados y organizando nodos, lo que en última instancia permitía disponer de más espacio de memoria y capacidad de cálculo (CPU). Es habitual que haya un nodo maestro supervisando varios nodos secundarios.

En 2002, la situación era muy especial. No se podía ser arquitecto de Java si no se codificaba con EJB 2.0, que era una puesta al día de EJB 1.1. Sin embargo, esta tecnología no estaba madura y muy pocos proyectos terminaron en producción. La complejidad de la aplicación era extrema. Las cosas funcionaron a pequeña escala...

Utilidad de Spring en un proyecto

El framework Spring es una solución ligera, basada en componentes de software independientes. Proporciona soluciones técnicas unificadas para la mayoría de las dificultades estándares que aparecen en los proyectos. Ofrece implementaciones para un conjunto de design patterns (patrones de diseño), como veremos en un capítulo dedicado a este tema. Las librerías de extensión también proporcionan facilidades para el uso de las librerías de software más utilizadas. Construir servicios web SOAP, servicios REST para acceder a los datos y hacer una aplicación basada en una sucesión de pantallas (wizard) se convierte en algo sencillo de hacer. Las diferencias entre las implementaciones de frameworks estándares de acceso a datos se suavizan con el uso de una API unificada.

Los proyectos se centran en la parte de negocio, mientras que la parte técnica la administra el framework Spring, que originariamente fue diseñado para Java, pero hoy en día existe para otras plataformas como .NET.

Spring tiene licencia en Apache 2.0 y es open source. Se puede acceder a las fuentes y hacer peticiones de evoluciones desde la URL https://github.com/spring-projects. Incluso es posible proponer correcciones de errores o cambios a través de «change requests» (peticiones de cambio).

El conjunto se maveniza (con las fuentes y el javadoc) en el repository central Maven para la versión estándar y en los repositories Maven SpringSource para las versiones en desarrollo. Encontraremos la ubicación de los repositorios al final del capítulo. Es posible usar Maven o Gradle para hacer proyectos de Spring. En este libro, utilizamos principalmente versiones Maven. El framework Spring es una solución full stack, es decir, que incluye todos los componentes técnicos y permite realizar aplicaciones completas, llave en mano. El núcleo de Spring tiene muy pocas dependencias externas. Al ser modular, permite incorporar solo los elementos necesarios...

Visión general y temas tratados en el libro

1. Los módulos Spring

Hasta la fecha, la documentación de Spring lista unos veinte módulos Spring agrupados por temas. Para los ejemplos de este libro, se utilizan las versiones 4.3 y 5.3.

El núcleo central en las versiones 4.3.30 y 5.3.18

Nombre del módulo

Utilidad

spring-core

Los fundamentos: gestión de objetos y proxy.

spring-beans

La configuración y las factories de beans.

spring-context

Gestión del contexto, EJB, JMX, JNDI, scheduling, validation.

spring-context-support

Support ehcache, guava, mail, scheduling UI.

spring-expression

Expresssion language Spring: SpEL.

La POA

Nombre del módulo

Utilidad

spring-aop

POA a través de proxys.

spring-aspects

Aspectos basados en AspectJ.

spring-instrument

Agente de instrumentación para el bootstrapping de la JVM.

spring-instrument-tomcat

Agente de instrumentación para Tomcat.

Mensajes

Nombre del módulo

Utilidad

spring-messaging

Tener aplicaciones basadas en mensajes.

Acceso a los datos

Nombre del módulo

Utilidad

spring-jdbc

Facilidades JDBC.

spring-tx

Gestión programática de transacciones.

spring-orm

Mapping Hibernate (JPA y JDO).

spring-oxm

Mapping Object/XML como JAXB, Castor, XMLBeans, JiBX y XStream.

spring-jms

Módulo Java Messaging Service e integración spring-messaging desde Spring Framework 4.1.

Web

Nombre del módulo

Utilidad

spring-web

Componentes web.

spring-webmvc

Web services REST y web MVC.

spring-websocket

Web sockets.

spring-webmvc-portlet

Web en un contexto portlet.

Prueba

Nombre del módulo

Utilidad

spring-test

Ayuda para utilizar JUnit y TestNG con Spring y objetos mock.

2. Temas tratados

Como vimos en el prólogo, Spring es muy extenso. No podemos cubrir todo en un libro, aunque vamos a tratar los temas más utilizados, a saber, la parte back de las aplicaciones web y, a menudo, móviles, así como la parte front, para la que nos vamos a limitar a las aplicaciones web, ya que incluiremos los servicios web en esta parte. Describiremos tanto como sea posible las pruebas unitarias asociadas. Los ejemplos están tomados de casos reales presentes en los proyectos que se pueden descargar. También se detalla la programación por aspectos, que se utiliza ampliamente con Spring.

Los ejemplos utilizan la última versión «release» de Spring, disponible...

Complementos

Los curiosos pueden descargar una de las primeras versiones de Spring en la versión 0.9, en la dirección https://sourceforge.net/projects/springframework/files/springframework/0.9/spring-framework-0.9.zip/download, del 26 de junio de 2003, con JDK 1.4 (JDK 1.5). Esta versión es compatible con JDK 1.4 parcheando este JDK para tener las anotaciones antes de la fase.

También está disponible la versión 1.0 y se compila con modificaciones menores.

En estas versiones encontramos la esencia misma de Spring.

Puntos clave

  • El framework Spring es modular.

  • Usamos Maven para configurarlo.

  • Las aplicaciones web y las pruebas son los dos puntos fuertes de Spring.