Temario
Había una vez...
 
La plataforma U8
 
En progreso: MVP en U8
 
Reuniones betaworks
 
 
 
 
Había una vez...

Smalltalking tiene el placer de anunciar el realease de la plataforma U8. Desde Septiembre del 2011 estamos trabajando duro en la construcción de la plataforma U8. Este es el resultado de nuestros esfuerzos, sueños y visiones compartidas. Es también el comienzo de este newsletter compartiendo con todos los usuarios de U8 el estado del arte de U8/S8 como así también las direcciones futuras de este proyecto.

Sugerimos considerar U8 como un medio para alcanzar el siguiente nivel de comprensión de los sistemas desde el punto de vista de la Tecnología de Objetos. Experimentamos que las características más poderosas de Smalltalk emergen en estadios tempranos en la adopción de U8 además de ser un medio confortable de auto-desarrollo.

 
La plataforma U8
WI8 Highcharts S8 framework Goolgle Earth Applications

U8 sugiere como base cinco modos de ejecución, llamados plataformas:

Web

La plataforma Web esta disponible en dos modalidades. WebBrowser, desarrollo web basado en imagenes. Una imagen inicial (u8.image.js) conteniendo el nucleo de S8, con los recursos necesarios para la manipulación del browser (DOM framework) y herramientas mínimas para el desarrollo "in-page" (small screens) [Start coding].
   Y Headless, desarrollo web modular, basado en contenido dinámico bajo demanda. Headless en su forma más mínima contiene el núcleo S8 y una expresión de booteo que determina la carga dinámica de un sistema modular que es eficientemente montado bajo demanda. El conjunto de herramientas básico es idéntico a WebBrowser, aunque de manera dinámica, el usuario puede cargar herramientas adicionales y/o reemplazar contenidos del sistema en tiempo de booteo, permitiendo así ciclos iterativos de desarrollo.[Start coding].

Console

Esta plataforma provee una versión modificada de la maquina virtual Google V8 (llamada S8VM) con el nucleo de S8. Aquí el desarrollo es basado en archivos, siendo la forma más primitiva de desarrollo en S8. En esta plataforma es posible enlazarse dinámicamente a librerías de terceras partes. [Start coding].

Server (Node)

Esta plataforma provee una versión de Node.js con el núcleo S8 y recursos para el desarrollo de aplicaciones cliente-servidor en Smalltalk. La plataforma provee un mecanismo de alta performance de llamadas a API implementado a nivel de VM y un modelo de llamadas y estructuras externas (FFI framework) de granularidad fina a nivel de Smalltalk. [Start coding].

PG8 (A8 + PhoneGap)

Extensión de A8 para el soporte de múltiples dispositivos (iPhone OS, Android, Blackberry, Windows Phone, Palm WebOS, Bada, Symbian). Esta plataforma será descripta en posteriores newsletters.

A8 Android

Ambiente runtime para Android. Es un montaje de S8 en una interface de booteo nativa. Permite el uso e intercambio de objetos Smalltalk a nivel de la plataforma (nivel de total acceso Javascript y Java). A nivel de aplicación no requiere más que S8, y gracias a las capacidades reflectivas del sistema, la interacción con los elementos nativos permite un desarrollo interactivo.

 
En progreso: MVP en U8

Existe un trabajo reciente de MVP en U8/S8. Miguel Isasmendi nos cuenta acerca de este desarrollo. ¿Miguel podría comentarnos algo sobre este proyecto?
Hace un mes y medio que estoy desarrollando un framework de GUI basado en MVP. La elección de este modelo de arquitectura sobre otros, como el clásico MVC u otros paradigmas, se basa en las ventajas de modelar una GUI usando los conceptos de MVP, la separación en capas de sus componentes para la construcción de aplicaciones web complejas (obviamente con el énfasis en el lado del cliente), y la posibilidad de realizar tests del mismo framework en una capa determinada. Las principales características a las que apunto y me gustarían son, construir herramientas básicas de Smalltalk, como el class browser, el inspector, etc. La serialización de la configuración de la GUI (JSON), la generación de una arquitectura reusable de soporte flexible de una capa de objetos nativos, y un manejo optimizado de eventos para el uso en browsers y la construcción de aplicaciones "desktop-like" , "mobile-like" o "browser-like".

¿Cuánta cobertura de una GUI tradicional esta hecho?
Actualmente puedo instanciar un hierachy browser básico usando presenters y views simples o complejas, los cuales implementan los widgets básicos de la GUI. Creo que la idea sería dejar los conceptos "tradicionales" de la GUI (windows, buttons, links, etc.) y soporta views más complejas, mirando a futuro para lograr una interface realmente portable, por ejemeplo, desde y hacia dispositivos móviles. Más allá, la idea es también proveer en el futuro algunos widgets que aplican nuevos conceptos de usabilidad y diseño, por ejemplo una forma extendida de manipular un multiselect list view.
    Básicamente estoy construyendo una capa de abstracción por encima del framework DOM presente en U8, aunque se podría usar otro framework de ser necesario. Estoy preparando las views para que tengan la chance de manejar los cambios de contextos en los ambientes de ejecución. Un caso testigo de cambio de contexto en los ambientes es el hecho que el concepto de window tiene que ser redefinido porque tenemos dos tipos de window, los browser windows, las cuales tienen determinadas propiedades y operaciones disponibles, de los cuales no tenemos mucho control, y las window "internas" las cuales pueden ser controladas casi totalmente, y que no es el caso necesariamente en un ambiente desktop.

¿Es posible un framework portable?
Sí. En el nivel màs bajo de las views (cercano a la capa DOM) existe un minilayer de views que colaboran directamente con los handles, esto serían las views nativas, a este nivel es portable. Este framework podría ser usado con views que configuran objetos DOM, como widgets de otros frameworks.

Un punto de referencia para MVP es Dolphin ¿Podrías mencionar algunas diferencias/similitudes?
Los puntos en común son determinados protocolos de creaciones de árboles y listas de views y presenters, a pesar de que hubo cambios al ser los dominios y restricciones del ambiente distintas. También la serialización de las views (en nuestro caso usaríamos JSON). El "bootstrap" de una view es distinto debido a tweaks de eficiencia y a lo incipiente del framework. El manejo de eventos es distinto, dado que tenemos que tratar de mantener un ambiente lo mas liviano posible, no nos seria para nada beneficioso tener demasiados manejadores de eventos para cada handle, con lo que los eventos asociados a un objeto no podrían (en principio) capturarse al sobrescribir un método #onClick por ejemplo, para el caso de querer capturar un evento de click. Los manejadores de eventos hasta ahora deben instanciarse explícitamente.

continua en el próximo newsletter…
 
Reuniones betaworks

Los encuentros betaworks son reuniones periódicas (una por semana) en un día estipulado y de duración fija abierto a cualquier persona registrada como usuario de U8. Estas reuniones tienen como objetivo realizar progresos en el desarrollo de U8 de manera en conjunta, y responder preguntas en relación a U8/S8.

¿Deseas participar en la próxima reunión? Envía un mail a info@smalltalking para chequear la fecha y duración y obtener a la información para acceder al salón virtual. También, puedes chequear smalltalking mail list por un anuncio de reunión o puedes leer la información en nuestra swiki.

Para participar un llamado (via Skype) y TeamViewer son requeridos.
 
 
 
 
U8 es un proyecto creado y desarrollado
en el contexto de Smalltalking.
Para más informaciòn visite Smalltalking