Tuesday, May 21, 2013

Mobile - Cross-Platform Mobile Development Tools

As mobile OSes — especially iPhone and Android — wax and wane, the pressing question remains: How do you choose which mobile devices to develop for and which devices to omit from your roadmap?
Cross-OS platforms for mobile development on the whole are not yet a completely perfect, have-your-cake-and-eat-it-too solution, but many of them offer an excellent alternative to ignoring one mobile OS in favor of another or, perhaps worse, burning serious resources to develop for two or three platforms at once.
Here are a few cross-platform development tools that were recommended to us by sources we trust. If you know of others or if you have any helpful tips about the frameworks we're mentioning here, please let us know about them in the comments.

1. RhoMobile


The tagline "one codebase, every smartphone" pretty much says it all. RhoMobile offers Rhodes, an open source, Ruby-based framework that allows for development of native apps for a wide range of smartphone devices and operating systems. OSes covered include iPhone, Android, Windows Mobile, RIM and Symbian.
The framework lets you write your code once and use it to quickly build apps for every major smartphone. Native apps are said to take full advantage of available hardware, including GPS and camera, as well as location data.
In addition to Rhodes, currently in its 2.0 iteration, RhoMobile offers RhoHub, a hosted development environment, and RhoSync, a standalone server that keeps app data current on users’ mobile devices.

2. Appcelerator


When we polled Twitter followers for recommended cross-platform tools, Appcelerator stood out as a fan favorite.
Another FOSS offering, Appcelerator's Titanium Development Platform allows for the development of native mobile, tablet and desktop applications through typical web dev languages such as JavaScript, PHP, Python, Ruby and HTML. Titanium also gives its users access to more than 300 social and other APIs and location information.
Appcelerator's offerings also include customizable metrics for actions and events. App data can be stored in the cloud or on the device, and apps can take full advantage of hardware, particularly camera and video camera capability.

3. WidgetPad


WidgetPad is a collaborative, open-source mobile development environment for creating smartphone apps using standard web technologies, including CSS3, HTML5 and JavaScript.
This platform includes project management, source code editing, debugging, collaboration, versioning and distribution. It can be used to create apps for OSes such as iOS, Android and WebOS.
WidgetPad is currently in private beta; you can contact the creators for access.

4. PhoneGap


PhoneGap, the recipient of the winning pitch at Web 2.0 Expo San Francisco's 2009 Launch Pad event, is a FOSS framework that helps you develop apps for iPhone, iTouch, iPad, Android, Palm, Symbian and BlackBerry devices using web development languages such as JavaScript and HTML. It also allows for access to hardware features including GPS/location data, accelerometer, camera, sound and more.
The company offers a cross-platform simulator (an Adobe AIR app), as well as online training sessions to help you access native APIs and build functioning mobile apps on the PhoneGap platform.

5. MoSync


MoSync is another FOSS cross-platform mobile application development SDK based on common programming standards. The SDK includes tightly integrated compilers, runtimes, libraries, device profiles, tools and utilities. MoSync features an Eclipse-based IDE for C/C++ programming. Support for JavaScript, Ruby, PHP, Python and other languages is planned.
The framework supports a large number of OSes, including Android, Symbian, Windows Mobile and even Moblin, a mobile Linux distro. Currently, support for iPhone is present in the nightly builds and will be integrated in early Q3 with the release of MoSync 2.4. BlackBerry support is coming later this year, as well.

6. Whoop

If you're not a mobile developer and you've made it this far, first of all, bless your heart. Second, you might be able to enjoy the same cross-platform publishing benefits as your coding buddies with this tool. We can almost guarantee your efforts won't be nearly as polished, bug-free, customized or functional as something you could create with one of the five platforms above, but Whoop just might be worth a try.
The Whoop Creative Studio is a WYSIWYG web editor that allows you to drag and drop mobile app elements to your heart's content. Once you're done, you can export your app in formats for several devices and operating systems, including iPhone, Android, RIM, Windows Mobile and other OSes.

7. Titanium4J

Build incredible native applications for Mobile and Desktop in Java ! From Java to highly optimized JavaScript, to native code. You can now easily develop iOS and Android, Blackberry, Tizen, Windows, Mac OS and Linux Apps all in Java! 

Conclusion

PhoneGap:
  • JavaScript API that provides access to Native Functions
  • Supports HTML5/CSS3
  • Supports Web Standards & Re-use Across Enterprise Apps
  • Supports DOM based JavaScript Libraries/Frameworks
  • Supports the most platforms
