Curiosidad y novedades

gorlok — 18 February, 2009 - 00:20
Primero una curiosidad: revisando archivos viejos y algunos datos, caigo en la cuenta que el proyecto AOJAVA, ¡ya tiene más de 5 años!.
Nació el 5 de septiembre del 2003, más precisamente a las 22:30, cuando creé el primer archivo. Era una clase muy simple para probar la comunicación via sockets. Usé Netbeans para armar el proyecto. Al día siguiente ya estaba armando la clase principal del servidor y algunas más.
El día 4 de febrero de 2004, a las 18:17, se registró en SourceForge.net el proyecto, dándolo a conocer al poco tiempo.
Desde entonces, de forma discontinua, con algunas pausas prolongadas, fue creciendo hasta lo que es hoy. Muchos me han ayudado y colaborado en todo este tiempo, entre ellos se destacan Nachito, AlejoLP, Morgolock, ElOso, Maraxus y Piluex.
Bueno, basta de melancolía
, y paso a contarles las novedades:
- Lo más importante, estoy haciendo el cambio de licencia de GPLv2 a AGPLv3. Es algo que tenía pendiente desde hace tiempo.
- Integré Maven2 y TestNG.
- Rehice la carga y grabación de mapas, y actualicé los mapas a los últimos liberados. Aprovechando TestNG, la primer prueba fue para comprobar que estas rutinas funcionen sin errores, probando la carga y grabación, comparando archivo original y nuevo por MD5. Fue una prueba interesante, que permitió corregir algunos detalles, y poner en marcha la infraestructura para tests.
- Por la llegada de Maven, reorganicé el proyecto de forma más prolija.
- Estoy revisando toda la arquitectura, haciendo refactoring 2 por 3, buscando un diseño más simple y claro, y con mayor desacople.
- En el camino apliqué algunos Patrones de Diseño donde mejoraban la arquitectura. Se ganó bastante con esto, en varios sentidos. No pienso aplicar patrones por gusto, sino por necesidad, para no incurrir en el fanatismo de meter patrones solo por ganas de implementarlos y decir que se usaron. Todo se está haciendo a conciencia y meditando los pros y contras.
- Se han corregido e implementado nuevos paquetes.
- Aparecieron algunos bugs nuevos, y pero muchos más son los que se corrigieron.
- Se resolvieron los problemas de estabilidad del servidor, por el manejo inapropiado de algunas colecciones de vectores, que resultaban en ConcurrentException (y no era por threads).
- Falta revisar todo el manejo de red. Si bien NIO es el camino correcto, estoy muy interesado en usar Apache MINA, por su buena arquitectura y el valor agregado que ofrece.
- Tal vez use algún framework de inyección de dependencias, para facilitar el desacople de algunos componentes. Aunque se podría hacerlo de otra forma, incluso "caserito", tal vez le de una oportunidad a Guice. Otra opción que conozco bien sería Spring, pero debe ser lo menos intrusivo posible.
- Estuve haciendo algunas pruebas de performance, encontrando un par de problemas. Uno tiene que ver con el GC, que he estado afinando y ya parece estar razonablemente bien, pero debo seguir vigilándolo. Hay otro tema, que parece ser culpa del manejo de red que hago con NIO, que no está 10 puntos desde que agregué el protocolo binario "de prepo". Si integro Apache MINA, esto quedaría resuelto porque aprovecharía a desacoplar y reemplazar todo el manejo de red. En caso contrario, habrá que hacerlo de todas formas y revisar en detalle este tema.
- Como no podía faltar, ¡aparecieron los clones!. Por el momento no me preocupa mucho, ahora que estoy armado con TestNG vamos a ver cómo reproducir el problema con un test, y ver qué sale de la experiencia.
En definitiva, mucho para hacer, pero también bastante avance. En las próximas semanas se me va a complicar avanzar a este ritmo, pero continuaré en los ratos que pueda. Voy organizándome un plan de tareas para no trabarme, manteniéndolo el trabajo interesante y agradable la mayor parte del tiempo posible.
Y ahora a descansar, que siempre hay mucho para hacer 
- gorlok's blog
- Inicie sesión o regístrese para enviar comentarios

