[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Herramienta de desarrollo web para aplicaciones Java



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hola a todos,

Estoy desarrollando un proyecto del cual me interesaría recibir opiniones y 
sugerencias sobre el mismo.

El proyecto tiene como objetivo mejorar la velocidad en el desarrollo de 
aplicaciones web, implementadas siguiendo la especificación de Java Servlet 
API (2.2-2.4). En concreto, se centra en la capa de presentación, o lo que es 
lo mismo, el desarrollo y pruebas de los casos de uso de la aplicación.

Partiendo de una aplicación enpaquetada como fichero ".war", se genera otro 
fichero con el mismo formato, listo para ser desplegado o instalado en un 
contenedor de servlets. Al instalarse, el desarrollador dispone de la misma 
presentación de la aplicación original, a la que se le incorpora una serie de 
funcionalidades adicionales. Es conveniente indicar que no se hacen 
suposiciones sobre las tecnologías utilizadas por el desarrollador.

Asimismo, la herramienta es compatible con la tarea <war> de Ant (e incluso la 
supera en algunas características, como la posibilidad de usar "paths" en 
lugar de "zipfilesets" para los contenidos), con lo cual pueden ser 
intercambiadas en función del entorno en el que se va a desplegar.

Básicamente, a alto nivel, ésa es la descripción general de la herramienta, 
cuyo nombre es WebExtension (al menos por el momento).
Actualmente (versión 0.3), voy a comenzar a analizar y desarrollar las 
distintas funcionalidades que pueden ser de utilidad para un desarrollador 
(potencialmente también para un diseñador).
Inicialmente (es decir, la primera versión funcional, 0.4) , la herramienta 
incluirá:
- -Visualización de datos de entorno de la máquina virtual;
- -Visualización de datos presentes en la petición (request) y sesión (en este 
caso se dispondrá la posibilidad de modificación de los mismos);
- -Visualización de las comunicaciones HTTP, y gestión de las cabeceras que 
recibe la aplicación original (independientemente del navegador usado), 
incluyendo la opción de habiilitar/deshabilitar cookies.
- -Ejecución de código Java "en caliente", mediante la edición de scripts 
BeanShell.
- -Medidas simplistas de las peticiones realizadas a la aplicación: consumo de 
memoria y tiempo de respuesta.
- -Visualización del código fuente de las urls de la aplicación (ficheros jsp, 
vm, etc.).

Para versiones posteriores, tengo en mente, además, las siguientes 
funcionalidades:
- -Intérprete SQL;
- -Grabación de "macros";
- -Posibilidad de exportar macros a JMeter para realizar pruebas funcionales y 
de carga sobre la aplicación, de forma desatendida;
- -Detector de memory leaks (muy rudimentario, ejecutando macros repetidamente y 
evaluando el incremento de memoria);
- -Navegador JNDI;
- -Validador w3c (aunque no sé si es posible por razones de licencia);
- -Gestión de errores de la aplicación original, con la posibilidad de 
integración con sistemas de bug-tracking.

También es posible ofrecer funcionalidades de profiling, para visualizar qué 
parte del código de la aplicación se ejecuta y cuánto tiempo le lleva, pero 
para eso podría ser necesario tener acceso al código fuente (o bien hasta que 
AspectJ sea capaz de recibir bytecode como entrada), por lo que habría que 
estudiarlo separadamente.

Otro punto a resaltar es que, inicialmente al menos, las vistas de la 
aplicación original no son procesadas. El incremento de complejidad que 
conlleva dicho procesamiento podría ser útil para ofrecer opciones como:
- -Habilitar o deshabilitar Javascript;
- -Resaltar tablas HTML (cambiar el atributo border);
- -Resaltar imágenes (que podrían indicar también atributos como dimensiones o 
tamaño).

Asimismo, en un estado más avanzado de ambos proyectos, se podrán integrar 
WebExtension y QueryJ, de forma que el desarrollador tenga acceso a qué 
sentencias SQL se van realizando conforme navega por su aplicación original, 
así como cuánto tardan.

Me gustaría recibir sugerencias sobre qué puede resultar más útil (y por tanto 
conveniente de implementar antes), así como nuevas ideas que no estén 
contempladas en la lista anterior. También me sería útil cualquier 
recomendación o sugerencia sobre cómo modelar las funcionalidades: definición 
del concepto de plug-in, resolución de los mismos, configuraciones 
específicas para cada uno, etc.

Las vistas de la herramienta, independientemente de la aplicación original, se 
implementan utilizando CSS2 en conjunción con Tiles, por lo cual se pueden 
realizar modificaciones en el estilo y estructura de las vistas sin ningún 
esfuerzo (proporcionando 3 ficheros).

Espero vuestros comentarios.

Un saludo,
Jose.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFAh4DzCAvt6RF8M0cRAut3AJ9cJUnTJEXxrmuPqg4gslbHS+PdQwCgkeEY
dXQNjJBftq5aVeAycYffW4M=
=+015
-----END PGP SIGNATURE-----