Posted by Ray Comas on Mon, Apr 29, 2013

In my previous article, I mentioned the convenience of developing hybrid mobile apps using Javascript/HTML5 frameworks and I recommended Sencha Touch as my favorite. Since then, this framework has evolved and the Sencha development team has continued to support and improve their products. Specifically for mobile development, they now offer the following tools:
Sencha Architect
Sencha Touch
Sencha Eclipse Plugin
Sencha Touch Charts
Sencha Mobile Packaging
Sencha Support Package
(You can get all the information you need about these tools and some usage examples in the Sencha website so I am not going to get into details.)
After over three years of experience developing mobile apps, I still believe Sencha Touch is one of the most advanced mobile frameworks out there, although it doesn’t escape from the inconsistencies of HTML5 implementations in the real world.
I wish I could say everything is smooth and easy in hybrid application development but I can’t. One of the main problems I have found when developing hybrid apps in Sencha Touch is that they (in many case) don’t have the same behavior in every platform. Somehow this would be expected, but things get worse when trying to create a generic application for the Android platform. Due to the number of Android devices manufacturers and different (sometimes customized) versions of Android OS, it is very challenging creating an HTML5 based mobile app that is compatible with the HTML5 implementation of all these devices and versions. In the case of iOS, since all the devices are manufactured by the same company and the HTML5 implementation in Mobile Safari is standard across devices, making an in-platform compatible mobile app is much easier.
The other problem I have found with hybrid apps developed in Sencha Touch compared to native apps is performance. This can also be expected when considering that we are using the browser UI and pretty large javascript files in order to run our HTML app. In some cases this difference in performance does not represent a real problem when comparing it to the convenience of developing a hybrid app. Also, considering that mobile devices are more advanced every year with faster processors and more hardware capabilities in general, this should become less of a problem. However, in some heavy apps the slower performance can be noticeable.
We can’t really blame mobile HTML5 based frameworks for any of these issues since they are inherent to the solution itself. These frameworks provide an alternative to the standard native application development method but are not perfect, and it is very important to understand the pros and cons.
In conclusion, developing hybrid apps could save developers a considerable amount of time, but it could also be a nightmare trying to make them work in all the mobile frameworks and devices. My advice is evaluating the specifications of the app and compatibility requirements before making any development decisions. In some cases, we have been able to create hybrid apps that meet all of our customers’ specifications and compatibility requirements without any problem, but in other cases, we have taken (for good) the path of developing native apps.
Next time you develop a mobile app, consider all the options. The more experienced you get, the better choices you will make. Doesn't this principle apply pretty much to everything in our daily lives?
Posted by Ray Comas on Mon, Apr 18, 2011

Developing and maintaining mobile applications for different platforms could be really challenging. If we originally wrote our code for a Windows mobile device using Silverlight and Visual Studio for example, that application won’t work on any other phone or tablet outside the Windows mobile family. In order to make that application work on an iPhone or iPad, the code would need to be rewritten using Objective C and xCode, which are the language and tool required for building mobile application for iOS devices.
In an ideal world, we would be able to write our code once, and then build and compile our application for the mobile framework of our choice without getting into too much trouble. Even though having a unique programming language that would allow us to write native applications for all the existing mobile frameworks is still a dream, and also not likely to happen any time soon, there are some alternatives that have just started to be mature enough to be seriously considered by the end-consumer and corporate sector as plausible solutions. Yes, I am talking about combining HTML5, CSS3, and Javascript to create web-based applications that can be converted to native code and would run on our mobile devices just as any another app downloaded from the applications store. But how is this possible? Basically, there are two key components that allow this to happen. First, is the new HTML5 web standard (still under development but stable enough already) that natively supports canvas elements, offline storage, drag and drop, geolocation, file manipulation, among other useful features accessible through new APIs that overhaul the whole concept of standard HTML. The other key element is the tool that makes possible accessing local resources in devices such as GPS, accelerometer, etc, and building a compiled version of the application for the mobile operating system of our choice (for example Phonegap).
There are already some Javascript frameworks specifically intended for mobile devices that can help developers creating cross-platform applications that look very similar to those that are built using native SDKs. There are obviously some limitations in using this approach if you were to develop OpenGL games, but for standard enterprise, entertainment, and general purpose applications, it will work just fine.
One of the most complete and personally one of my favorite Javascript frameworks for mobile devices is Sencha Touch, which provides very responsive native-like controls, data package, and MVC support. It also works very well with Phonegap, making it one of the best choices for creating mobile-friendly web-based applications as well as native HTML5/CSS3/Javascript mobile applications.
Here are some other popular mobile Javascript frameworks that you can try:
- jQuery Mobile
- jQTouch
- iWebkit
- DynamicX
- Wink ToolKit