You are on page 1of 8

Universidad Mariano Gálvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologías de la Información Cristian Calderón

Desarrollo rápido de Aplicaciones Empresariales con Java EE y NetBeans
1 ¿Qué es Java EE?
Java EE o Java Enterprise Edition (Java Edición Empresarial) es una plataforma de desarrollo basada en el lenguaje de programación Java, que nos permite desarrollar aplicaciones empresariales basadas en un arquitectura de N capas distribuidas. Las aplicaciones a gran escala, de varios niveles, escalables, confiables y seguras son llamadas “Aplicaciones Empresariales”, debido a que estas solucionan la problemática de grandes empresas. Tenemos que tomar en cuenta que una aplicación empresarial no solo beneficiara a grandes organizaciones, sino también a organizaciones más pequeñas e incluso individuales debido a la dinámica de información actual. Desde un punto de vista más técnico podemos decir que la plataforma Java EE nos provee de un conjunto de API's que nos facilitan la creación y desarrollo de una aplicación que contenga todos los estándares necesarios en la industria.

1

2 Modelo de una Aplicación Java EE
Como mencionamos con anterioridad Java EE nos propone el desarrollo de aplicaciones de N capas, este modelo de desarrollo nos permite dividir el trabajo de la implementación en dos partes:   La implementación de la lógica del negocio y la presentación de la aplicación que debe ser realizada por los desarrolladores. Los servicios estándar del sistema que serán proveídos por Java EE, entre estos servicios estándar podemos incluir a todas las funciones que normalmente posee una aplicación como por ejemplo el almacenamiento en la base de datos, el manejo de transacciones, la concurrencia, etc.

2.1 Aplicaciones de N capas distribuidas
Una aplicación Java EE está compuesta por capas, esta a su vez se divide en componentes de acuerdo a su función, estos componentes pueden estar distribuidos en distintas maquinas dependiendo de la capa a la cual pertenezcan dentro de una aplicación de N capas. Una aplicación Java EE puede consistir en 3 o 4 capas, aunque generalmente son consideradas de 3 capas debido a que están distribuidas en tres lugares diferentes que son: la maquina cliente, un servidor de aplicaciones Java EE y una base de datos.

Capa Web: sus componentes corren sobre el servidor Java EE. 2 Ilustración 1: Modelo de Aplicación Java EE .Universidad Mariano Gálvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologías de la Información Cristian Calderón A continuación describiremos cuales son estas capas: 1. Capa de sistemas de información empresarial (EIS por sus siglas en inglés): que es el software que corre sobre un servidor EIS (Bases de Datos. etc. Capa de Negocio: sus componentes también corren sobre el servidor Java EE. ERP. 4.). 3. Sistemas Antiguos. 2. Data Center. Capa del Cliente: sus componentes corren en la máquina del cliente.

También si es necesario estas pueden abrir una conexión HTTP e interactuar con los servlet de la capa web. Java Servlet. Enterprise JavaBeans que son componentes de la lógica de negocio que también se ejecutan del lado del servidor. estas proveen una interfaz más rica para realizar las tareas de los usuarios que la que nos podría brindar un lenguaje de marcado. 3. . 3.1 Clientes Web Cuando hablamos de un cliente web tenemos que tener en consideración que estos están conformados por las páginas web escritas en cualquier lenguaje de marcado como HTML y XML por ejemplo. y el navegador web propiamente dicho. estos por lo general suelen ser navegadores web. debido a que no ejecutan consultas SQL o alguna función de la lógica del negocio.1.3 Aplicaciones Cliente Una aplicación cliente se ejecuta en el ordenador del usuario. que es el encargado de interpretarlas y mostrarlas al usuario. A veces a estos clientes se les suele llamar “thin clients” o clientes ligeros. todas estas son generadas por los componentes que corren en la capa web del servidor. 3.1 Clientes Cuando hablamos de un cliente nos referimos a una aplicación que se ejecuta en el equipo del usuario.1. Un componente es una unidad de software funcional e independiente que ha sido ensamblada dentro de una aplicación Java EE.2 Applets Un Applet es una pequeña aplicación cliente escrita en Java que se ejecuta en el navegador a través de una máquina virtual instalada en el navegador (por lo general es un plugin).Universidad Mariano Gálvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologías de la Información Cristian Calderón 3 Componentes Java EE Como habíamos mencionado una aplicación Java EE está dividida en componentes. Cabe destacar que una aplicación escrita en otro lenguaje también puede interactuar con un servidor Java EE. aplicaciones que se ejecutan locamente o bien plugin's o mini aplicaciones en el navegador. 3.1. 3 Todos los componentes son escritos en Java y son compilados de la misma forma que cualquier otro programa escrito en Java con la diferencia de que los componentes Java EE son ensamblados dentro de una aplicación. JavaServer Faces y JavaServer Pages que son componentes de la capa web y se ejecutan del lado del servidor. además estos son compilados y verificados según la especificación de Java EE. Los componentes que se definen en la especificación de Java EE son los siguientes:    Las aplicaciones del cliente y los Applets que corren del lado del cliente. Generalmente estas aplicaciones acceden directamente a la capa de negocio de la aplicación Java EE.

