Introducción a Apache FlexJS

Apache FlexJS es un nuevo framework creado dentro del proyecto Apache Flex. El Objetivo detrás de este esfuerzo es permitir a los desarrolladores crear aplicaciones escritas en MXML y ActionScript y desplegarlas en todo tipo de entornos, tanto con Flash Player, como sin este, con HTML/JS/CSS.

FlexJS puede generar aplicaciones HTML y funcionar en cualquier navegador sin Flash Player. También puede obtener aplicaciones SWF

FlexJS está basado en el concepto de “frameworks paralelos”, donde los bloques y piezas de construcción existirán tanto en AS com en JS. El compilador (basado en Falcon, la evolución de última generación del compilador de AS3 y MXML), es el encargado de traducir MXML y AS a JS y obtener salidas tanto en SWF como en JS. Es en este último caso donde eliminamos la necesidad del Flash Player pudiendo correr la aplicación en cualquier tipo de navegador.

El siguiente diagrama describe la arquitectura sobre la cual se basa el diseño de FlexJS:

Apache FlexJS Diagrama de Cajas

Apache FlexJS Diagrama de Cajas

Compatibilidad con el SDK actual

El SDK actual tiene mucho código fruto de su evolución a lo largo de los años (tengamos en cuenta que el framework tiene ya alrededor de 10 años). Por tanto la dirección que se ha tomado es hacer una base de código desde cero. Esto en la práctica significa que las aplicaciones actuales creadas con versiones del SDK actual no podrán ser compiladas con FlexJS. No obstante, la reescritura de estas aplicaciones tenderá a ser más sencilla en FlexJS dada la similitud que con otra tecnología.

De hecho, el nuevo framework tiene que funcionar bajo un subconjunto de funcionalidades ya que la tecnología de los navegadores y Javascript todavía no es equiparable a las capacidades de Flash Player. Es por tanto evidente, que para conseguir aplicaciones HTML/JS/CSS estás tienen que estar pensadas bajo las restricciones de este entorno.

Ventajas

A parte del acceso a dispositivos donde Flash Player nunca estará presente (principalmente los navegadores iOS), las ventajas para el desarrollado de aplicaciones son claras. Usar el conjunto de herramientas y lenguajes altamente tipados y con orientación a objetos que son fundamentales para todas aquellas aplicaciones de tamaño y funcionalidad medio alto. Se trata pues de recuperar muchas de las características perdidas cuando pasamos del mundo Flash/Flex a un mundo puramente Javascript.

Demo

El ejemplo inicial creado por Alex Harui pone de manifiesto la potencia que puede tener este nuevo framework si observamos las versiones flash y html. La captura siguiente ofrece una visión de cada una de las versiones compiladas con FlexJS (SWF y JS):

Flex JS Demo Inicial

Flex JS Demo Inicial

En el ejemplo se recuperan valores de bolsa de una fuente de datos remota y nos permite pedír el precio. La versión SWF se encuentra aquí y la versión HTML/JS aquí. El código fuente se puede ver seleccionando la opción View Source del menú conextual en la versión Flash.

Estado

FlexJS está en desarrollo por un grupo pequeño pero constante de desarrolladores de Apache Flex encabezado por Alex Harui (desarrollador del SDK desde los comienzos de Flex en Macromedia, actual PMC Chair del proyecto y uno de los principales soportes para el resto de usuarios de Flex por sus contribuciones en la lista de flexcoders). Los puntos acordados para adquirir el estado alpha son:

  • Integración del compilador con Flash Builder
  • Soporte para la creación de Aplicación y Vistas
  • Soporte de propiedades CSS personalizadas
  • Implementación inicial del componente DataGrid
  • Implementación inicial del componente Chars

Algunos de estos puntos ya están conseguidos o cerca de ser completados por lo que es de esperar que la fecha de salida de la versión alpha del producto esté cercana.

