Bloque III. Tema 14. La arquitectura J2EE. Características de funcionamiento. Elementos constitutivos. Productos y herramientas.

Índice de contenido

Bloque III. Tema 14. La arquitectura J2EE. Características de funcionamiento. Elementos constitutivos. Productos y herramientas.        1

Arquitectura J2EE        2

Productos y herramientas        2

BCEL        2

BSF        2

Cactus        2

JCS        2

JMeter        2

JMS        2

JNDI        2

Apache Commons        3

Excalibur        3

HiveMind        3

James        3

Lucene        3

Tapestry        3

Turbine        4

Velocity        4

ActiveMQ        4

Buildr        4

Cassandra        4

Cayenne        4

Chemistry        4

CMIS        4

Cocoon        4

Continuum        4

CouchDB        5

Forrest        5

Geronimo        5

Hadoop        5

Harmony        5

jUDDI        5

XMLBeans        5

JSP        5

Variables predefinidas        5

Directivas        6

Scriptlets        6

Etiquetas JSP        6

Enterprise JavaBeans        7

 

 

Arquitectura J2EE

Referencia: https://secure.wikimedia.org/wikipedia/es/wiki/Java_EE

Productos y herramientas

Detalle de los productos y herramientas relacionados bien con Apache Jakarta directamente y luego con la fundación Apache en general.

Referencia: http://apache.jakarta.org y http://www.apache.org

BCEL

Byte Code Engineering Library. Para analizar, crear y manipular de forma binaria archivos .class de Java. Los métodos, propiedades, etc. de las clases pueden ser leídas desde los archivos de bytecode y se puede generar el código fuente. También sirve para aprender sobre el formato del archivo .class y para aprender sobre la JVM.

BSF

Bean Scripting Framework es un conjunto de clases Java que proporciona soporte de lenguaje de scripting dentro de aplicaciones Java. Permite escribir JSPs en lenguajes que no sean Java pero con acceso a la librería estándar.

Cactus

Ver tema de Pruebas.

JCS

Java Caching System es un sistema de caché distribuida escrito en Java. Está pensado para acelerar aplicaciones que hagan mucha lectura y poca escritura. Se puede evitar el cuello de botella de las bases de datos. Además la caché se puede distribuir en múltiples servidores, puede tener interfaz por RMI, etc.

JMeter

Ver tema Pruebas.

JMS

Java Message Service es una especificación para el uso de colas de mensajes. Comunicación síncrona y asíncrona. También es conocido por ser un middleware orientado a mensajes. Permite el Modelo Punto a Punto -uno envía mensaje y otro recibe- y el modelo Publicado/Suscriptor en el que se cuenta con varios clientes. Se usa JNDI para encontrar los recursos.

Ver más abajo ActiveMQ, que es una implementación de JMS.

JNDI

Java Naming and Directory Interface es una API para servicios de directorio. Permite a los clientes descubrir y buscar objetos y nombres a través de un nombre y es independiente de la implementación subyacente. Puede buscar en:

Apache Commons

Se enfoca en todos los aspectos de componentes Java reutilizables. Se dedica a un objetivo principal: crear y mantener componentes Java reutilizables. El Commons Proper es un lugar para colaboración y compartición, donde los desarrolladores de la comunidad Apache pueden trabajar juntos en proyectos para compartir. Hay varios proyectos:

Excalibur

Su producto principal es un contenedor de Inversion of Control de peso ligero y empotrable llamado fortress.

Inversion of Control es un patrón para mezclar componentes diversos para crear una aplicación.

HiveMind

Un microkernel de servicios y configuración (sea lo que sea que eso signifique). También se relaciona con el patrón Inversion of Control. La adopción de HiveMind en una aplicación permite el uso de ciertos principios de diseño que mejoran la encapsulación, modularización, capacidad de ser probado y reusabilidad. El proyecto Tapestry usa HiveMind.

James

Un conjunto de módulos y librerías escritas en Java relacionadas con comunicaciones por correo por Internet, que construyen un servidor de correo enterprise.

Lucene

Software de búsqueda e indexación, spellchecking, análisis, tokenización, etc. Junto con servidores con APIs XML/HTTP, JSON/Python/Ruby para realizar búsquedas, cache, replicación, búsqueda distribuida, etc. Mirar JCS.

Tapestry

Framework orientado a componentes para crear aplicaciones web escalables con Java.

