Differences between Sencha Touch and Ext JS

I posted a previous question about Sencha Touch vs. Ext JS and received some good feedback. However, I continue to be confused about the two different platforms.

1. Can Ext JS code be run on mobile devices and will all widgest work (I assume the answer is YES)?

2. Is Sencha Touch optimized for mobile devices, where Ext JS may run more slowly (I assume the answer is YES)?

3. Why isn't Sencha Touch based on exactly the same APIs as Ext JS, where applicable? For example, I'm looking at the Ext.data package on both Sencha Touch and Ext JS. I would assume a package at this low level would be exactly the same on Touch as it is on Ext JS, but they differ quite considerably. Specifically, the "Store" class is a top-level class in Ext JS, but it is a subclass of AbstractStore on the Touch platform. Ext JS doesn't even define AbstractStore (which means it does not provide a TreeStore subclass, for example, like Touch does). Also, on Touch the Store caches "Model" objects, whereas on Ext JS the Store caches "Record" objects. A completely different structure. My basic question is, why the differences (this, and other major differences)? I would have assumed, and preferred, a consistent set of APIs...

4. We are considering using Sencha to develop mobile apps, and we really like the Ext GWT feature set (allowing code written in pure Java). Will Ext GWT perform just as well on mobile platforms as Sencha Touch will? What do you get with Sencha Touch (UI/feature wise) that you don't get from Ext GWT?

1) No, not everything will work. For example the grid relies on having a scrollable div, which mobile browsers don't support. Also think about things like menus, tooltips.

2) It's not really to do with speed, Touch is just optimized to take advantage of the features mobile browsers offer, as well as widgets to cater for the smaller screen real estate.

3) The data package in Touch will be used in Ext 4, which is why there's a break between the two. The idea is to share as much code as possible between the libs.

4) Again, you will miss the mobile experience if you use GXT/Ext, you'll be trying to use desktop style widgets for mobile devices. In the end, the users won't get the same ease of use Touch provides for these devices.

1. Ok, so what happens when you try to run a Ext JS app on mobile? I assume it might display, but won't function properly?

3. Ok, so it sounds like Ext JS is "based" more on Sencha Touch, than the reverse (which is what I assumed). It follows that Sencha Touch generally defines the more 'base' APIs, and Ext JS is a richer desktop experience? When will Ext JS 4 be released, and what other packages will eventually be shared between the two?

4. Ok, so Are there plans for a Java/GWT version of Sencha Touch? I hope so, because I see much value in being able to code in pure Java. We rely on being able to code in Java, use our preferred Java IDE, and take advantage of the Java debugger, which is why I would very much like to base our mobile development on Java rather than JavaScript.

And along those same lines, does Google market GWT as mainly a "desktop" client environment? I'm wondering if Google is planning on a "mobile" version of GWT?

I can't speak to any of this, but on 3. no Extjs has been around, and gone through 3 major code revisions, and tons of minor revisions, all before jtouch, now "sencha touch" was brought into the fold. What Evan said was the data package in touch will be used in Extjs4, so there is starting to be the sharing of code, and libraries between the 2. Just a warning, that ExtJS is not based on touch.

At the risk of repeating what Evan has already said, it breaks down like this:

There is a common Sencha Platform which contains all of the logic packages (data, layout, utility classes etc). Ext JS 4 and Sencha Touch are both simply view layers on top of Platform. Sencha Touch is optimized for mobile touch devices, Ext JS 4 is optimized for desktop browsers.

There is no attempt made to made ST work well on desktop or EXT JS 4 work well on mobile devices - these require fundamentally different approaches when it comes to UI.

Neither product is built on the other. The closest you could get is to say that Platform is the daddy, Touch and Ext JS 4 are the children and Ext JS 3 is the mad old uncle who inspired the whole thing.

Neither product is built on the other. The closest you could get is to say that Platform is the daddy, Touch and Ext JS 4 are the children and Ext JS 3 is the mad old uncle who inspired the whole thing.

Neither product is built on the other. The closest you could get is to say that Platform is the daddy, Touch and Ext JS 4 are the children and Ext JS 3 is the mad old uncle who inspired the whole thing.

There is a common Sencha Platform which contains all of the logic packages (data, layout, utility classes etc). Ext JS 4 and Sencha Touch are both simply view layers on top of Platform. Sencha Touch is optimized for mobile touch devices, Ext JS 4 is optimized for desktop browsers.

There is no attempt made to made ST work well on desktop or EXT JS 4 work well on mobile devices - these require fundamentally different approaches when it comes to UI.

Neither product is built on the other. The closest you could get is to say that Platform is the daddy, Touch and Ext JS 4 are the children and Ext JS 3 is the mad old uncle who inspired the whole thing.

Thanks, Ed. This helps.

This implies a level of separation that I don't currently see. Does this mean that we will eventually have a "core" set of code that could be included in both a desktop and mobile application, with the specific UI widgets built upon that?

In our case, we have a good deal of custom "core" code built for our desktop applications (for instance, DWR readers and proxies), that I would like to re-use for the mobile application. It seems like the core concepts of Stores, Data Models, etc. *should* be consistent between the two, but I do not currently see a way to re-use the ExtJS extensions w/ Touch.

EDIT: I see I should have read further up. It sounds like ExtJS 4 is what I am looking for, and in the meantime there will be a lot of cruft.

....I'm new to Sencha Touch & ExtJs (but quite interested in learning more about them) and so far I've loaded the online ExtJs kitchensink in my mobile browser - it looked and felt like a mobile site, the experience was pretty good I'd say. On the back-end however, I understand that Sencha Touch framework will not connect to an external database while ExtJs will. For the sake of allowing the user to have their data available to them no matter where they are or which device they are using, ExtJs may be a better choice. If your application heavily relies on additional features like swipes, pinch & zooming etc. then Sencha Touch is the better choice.