Over a million developers have joined DZone.

Sencha Touch: The End of Native

DZone 's Guide to

Sencha Touch: The End of Native

· Mobile Zone ·
Free Resource
Sencha Touch is a framework that uses the most modern web standards (HTML5, CSS3, JavaScript) to develop web apps that run like a native app on iPhones and Androids.  Although Sencha Touch, which was unveiled today, calls itself the "First HTML5 Mobile App Framework," it seems like the second because Titanium claims to do many of the same things.  Sencha was announced earlier this week as a new umbrella company for Ext JS, jQTouch, and Raphael.

Sencha Touch: A walk through of the kitchen sink from Dion Almaer on Vimeo.

Currently, Sencha Touch wraps a Sencha app with Phone-gap and usually about two-thirds of a non-game app doesn't need special device access.  Camera access isn't available yet, but the framework is still in beta and more access will be added soon.

The framework lets you add custom events like tap, double tap, swipe, tap and hold, pinch, and rotate.  Tabs, carousels, and list are just some of the built in components for the UI layouts.  There is a wide variety of data sources including Ajax, JSONp, or YQL.  There is also quick and easy theme building with Sencha's SASS technology.

Sencha Touch has some of the features of Ext JS, such as the object-oriented JavaScript and data package, but the UI components are brand new.  People have asked about the difference between Sencha's jQTouch and Sencha Touch, which is that jQTouch isn't a full application framework.

The initial beta is licensed under FLOSS and GPLv3.  A commercial trial license will eventually be added.  There are also Free and Open Source exceptions  in their GPLv3 license, so you won't trigger the GPL'ing of your project (with an OSI approved license) if you include Sencha Touch in it.

Check out the demos of apps that you can make with Sencha Touch.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}