Apple podría intentar reforzar el éxito de sus aplicaciones Web incluidas en su servicio Mobile Me añadiendo las aplicaciones de su suite de productividad iWork en un anuncio que podría realizarse esta próxima MacWorld que se inaugura el 6 de enero. Pages, Keynote y Numbers podrían relanzarse como aplicaciones web, de forma similar a las Galerías de fotos de Mobile Me, que fueron construidas alrededor de SproutCore.
Una de los más grandes lanzamientos durante la pasada WWDC de 2008 fue hecho público de forma muy discreta en una sesión llamada «Construyendo un «Look-and-Feel» Nativo en Aplicaciones Web usando SproutCore.» Mientras Apple mantuvo un alto nivel de seguridad en la correspondiente sesión de la WWDC, sellada con un acuerdo de no-revelación (NDA), el secreto de SproutCore se conoció al final porque es un proyecto open-source y la gente puede hablar de él.
Como la agenda pública de Apple para la WWDC explicó, «SproutCore es una estructura de Javascript inspirada en Cocoa que es independiente de cualquier plataforma y completamente open-source, utilizada para crear aplicaciones web que tengan el aspecto y el comportamiento de aplicaciones para escritorio. Aprende a combinar SproutCore con las tecnologías del estándar HTML5 de almacenamiento de datos fuera de línea para entregar una experiencia de usuario de primera clase y un rendimiento excepcional en tu aplicación web.»
Los secretos de SproutCore primero salieron a la luz el otoño pasado, cuando se reveló que la Galería Web .Mac había sido construida usando esta estructura. Originalmente desarrollado por Charles Jolley de SproutIt para ser usado en un administrador de correo electrónico en línea llamado Mailroom, la estructura SproutCore va más allá de otras estructuras JavaScript porque fue diseñada para construir aplicaciones completas en la red, más que sólo agregar una animación o efecto a las páginas web.
Ayuda Abierta para JavaScript
Javascript es un lenguaje poderoso que, gracias a estar incluido con todos los navegadores modernos, tiene una base de usuarios muy amplia. Sin embargo, hay escasez de buenas herramientas para construir aplicaciones, sólo existen algunos scripts básicos para animaciones y otros comportamientos dinámicos. Esto ha abierto la puerta a herramientas propietarias como Adobe Flash, que está construido alrededor de ActionScript, a su vez basado en JavaScript.
Flash provee de una estructura grande que se encarga de cosas que no son fáciles de hacer con JavaScript solamente, pero que requieren distribuir un plugin de Flash para que funcione. Las aplicaciones Web hechas en Flash ya no son interpretadas en el navegador mismo, sino en el plugin de Adobe. Eso hace que los desarrolladores dependan de Adobe, y también deja a otros vendedores de plataformas como Apple depender de Adobe para que provea de plugins adecuados para sus productos.
El plugin del Flash de Adobe para Mac ha sido un ciudadano de segunda clase durante mucho tiempo porque Adobe se ha enfocado en la versión para Windows; Steve Jobs también declaró que Adobe no ofrecía una versión para móviles apropiada para el iPhone, sólo la versión Flash Lite, que no es capaz de ejecutar contenido Flash diseñado para ordenadores de sobremesa actuales y la versión para ordenadores de sobremesa no es apropiada para un dispositivo móvil, como es descrito en Steve Jobs no usa Flash en el iPhone.
En lugar de usar Flash en su propia web Apple ha estado trabajando en un número de estructuras abiertas como Prototype y Script.aculo.us, que mencionan a Apple como un usuario de alto perfil en su sitio. Esas estructuras ofrecen código preconstruido que ha sido pulido hasta trabajar en todos los navegadores, haciendo más fácil para el desarrollador concentrarse en lo que debería estar haciendo su página y no en reinventar repetidamente la rueda para varias funciones de bajo nivel. En ese sentido, las estructuras de JavaScript abiertas pueden reemplazar a Flash sin requerir ningún plugin secundario porque son simplemente un JavaScript abierto que corre directamente en el navegador.
Introduciendo SproutCore
Jolley de SproutIt decidió moverse más allá de las estructuras de scripting comunes y desarrollar un stack de desarrollo de aplicaciones completa basada en la arquitectura Model View Controller. En el desarrollo MVC, los datos de Modelo y las Vistas de interfaz de usuario están atadas por la lógica discreta del Controller. Esto contrasta con las típicas herramientas de desarrollo de aplicaciones web que mezclan lógica, datos y presentación juntos, resultando en un código sucio y difícil de mantener.
Como se explica en el sitio del desarrollador, «SproutCore es una estructura para construir aplicaciones en JavaScript con relativamente poca cantidad de código. Puede ayudar a construir aplicaciones enteras en el navegador que puedan crear y modificar datos, comúnmente completamente independiente del navegador, comunicándose solamente con el servidor a través de Ajax cuando necesita guardar o cargar datos. Las aplicaciones JavaScript son más rápidas, más fáciles de usar y más fáciles de escribir que las complicadas aplicaciones Ajax. Cuando usas una estructura como SproutCoure para ayudarte, también pueden ser muy divertidas de escribir.»
SproutCore pone más de la aplicación en el navegador mismo, resultando en la designación de «cliente grueso». Esto permite una experiencia que responde mejor y llena de características que tienen el aspecto y comportamiento de aplicaciones de sobremesa porque está en realidad funcionando en el ordenador local en vez de esperar las respuestas de un servidor remoto. La capacidad para hacer esto es en realidad bastante nueva; avances rápidos de los navegadores en el último año han hecho, finalmente, que las aplicaciones de JavaScript pesadas sean prácticas.
Cocoa para la Red
Apple no sólo usó SproutCore, también contribuyó importante actualizaciones en el rendimiento y añadió nueva funcionalidad. Las contribuciones de Apple han ayudado a hacer de SproutCore la manera ideal de construir aplicaciones para la web que funcionen como aplicaciones Cocoa para el escritorio, como se hizo notar en el artículo «Cocoa para Windows + Asesino de Flash = SproutCore«. Ambos comparten muchas de las mismas convenciones, como el uso de vinculantes. Los vinculantes de SproutCore permiten a los desarrolladores escribir JavaScript que funciona automáticamente cada vez que el valor de una propiedad cambia. Usando vinculantes, aplicaciones muy complejas con comportamientos consistentes pueden ser creadas con poco código «pegamento».
Apple también ha estado trabajando en el otro lado de la ecuación cliente para mejorar su propio motor JavaScript en Safari. Anunciado justo antes de WWDC, el nuevo intérprete de Javascript SquirrelFish de WebKit aumentará dramáticamente tanto el rendimiento de las aplicaciones de JavaScript como aquellas construidas en SproutCore.
Esos dos factores se combinan para hacer de SproutCore el heredero natural de Yellow Box o Cocoa para Windows, una posibilidad que se comenta desde que Apple se retiró de su estrategia de múltiples plataformas Rhapsody para desarrollar Mac OS X hace diez años. Pero en vez de requerir un runtime de Cocoa, los usuarios sólo necesitan un navegador con JavaScript, incluyendo Safari, Safari Móvil en el iPhone, FireFox o Internet Explorer 6 ó 7.
Utilizar SproutCore le ha permitido a Apple entregar un paquete de aplicaciones en línea en MobileMe para una audiencia multiplataforma. El siguiente paso naturalmente será expandir estas ofertas para incluir otras, por ejemplo, aplicaciones de productividad iWork. Ya que SproutCore es ofrecido bajo la licencia open-source de MIT, cualquiera puede utilizarlo para desarrollar aplicaciones web que respondan rápidamente También parece posible que Apple invite, en algún momento, a otras partes a crear aplicaciones MobileMe, ya sea bien incluidas como parte de la suscripción al servicio, o bien por una tarifa nominal. Eso reflejaría los esfuerzos de la compañía en crear un mercado de software móvil en la App Store.
Hay más información acerca de SproutCore en su sitio oficial.
espero que siga existiendo la versión NO online, prefiero trabajar offline si asi lo requiero 🙂