Appcelerator Titanium:
  • JavaScript API that provides access to Native Functions
  • Compiles to Native Code
  • Could provide better performance.


In conclusion, it depends on your particular use case as to whether you should go with PhoneGap or Appcelerator. It also depends on the resources (financial and otherwise) that you have available for the project.
PhoneGap is lightweight and for many it will simply suit them better given the more generic style of application development.  If you have access to some good JavaScript programmers and want to create a more complex and resource intensive application, Appcelerator will be a better choice.

Another Discussion

1) If you know programming
Of course most of the frameworks expect you to know programming. Still even if you don’t know programming there are a number of app builders that allow you to create complex apps in the “drag and drop” environment. In case you are dreaming about developing a game, so GameSalad will help you: it has an intuitive Drag and Drop UI which gives you the possibility to build apps without coding. If your intention is to develop a business app, so BiznessApps will let you build the app for many scenarios.
2) Create apps in a language you know
I suppose you all know that the “native” languages for iOS and Android are Objective-C and Java respectively. Even if you don’t know these languages, please don’t give up as you can create apps in a language that you know. In case you know Javascript, you can use Sencha Touch to build a HTML5 app and then compile it for iOS or Android native app using Phonegap J In case you know Lua, you can easily build a cross platform native game using Corona. In case you know Ruby, RubyMotion will help you to build an iOS app. In case you are master of Java but would like to make smth for iPhone, you can use trick with GWT-touch to create HTML5 app and then compile it using PhoneGap J.
3) How native or cross-platform do you want it?
Do you know that there is a kind of tradeoff that some of the frameworks make? For example, a HTML5 app build with the help of Sencha, jQtouch and GWT-touch could have almost native look and feel, but not 100% native of course. But if you use Titanium and Corona with native UI components, the apps will have 100% native look. The advantage of HTML5 apps is that they could be further compiled for more platforms. Plus they can also be deployed on the web without making any code changes.
4) If you are a web developer and want to continue using your old tools
Firstly, hello to web developers who are reading this article :)
Another advantage of these HTML5 apps is that a web developer already knows most of the technologies and has most of the tools available. For instance, if a web developer has to create an app using jQuery Mobile or Phonegap, he can use IDE which he has always been using, for debugging you are welcome to use Chrome Inspector or Firebug. If you still insist on using your trusty tools, go on with Sencha or jQuery Mobile.
5) If you select a frame by taking into consideration their “pros” or “cons”
In case you choose a framework based on “+” and “–“, so hope the following short list will be of use to you.
· jQuery Mobile
+ Great tools like Theme Roller and Codiqa UI builder;
+ View only framework (you can use whatever to handle the MC parts)
+ Based on jQuery;
+ Lots of plugins;
+ Most popular.
- Could be too heavy for some smartphones;
- No official paid support.
· Sencha Touch
+ Based on ExtJS;
+ Complete MVC framework;
+ Official paid support;
+ Sencha Architect is great.
- Some controls look off;
- No native controls;
- Performance;
- Few customization options;
- Client side DOM generation.
· Titanium
+ Rapid prototyping;
+ Web-oriented;
+ Well-known JavaScript for many developers;
+ It’s sross-platforming;
+ Native UI.
- Increasing complexity (and costs);
- No freemium;
- Flexibility limitations;
- Native UI*.
*The native UI is both an advantage and disadvantage. If your UI is simple enough, you may be able to use a single code base. But more than likely, you will need to tweak the UI for each platform to take full advantage of each platform.
· PhoneGap
+ Single code base for all platforms;
+ Rapid testing and deployment;
+ Multiply Platforms;
+ Access basic native functionality;
+ Offline usage.
- Poor performance;
- Lack pre-built UI widgets, transitions, standard controls;
- Access advanced native functionality;
- Complex Business Logic etc

Titanium vs Phonegap vs Native application development