Desde el proyecto se pide ayuda de la comunidad para avanzar de forma más rápida. El modelo de Apache se basa en voluntariado y por tanto el avance de FlexJS está directamente relacionado con el soporte de toda la comunidad.

Enlaces

Para leer más sobre FlexJS os proporciono los siguientes enlaces de forma que podáis investigar más sobre este prometedor framework:

Wiki sobre FlexJS en Apache Flex
Charla sobre FlexJS ofrecida por Alex Harui por Adobe Connect
Using FlexJS with Adobe Flash Builder
Apache Flex Jira
Lista de correo en Apache Flex (mucho tráfico, para leer sobre FlexJS filtrar por el prefijo “[FlexJS]”)

Conclusión

Hablaremos mucho de FlexJS en Made In Flex, ya que ofrece no solo un futuro prometedor para los desarrolladores Flex que no quieren perder la rapidez y solvencia de sus entornos y lenguajes, para volver a las incomodidades de la programación JS, si no que además aporta verdadera innovación en la conceptualización del propio framework.

Lo veremos con la capacidad de FlexJS para añadir distintos juegos de componentes (html, jquery, createjs,…), la reducción extrema del peso y tamaño de la aplicación generada -tanto en SWF como en JS- o los nuevos conceptos de Strands y Beads, que permiten promocionar la composición sobre la herencia, eliminando la existencia de god classes(como UIComponent con 15.000 lineas de código en el SDK actual).

De forma rápida, en FlexJS un Bead es una funcionalidad que se puede añadir o quitar de un componente como un verdadero plugin, de forma que podemos usarla cuando realmente los necesitemos en la más pura filosofía “pay-as-you-go” (ej: Añadir funcionalidades de touch en dispositivos móviles, mientras que en navegadores y escritorio tenemos funcionalidades de roll over).

Volvemos en breve para ver más temas sobre Apache FlexJS.

¡Comparte este artículo si te ha parecido interesante!

Etiquetado en:

