Download CAPITULO 4_T1 - Repositorio CISC

Document related concepts
no text concepts found
Transcript
106
CAPITULO 4
4. IMPLEMENTACIÓN DEL SISTEMA
4.1. Introducción
Este proyecto esta desarrollado en una arquitectura multicapa mediante el
estándar Java 2 Enterprice Edition o J2EE, con tecnologías como
JavaServers PagesTM JSP, Servlets Java Naming and Directory InterfaceTM
(JNDI), Enterprise JavaBeansTM, HTML, Struts, Hibernate, Apache Tomcat.
Se utilizo como herramienta de desarrollo el IDE Eclipse, IReports para
obtener reportes, todas ellas basadas en lenguaje Java.
El proyecto podrá ser ampliado con otras funciones, debido a que realizará
una minería de datos en la página Web. El diseño de la base de datos esta
orientado al enfoque relacional.
Las aplicaciones Web Java son parte de la arquitectura J2EE, con una
colección de recursos tales como: páginas JSP, servlets, archivos HTML,
imágenes, etc. todos ellos ubicados en un URI específico.
107
Esta colección de recursos esta organizada en una estructura jerárquica
básicamente de dos partes de directorios: uno privado que es WEB-INF y
otro público que contiene los recursos públicos como páginas JSP, etc.
Esta aplicación Web puede ser empaquetada en un archivo WAR (Web
Application Archive). Las ventajas principales de la utilización de estos
archivos son:
•
Multiplataforma.
•
Simplificación.
•
Seguridad.
Nuestra aplicación tiene su estructura de directorios que nos deja ver
claramente los componentes propuestos en el diseño.
Como gestor de base de datos se utilizó PostgreSQL 8.1, el cual también es
en software open source. Este SGBD tiene poca estabilidad con Windows, es
recomendable utilizarlo mejor en ambiente Unix, sin embargo sirvió en
nuestra aplicación de la mejor manera.
4.2. Estructura de directorios del proyecto
El proyecto ha sido estructurado manteniendo las clases privadas sin un
contacto directo del ambiente del sistema sino a través de clases objetos de
negocio BO, como objetos de acceso a datos DAO. Además la estructura de
misma nos permite la ocultación de la información, entre otras caracteristcas
ya mencionadas a lo largo de este documento.
108
La estructura de directorios de nuestra aplicación se muestra en la siguiente
figura:
Gráfico No.: 4.3
Título: Estructura de directorios
109
4.3. Herramientas y tecnologías utilizadas
A
continuación
se
dan
conceptos
y
explicaciones
de
algunas
herramientas y tecnologías utilizadas.
4.3.1. Java 2 Enterprise Edition J2EE
J2EE es una plataforma que habilita soluciones para desarrollo, uso efectivo
y manejo de multicapas en aplicaciones centralizadas en el servidor.
J2EE utiliza la plataforma Java 2 SE, para tender una completa, estable,
segura, y rápida plataforma Java en el ámbito de la empresa. Permite
ahorrar, porque habilita una plataforma que reduce de manera significativa
los costos y la complejidad de desarrollo de soluciones multicapas,
resultando en servicios que pueden ser desarrollados rápida y ampliados
fácilmente.
Es la edición empresarial del paquete Java creada y distribuida por Sun
Microsystems.
Comprenden
un
conjunto
de
especificaciones
y
funcionalidades orientadas al desarrollo de aplicaciones empresariales.
Debido a que J2EE no deja de ser un estándar, existen otros productos
desarrollados a partir de ella aunque no exclusivamente.
Algunas de sus funcionalidades más importantes son:
•
Acceso a base de datos (JDBC)
•
Utilizado por BEA, IBM, Oracle, Sun, y Apache Tomcat entre otros.
•
Utilización de directorios distribuidos (JNDI)
110
•
Acceso a métodos remotos (RMI/CORBA)
•
Funciones de correo electrónico (JavaMail)
•
Aplicaciones Web (JSP y Servlet)
•
Uso de Beans, etc.
La plataforma Java 2, Enterprise Edition (J2EE) es fruto de la colaboración
de SUN con los líderes del sector del software empresarial (IBM, Apple, Bea
Systems, Oracle, Inprise, Hewlett-Packard, Novell, etc.) para definir una
plataforma
robusta
y
flexible
orientada
a
cubrir
las
necesidades
empresariales en e-business y business-to-business.
Estos servicios necesitan ser:
•
Highly available: Alta disponibilidad, para percibir las necesidades de
hoy, en un ambiente global de negocios.
•
Secure: Seguridad, para proteger la privacidad de los usuarios y la
integridad de la empresa.
•
Reliable and scalable: Fiabilidad y escalabilidad, para asegurar que las
transacciones del negocio sean procesadas prontamente y con
precisión.
¿Qué tecnologías son incluidas en J2EE?
•
Enterprise JavaBeansTM
•
JavaServers PagesTM
111
•
Servlets
•
Java Naming and Directory InterfaceTM (JNDI)
•
Java Transaction API (JTA)
•
CORBA
•
API de acceso a datos JDBCTM.
•
JMS
•
RMI-IIOP
El ambiente de runtime de J2EE consta de las siguientes partes:
Componentes de la aplicación. El modelo de programación de J2EE define
cuatro tipos de componentes de la aplicación que un producto J2EE debe
soportar:
1) Clientes de la Aplicación, son programas creados en Java que son
generalmente programas GUI, que se ejecutan sobre una computadora
de escritorio. La aplicación cliente ofrece a un usuario una experimenta
similar al de las aplicaciones nativas, y tiene acceso a todos los medios
de la J2EE middle-tier.
2) Applet´s, GUI component que generalmente procesan un programa en un
web browser, pero pueden procesar una variedad de otras aplicaciones o
dispositivos que soportan el modelo de programación del applet. Las
Applets pueden ser usadas para proporcionar una poderosa interfaz de
usuario para las aplicaciones J2EE. (Simples páginas HTML se pueden
112
usar también para proporcionar una interfaz de usuario más limitada para
aplicaciones J2EE.)
3) Páginas Servlets y JSP generalmente procesan un programa en un
servidor Web y responden a las peticiones HTTP de los clientes Web. Las
páginas Servlets y JSP pueden ser utilizadas para que generen páginas
HTML que son aplicación de interfaz de usuario. Pueden también ser
usadas para generar XML u otro formato de datos que es consumido por
otros componentes de la aplicación. Servlets, y páginas creadas con la
tecnología JavaServer Pages, se refieren conjuntamente a menudo en
ésta especificación como "Web components, componentes web". Las
aplicaciones Web están compuestas de Web components y otros datos
tal como las páginas HTML.
4) Enterprise JavaBeans (EJB) components, procesan en un ambiente
controlado las transacciones soportadas. Enterprise beans generalmente
contienen la lógica del negocio por una aplicación J2EE.
4.3.2. Eclipse
Es un IDE multiplataforma libre para crear aplicaciones clientes de cualquier
tipo.
El proyecto Eclipse se divide en tres subproyectos:
113
El Core de la aplicación, que incluye el subsistema de ayuda, la plataforma
para trabajo colaborativo, el Workbench (construido sobre SWT y JFace) y el
Workspace para gestionar proyectos.
Java Development Toolkit (JDT), donde la contribución de Erich Gamma ha
sido fundamental.
Plug-in Development Enviroment (PDE), que proporciona las herramientas
para el desarrollo de nuevos módulos.
El entorno integrado de desarrollo (IDE) de Eclipse emplea módulos (en
inglés plug-in) para proporcionar toda su funcionalidad, a diferencia de otros
entornos monolíticos donde las funcionalidades están todas incluidas, las
necesite el usuario o no. El mecanismo de módulos permite que el entorno
de desarrollo soporte otros lenguajes además de Java. Por ejemplo, existe
un módulo para dar soporte a C/C++. Existen módulos para añadir un poco
de todo, desde Telnet hasta soporte a bases de datos.
Los componentes gráficos (widget) de Eclipse están basados en un juego de
herramientas de tercera generación para Java de IBM llamado SWT que
mejora los de primera y segunda generación de Sun (AWT y Swing,
respectivamente). La interfaz de usuario de Eclipse cuenta con una capa
intermedia de interfaz gráfica (GUI) llamada JFace, lo que simplifica la
creación de aplicaciones basadas en SWT.
114
La definición que da el proyecto Eclipse acerca de su software es: "una
especie de herramienta universal - un IDE abierto y extensible para todo y
nada en particular".
Gráfico No.: 4.1
Título: Interfaz de Eclipse 3.1
4.3.3. Apache Tomcat
Tomcat (también llamado Jakarta Tomcat o Apache Tomcat) funciona
como un contenedor de servlets desarrollado bajo el proyecto Jakarta en la
Apache Software Foundation. Tomcat implementa las especificaciones de los
servlets y de JavaServer Pages (JSP) de Sun Microsystems. Se le considera
un servidor de aplicaciones.
115
Tomcat es un servidor web con soporte de servlets y JSPs. Incluye el
compilador Jasper, que compila JSPs convirtiéndolas en servlets. El motor de
servlets de Tomcat a menudo se presenta en combinación con el servidor
web Apache.
Dado que Tomcat fue escrito en Java, funciona en cualquier sistema
operativo que disponga de la máquina virtual.
Estructura de directorios
La jerarquía de directorios de instalación de Tomcat incluye:
•
bin.- Arranque, cierre, y otros scripts y ejecutables
•
common.- Cclases comunes que pueden utilizar Catalina y las
aplicaciones web
•
conf.-
Ficheros
XML
y
los
correspondientes
DTDs
configuración de Tomcat
•
logs.- Logs de Catalina y de las aplicaciones
•
server.- Clases utilizadas solamente por Catalina
•
shared.- Clases compartidas por todas las aplicaciones web
•
webapps.- Directorio que contiene las aplicaciones web
•
work.- Almacenamiento temporal de ficheros y directorios
para
la
116
Gráfico No.: 4.2
Titulo: Interfaz de Apache Tomcat
4.3.4. Java Servlets Pages JSP
Los JSPs son en realidad servlets: un JSP se compila a un programa en Java
la primera vez que se invoca, y del programa en Java se crea una clase que
se empieza a ejecutar en el servidor como un servlet. La principal diferencia
entre los servlets y los JSPs es el enfoque de la programación: un JSP es
una página Web con etiquetas especiales y código Java incrustado, mientras
que un servlet es un programa que recibe peticiones y genera a partir de
ellas una página web
117
Gráfico No.:
Título: Funcionamiento de JSP
Ambos necesitan un programa que los contenga, y sea el que envíe
efectivamente páginas web al servidor, y reciba las peticiones, las distribuya
entre los servlets, y lleve a cabo todas las tareas de gestión propias de un
servidor web. Mientras que servidores como el Apache están especialmente
pensados para páginas web estáticas CGIs, y programas ejecutados por el
servidor, tales como el PHP, hay otros servidores específicos para servlets y
JSPs llamados contenedores de servlets (servlet containers) o servlet
engines.
118
4.3.5. Struts
Es una herramienta de soporte para el desarrollo de aplicaciones Web bajo el
patrón MVC bajo la plataforma J2EE (Java 2, Enterprise Edition). Struts se
desarrollaba como parte del proyecto Jakarta de la Apache Software
Foundation, pero actualmente es un proyecto independiente conocido como
Apache Struts.
Struts permite reducir el tiempo de desarrollo. Su carácter de "software libre"
y su compatibilidad con todas las plataformas en que Java Entreprise esté
disponible, lo convierte en una herramienta altamente disponible.
Funcionamiento de Struts
Struts se basa en el patrón del Modelo Vista Controlador (MVC) el cual se
utiliza ampliamente y es considerado de gran solidez. De acuerdo con este
modelo, el procesamiento se separa en tres secciones diferenciadas,
llamadas el modelo, las vistas y el controlador.
Cuando se programan aplicaciones Web con el patrón MVC, siempre surge
la duda de usar un solo controlador o usar varios controladores, pues si
consideramos mejor usar un solo controlador para tener toda nuestra lógica
en un mismo lugar, nos encontramos con un grave problema, ya que nuestro
controlador se convierte en lo que se conoce como "fat controller", es decir
un controlador saturado de peticiones, Struts surge como la solución a este
problema ya que implementa un solo controlador (ActionServlet) que evalúa
119
las peticiones del usuario mediante un archivo configurable (strutsconfig.xml).
Componentes del modelo
Corresponden a la lógica del negocio con el cual se comunica la aplicación
web. Usualmente el modelo comprende accesos a Bases de Datos o
sistemas que funcionan independientemente de la aplicación web .
Componentes del control
Los componentes de control son los encargados de coordinar las actividades
de la aplicación, que van desde la recepción de datos del usuario, las
verificaciones de forma y la selección de un componente del modelo a ser
llamado. Por su parte los componentes del modelo envían al control sus
eventuales resultados o errores de manera de poder continuar con otros
pasos de la aplicación.
Esta separación simplifica enormemente la escritura tanto de vistas como de
componentes del modelo: Las páginas JSP no tienen que incluir manejo de
errores, mientras que los elementos del control simplemente deciden sobre el
paso siguiente a seguir.
Entre las características de Struts se pueden mencionar:
Configuración del control centralizada.
Interrelaciones entre Acciones y página u otras acciones se especifican por
tablas XML en lugar de codificarlas en los programas o páginas.
120
Componentes de aplicación, que son el mecanismo para compartir
información bidireccionalmente entre el usuario de la aplicación y las
acciones del modelo.
Librerías de entidades para facilitar la mayoría de las operaciones que
generalmente realizan las páginas JSP.
Struts contiene herramientas para validación de campos de plantillas bajo
varios esquemas que van desde validaciones locales en la página (en
javaScript) hasta las validaciones de fondo hechas a nivel de las acciones.
Struts permite que el desarrollador se concentre en el diseño de aplicaciones
complejas como una serie simple de componentes del Modelo y de la vista
intercomunicados por un control centralizado. Diseñando de esta manera se
debe obtener una aplicación más consistente y más fácil de mantener.
121
4.4. Glosario de Términos
A continuación se definen algunos términos utilizados en este documento.
Actor.- Rol que un usuario juega con respecto al sistema. Es importante
destacar el uso de la palabra rol, pues con esto se especifica que un Actor no
necesariamente representa a una persona en particular, sino más bien la
labor que realiza frente al sistema.
Asociación.- Es el tipo de relación más básica que indica la invocación
desde un actor o caso de uso a otra operación (caso de uso). Dicha relación
se denota con una flecha simple.
Apache Tomcat.- Se lo considera un servidor de aplicaciones, funciona
como un contenedor de servlets desarrollado bajo el Proyecto Yakarta en al
Apache Software foundation, implementa las especificaciones de los servlets
y de los java Server pages (JSP).
Applet.- Un componente que se ejecuta generalmente en un Web browser,
pero puede ser ejecutado en una variedad de otras aplicaciones o
dispositivos que soporten el modelo de programación del applet.
Applet container.- Un contenedor que incluye soporte para el applet
programming model.
Application.- Una aplicación Java es un programa hecho en java y que
generalmente se ejecuta en la maquina donde se encuentra el inicio del
código. Tiene el mismo sentido que un programa en lenguaje C u otro
lenguaje.
122
Base de datos.- Conjunto de datos que pertenecen al mismo contexto
almacenados sistemáticamente para su posterior uso.
Campo.- Un elemento inconstante de una determinada clase.
Casos de Uso.- Representa la forma en como un Cliente (Actor) opera con el
sistema en desarrollo, además de la forma, tipo y orden en como los
elementos interactúan.
Corba.- Corba es el acrónimo de Common Object Request Broker
Arquitecture. CORBA es una especificación, abierta y no dependiente de
ninguna empresa, para una arquitectura e infraestructura orientada a que las
aplicaciones informáticas puedan trabajar juntas a través de las redes de
comunicaciones. Los programas basados en CORBA pueden interactuar
unos con otros, independientemente de la compañía que los haya creado, del
ordenador y sistema operativo sobre el que corran, del tipo de red y del
lenguaje de programación en que hayan sido escritos.
Datos.- Son los hechos que describen sucesos y entidades.
Dependencia o Instanciación.- Es una forma muy particular de relación
entre clases, en la cual una clase depende de otra, es decir, se instancia (se
crea). Dicha relación se denota con una flecha punteada.
Diagrama de Clases.- Sirve para visualizar las relaciones entre las clases
que involucran el sistema.
123
Generalización.-Este tipo de relación es uno de los más utilizados, cumple
una doble función dependiendo de su estereotipo, que puede ser de Uso
(uses) o de Herencia (extends).
EAR file.- Un archivo JAR que contiene una aplicación J2EE.
EJB JAR file.- Un archivo JAR que contiene un módulo EJB.
Enterprise
JavaBeansTM
(EJBTM).-
Enterprise
JavaBeans
es
la
arquitectura de componentes de la parte de servidor para la plataforma J2EE.
EJB posibilita el desarrollo rápido y simplificado de aplicaciones Java
distribuidas, transaccionales y seguras.
E-commerce.- Referido a aplicaciones que permiten transacciones e
interacciones entre la compañía y el consumidor sobre Internet. También
llamadas aplicaciones Business-To-Consumer (B2C)
E-business.- Referido a aplicaciones que permiten transacciones e
interacciones entre la compañía y sus proveedores sobre Internet. También
llamadas aplicaciones Business-To-Business (B2B).
E-enterprise.- Referido a aplicaciones que permiten la gestión no sólo de
clientes y proveedores a través de Internet, sino también todos los procesos
internos de la compañía, incluyendo funciones de backoffice y transacciones
con partners externos.
Extends.- Se recomienda utilizar cuando un caso de uso es similar a otro en
sus características.
124
Flash.- Se refiere tanto al programa de edición multimedia como a
Macromedia Flash Player, utiliza gráficos vectoriales e imágenes ráster,
sonido, código de programa, flujo de vídeo y audio bidireccional.
Hibernate.- Mapeador Objeto-Relacional ORM de código abierto.
HTML.- Hypertext Markup Language. Un lenguaje de marcas para los
documentos con hipervínculos de Internet. HTML enables the embedding of
images, sounds, video streams, form fields, references to other objects with
URLs and basic text formatting.
HTTP.- Hypertext Transfer Protocol. The Internet protocol used for
communication between clients and servers. HTTP messages consist of
requests from client to server and responses from server to client.
Ireports.- Programa para realizar reportes de transacciones, procesos o
consultas generales.
Información.- Es un conjunto de datos significativos y pertinentes que
describan sucesos o entidades.
Java Server Pages.- La tecnología Java Server Pages (JSP) permite a los
diseñadores y desarrolladores de sitios web crear rápidamente y mantener
de manera sencilla las páginas web dinámicas, ricas en información sobre las
que se basan los sistemas de negocio. Como parte de la familia Java, la
tecnología JSP posibilita el desarrollo de aplicaciones basadas en web que
son independientes de la plataforma usada. La tecnología JSP separa la
interface de usuario de la generación de contenidos, permitiendo a los
125
diseñadores cambiar el formato de la página sin alterar el contenido dinámico
subyacente.
JDBC.- La tecnología JDBC (Java DataBase Connectivity) es una interface
de programación de aplicaciones (API) que permite acceder, desde el
lenguaje de programación Java, a virtualmente cualquier fuente de datos
tabulados. Proporciona conectividad cruzada DBMS a un amplio rango de
bases de datos SQL, así como otras fuentes de datos tabulados, como hojas
de cálculo o simples ficheros.
JDK.- Java Development Kit, es el antiguo nombre del SDK. El JDK se
renombro a SDK después de la versión 1.2.2.
J2EE.- JavaTM 2 Enterprise Edition.
J2SE.- JavaTM 2, Standard Edition.
JRE.- Java Runtime Environement, es el kit destinado al cliente para poder
ejecutar un programa java. Esencialmente esta compuesto de una Maquina
Virtual Java (JVM) capaz de ejecutar el byte-code y las bibliotecas
estándares de java.
JavaServer Pages (JSP).. en el campo de la Informática, es una tecnología
para crear aplicaciones web. Es un desarrollo de la compañía Sun
Microsystems, y su funcionamiento se basa en scripts, que utilizan una
variante del lenguaje java.
Métodos.- Los métodos u operaciones de una clase son la forma en como
ésta interactúa con su entorno.
126
Macromedia.- Editor de páginas Web, creado por Macromedia (actualmente
Adobe Systems, el cual va por la versión 8.02. Es el programa de este tipo
más utilizado en el sector del diseño y la programación Web, por sus
funcionalidades y su fácil integración con otras herramientas.
Open Source.- Código abierto (del inglés open source) es el término por el
que se conoce al software distribuido y desarrollado en forma libre.
Public.- Indica que el método será visible tanto dentro como fuera de la
clase, es decir, es accesible desde todos lados.
Private.- Indica que el método sólo será accesible desde dentro de la clase
(sólo otros métodos de la clase lo pueden accesar)Java.- Lenguaje de
programación con el que podemos realizar cualquier tipo de programa.
PostgreSQL. Servidor de base de datos relacional libre, liberado bajo la
licencia BSD. Es una alternativa a otros sistemas de bases de datos de
código abierto (como MySQL, Firebird y MaxDB), así como sistemas
propietarios como Oracle o DB2.
WAR file.- Es un archivo JAR que contiene módulos Web.
Web component.- Es un componente que proporciona servicios en
respuesta a peticiones. En Java se hace por medio de servlets y Páginas
JSP.
Servlet.- Un Servlet se puede considerar como un Applet pero del lado del
servidor. Un Servlet da funcionalidades a un servicio Web.
127
SDK.- Standar Development Kit, es el kit destinado al programador, esta
compuesto de un JRE, de un compilador y de varios programas útiles,
ejemplos de programas java y el código de todas las clases del API.
Sistemas de Información.- conjunto de elementos que interactúan entre sí
con el fin de apoyar las actividades de una empresa o negocio.
XML.- eXtensible Markup Language. Un lenguaje de marcas que permite
definir los tags (markup) necesarios para definir los datos y los textos en un
documento XML.