Posts Tagged ‘sproutcore’

All this talk of Rich Internet Applications and choosing if one should use Flash, Silverlight, or some Googley “open source” solution can leave the head spinning. Most often it is best just to get the job done with the tools and skill set at hand. But what does the future hold?

Several clues are at hand, revealed at last week’s Apple developers conference in San Francisco.

Safari is about to get much faster at running javascript, the web programming language that powers many neat Web 2.0 style sites. Other browsers are getting faster, too. Why? Because this is the slowdown bottleneck in the Web 2.0 environment. (Example speed increase here.)

Apple has been contributing heavily to the open-source SproutCore javascript frameworks and they form the basis of much of the new MobileMe service that replaces dot.mac. This is their push factor. Almost all vestiges of Flash have been removed from Apple.com and replaced with “standards” focused elements that are just as spiffy.

Why SproutCore? It is being used to deploy Apple’s own Cocoa programming frameworks from the Mac (that’s what gives the Mac it’s look-and-feel) onto the web as open standards that will enable “desktop” like applications (in their look and power) to run in your web browser. And on your Windows PC, to boot. Talk about an end-game run around!

SproutCore not only makes it easy to build real applications for the web using menus, toolbars, drag and drop support, and foreign language localization, but it also provides a full Model View Controller application stack like Rails (and Cocoa), with bindings, key value observing, and view controls. It also exposes the latent features of JavaScript, including late binding, closures, and lambda functions. Developers will also appreciate tools for code documentation generation, fixtures, and unit testing.

A key component of its clean MVC philosophy that roots SproutCore into Cocoa goodness is bindings, which allows developers to write JavaScript that automatically runs any time a property value changes. With bindings, very complex applications with highly consistent behavior can be created with very little “glue” code.