Home
Temas
Preguntas
Webs Amigas

Tecnología y Cultura
Sexo y Religión


Derechos Animales
Fotos Naturaleza
Ecología y Filosofía

Copyleft
Licencia de Creative Commons
Temas >> Tecnologías del Servidor
Por Ricardo Araos
Jakarta
Jakarta es un nuevo paso dentro del desarrollo de la tecnología orientada a software de construcción de sitios web. Patrocinada por Apache.org, la misma que desarrolla el servidor web Apache, Jakarta entrega potentes soluciones basadas en el lenguaje Java y que, debido a su calidad e integración entre ellas, se alzan como una buena opción para utilizar software de calidad comercial para desarrollar aplicaciones.

Jakarta está compuesto por varios subproyectos que dan soluciones a problemas en particular. Entre estos está Tomcat que es un servidor web que permite la programación en servlets y jsp y que viene a reemplazar al antiguo proyecto JServ (que en el fondo era un módulo agregado a Apache). También está el proyecto James, consistente en un completo servidor mail que soporta la mayoria de los protocolos para servicios de correo. En total, Jakarta consiste de 21 subproyectos, a finales del 2001, que iré explicando en este documento.

Por lo tanto, Jakarta no es un software en si mismo, sino que más bien se puede ver como un proyecto de proyectos, un repositorio. Uno no baja Jakarta para instalarlo en nuestro sistema operativo (los dos sistemas operativos para los que está portado con Unix y Windows) sino que baja proyectos que lo conforman y que satisfacen nuestran necesidades. Por ejemplo, si se necesita un servidor web para nuestros programas en servlets y JSP, pues necesitamos Tomcat. Si necesitamos, como empresa productora de software, un sistema que nos ayude a mantener nustras versiones de software, y mantener la documentación pues bajamos Alexandria. Si necesitamos mandar mail bajamos James. Si necesitamos ocupar las benditas expresiones regulares que tan fácil nos sale con Perl nos bajamos ORO o Regexp y lo echamos a andar. El software de cada proyecto es, por lo general, autónomo, y si no lo es pues lo más común es que necesitemos de Tomcat. Pero ni siquiera esto es tan frecuente porque cada proyecto es dependiente de Java (está programado y funciona en base a ello) pero no de otros proyectos, porque una de las ideas de Jakarta es ser modular y funcionar más como componentes de software.

Luego, ¿Qué necesitamos saber para funcionar con proyecto de Jakarta? Pues bajarnos el software desde http://jakarta.apache.org , leernos los README (como para cualquier cosa) e instalarlo más algunas pequeñas configuraciones. El resto de la calidad de nuestro software corre por cuenta nuestra, además que en caso que necesitemos actualizarnos pues Jakarta es un proyecto muy vivo que continuamente lanza nuevos releases.

Jakarta nace del desarrollo de soporte para las tecnologías Java que venia soltando Sun orientadas al mundo web. Estas tecnologías conocidas como Java Servlets y JSP eran la respuesta de Sun a los lenguajes y plataformas de desarrollo como CGI-Perl, ColdFusion, ASP, PHP, etc. que, junto a los motores de base de datos, permiten la creación de aplicaciones web. Sun ofrecia estas respuestas basadas en Java con las ventajas de permitir el desarrollo de aplicaciones web utilizando orientación a objetos más la oportunidad de separar las capas lógicas de la de despliegue y una fácil adaptabilidad a los distintos motores de base de datos utilizando JDBC como capa intermedia entre las aplicaciones web y los datos.

Todo esto sucedía mientras Apache.org ya era conocida y muy utilizada debido a su servidor web Apache, que estaba creciendo muy rápido en el mercado gracias a su política Open Source y a que tenía un muy buen perfomance en el sistema operativo Linux, otro bastión del Open Source y de las licencias GNU.

Por lo tanto, la gente de Apache y la comunidad que la ocupaba vió la necesidad de, alguna manera, integrar las soluciones Servlet y JSP al servidor web por lo que nació JServ, que era un módulo aparte a Apache y que, agregándose, se podía ejecutar aplicaciones programadas en estos lenguajes.

Pero Java es un lenguaje orientado a objetos de gran uso en la actualidad. Además, se estaba viendo que muchas soluciones se repetian en las aplicaciones para Internet, por lo que aprovechando el poder la orientación a objetos, la popularidad de Java dentro de los programadores, a la reutilización de código se llegó a la decisión de crear un proyecto independiente, libre, donde se pudieran integrar todas estas soluciones fácilmente aumentando el poder y la rapidez en el desarrollo de aplicaciones. La idea era mantener un orden ya que esto mejoraba la calidad de las aplicaciones, permitian una mejor mantención y escalibilidad. Las licencias garantizaban acceso al código fuente y economizaban las soluciones, siendo ambas grandes ventajas comparadas, por ejemplo, a las soluciones provistas por Microsoft o inclusive por la misma Sun (recordar que Java es propiedad de Sun).

Y es esa fuerza y creatividad lo que le da vida a Jakarta que lo convertido en un software de rápido crecimiento y uso dentro de la comunidad de programadores. Ofrece a Tomcat como una buena alternativa de servidor web a, por ejemplo, Caucho Resin. O a James como una alternativa gratis a JavaMail de Sun. O a tener al mismo Tomcat como ganador del año 2001 del JavaWorld 2001 Editors' Choice Awards en la categoria Most Innovative Java Product y tener a Xalan como finalista Best Java-XML Technology .

Alexandria

Su finalidad es la de servir como una controlador de versiones (CVS), fuente de código y manejo de la documentación (que puede ser generada mediante javadoc u otros). Es decir, es un proyecto orientado al uso dentro del equipo de desarrollo, mejorando el control del proyecto, manejando las distintas versiones que se generan al dividir el proyecto en distintas personas, y mantiendo una documentación global que sirva tanto para el equipo como para clientes. Además, esto permite a las personas entender el código fuente y compartir código entre proyectos.

Alexandria ocupa XML como lenguaje para la configuración de su uso. Los distintos archivos que Alexandria genera por los proyectos están en XML también, para ser transformados en XSLT y luego en HTML para su despliegue.

Según lo que se quiera hacer Alexandria permite la definición de espacios de trabajo, de repositorios usados dentro de los espacios de trabajo y de proyectos dentro de un espacio de trabajo. Todos ellos, como dije anteriormente, son archivos XML que tienen que seguir una DTD específica.

Ant

Este es un proyecto cuyo objetivo es funcionar como una herramienta de construcción, es decir, de apoyar la compilación o generación de código executable o precompilado. Es decir, una herramienta del mismo estilo que make y todos sus primos, sean GNU o no (como el make que viene con las herramientas de Borland). Pero ¿Cuál es la ventaja de Ant frente a estas herramientas mencionadas siendo que estas son muy conocidas, de mucho tiempo de uso y poderosas? Pues, que todas estas herramientas son demasiado dependientes del sistema operativo en la cual existen. Y esto porque ofrecen son capaces de invocar comandos de la shell del sistema operativo, lo que les da mucho poder pero los limita solamente a funcionar en ellos. Es decir, no hay portabilidad. Por lo que Ant prefiere sacrificar esto por la ventaja de poder funcionar en cualquier sistema operativo debido a que funciona bajo Java.

Además, la sintáxis de todas estas herramientas son muy engorrosas, lo que quita mucho tiempo a la creación de los Makefiles (bueno, existe autoconf y automake, pero luego hay que aprender la sintáxis de estos, lo que tampoco es conveniente). Pero Ant ofrece una sintáxis clara en XML lo que lo hace más usable que sus predecesores.

Este es uno de los grandes subproyectos que conforman Jakarta. Consiste en un marco de desarrollo de aplicaciones donde el objetivo es permitir compartir los distintos recursos como código, recursos humanos, diseño, etc. y evitar duplicación de esfuerzos. Es decir, es la herramienta ideal para un jefe de proyectos que quiere llevar el control de los recursos. Debido a que esta es una gran tarea, el proyecto Avalon, está dividido en 6 subproyectos que son:

Framework

Es una coleccín de especificaciones de patrones de diseñ y reglas en la forma de interfaces, es decir, no es un producto o una API, sino que es más bien un manual.

Excalibur

Es una colección de objetos frecuentemente usados como datasources, pooling, proxies, threading, entre otros.

Phoenix

Es un servidor de aplicaciones que almacena aplicaciones y servicios que se adecuan al marco de trabajo de Avalon.

Cornestone

Es un repositorio de blocks que proveen servicios vitales para servidores de aplicaciones. Contienen algunos demos de aplicaciones para aprender el correcto funcionamiento de Phoenix

LogKit

Es la herramienta de logeo usada por los proyectos de Avalon

BCEL

BCEL (Byte Code Engineering Library) es una aplicación que permite jugar con los famosos .class que se generan al compilar una clase. Estos archivos contienen bytecode que es ejecutado por la Java Virtual Machine (no es código que se pueda ejecutar directamente por la máquina). Este contiene información sobre las clases como los métodos, los campos, etc. Y con BCEL se puede recuperar esta información de las clases, manipularla y reenviarla a otro archivo como salida; o también se puede generar clases de la nada al momento de la ejecución por lo que este software es muy útil si se quiere aprender sobre la máquina virtual de Java o esl formato de los archivos .class.

Este software es muy útil para aplicaciones como optimizadores, compiladores y herramientas de aálisis como, por ejemplo, el procesador XML Xalan.

Cactus

Cactus tiene como objetivo testear de forma automática aplicaciones que actuan en el lado del servidor, obviamente, de aplicaciones escritas en Java. Usa JUnit, proyecto de Jakarta que antes fué subproyecto de Avalon.

Cactus implemente la estrategia de in-container para el testeo de las aplicaciones.

La estrategia de Cactus es un testeo por unidad de integración aunque también ocupa testeo por unidad de código lógico y testeo por unidad funcional. Y aunque nunca se puede testear acusiosamente un programa, Cactus ofrece una gran confianza en el testeo que ejerce sobre las aplicaciones antes de dejarlas disponibles en producción. Es probable que en futuras versiones se aumente en enfoque de testeo por unidad de código lógico, debido a que es el mejor enfoque para revisar errores en aplicaciones.

Commons

Este es un proyecto nuevo de Jakarta enfocado a todos los componentes reutilizables de Java. Actualmente se encuentra dividido en dos partes que son:

Commons Proper

Pretende implementar componentes que tengan mínimas dependecias con otras librerías y se pretende que las interfaces se mantengan lo más estables posible para que los programadores que las usen puedan implementarlas

Sandbox

Es un espacio donde se pueden probar los proyectos de Commons Proper además de permitir las sugerencias de nuevos elementos a ser incluidos a desarrollos.

ECS

Element Construction Set es una API que permite la creación de elementos para lenguajes de marcado como HTML o XML, pero que si mayores problemas puede permitir la creación de elementos para la creación de otros nuevos lenguajes de marcados.

Por ejemplo, con el siguiente código:

Document doc = (Document) new Document()
 .appendTitle("Demo")
 .appendBody(new H1("Demo Header"))
 .appendBody(new H3("Sub Header:"))
 .appendBody(new Font().setSize("+1")
        .setColor(HtmlColor.WHITE)
        .setFace("Times")
        .addElement("The big dog & the little cat
              chased each other."));
ou.println(doc.toString()); 
// or write to the outputstream directly
output(out);

... se puede generar la salida del siguiente texto HTML:

<html><head><title>Demo</title></head>
<body>
<h1>Demo Header</h1>
<h3>Sub Header:</h3>
<font size="+1" color="#FFFFFF" face="Times">The big
dog & the little cat chased each other.</font>
</body></html>
James

Es un servidor de mail para Java Apache que soporta los principales (si no son todos) protocolos de mail, como son SMTP, POP3, IMAP, HTTP.

Los objetivos que logra James son:

Completa Portabilidad

Es una aplicación 100% Java basada en la plataforma Java 2 y en JavaMail de Sun

Abstración de Protocolo

James tiene un diseñ abstracto que le permite no estar atado a ningún protocolo. Estos son vistos como lenguajes de comunicación entre los clientes y el servidor pero nada más.

Solución Completa

James funciona sin necesidad de otra aplicación y provee los dos servicios de envío y almacenaje de mails.

Soporte de Mailet

James soporta la API de Mailet, un procesador de mail, con lo cual es capaz de transformar un mail a fax, filtrar, etc.

Abstracción de Recursos

Los recursos también son manejados de manera abstracta y se accesan a través de distintas interfaces como, por ejemplo, JavaMail para transporte, JDBC para almacenaje del spool, etc.

Diseño Multithread y Seguro

Este diseño le permite un buen perfomance, escalabilidad y uso en situaciones críticas.

Jetspeed

Con Jetspeed, se puede acceder a los recursos de una empresa de manera rápida, permitiendo la construcción de un portal para que los usuarios de la empresa puedan ocupar ya sea aplicaciones, bases de datos, etc. desde distintos tipos de entradas como un browser, un teléfono WAP, o cualquier otro.

Por lo tanto, Jetspeed es una herramienta tanto para los desarrolladores como para los diseñdores de interfaces proveyendo una serie de facilidades para la construcción del portal.

JMeter

Útil herramienta que permite medir el funcionamiento de un sitio, siendo capaz de simular grandes cargas de trabajo, testeando el funcionamiento antes diferentes tipos de carga, revisando el funcionamiento de los distintos recursos que componen la aplicación como, por ejemplo, los servlets, los cgi, las conexiones a las bases de datos, etc.

Finalmente, es capaz de generar análisis gráficos.

LOG4J

Esta herramienta permite activar o desactivar las salidas de los programas a pantalla que se usan como método de debugueo de una aplicación. Es capaz de bloquear los prints, o de rederigirla a un archivo de log. La ventaja es que LOG4J permite evitar en tiempo de ejecución el despliegue de los mensajes por lo que el programa no incurre en tiempo de imprimir y la perfomance de la aplicación mejora.

Lucene

Lucene es una poderosa herramienta de búsqueda de texto recomendable para cualquier aplicación que requiere búsqueda de texto, especialmente entre plataformas.

ORO

Esta herramienta permite el procesamiento de texto utilizando expresiones regulares al estilo regexp, como Perl o AWT. ORO es compatible con las expresiones regulares manejadas por Perl 5.

Regexp

Otra herramienta de manejo de expresiones regulares. Al igual que la anterior ha sido donada por un programador, lo que demuestra el apoyo que está recibiendo el proyecto Jakarta y la velocidad con la que puede crecer.

Slide

Slide es una herramienta que permite el manejo de contenidos y la integración de sistemas. Provee una organización jerárquica de contenido binario que puede ser almacenado en base de datos. Además provee de versionamiento, bloqueo, entre otros servicios.

Struts

Es una herramienta que ofrece un marco de trabajo para desarrollar aplicaciones web. Struts facilita este desarrollo sobretodo si es que se quiere desarrollar utilizando el patrón de diseño del controlador modelo-vista por lo que ofrece un servlet controlador, librerias JSP que asiste, junto con el controlador, en la creación de formularios, y soporte para XML parsing, configuración automática de JavaBeans, etc.

Taglibs

Es un repositorio para nuevos taglibs creados por programadores. También es una repositorio de herramientas que permiten publicar en web utizando estos taglibs.

Tomcat

Tomcat es quizás la herramienta más conocida del proyecto Jakarta, hasta el punto en que muchos confunden ambos nombres. Pero Tomcat es un subproyecto de Jakarta que provee un poderoso servidor web con soporte a Java Servlets y JSP. Es además fácil de extender en funcionalidades como, por ejemplo, al poder integrar Xalan para parsear páginas XML o al agregar James y poder enviar mails desde el servidor, etc.

Tomcat ya va en la versión 4.0 a esta fecha y ha sido tan exitoso que Borland lo utiliza dentro de su ambiente de desarrollo JBuilder para permitir el desarrollo de aplicaciones web utilizando ambas tecnologías. Tomcat se entrega bajo la licencia de software para Apache y es open source.

Turbine

Esta herramienta se ha ido creando con la participación de muchos desarrolladores del mundo, y permite el desarrollo de aplicaciones web seguras en poco tiempo. Está orientada a desarrolladores Java con experiencia. Una ventaja es que las herramientas provistas por Turbine pueden ser separadas por lo que estas partes pueden participar en el desarrollo de nuevos proyectos.

Velocity

Velocity es una herramienta que separa el desarrollo de una página web del diseño gráfino de esta por lo que el diseñador sólo tiene que preocuparse de su trabajo y el programador de la calidad del software. Velocity funciona mediante la definición de lenguajes de templates asociados a código Java. Luego, los diseñadores se preocupan de ocupar estos templates y los programadores, entre otras cosas, de implementarlos.

WatchDog

Es un herramienta que permite validación de test para Servlets y JSP.

La bibliografía más consultada fué, obviamente, la correspondiente a la que existe dentro del sitio Jakarta.ORG . Esto, debido a que por ser un proyecto open source, y que recibe gran apoyo de la comunidad, el sitio se encarga de dejar más claro que tecnologías ocupa en sus aplicaciones.

Alternativamente se consultó los siguientes sitios:

Ricardo Araos, ricardo @chile.com .

Alojamiento Web

ChaTo = Carlos Castillo, Ph.D.  :::  Acerca de este Sitio ChaTo = Carlos Castillo, Ph.D. ::: Acerca de este Sitio