Turbine

Un framework basado en servlets para construir aplicaciones web. Es una buena elección para desarrollar aplicaciones que hacen uso de un arquitectura orientada a servicios. Incluye un servicio de gestión de la seguridad, un servicio de scheduling, servidor de validación de formularios definidos en XML y un servicio XML-RPC.

Velocity

Apache Velocity Engine es un motor de plantillas. Permite usar un lenguaje de generación de plantillas para referenciar objetos definidos en código Java. Es 100% Java puro.

ActiveMQ

Un servidor para envío de mensajes y de patrones de integración. Es una implementación de JMS 1.1 como parte de la especificación J2EE 1.4.

Buildr

Un sistema de construcción de proyectos que incluye soporte para Scala, Groovy y un número creciente de lenguajes JVM y herramientas.

Cassandra

Base de datos distribuida altamente escalable de segunda generación. Soporte para Bigtable, el modelo de datos ColumnFamily. Fue liberado por Facebook en 2008 y ahora es desarrollado por la fundación Apache. Lo usan Digg, Facebook, Twitter, Reddit, etc. Tienen grandes datasets y muy activos. Tolerante a fallos.

Cayenne

Framework de persistencia.

Chemistry

Implementación de CMIS.

CMIS

Content Management Interoperability Services. Es un estándar OASIS que permite la compartición de información entre diferentes gestores de contenidos, CMSs.

Cocoon

Uun framework de desarrollo web construido en los conceptos pipeline y separation of concerns. Está orientado a componentes. Usa XML y XSLT para publicar y usa Java como lenguaje de programación.

Se usa también como herramienta de data warehousing ETL o como middleware para transportar datos entre sistemas.

Continuum

Servidor de integración con características como automated builds, liberación de versiones, seguridad basada en roles e integración con herramientas de construcción (build tools) populares y herramientas de control de código.

CouchDB

Base de datos orientada a documentos que puede ser consultada e indexada en modo MapReduce usando Javascript. Ofrece también replicación incremental con detección y resolución de conflictos bidireccional. Está escrito en Erlang, un lenguaje funcional ideal para construir sistemas distribuidos concurrentes.

Forrest

Un framework de publicación que transforma entrada de diversas fuentes en una presentación unificada en uno o más formatos de salida.

Geronimo

Servidor de aplicaciones J2EE compatible con la versión 5.0 de esta especificación.

Hadoop

Software para computación distribuida. Permite el procesamiento distribuido de conjuntos de datos grandes en un cluster de ordenadores.

Harmony

Una implementación de Java 100% libre. Al igual que GNU Classpaht, una implementación libre  pertenenciente proyecto GNU, de las librerías estándar de Java. Aunque son incompatibles.

Dalvik, la máquina virtual dentro de Android, usa un subconjunto de de Harmony.

jUDDI

Implementación Java para UDDI. (Universal Description, Discovery and Integration).

XMLBeans

Tecnología para acceder a XML enlazándolo a tipos Java. Proporciona varios medios de obtener el XML, a través de XML Schema que ha sido compilado para generar tipos Java, un modelo de cursos y a través de XML DOM.

JSP

Variables predefinidas

Directivas

Scriptlets

Declarar varibles, funciones y datos estáticos.

     

<%! int max = 10; %>

<%= “Hello World” %>

<% código java %>

 

En su lugar hay que utilizar JavaServe Pages Standard Tag Library JSTL que encapsula como etiquetas funcionalidades comunes a muchas aplicaciones web. Tiene soporte para condicionales, manejar documentos XML, internacionalización y SQL.

   

<%@ taglib uri=”/taglib/lycka” prefix=”lycka” %>

<lycka:hola/>

...

Etiquetas JSP

Enterprise JavaBeans

Las Bean normales son clases con setter y getter, que deben tener un constructor nulo y que deben ser serializables.

Las EJB son una de las API que forma parte del estándar J2EE. Su especificación detalla cómo los servidores de aplicaciones proveen objetos desde el lado del servidor que son, precisamente, los EJB. El objetivo es dotar al programador de un modelo que le permita abstraerse de los problemas generales de una aplicación empresarial (concurrencia, transacciones, persistencia, seguridad, etc.) para centrarse en el desarrollo de la lógica de negocio en sí. El hecho de estar basados en componentes permite que sean flexibles y reutilizables. TRES TIPOS: