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.