¿Cuáles son las principales implementaciones de Java EE 7?
Nuevas características en Java EE 7
1.3.1 ?Nueva especificación
Las principales funciones de la nueva especificación se describen a continuación.
1. API de Java para WebSocket
Defina los puntos finales del cliente y del servidor de WebSocket mediante POJO de anotación declarativa o interfaces de implementación programática.
Proporciona una configuración específica del servidor, como una asignación que identifica el punto final de WebSocket en el espacio URI del contenedor, los subprotocolos admitidos por el punto final y las extensiones requeridas por la aplicación.
Proporciona una configuración específica del cliente, como proporcionar algoritmos configurados personalizados.
Se puede empaquetar e implementar en JDK o contenedor web.
Permite la integración con tecnologías Java EE existentes.
2. API Java para procesamiento JSON
La API Streaming se utiliza para analizar y generar JSON como una secuencia.
La API del modelo de objetos se utiliza para crear estructuras de acceso aleatorio y estructuras de árbol para representar datos JSON en la memoria.
3. Aplicaciones de procesamiento por lotes en la plataforma Java
Los trabajos por lotes se describen utilizando el lenguaje de especificación de trabajos, que es un esquema XML que define la secuencia completa de ejecución del trabajo.
Utilice interfaces, clases abstractas y anotaciones de campo para definir la funcionalidad del modelo de programación por lotes.
Proporciona procesamiento de trabajos fragmentados y por lotes.
4. Utilidades de concurrencia para Java EE
Proporcionan capacidades de concurrencia a los componentes de la aplicación Java EE sin afectar la integridad del contenedor.
Se definen objetos gestionados:
Se definen objetos gestionados: ManagedExecutorService, ManagedScheduledExecutorService, ContextService y ManagedThreadFactory. Especificación actualizada
Las características principales de la especificación actualizada se describen a continuación.
1. API Java para servicios web RESTful
Proporciona una nueva API de cliente para acceder a recursos web e integrarse con proveedores JAX-RS.
Admite procesamiento asincrónico entre la API del cliente y la API del servidor.
Defina filtros de mensajes e interceptores de entidades como puntos de extensión para personalizar el manejo de solicitudes/respuestas tanto en el lado del cliente como en el del servidor.
Introduciendo los factores QS como una nueva negociación de contenidos del lado del servidor.
Los campos, propiedades y parámetros inyectados mediante anotaciones (como @HeaderParam, @QueryParam, etc.) pueden utilizar validación declarativa. Las clases de recursos pueden utilizar anotaciones de restricciones.
2. Servicio de mensajes Java
Para hacer que la API JMS sea más simple y fácil de usar, hemos realizado una serie de cambios. Por ejemplo, los métodos de cierre de conexiones, sesiones y otros objetos ahora implementan la interfaz java.lang.Autocloseable, que se puede usar en declaraciones de prueba con recursos en Java SE 7. Se ha agregado un nuevo método para crear una sesión sin proporcionar parámetros adicionales. Se ha agregado un nuevo método a getBody que permite a las aplicaciones obtener el cuerpo del mensaje directamente desde un Mensaje sin convertirlo primero al subtipo correspondiente.
Los productores de mensajes ahora pueden especificar los mensajes que se entregarán después de un intervalo específico.
Los nuevos métodos de remitente permiten que las aplicaciones envíen mensajes de forma asíncrona.
Los proveedores JMS ahora deben establecer la propiedad del mensaje JMSXDeliveryCount.
3. Lenguaje de expresión
El lenguaje de expresión (EL) es una especificación independiente que se puede configurar y utilizar fuera del contenedor Java EE mediante ELProcessor.
El lenguaje de expresión incluye sintaxis lambda. Ahora se puede admitir un conjunto completo de operaciones de recopilación, como mapas y filtros, mediante expresiones lambda.
Además de los operadores aritméticos y de comparación comúnmente utilizados, se han agregado nuevas operaciones (como operadores de asignación y operadores de concatenación de cadenas) para hacer que el lenguaje de expresión sea más expresivo.
4. Enterprise JavaBeans
Ahora admite opcionalmente puntos finales de servicios web y vistas de cliente basados en EJB 2.1, EJB QL y JAX-RPC.
Utilice una interfaz de escucha de mensajes sin métodos para mejorar las restricciones del bean controlado por mensajes (MDB). Los MDB exponen todos los métodos públicos como métodos de escucha de mensajes, lo que permitirá adaptadores de recursos personalizados para más MDB en el futuro.
Definir grupos de API de EJB para contenedores EJB Lite con reglas explícitas para admitir otros grupos de API ayuda a definir cómo se puede agregar formalmente la funcionalidad de EJB fuera de EJB Lite a productos que no admiten el perfil Java EE con todas las funciones.
EJB Lite incluye invocación de beans de sesión asíncronos y servicios de temporizador EJB no persistentes.
Se agregó una opción para deshabilitar la pasivación de beans de sesión con estado.
5.Servlets
Define un mecanismo estándar para actualizar las conexiones HTTP existentes a un protocolo diferente utilizando HttpUpgradeHandler.
Proporciona manejo de solicitudes y respuestas sin bloqueo para servlets asíncronos.
Defina reglas para que los métodos HTTP se anulen mediante
6.JavaServer Faces
Faces Flow encapsula las vistas y páginas asociadas con los puntos de entrada y salida definidos por la aplicación.
Las restricciones del repositorio permiten a los desarrolladores aplicar plantillas Facelet en sus aplicaciones de manera reutilizable e intercambiable.
El marcado compatible con HTML5 permite un control casi completo sobre la experiencia del usuario de cada elemento de la vista.
Las vistas sin estado significan que los desarrolladores ya no necesitan guardar UIComponentstate, lo que permite a las aplicaciones usar componentes JavaScript en lugar de JSF para administrar el estado.
7.Java Persistence
Las bases de datos y tablas se pueden crear utilizando las propiedades javax.persistence.schema-generación.*.
El contexto de persistencia asincrónico significa que no es necesario registrar el contexto de persistencia en la transacción, por lo que el contexto de persistencia se puede agregar explícitamente a la transacción.
La API estándar admite actualizaciones/eliminaciones por lotes.
Las funciones predefinidas y definidas por el usuario se pueden llamar usando FUNCTION.
Los procedimientos almacenados se pueden llamar usando StoredProcedureQuery y @NamedStoredProcedureQuery.
8. Interceptores
Asociar interceptores usando InterceptorBinding ahora es parte de esta especificación y no de CDI.
@AroundConstruct especifica un método interceptor que recibe una devolución de llamada cuando se llama al constructor de la clase de destino.
Los interceptores a nivel de método se pueden extender a devoluciones de llamadas del ciclo de vida agregando interceptores a nivel de constructor.
Con la vinculación de interceptores, los rangos de prioridad se pueden especializar para ordenar los interceptores.
9. Inyección de contexto y dependencia
En Java EE, CDI se habilita automáticamente para beans y EJB que utilizan anotaciones de alcance.
La anotación @Vetoed simplifica el proceso de deshabilitar una clase mediante programación.
10.Validación de Bean
Las restricciones de validación se pueden aplicar a los parámetros y valores de retorno de cualquier método y constructor.
Puntos de integración CDI agregados y rediseñados.
El grupo objetivo se puede cambiar cuando se activa una cascada de validación.
11.Transacciones Java
Las aplicaciones pueden usar @Transactional para controlar de forma declarativa los límites de las transacciones de los beans administrados por CDI y los beans administrados por la especificación Java EE a nivel de clase y de método, método. Las anotaciones de nivel anularán las anotaciones definidas en el nivel de clase.
@TransactionScoped es un nuevo alcance CDI que define el alcance del ciclo de vida de la instancia del bean como la transacción JTA actual.
12.JavaMail
@MailSessionDefinition y @MailSessionDefinition definen sesiones de correo registradas mediante JNDI. La arquitectura del conector Java EE
proporciona @AdministeredObjectDefinition, @AdministeredObjectDefintions, @Connector FactoryDefinition y @ConnectorFactoryDefinitions para definir los objetos administrados por el conector y las fábricas que se registrarán en JNDI.