This article is more than 1 year old
Is SproutCore worth the Flash and Java iPhone snub?
Shows promise, reveals limitations
In this case, the value of the label is bound to a property of the detailController class. SproutCore has already generated this class, in the controllers folder, so to get this working it is only necessary to add the property:
sMessage: 'Some text here'
This is a true bound control. If the property changes at runtime, so does the text of the label. Even better, SproutCore supports observers. Write a JavaScript function, and add the following to the end of the declaration:
.observes('someProperty')
Now the function fires whenever that property changes.
There are more good things in SproutCore. The framework talks JavaScript Object Notation (JSON) for exchanging data with a server, and has its own in-memory database called SC.Store. The SC.Record class has built-in methods for RESTful communication with a server. You can use validation classes with input controls.
There is a range of stylish user-interface objects, including a grid, a list and a tab view; and there is support for drag-and-drop. A test framework and test runner are integrated into the development tools. It also makes use of the jsdoc toolkit, to enable documentation to be generated from comments in your code. SproutCore builds on Prototype for cross-platform support, so it will not be entirely unfamiliar to Prototype users.
SproutCore springs to life
On the negative side, the SproutCore documentation is thin, the project is unfinished, and it does not feel ready for mainstream use. Still, it has huge promise and should mature rapidly now that it has the support of Apple and the attention of others.
In a recent mailing list post, Jolley explained the SproutCore philosophy. "It is designed around a different architectural model than most web apps," he said. "It's closer to a client-server model than a web-server model. You download an application written in JavaScript to run in the browser and then it communicates with your server via AJAX."
It may suit Apple in its battle to keep runtimes out of the iPhone, but do the rest of us need SproutCore, or is it inviting trouble, delivering a tangle of JavaScript to the client rather than using a trusted runtime like Flash or Java?
Instinct says the latter, but SproutCore makes an impressive case for at least considering the AJAX alternative.®