The development for Android and iOS requires obtaining the respective SDKs. On iOS, this means learning Objective-C and also learning Cocoa Touch. Android programming is very similar to Java, but with Android-specific APIs and frameworks. In addition to the native application development for these platforms, there are also several third party APIs that can assist in the development process. There are several options to choose from for mobile development:
Speaking of mobile websites, their advantages are quite obvious: Mobile Website runs on all mobile devices because it’s based on web technologies and does not depend on the OS of a mobile device. At the same time, a mobile website wouldn't have access to all device features and has to work within the limited capabilities.
In this post I will be talking about mobile applications and briefly discuss about the available APIs for development as well as their pros and cons.
1. Native application development [iOS SDK][Android SDK]
Xcode is the official toolset provided by Apple for any Mac and iOS development. Google recommends using Eclipse for development on Android[see this]. iOS development requires familiarity with Objective C[see this]. Although, its syntax is quite different from other traditional programming languages like Java and C++, it is not very difficult to get on with. Android development is based on Java and comparatively easier for programmers with previous experience with Java.
Advantages
* The native applications allow the full use of the device capabilities which might be missing in other third party APIs.
* It is easier to get good performance for the application when programming using native SDKs.
Disadvantages
* Requires learning different languages for development on different platforms.
* The code base developed for one platform cannot be easily adapted for another platform.
2. PhoneGap
Using PhoneGap, developers can build applications using HTML/CSS/JS, including JavaScript classes that give access to device hardware and other iOS API featurs like contacts, filesystem, camera, microphone, GPS, etc. The final application is wrapped within a platform native 'Web View' browser object, and essentially becomes a stand-alone web application with the ability to access some device- specific features.
Advantages
* One can use plain old Javascript or even other libraries like jQuery, Prototype, Sencha Touch, MooTools, etc to handle the interaction.
* Allows the development for several platforms at once, e.g. Android, iOS, Windows etc.
Disadvantages
* The applications are web applications inside a Web-View. Browser performance doesn't come close to native application component performance.
* Not all device APIs would be available for the applications.
3. Titanium
Using Titanium, developers can create an application writing Javascript and calling Titanium's APIs. The Javascript is then interpreted at runtime. The application's UI becomes completely native. There is no web UI in your app since the native Titanium APIs take over control of all UI needs. Titanium runs application's JavaScript using one of two JavaScript interpreters' JavaScriptCore on iOS (the interpreter used by Webkit) and Mozilla Rhino on Android.
The Javascript calls to the Titanium API are mapped to native code in the Titanium framework and generate native components. Events in those components are sent back to the code in Javascript where we can handle them. The end result is a relatively fast performance.
Advantages
* Titanium provides good performance (by using the native components) whilst having a simple and powerful API that gives access to most interface elements either iOS and Android has.
* Allows the development for several platforms at once, e.g. Android, iOS, Windows etc.
Disadvantages
* (For web developers) Using HTML or CSS is no longer possible as it doesn't use Web-View for deploying the application. Using external Javascript libraries that work with DOM is not possible (as there is no DOM).
* The performance still lacks behind what you can obtain using native SDKs.
EDIT:
Personally, I have worked with both Titanium and Native application development for iPhone and Android. Although, Titanium is good for developing applications quickly, I wouldn't recommend it for a sufficiently complicated application specially if it focuses a lot on hardware features. Before beginning the development on an application, I would analyze all requirements for the application and choose among one of the three because they all have their own advantages. For someone looking to quickly decide on one of these, here are some quick points:
  • You are a web developer and want to make a simple app that serves as a mobile front-end of a web service with not a lot of processing/complex UI on the Front-end. USE TITANIUM
  • You want to make something that will handle a lot of images and use the device camera. NATIVE DEVELOPMENT
  • You are developing only a user interface and don't have to use heavy processing/device features. USE TITANIUM
  • You want to customize your application heavily. NATIVE DEVELOPMENT
These are not comprehensive set of points and as I pointed out, each application needs a detailed study about the features that it will have and the capabilities of the framework. It depends on a lot of factors: your goal, your business, your budget, your audience. This list could go on and on. Don't rush into the decision. Its difficult and costly to switch the framework after you begin developing.
Reference:
http://www.universalmind.com/blog/mobile-html5-phonegap-vs-appcelerator-titanium
http://en.wikipedia.org/wiki/Mobile_application_development
http://developer.appcelerator.com/blog/2012/05/comparing-titanium-and-phonegap.html
http://www.devpeople.co.uk/phonegap-or-titanium-appcelerator/
http://mobile.tutsplus.com/category/tutorials/

2 comments:

  1. This is an awesome post. Really very informative and creative. This sharing concept is a good way to enhance the knowledge. Thank you very much for this post. I like this site very much. I like it and it help me to development very well...
    Mobile App Development Company in Dubai
    Android App Development Company in Dubai
    Mobile App Development Company
    Android App Development Company in UAE

    ReplyDelete
  2. The article has genuinely peaks my interest. I’m going to bookmark your web page and maintain checking for new details. Xamarin Developers in Frisco

    ReplyDelete