se encarga de procesar dichos datos y responder las peticiones que se le hacen. Vista: Es la presentación del modelo en un formato adecuado para que el usuario interactúe con la misma. 4. Controlador: Recibe datos e instrucciones de la Vista o de la misma aplicación. pero estos no son considerados componentes por la especificación Java EE. También incluye la infraestructura sobre la cual están montados dichos sistemas.3 Componentes de Negocios Son todos aquellos que conforman la lógica que soluciona las necesidades de un negocio en particular como operaciones bancarias. como ERPs. 4 Como desarrollar una aplicación Java EE Una vez que comprendemos como está conformada una aplicación Java EE. 3. y otros sistemas de información heredados. mainframes de procesamiento de transacciones. 4 3. ejecutándose en la capa de negocio.2 Componentes Web Los componentes web en Java EE son los Servlets o paginas creadas usando las tecnologías JavaServer Pages (JSP) y/o JavaServer Faces (JSF). Las paginas JSP son documentos de texto que se ejecutan como Servlets pero permiten aproximarse a una forma más natural para crear contenido estático. . estos son manejados por Enterprise Beans. y provee un framework de componentes para interfaces de usuario dentro de una aplicación web. sistemas de Bases de Datos.Universidad Mariano Gálvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologías de la Información Cristian Calderón 3. ventas o finanzas. Los Servlets son clases escritas en lenguaje Java que dinámicamente procesan solicitudes y generan respuestas. Las paginas HTML estáticas y los applets son construidos durante el ensamblaje de la aplicación. Opcionalmente en esta capa también podemos incluir ciertos JavaBeans como los ManagedBeans que nos van a permitir pre-procesar. Una breve descripción de estas partes seria:    Modelo: Es la representación de la información del sistema.1 MVC Modelo Vista Controlador es un patrón o modelo de abstracción de desarrollo de software que consiste en dividir una aplicación clásica en la cual diferenciamos la interfaz de usuario y la lógica del negocio en tres partes distintas. post-procesar y validar las solicitudes y respuestas del cliente antes de enviarlas.4 Capa de Sistemas de Información Empresarial Esta capa administra el software EIS. La tecnología JavaServer Faces se construye en base a Servlets y JSP. vamos a explicar de forma sencilla el proceso para construir una aplicación de tal forma que sea fácil de comprender.

