A InfoQ anunciou o SproutCore há um certo tempo e recentemente tomou conhecimento do lançamento da release 1.0. O SproutCore promete excelentes aplicações desktop diretamente no browser sem a utilização de plugins. Tudo isso é feito utilizando-se técnicas e tecnologias existentes há alguns anos, e que ainda continuam a evoluir. O SproutCore utiliza JavaScript, HTML e CSS. Isso naturalmente leva o SproutCore a ser agnóstico em termos de backend que trás uma vantagem interessante,
Ele pode trabalhar com a tecnologia de servidor backend que você desejar. De fato, uma vez instaladas, as aplicações SproutCore possuem somente HTML, JavaScript e CSS. Você pode fazer o deploy de toda a aplicação utilizando nada além do Apache.
Desde a última vez que publicamos sobre o SproutCore, muitas coisas foram modificados e agora o InfoQ entrevista Charles Jolley, Presidente e CEO da Sproutit, com algumas questões sobre a nova release.
O que faz do SproutCore um framework para aplicações HTML 5?
O SproutCore é um dos primeiros frameworks web explicitamente desenvolvido para a utilização dos novos recursos para web no HTML5 (ex.: armazenamento off-line, HTML5 ApplicationCache, etc) para construção de aplicações ricas em classes nativas. O SproutCore possui total compatibilidade com os recursos HTML4, mas estamos olhando para os próximos 5 anos onde teremos navegadores com suporte à HTML5 - Safari 4, Chrome, Firefox 3.5, etc são os mais compatíveis.
Para mim esse é o trabalho mais excitante que está acontecendo na web, e nós estamos trabalhando para isso.
Quando o SproutCore 1.0 irá deixar de ser beta?
Neste outono. Ainda que teremos aplicações online no SproutCore 1.0 antes disso. A versão está bem estável desde que adicionamos mais de 5.000 testes unitários, cobrindo todos os recursos, durante o último ano. Durante o ano passado, nós literalmente reescrevemos cada parte das ferramentas de geração do SproutCore e do framework JavaScript para estabilizar a API e trazer grandes avanços para a perfomance. Imagino que, enquanto o SproutCore 0.9 (e versões anteriores) estava provando que você pode desenvolver aplicações ricas, do tipo desktop, para o navegador web, o SproutCore 1.0 trás a consistência e confiabilidade para o núcleo dessa tecnologia. Estou feliz em dizer que realmente ultrapassamos nossos objetivos nesse trabalho. O SproutCore 1.0 é definitivamente o melhor trabalho que muitos de nós já fizemos até hoje.
Serão atualizadas as documentações, o site, etc para a release 1.0 (como foi citado no site)?
Sim. De fato, nós já começamos hospedando a documentação da API no site http://docs.sproutcore.com e ainda temos um visualizador embutido de documentação que cada um constrói. Há também uma variedade de aplicações de exemplo (http://demo.sproutcore.com) incluindo aplicações completas que serão disponibilizadas em breve.
Por que SproutCore ao invés do GWT ou Cappuccino?
Normalmente as pessoas que tentam o GWT ou o Cappuccino mudam para o SproutCore por várias razões. A primeira razão para eles mudarem é a performance. Com esses três frameworks (GWT, Capp ou SproutCore) você terá rapidamente uma aplicação web rica. Uma vez que você desenvolve uma aplicação com muita complexidade, não durará muito tempo até que maiores problemas de throughput aparecem, especialmente no tempo inicial de carregamento da aplicação. As aplicações SproutCore apresentam boa escalabilidade nessa situação. A segunda razão é a capacidade de customização. Ambos GWT e Cappuccino o mantém afastado do navegador, trabalhando em suas caixas de areia (sandbox) Java ou Objective-J. Isso funciona muito bem até que você utilize todos os recursos disponíveis que eles fizeram na plataforma. Assim você estará em dificuldades com os recursos do framework. O SproutCore oferece também funcionalidades para camadas ricas, mas isso é baseado no antigo JavaScript, permitindo que você altere diretamente o código de uma forma bem fácil.
Por que a mudança do Ruby (0.9) para JavaScript puro (1.0) na camada de apresentação?
Duas grandes razões. Primeiro, estamos planejando construir um designer drag-and-drop de IU (interface usuário) assim que a versão 1.0 estiver pronta. A utilização de JavaScript tornará isso possível. De fato, as bibliotecas do núcleo necessárias para criar um designer de IU já foram desenvolvidas no código do SproutCore 1.0. Nós precisamos finalizar é o designer de aplicações.Em segundo, e mais imporante, é a performance. Isso fica visível se, você somente codificar em JavaScript e então deixar o SproutCore tratar o HTML e o CSS, nós podemos implementar alguns truques que tornam sua aplicação mais rápida, até mesmo no IE. No geral, a nova camada de visão no SproutCore é 10 vezes mais rápida que na versão anterior (e a versão anterior era bem rápida). Como um benefício, utilizar JavaScript puro torna o desenvolvimento mais fácil uma vez que você não precisa pensar em duas linguagens de programação; somente uma.
A API DataStore pode ser utilizada para recuperar dados de um servidor Java? Um SGBDR (ex.: MySQL, Oracle)?
Você pode trabalhar com qualquer servidor backend que desejar. O Todos Tutorial (http://wiki.sproutcore.com/Todos%C2%A0Intro) de fato o permite selecionar 3 diferentes servidores em seus exemplos. Java não faz parte da lista ainda, mas penso que alguém está trabalhando nisso. Algo interessante é que as aplicações SproutCore são simplesmentes código HTML/JS/CSS. Não importa qual o servidor de backend usado, uma vez que sua aplicação SproutCore realiza a comunicação com o servidor via Ajax.
É possível/viável embutir outro tipo de conteúdo (ex.: vídeo, conteúdo flash, audio)?
Certamente! Veja o video (http://demo.sproutcore.com/video/) no Safari 4 como exemplo. [essa demonstração usa a tag de vídeo do HTML5] De fato, no SproutCore 1.0 nós removemos a dependência com o Prototype (www.prototypejs.org) e tornamos o SproutCore agnóstico em termos de bibliotecas JS. Isso significa que, se você tiver um código em jQuery, ExtJS, YUI, ou em mesmo em Prototype, você poderá embutí-lo na aplicação SproutCore.
Com o SproutCore 1.1 nos planos, há um cronograma para essa versão?
Ainda não. Estamos focados em assegurar que o SproutCore 1.0 será o melhor que podemos fazer. Ao contrário da 1.0, onde uma empresa fez a maioria das sugestões, a partir da versão 1.1 possivelmente teremos maior participação da comunidade, e imagino que assim nosso site será mais conhecido.
O SproutCore é uma interessante possibilidade para desenvolver aplicações web dependentes exclusivamente do navegador. De toda forma, existem alternativas que valem a pena uma investigação como o Google GWT e o Cappuccino.