KodeEngine
KodeEngine es una herramienta para la generación automática código fuente Java para aplicaciones basadas en J2EE
Introducción
Resulta tedioso “reinventar la rueda” en cada proyecto software: diseñar la arquitectura de la aplicación, los criterios de búsqueda en los datos, el interfaz de manejo de los datos, el diseño web, los estilos, el módulo de acceso (permisos/perfiles) a la aplicación, etc. Si a esto le añadimos que el 80% del código de un proyecto es código repetitivo empleado para gestionar los datos y las transacciones, y que solo 20% se emplea en hacer la lógica de negocio, algunos cálculos, algunas transformaciones de datos y poco más… se llega rápidamente a la conclusión de que hay que hacer algo para mejorar las cosas.
La pregunta que muchas veces nos hacemos suele ser la siguiente: ¿no habrá alguna aplicación que genere de forma automática este código tedioso y repetitivo?. La buena noticia es que sí que existen, la mala noticia es que son muy cerrados, poco amigos de los programadores, son poco flexibles y difíciles de adaptar a las nuevas necesidades que se plantean con el tiempo.
Es por ello que estamos desarrollando el proyecto KodeGenration, que es un generador de código que genera el 80% del código tedioso y permite a los desarrolladores de indizen trabajar en el refinamiento del código generado y en ese 20% restante que es necesario desarrollar una aplicación Web típica con Java.
Está basado en una serie de convenciones de nombres que permiten la generación de código para cada entidad (tabla)
¿Qué es KodeEngine?
KodeEngine es un proyecto de indizen labs que tiene como objetivo la generación automática de código fuente para crear el esqueleto de aplicaciones web que tengan que acceder a una base de datos y que usen java para la programación del interfaz gráfico y toda la lógica de la aplicación.
La idea es generar de forma automática el código repetitivo tanto de los componentes que realizar las operaciones CRUD (Create, Read, Update, Delete), como los componentes de interfaz web que gestión de los datos.
El código generado proporciona soporte para todas las operaciones CRUD y un interfaz web vista-detalle para la gestión de los datos, y está basado en una arquitectura orientada a servicios que es muy fácil de mantener y extender.
Su finalidad es mejorar los tiempos de desarrollo y de “startup” de aplicaciones y de servir como espacio de entrenamiento para la gente que se incorpora a los iLabs
Principales características de KodeEngine
- Dada una determinada tabla de base de datos, genera la capa de persistencia usando iBator/iBatis. Los objetos generados son de modelo y DAO. Implementa funcionalidad CRUD básica.Configuración de ficheros SQLMapConfig.xml y dao.xml, y crea un fichero XML donde se almacenan las sentencias SQL básicas que pueden ser ampliadas si fuera necesario.
- Genera la capa de servicios en base a un template con funcionalidad básica. Genera los casos de test básicos para el servicio. Implementa funcionalidad básica para la lógica CRUD.
- Generación de la capa de interfaz web usando JSF/RichFaces. Este interfaz implementa la funcionalidad CRUD básica y lógica de búsqueda tambien básica sobre los datos subyacentes (tablas de base de datos.
Plan de versiones
Versión 1
- Generación de código DAO para tablas individuales
- Generación de código de modelo (un objeto para cada fila de la tabla)
- Generación de los objetos de servicio que permiten la gestión de los datos del modelo mediante los objetos DAO.
- Implementación de lógica de búsqueda/edición en los distintos campos de la tabla mediante filtros predeterminados
- Generación de controlador JSF y páginas JSP con Velocity como motor para manejas plantillas tanto para los servicios como para JSF/JSP
- Internacionalización
- Manejo de tipos de datos (date, text, integer, float,…)
- Validación predeterminada de entradas en formularios en función del tipo de dato (número, fecha, etc.)
Versión 2
- Generación de código para múltiples tablas a la vez, con manejo de relaciones entre tablas de la base de datos.
- Importación y exportación de datos para cada entidad
- Interfaz web de navegación entre entidades relacionadas
Versión 3
- Soporte de Spring en la capa de servicios
- Soporte de Hiberntate en la capa de persistencia
|