Toda entidad tiene asociados ciertos metadatos que describen el mapeo. Diseñar las Vistas. Una vez mapeada una entidad puede ser manejada por medio de las API que nos provee Java EE. estos pasos generalmente son: 1. Estos metadatos pueden ser escritos de dos formas:   Anotaciones: Consiste en escribir ciertas palabras claves definidas en el paquete java. Realizar un mapeo objeto-relacional.1 Mapeo Objeto-Relacional: El principio de ORM es delegar a herramientas externas o frameworks (en el caso de Java EE a JPA) la tarea de crear una correspondencia entre objetos y tablas.2. La ventaja de mapear tablas en objetos es facilitar a los desarrolladores el trabajo con objetos y no con datos planos manejados en filas y columnas. La configuración por excepción consiste en definir reglas de mapeo por defecto (por ejemplo el nombre de la tabla es el mismo que el de la entidad). etc. 3. JPA usa el concepto de configuración por excepción.Universidad Mariano Gálvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologías de la Información Cristian Calderón Resulta básico comprender este patrón para facilitar la construcción una aplicación en Java EE. consultar entidades por medio de JPQl (Java Persistence Query Language). a diferencia de los objetos que solamente viven un corto periodo de tiempo en la memoria. Desarrollar una aplicación bajo el patrón MVC consiste básicamente en realizar una serie de pasos que nos facilitaran su construcción. esta API nos permite borrar. 2. relaciones. A continuación presentamos un código de ejemplo: . que consiste en a partir de una base de datos crear los modelos necesarios que representen las tablas o unidades de información que utilizaremos en la aplicación. 4. pueden ser concretas o abstractas. Cuando hablamos de entidades en Java EE tenemos que hablar de la Java Persistence API (JPA). Las entidades tienen la capacidad de poder ser mapeadas a una BD. soportar herencia. Con esto solo tendremos que modificar o realizar las anotaciones con las que no estemos satisfechos y dejar al proveedor de persistencia (puede ser otra API como JDBC) el resto. Desarrollar la lógica del negocio. en este paso vamos a crear todas los métodos y funciones que nos permitirán procesar de una forma adecuada las solicitudes del usuario. persistir. Descriptores XML: Consiste en describir el mapeo en un archivo XML independiente. Estos metadatos permiten que un proveedor de persistencia reconozca una entidad y la interpreta el mapeo.persistence directamente sobre el código de la entidad para describir el mapeo. 5 4. y hacer que las entidades persistan en la BD también cuando se solicite. Para facilitar el mapeo. las entidades además poseen la capacidad para persistir dentro de una Base de Datos. en este paso vamos a crear una interfaz que permita al usuario interactuar con la aplicación ya sea mostrando la información solicitada o permitiendo al usuario solicitar nueva información.2 Crear una Entidad y Java Persistence API (El Modelo) Una Entidad es un tipo especial de objeto.

