Y si hablamos de...

por Alberto Molpeceres 

Links





 Bitacoras.com

Ultimos comentarios


Navigation


XML


20030831 domingo agosto 31, 2003

... modelos dinámicos de objetos (2003-08-31 21:38:48.0) Permalink Comentarios [5]
Desde que a Akuma hizo su famoso curso de J2EE por aquí han caido distintos post sobre desarrollo web con Java, han sido varios los post sobre MVC, fron controller, etc. El último ha sido MVC(III): JavaServerFaces de Álvaro Zabala, y de rebote, en los comentarios, Akuma, que nunca deja de intentar aprender, pues ha acabado preguntando el por qué de usar OREO como motor de persistencia en Cáñamo. Bien, la solución es sencilla: modelos dinámicos de objetos.

¿Qué es eso?. Bien, el concepto viene descrito en un par de papers de Ralph E. Johnson, miembro de la GoF. La idea esta en separar los objetos de la definición de su composición, siguiendo un patrón llamado Type Object, es decir, tener una parte de metadatos (normalmente XML para que pueda cambiarse fácilmente, y que luego se cargará en forma de clases Java) que describe los objetos, y otra donde se almacenarán los datos de esos objetos. ¿Qué conseguimos con esto?: tener modelos de objetos dinámicos, que podremos manipular (añadir campos, eliminarlos, cambiar las relaciones entre los mismos, etc.) sin que tengamos que tocar el código de las clases que tienen que ver con persistencia (obviamente tendremos que tocar el código de presentación para permitir mostrar esos nuevos datos), ya que normalmente las clases de metadatos son cosntantes (clase, campo, relación, etc.), y la clase que almacenará los datos (simplificando un poco) es poco más que un Map para almacenar los valores, y por tanto podremos meter de todos.

No se si ha quedado claro. ¿Un ejemplo?. javaHispano, ¡como no!. GRacias a que usamos modelos dinámicos de objetos, podemos tener un mismo código (aplicación items) que gracias a su configuración podemos usar en varios sitios. Así, aunque no lo parezca, es el mismo código lo que esta ejecutando las secciones de noticias, IDEs, OpenSource, tutoriales, eventos, código útil y alguno más. Solo cambia las plantillas HTML que muestran los datos y la definición de los datos en un archivo XML. ¿Magia?, no, un modelo dinámico de objetos, concepto muy interesante en los sitios donde el modelo no este grabado a fuego.

¿Si es tan bueno por qué la gente usa más JDO o Hibernate (& Cia)?. Bien, realmente se podría decir que tienen otro enfoque, y no estamos hablando de un producto con la misma finalidad (vale, si, guardar cosas en una base de datos), aunque la razón de usar más uno que otro es suerte. Esas soluciones tienen o una emrpesa más grande detras, o más publicidad por venir de otra gente, o ... . No me importa, yo sigo diciendo que son cosas distintas. Tanto Hibernate (& Cia) como JDO se basan en el concepto una clase, una tabla, es decir, tu tienes un clase y dices donde guardarla, cuales son sus campos, etc. . Mientras que los modelos dinámicos se basan en un clase, n tablas, donde cada tabla puede tener una distintas estructura.

¿Problemas?. Por supuesto. El principal podría ser el de rendimiento, ten en cuenta que al estar metiendo otra capa de abstracción (la de los metadatos) en tu aplicación, estas perjudicando su rendimiento, no se pueden hacer optimizaciones que si se pueden hacer en otros casos. No os asusteis, no es que OREO sea 1000 veces más lento que Hibernate (por decir dos nombres), pero obviamente no es lo mismo, y en determinados entornos, con miles de transacciones simulatenas puede ser que esto sea algo a tener en cuenta. Para una aplicación normal, ningún problema.

En la actualidad, en la web, solo hay, que yo conozca, dos frameworks desarrolaldos en Java opensource que soporten modelos dinámicos, OREO y el Entity Engine de Open For Bussiness. ¿Por qué OREO?. Porque ya lo conocía, aunque mínimamente tuve algo que ver con su desarrollo, y ya sabía mucho de lo que podía ofrecer. Necesitaba algo y estaba ahí, aunque conozcía también sus limitaciones, hasta el punto de que lo que Cáñamo usa es una versión modificada de OREO (disponible en su CVS), donde se ha potenciado el SQL (la idea principal de OREO era trabajar de forma transparente con distintas fuentes de datos, como XML, LDAP y BD). OREO, por distintas razones lleva dos años parado (¡si, estas cosas ya existían hace tanto tiempo!), aunque por su calidad no se lo merece. En todo caso, Cáñamo esta basado en interfaces para poder cambiar las implementaciones de un montón de servicios, y ya he estudiado el EE de OfBiz para comprobar que puede hacer todo lo que Cáñamo podría necesitar, solo falta que algún día implemente el proxy que los una. ¿Voluntarios?.

Buff... cada vez que me pongo me sale un ladrillo. Mis disculpas.


« agosto 2003 »
lunmarmiéjueviesábdom
    
2
3
4
5
7
8
9
10
11
12
13
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
       
Hoy


Referers

Las visitas de hoy a la página: 108