18 Comentarios

  1. David

    Buen artículo, muy bueno como introducción a FlexJS. Parece que aún está muy en pañales pero promete mucho.

  2. Carlos Rovira

    Hola @David Manriquez,

    los frameworks actuales tipo Parsley (incluyo Swiz, RobotLegs, etc…) no funcionarán en FlexJS a no ser que se hagan versiones de los mismos especificas para FlexJS. Lo normal es que aparezcan nuevas opciones con la misma filosofía o revisiones de los anteriores.

  3. Carlos Rovira

    Hola @David,

    gracias por el comentario. Como dices, todavía es pre-alpha. Pero ya está en un estado de gestación bastante definido que requiere sobre todo de trabajo para llegar a una versión beta donde podamos empezar a usarlo… y aquí es donde cualquiera de nosotros puede ayudar 🙂

  4. Raúl Recalde Álvarez

    Excelente iniciativa. Empezaré a probarlo. Entiendo que el código generado con sdk’s anteriores no puede ser compilado en un 100% pero la pregunta es. ¿Con un código existente de un sdk anterior , que porcentaje de cambios aprox. debo realizar para probarlo con flexJS?. Queda mucho por investigar y eso lo hace extremadamente interesante. Soy fanático de la tecnología Flex y me gustaría aportar.

  5. Carlos Rovira

    Buenas Raúl,

    según los líderes del proyecto se busca que sea más sencillo reescribir en FlexJS que en cualquier otro lenguaje o tecnología. En la práctica esto dependerá del proyecto, de sus buenas prácticas y que uso haga de código propio, componentes y librerías.

    Raúl, si te pica el gusanillo, te apasiona este tema y quieres colaborar, te animo a suscribir te a la lista de desarrolladores de Apache Flex y aportar donde creas que puedes aportar valor. El equipo estará encantado de tener una mano más para ayudar a que FlexJS sea el producto que todos esperamos.

  6. ivano

    I know it has nothing to do with the post …
    I like your site very much, did you think to an English version?
    ciao!

  7. Carlos Rovira

    Hi Ivano, I was proposing in Apache Flex mailing list to extend Made In Flex to support more languages, but this effort needs more people on board (at least one person for language). If you want to collaborate for english or italian, we could discuss it privately, so we don’t loose the focus of the article.

  8. Jesus Antonio

    Excelente informacion, hace unos meses abandone el desarrollo en flex pero hoy he decidido retomarlo y este post ha revivido nuevamente esta tecnologia al saber que ya es posible poder obtener un html mas ligero a comparacion del SWF.

  9. Ricardo

    Que tal Carlos, una pregunta, me gustaría conocer el estatus de Flexjs, y recibir noticias sobre este freamwork.

    Saludos y excelente trabajo, hasta el día de hoy no he conocido un freamwork mejor que Flex.

  10. Carlos Rovira

    Hola Ricardo,

    actualmente FlexJS sigue su curso y desarrollo (gente como Alex Harui, Peter Ent, Om o Erik de Bruin siguen trabajando en este nuevo framework). Ya existen un par de releases desde Apache Flex, todavía alphas. La última es la 0.0.2.

    Todavía queda camino por recorrer. Como dice Alex, es importante que más desarrolladores conozcan FlexJS y la ventaja que supondría poder desarrollar en MXML y AS3 y que obtener una aplicación HTML5/JS/CSS de forma que podamos tener más manos aportando al proyecto para ir más rápido.

  11. Ricardo

    Que tal Carlos, en lo personal sigo maravillado con flex y las bondades que ofrece en el desarrollo de aplicaciones empresariales, realizas desarrollos robustos, estables, en un tiempo bastante reducido, he hablado con varios compañeros sobre Flexjs y varios de nosotros estamos entusiastas con este framework, he trabajado con flex por 6 años y actualmente me pidieron desarrollar con vaadin (framework de java, que me recuerda mucho al desarrollo con action script 3) y me gustaría mucho proponer Flexjs es por ello que preguntaba sobre el estatus del framework. Si en algo puedo apoyar Carlos con mucho gusto contribuiría.

    Saludos.

  12. Carlos Rovira

    Ricardo, puedes ayudar sin lugar a dudas y mucho.
    Solo hay que tener ganas y tiempo. Para ello, unete a la lista de “dev” de Apache Flex. Preséntate y expresa tus ganas de colaborar.

    Como es un tema totalmente de “voluntariado” nadie te va a poner “tareas”. Bajate el código de Git. Y puedes aportar donde mejor veas: FlexJS, Flex SDK, puedes revisar bugs y arreglarlos (mira los “easy bugs”), etc..

    Inicialmente tendrás que hacer Pull request, pero conforme ayudes un poco, te darán acceso para que puedas colaborar de forma más directa siendo “committer”

    Ánimo!

    Carlos

  13. Mauricio Vargas

    Hola Carlos,
    Actualmente llevo a cabo un proyecto algo grande pero esta desarrollado en Flex Builder 3 ademas de AS3 y MXML lleva algo de PHP y MySQL, se que es algo antiguo puesto que cuando se inició con el proyecto en ese entonces era el framework mas actual; justamente ahora que esta el BOM del HTML5, el diseño adaptable y las apps hechas en distintos framework para distintas plataforma, quisiera saber si de alguna forma puedo migrar mi proyecto hecho en Builder 3 a FlexJs y de alguna forma compilarlo para que así me genere el Js.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Acerca de Made In Flex

Made In Flex es una comunidad de desarrolladores de Apache Flex creada en 2006.

Apache Flex, anteriormente conocido como Adobe Flex, es un SDK (kit de desarrollo de software) para crear aplicaciones enriquecidas - multiplataforma basadas en Adobe Flash donado por Adobe a la fundación Apache in 2011 y promocionado a proyecto de primer nivel en Diciembre de 2012.

Actualmente estamos cambiando muchos aspectos del sitio web para ofrecer un sitio útil para toda la comunidad que tenga en cuenta las necesidades actuales.

Últimas Fotos

Instalador de Apache Flex

Entrar o Registrase