como en el siguiente ejemplo: . Para crear un EJB necesitamos dos cosas bastante simples. Cabe destacar que un EJB consiste en un POJO (Plain Old Java Object. Las etiqueta @Table personaliza el nombre de la tabla si este no es igual al de la entidad. @Basic y @Column nos sirve para personalizar los atributos como podemos observar. este luego es desarrollado dentro de un contenedor. @GeneratedValue especifica cómo se generara el Id. métodos get y set } Toda entidad debe de tener la anotación @Entity para considerarse una. control de concurrencia. pooling de objetos y autorizaciones de seguridad. length=45) private String nombre.  Singleton: Un bean de sesión único es compartido entre los clientes y permite el acceso concurrente. que deben ser retenidos entre métodos para un solo usuario. primero una clase Java y segundo una anotación. @Id @GeneratedValue(strategy = GenerationType.  Stateful: El Bean de sesión contiene estados conversacionales. y cualquier instancia puede ser usada por cualquier cliente.Universidad Mariano Gálvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologías de la Información Cristian Calderón @Entity @Table(name="usuario") public class Usuario implements Serializable { private static final long serialVersionUID = 1L. Existen tres tipos de EJB  Stateless: El Bean de sesión no contiene estados conversacionales entre métodos.AUTO) @Basic(optional=false) @Column(name="id") private Integer id. //Constructores.3. 6 4.3 Crear un Enterprise JavaBean y los ManagedBean (El Controlador) 4.1 Enterprise JavaBean Los Enterprise JavaBean (EJB) son componentes del lado del servidor que encapsulan la lógica del negocio. Un contenedor EJB es un entorno en tiempo de ejecución que provee servicios como: manejo de transacciones. @Basic(optional=false) @Column(name="nick". que es un archivo simple con código Java) con las anotaciones necesarias. además manejan las transacciones y la seguridad. también debe implementar la interfaz Serializable y por ultimo tener al menos un atributo con la anotación @Id.

return "listUsuario. return usuario. id). consultas.xhtml".2 ManagedBeans Un ManagedBean es una clase Java especializada que sincroniza valores con componentes.class. setters } Una vez más nos topamos ante un POJO con una anotación. Luego si observamos también posee una anotación @EJB que hace referencia al Bean que se desea controlar. Un ManagedBean también puede manejar eventos como creación de entidades. } // Getters. public String crearUsuario() { usuario = usuarioEJB. public Usuario findUsuarioById(int id) { return em. 4. Por ultimo tenemos a una Entidad del tipo de Usuario y su respectivo método para hacerla persistir por medio del EJB. en este caso la anotación @ManagedBean.Universidad Mariano Gálvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologías de la Información Cristian Calderón @Stateless public class Usuario { @PersistenceContext(unitName = "aplicacionPU") private EntityManager em.find(Book.3. Por ultimo observamos dos métodos. Un ejemplo de un ManagedBean podría ser el siguiente: @ManagedBean public class UsuarioController { @EJB private UsuarioEJB usuarioEJB.xhtml.persist(usuario). esta unidad la podemos crear con un archivo XML manualmente o bien en el caso de NetBeans la creara por medio de un asistente. también tenemos que declarar un EntityManager (variable em) que nos servirá para manipular la entidad. private Usuario usuario = new Usuario(). Luego declaramos un contexto de persistencia @PersistenceContext con el nombre de la unidad de persistencia.createUsuario(usuario). etc. uno que nos permitirá buscar una entidad a partir de un id y el segundo que persistirá al usuario que le proporcionemos al EJB. 7 . la primera que es un EJB y la segunda que es un Bean de tipo Stateless. } public Usuario createUsuario(Usuario usuario) { em. procesos de la lógica de negocios y administra la navegación entre páginas. este método nos dirigirá a una vista en este caso listUsuario. } } Observamos primero la anotación @Stateless que nos define dos cosas.

org/1999/xhtml" xmlns:h="http://java. ya que son aplicaciones web estándar que interceptan mensajes HTTP a través de un Faces Servlet que genera código HTML. Una interfaz creada con JSF sería como la siguiente: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.selected.com/jsf/html"> <h:head> <title>Crear Nuevo usuario</title> </h:head> <h:body> <h1>Crear Nuevo usuario</h1> <hr/> <h:form> <h:panelGrid columns="2"> <h:outputLabel value="Codigo" for="id" /> <h:inputText id="id" value="#{usuarioController.create}" value="Guardar" /> <br /> <h:link outcome="/index" value="#{bundle.nick}" /> </h:panelGrid> <br /> <h:commandLink action="#{usuarioController. Una vista en JSF consiste en un archivo XHTML en el cual incluimos componentes que se mostraran al usuario y las propiedades de los mismos como conversores y validadores. Por ultimo solo restaría ensamblar los archivos por medio de alguna herramienta adecuada como NetBeans o algún otro IDE y subirlo al servidor de aplicaciones Java EE como GlassFish o Tomcat.id}" /> <h:outputLabel value="Nick" for="nick" /> <h:inputText id="nick" value="#{usuarioController. 8 .selected.4 Crear una interfaz con JSF (La Vista) La arquitectura JSF es bastante sencilla de entender.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.CreateUsuarioIndexLink}"/> </h:form> </h:body> </html> Como podemos notar no hay mucha diferencia con un archivo html a diferencia de las etiquetas que ahora son precedidas por una letra por ejemplo <h:body> que representa al grupo de componentes que pertenece.w3.sun. y los componentes propiamente como <h:inputText> que enlazan a un ManagedBean (usuarioController) ya sea una entidad o una acción del mismo. Estos componentes deben ser enlazados a un ManagedBean que posteriormente enlazara la vista con la capa de negocio y presentara los resultados en la misma vista u otra.Universidad Mariano Gálvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologías de la Información Cristian Calderón 4.