Vous êtes sur la page 1sur 8

Universidad Mariano Glvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologas de la Informacin Cristian Caldern

Desarrollo rpido de Aplicaciones Empresariales con Java EE y NetBeans


1 Qu es Java EE?
Java EE o Java Enterprise Edition (Java Edicin Empresarial) es una plataforma de desarrollo basada en el lenguaje de programacin 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 problemtica de grandes empresas. Tenemos que tomar en cuenta que una aplicacin empresarial no solo beneficiara a grandes organizaciones, sino tambin a organizaciones ms pequeas e incluso individuales debido a la dinmica de informacin actual. Desde un punto de vista ms tcnico podemos decir que la plataforma Java EE nos provee de un conjunto de API's que nos facilitan la creacin y desarrollo de una aplicacin que contenga todos los estndares necesarios en la industria.

2 Modelo de una Aplicacin 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 implementacin en dos partes: La implementacin de la lgica del negocio y la presentacin de la aplicacin que debe ser realizada por los desarrolladores. Los servicios estndar del sistema que sern provedos por Java EE, entre estos servicios estndar podemos incluir a todas las funciones que normalmente posee una aplicacin 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 aplicacin Java EE est compuesta por capas, esta a su vez se divide en componentes de acuerdo a su funcin, estos componentes pueden estar distribuidos en distintas maquinas dependiendo de la capa a la cual pertenezcan dentro de una aplicacin de N capas. Una aplicacin Java EE puede consistir en 3 o 4 capas, aunque generalmente son consideradas de 3 capas debido a que estn distribuidas en tres lugares diferentes que son: la maquina cliente, un servidor de aplicaciones Java EE y una base de datos.

Universidad Mariano Glvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologas de la Informacin Cristian Caldern A continuacin describiremos cuales son estas capas: 1. 2. 3. 4. Capa del Cliente: sus componentes corren en la mquina del cliente. Capa Web: sus componentes corren sobre el servidor Java EE. Capa de Negocio: sus componentes tambin corren sobre el servidor Java EE. Capa de sistemas de informacin empresarial (EIS por sus siglas en ingls): que es el software que corre sobre un servidor EIS (Bases de Datos, Data Center, ERP, Sistemas Antiguos, etc.). 2

Ilustracin 1: Modelo de Aplicacin Java EE

Universidad Mariano Glvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologas de la Informacin Cristian Caldern

3 Componentes Java EE
Como habamos mencionado una aplicacin Java EE est dividida en componentes. Un componente es una unidad de software funcional e independiente que ha sido ensamblada dentro de una aplicacin Java EE. Los componentes que se definen en la especificacin de Java EE son los siguientes: Las aplicaciones del cliente y los Applets que corren del lado del cliente. Java Servlet, JavaServer Faces y JavaServer Pages que son componentes de la capa web y se ejecutan del lado del servidor. Enterprise JavaBeans que son componentes de la lgica de negocio que tambin se ejecutan del lado del servidor.

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 aplicacin, adems estos son compilados y verificados segn la especificacin de Java EE.

3.1 Clientes
Cuando hablamos de un cliente nos referimos a una aplicacin que se ejecuta en el equipo del usuario, estos por lo general suelen ser navegadores web, aplicaciones que se ejecutan locamente o bien plugin's o mini aplicaciones en el navegador. 3.1.1 Clientes Web Cuando hablamos de un cliente web tenemos que tener en consideracin que estos estn conformados por las pginas web escritas en cualquier lenguaje de marcado como HTML y XML por ejemplo, todas estas son generadas por los componentes que corren en la capa web del servidor; y el navegador web propiamente dicho, que es el encargado de interpretarlas y mostrarlas al usuario. A veces a estos clientes se les suele llamar thin clients o clientes ligeros, debido a que no ejecutan consultas SQL o alguna funcin de la lgica del negocio. 3.1.2 Applets Un Applet es una pequea aplicacin cliente escrita en Java que se ejecuta en el navegador a travs de una mquina virtual instalada en el navegador (por lo general es un plugin). 3.1.3 Aplicaciones Cliente Una aplicacin cliente se ejecuta en el ordenador del usuario, estas proveen una interfaz ms rica para realizar las tareas de los usuarios que la que nos podra brindar un lenguaje de marcado. Generalmente estas aplicaciones acceden directamente a la capa de negocio de la aplicacin Java EE. Tambin si es necesario estas pueden abrir una conexin HTTP e interactuar con los servlet de la capa web. Cabe destacar que una aplicacin escrita en otro lenguaje tambin puede interactuar con un servidor Java EE.

Universidad Mariano Glvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologas de la Informacin Cristian Caldern

3.2 Componentes Web


Los componentes web en Java EE son los Servlets o paginas creadas usando las tecnologas JavaServer Pages (JSP) y/o JavaServer Faces (JSF). Los Servlets son clases escritas en lenguaje Java que dinmicamente procesan solicitudes y generan respuestas. Las paginas JSP son documentos de texto que se ejecutan como Servlets pero permiten aproximarse a una forma ms natural para crear contenido esttico. La tecnologa JavaServer Faces se construye en base a Servlets y JSP, y provee un framework de componentes para interfaces de usuario dentro de una aplicacin web. Opcionalmente en esta capa tambin podemos incluir ciertos JavaBeans como los ManagedBeans que nos van a permitir pre-procesar, post-procesar y validar las solicitudes y respuestas del cliente antes de enviarlas. Las paginas HTML estticas y los applets son construidos durante el ensamblaje de la aplicacin, pero estos no son considerados componentes por la especificacin Java EE.

3.3 Componentes de Negocios


Son todos aquellos que conforman la lgica que soluciona las necesidades de un negocio en particular como operaciones bancarias, ventas o finanzas, estos son manejados por Enterprise Beans, ejecutndose en la capa de negocio.

3.4 Capa de Sistemas de Informacin Empresarial


Esta capa administra el software EIS, como ERPs, mainframes de procesamiento de transacciones, sistemas de Bases de Datos, y otros sistemas de informacin heredados. Tambin incluye la infraestructura sobre la cual estn montados dichos sistemas.

4 Como desarrollar una aplicacin Java EE


Una vez que comprendemos como est conformada una aplicacin Java EE, vamos a explicar de forma sencilla el proceso para construir una aplicacin de tal forma que sea fcil de comprender.

4.1 MVC
Modelo Vista Controlador es un patrn o modelo de abstraccin de desarrollo de software que consiste en dividir una aplicacin clsica en la cual diferenciamos la interfaz de usuario y la lgica del negocio en tres partes distintas. Una breve descripcin de estas partes seria: Modelo: Es la representacin de la informacin del sistema. Vista: Es la presentacin del modelo en un formato adecuado para que el usuario interacte con la misma. Controlador: Recibe datos e instrucciones de la Vista o de la misma aplicacin, se encarga de procesar dichos datos y responder las peticiones que se le hacen.

Universidad Mariano Glvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologas de la Informacin Cristian Caldern Resulta bsico comprender este patrn para facilitar la construccin una aplicacin en Java EE. Desarrollar una aplicacin bajo el patrn MVC consiste bsicamente en realizar una serie de pasos que nos facilitaran su construccin, estos pasos generalmente son: 1. Realizar un mapeo objeto-relacional, que consiste en a partir de una base de datos crear los modelos necesarios que representen las tablas o unidades de informacin que utilizaremos en la aplicacin. 2. Desarrollar la lgica del negocio, en este paso vamos a crear todas los mtodos y funciones que nos permitirn procesar de una forma adecuada las solicitudes del usuario, y hacer que las entidades persistan en la BD tambin cuando se solicite. 3. Disear las Vistas, en este paso vamos a crear una interfaz que permita al usuario interactuar con la aplicacin ya sea mostrando la informacin solicitada o permitiendo al usuario solicitar nueva informacin. 5

4.2 Crear una Entidad y Java Persistence API (El Modelo)


Una Entidad es un tipo especial de objeto, a diferencia de los objetos que solamente viven un corto periodo de tiempo en la memoria, las entidades adems poseen la capacidad para persistir dentro de una Base de Datos. Las entidades tienen la capacidad de poder ser mapeadas a una BD, pueden ser concretas o abstractas, soportar herencia, relaciones, etc. Una vez mapeada una entidad puede ser manejada por medio de las API que nos provee Java EE. Cuando hablamos de entidades en Java EE tenemos que hablar de la Java Persistence API (JPA), esta API nos permite borrar, persistir, consultar entidades por medio de JPQl (Java Persistence Query Language). 4.2.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. 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. Toda entidad tiene asociados ciertos metadatos que describen el mapeo. Estos metadatos permiten que un proveedor de persistencia reconozca una entidad y la interpreta el mapeo. Estos metadatos pueden ser escritos de dos formas: Anotaciones: Consiste en escribir ciertas palabras claves definidas en el paquete java.persistence directamente sobre el cdigo de la entidad para describir el mapeo. Descriptores XML: Consiste en describir el mapeo en un archivo XML independiente.

Para facilitar el mapeo, JPA usa el concepto de configuracin por excepcin. La configuracin por excepcin consiste en definir reglas de mapeo por defecto (por ejemplo el nombre de la tabla es el mismo que el de la entidad). 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. A continuacin presentamos un cdigo de ejemplo:

Universidad Mariano Glvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologas de la Informacin Cristian Caldern @Entity @Table(name="usuario") public class Usuario implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Basic(optional=false) @Column(name="id") private Integer id; @Basic(optional=false) @Column(name="nick", length=45) private String nombre; //Constructores, mtodos get y set } Toda entidad debe de tener la anotacin @Entity para considerarse una, tambin debe implementar la interfaz Serializable y por ultimo tener al menos un atributo con la anotacin @Id. Las etiqueta @Table personaliza el nombre de la tabla si este no es igual al de la entidad, @GeneratedValue especifica cmo se generara el Id, @Basic y @Column nos sirve para personalizar los atributos como podemos observar. 6

4.3 Crear un Enterprise JavaBean y los ManagedBean (El Controlador)


4.3.1 Enterprise JavaBean Los Enterprise JavaBean (EJB) son componentes del lado del servidor que encapsulan la lgica del negocio, adems manejan las transacciones y la seguridad. Cabe destacar que un EJB consiste en un POJO (Plain Old Java Object, que es un archivo simple con cdigo Java) con las anotaciones necesarias, este luego es desarrollado dentro de un contenedor. Un contenedor EJB es un entorno en tiempo de ejecucin que provee servicios como: manejo de transacciones, control de concurrencia, pooling de objetos y autorizaciones de seguridad. Existen tres tipos de EJB Stateless: El Bean de sesin no contiene estados conversacionales entre mtodos, y cualquier instancia puede ser usada por cualquier cliente. Stateful: El Bean de sesin contiene estados conversacionales, que deben ser retenidos entre mtodos para un solo usuario. Singleton: Un bean de sesin nico es compartido entre los clientes y permite el acceso concurrente. Para crear un EJB necesitamos dos cosas bastante simples, primero una clase Java y segundo una anotacin, como en el siguiente ejemplo:

Universidad Mariano Glvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologas de la Informacin Cristian Caldern @Stateless public class Usuario { @PersistenceContext(unitName = "aplicacionPU") private EntityManager em; public Usuario findUsuarioById(int id) { return em.find(Book.class, id); } public Usuario createUsuario(Usuario usuario) { em.persist(usuario); return usuario; } } Observamos primero la anotacin @Stateless que nos define dos cosas, la primera que es un EJB y la segunda que es un Bean de tipo Stateless. Luego declaramos un contexto de persistencia @PersistenceContext con el nombre de la unidad de persistencia, esta unidad la podemos crear con un archivo XML manualmente o bien en el caso de NetBeans la creara por medio de un asistente; tambin tenemos que declarar un EntityManager (variable em) que nos servir para manipular la entidad. Por ultimo observamos dos mtodos, uno que nos permitir buscar una entidad a partir de un id y el segundo que persistir al usuario que le proporcionemos al EJB. 4.3.2 ManagedBeans Un ManagedBean es una clase Java especializada que sincroniza valores con componentes, procesos de la lgica de negocios y administra la navegacin entre pginas. Un ManagedBean tambin puede manejar eventos como creacin de entidades, consultas, etc. Un ejemplo de un ManagedBean podra ser el siguiente: @ManagedBean public class UsuarioController { @EJB private UsuarioEJB usuarioEJB; private Usuario usuario = new Usuario(); public String crearUsuario() { usuario = usuarioEJB.createUsuario(usuario); return "listUsuario.xhtml"; } // Getters, setters } Una vez ms nos topamos ante un POJO con una anotacin, en este caso la anotacin @ManagedBean. Luego si observamos tambin posee una anotacin @EJB que hace referencia al Bean que se desea controlar. Por ultimo tenemos a una Entidad del tipo de Usuario y su respectivo mtodo para hacerla persistir por medio del EJB, este mtodo nos dirigir a una vista en este caso listUsuario.xhtml. 7

Universidad Mariano Glvez de Guatemala Centro Universitario de Quetzaltenango Seminario de Tecnologas de la Informacin Cristian Caldern

4.4 Crear una interfaz con JSF (La Vista)


La arquitectura JSF es bastante sencilla de entender, ya que son aplicaciones web estndar que interceptan mensajes HTTP a travs de un Faces Servlet que genera cdigo HTML. 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. 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. Una interfaz creada con JSF sera como la siguiente: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.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.selected.id}" /> <h:outputLabel value="Nick" for="nick" /> <h:inputText id="nick" value="#{usuarioController.selected.nick}" /> </h:panelGrid> <br /> <h:commandLink action="#{usuarioController.create}" value="Guardar" /> <br /> <h:link outcome="/index" value="#{bundle.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, y los componentes propiamente como <h:inputText> que enlazan a un ManagedBean (usuarioController) ya sea una entidad o una accin del mismo. Por ultimo solo restara ensamblar los archivos por medio de alguna herramienta adecuada como NetBeans o algn otro IDE y subirlo al servidor de aplicaciones Java EE como GlassFish o Tomcat.

Vous aimerez peut-être aussi