Infinite scrolling

Que tan complicado puede ser?

Hace poco decidí empezar un proyecto del cual más adelante le comentaré un poco más. Por ahora esta hitoria es acerca de los enfoquees que tomé para desarrollarlo.

Este es un proyecto un poco grande, así que una amiga de la Universidad está trabajando en el análisis de requerimientos, mientras que yo me concentro en la parte técnica.

Pues bien, Inicialmente pensé trabajar el proyecto en Java debido a su capacidad multiplataforma, la gran cantidad de herramientas que tiene como JDBC, JasperReports, Hibernate, etc. Sin embargo despues me puse a pensar en lo popular que se ha convertido la arquitectura de Mozilla así que decidí que esta sería una buena oportunidad para conocerla ya que existen otros muy buenos proyectos que la usan (como el iTunes killer, SongBird) además que permite crear proyectos multiplataforma escritos en C++. Pero lo que me encontré es un poco más complicado de lo que parecía en una primer instancia.

La arquitectura de Mozilla está dividida básicamente en tres capas. XPCOM (Esta no tiene nada que ver con Windows XP, por el contrario significa algo así como Cross Plataform Component Object Model), ECMA Script (a.k.a. JavaScript) y XUL. Cada una diseñada para brindar servicios en una capa específica.

XPCOM tiene algo de CORBA y COM por debajo y se usa para brindar la portabilidad. En si no es más que un conjunto de interfaces (en C++ algo así como Pure Virtual Classes) las cuales decienden todas de una super interfaz. Este es el centro de la librería pero no hay que asustarse tanto. Mozilla ya tiene implementados varios servicios sobre estas. Aún así es algo criptico y considero que entenderlo en su totalidad me tomaría also así como 6 meses (tal vez menos si pudiera dedicarme tiempo completo a esto).

Una de las cosas que se espera lograr con XPCOM es que sea independiente del lenguaje sobre el que se trabaja. Así las cosas provee un motor para javaScript y recientemente para phyton. Es en este novel donde el famoso motor Gecko viene implementado (y espero que pronto pase el test Acid2). Y presta unos servicios a la capas superiores a traves de objetos DOM (Data Object Model).

Con XPCOM andando y funcionado se pasa a la parte de JavaScript que es la que realmente implementa la funcionalidad del programa y como lo mencioné anteriormente, se vale de objetos DOM para aceder a los datos. Esto es en parte útil para evitar que esta capa tenga acceso a datos que se encuentran en la capa inferior.

Pero en el mundo moderno ningún programa vale nada si no existe una bonita UI, para eso Mozilla diseñó el lenguaje XUL que no es nada más que definición de UI's a traves de XML; de hecho hay una broma basada en la película los cazafantasmas, allí un demonio tomaba poseción de Dana y decía "There's no Dana, Only Zool," pues a los hombre de mozilla les pareció gracioso decir "There's no data, only XUL"(para ver este link necesitan un navegador que soporte XUL como firefox); el chiste vien a que normalmente XML se usa para definir documentos (que contienen datos) y no programas. Pero volviendo a lo que nos ocupaba todo termina acá y sin embargo este desarrollo en varias capas requeriría varios ingenieros con varios meses solo para estudiar la arquitecura.

Finalmente creo que, aunque definitivamente esta arquitecura me parece genial y definitivamente me voy a tomar mi tiempo para estudiarla, Mi proyecto se desarrollara en Java como pensaba hacerlo en unprincipio.

No comments:

Post a Comment