Mobile application development frameworks : The Good, bad and ugly? - mobile

Over the last couple of years( or maybe less ) a number of different mobile application development frameworks have come up that promise you the ability to create cross platform( in some cases ) mobile applications without native device SDK programming. Some of these are OpenPlug, Redfoundry, Appcelerator, PhoneGAP, RhoMobile , Ansca-Corona
This list is steadily becoming bigger so it’s a bit of a challenge to know which are the good ones from the not so good and bad ones out there. Anyone in this group has any good/bad/ugly experience with any of these these ? If you've used any of these , are these really good enough to build real world applications ?

I'm just getting into rhomobile (Rhodes 3) and finding it very very good, mainly because I'm a Ruby/RoR developer and I am not having to face learning yet another development language and I'm finding this to be a thoroughly enjoyable experience although a little confusing to start with.
I'm tending to shy away from rhohub and develop on my local machine which I find a lot simpler to do for many reasons.
I previously had a play with buzztouch but it didn't produce a native looking app, however it works very well if you don't want to do anything too complex (functionality is quite limited)
I guess the best advice I can give you is to try out the different platforms starting with the platform that covers the language you prefer and see how you get on

We have used Phonegap to develop many cross platform applications. PhoneGap, also known as Apache Cordova, is a technology that lets programmers build a mobile application and then wrap it in the PhoneGap framework that can be installed as a native mobile application across multiple mobile device platforms easily.
Our experience with this has been very good in relation to the kind of data driven apps we have built.
If you are web programmer proficient in HTML5, CSS and JavaScript then PhoneGap brings you new opportunities! You can build native mobile apps using the web technologies that you know and love: HTML, CSS, and JavaScript. Applications that are developed using PhoneGap are hybrid applications. Parts of the application – mainly the UI, the application logic, and communication with a server, is based on HTML/JavaScript. The other part of the application that communicates and controls the device (phone or tablet) is based on the native language for that platform. PhoneGap provides a bridge from the JavaScript world to the native world of the platform, which allows the JavaScript API to access and control the device (phone or tablet).

Related

Comparison between native language or cross platform language such as HTML5 for mobile applications

After I researched in some websites, I found that it is better to use cross-platform language to write apps.
But, is it good for using HTML5, and is there any tutorial for writing applications for mobile?
It's not better, but it is faster and easier. Android wants Java, iPhone wants Objective C, meanwhile you can fire up e.g. PhoneGap and write everything in JavaScript. Thus, you save time on development, but the application itself will run slower, it will take more work to make it conform to the platform look and feel. As for tutorials, they accompany each individual framework.

Toolkit options to write a crossplatform mobile app in 2012?

I'm currently investigating the alternatives for crossplatform development for Android and iPhone (Windows 8 could be a nice addition). The app is basically a "map with an asociated app", and certainly not a game.
Searching here I see many outdated advice and tools from 2010/2011, but since then Apple has changed their policies and surely new things have appeared.
My current list and light research (might have facts wrong) is:
Monotouch/Monodroid: .NET (Mono) framework. Create "native" apps on both platforms. Requires rebuilding UI code (or similar things).
Appcelerator: Javascript framework to compile native apps.
Corona: Similar to Appcelerator.
Phonegap: Similar idea, but looks like it uses a wrapper to appify HTML5 content
SenchaTouch: Another HTML5 based platform.
Wink: Yet another HTML5 toolkit.
XVLM: Android to ObjC compiler, probably creating ugly iOS apps.
Unity3D: For games only.
Moai: For games only.
So, there are three main ideas, with some frameworks implementing each, it seems to me:
Have an abstraction layer over native iOS/Android code and build for each platform using the provided layer. (Monotouch, Unity3D)
Use HTML5 (coding in Javascript) and some kind of wrapper to "appify" the web content. (PhoneGap,Sencha,Wink)
Code using a framework that will output as a compilation pass (or similar) a native app for each supported platform (Moai, XVLM,Appcelerator,Corona)
The questions:
Is there a fourth idea I haven't yet found?
Is there any blatant mistake in my research for any of the specified frameworks?
Is there any known problem for map integration with any of these ideas or specific frameworks?
Only a partial answer:
Ad 2. Appcelerator / Titanium is more than just HTML5. I read this pretty extensive comparison between PhoneGap and Titanium the other day on Hackers News. I found it very informative. The link points to the HN comments, the link to the actual article is at the top.
My main experience is with Mono for Android and MonoTouch, so I can't personally speak much to the other options. I personally find it to be the best option there is, as it allows you to share a large amount of your code across the platforms (even extending to non-mobile platforms if you stick with .NET), while still allowing for a 100% native UI, which is extremely important. If you're looking for resources on getting started, I have this video which discusses approaches and libraries for sharing a lot of code across platforms, and also this book which covers the same thing, but also expands to talk about how to do things like store data, use maps, access the network, etc.
I also want to mention MonoGame, which is absent from your list. MonoGame is an open source XNA implementation that sits on top of Mono to allow you to target iOS/Android/Max OS X.
From what I have experienced, if you want to have a native app go Mono, if you don't need native go PhoneGap. Native is best of the UI is very important, ie games or fairly graphical apps. But from business type app, CRUD, Phone gap works well.

Moving from web to native applications

Got a problem, and I am pretty sure there is a solution for this.
Currently we have a Website that sells goods & integrates with a thirty party for shopping cart. The shopping cart integration is through standard web re-direct.
Product works well on desktop browser. Its not that bad on browsers on tablets. Not so great on phone browsers. The problem on mobile device is for obvious reasons, as the pages are optimized.
The standard approach we can do is go about optimizing for mobile browsers, and be happy. My team is flying with optimizing for mobile web, because they think apps will be very difficult to do.
If we choose to go the native app model, is developing a library or package for each platform the only way? I am thinking, no in current world with so much technology advancement. I am not a fan of browser view on device, not the smooth experience.
Are there other options available? I was looking at HTML5 hybrid applications, but can't put a finger to be sure that will work for what I am looking for.
Frameworks aside, often times you can use a stylesheet meant for mobile devices and hide everything that is not absolutely vital. You could also consider WML, but I think you could live without it IMAO.
Writing apps for the iOS will require an investment in Apple developer tools and training in Objective-C. Android will call for Java and Eclipse, to name a few things.
When it comes to "native apps", you will need to code for whatever platform you are depending on. The number of platforms you work with is entirely up to you, but yes, each new platform may require a different implementation.
Personally, I would add some specialized markup/styles to make as many browsers as possible happy. If you want to expand, try to see where your target audience really lies and reach out to them on any medium you can afford to build on. I would zone in on specialized applications if there are benefits really worth chasing down that road.
Hybrid applications is a good option, but probably the devil in a box.
The hybrid approach with HTML5 fits your developer, because they will still use HTML, CSS and JS (e.g. with PhoneGap), but on the other hand you will get an medium satisfying UI (what you said you are not a fan of).
Pure native applications is probably a bit too much of all good, if your web app runs fine in a browser.
A way could be to go with compiled hybrid and cross-platform compatible solutions like xamarin or appcelerator, especially appcelerator uses JS, which is an advantage for you. This could result in a native UI (implemented in JS) and shared business logic code. So there are two benefits for you; first, just use JS, second, shared business logic code -> less work.
Other alternative would be to go with responsive or adaptive websites, realized with the help of CSS.
If you are looking for developing a hybrid app (phonegap + angularJS + backend), I would like to recommend Monaca. I've just recently discover it. It is very cool since it has phonegap inside its framework and its own backend. Moreover, it also has a fast and lightweight UI framework called OnsenUI which is based on Topcoat and AngularJS.
Even it is a hybrid app but it will give users the native application feel since it also provides native components to use in your hybrid apps. What is impressive about it, you don't even need to build and install your app to your device every time during development. That's what I love the most about this.
I hope it helps since I think it is just like what you are asking for. I'm just a novice developer and I find it is very easy to use.

Rhodes v/s Titanium

Which is the best framework to develop cross platform application. Especially for android and iphone. I have been through the reviews present over the internet, but those seem to be pretty old. I believe both Titanium and Rhodes have developed much over the past couple of years.
One of the basic differences is the nativeness of the two frameworks. Both Rhodes Framework and Titanium claim to be native. Rhodes however is not really native i.e. it uses an embedded Web Browser to display the HTML-coded website. Titanium, however, takes your JavaScript code, and create real native widgets on the respective platforms.
So what's so important about native? Well, it makes the user experience a whole lot better.
Rhodes Framework is best described as a competitor to PhoneGap.
From my knowledge, Rhodes is best for enterprisey apps. I would generally recommended Titanium for most app developers.
Though I have not used Rhodes, I feel Titanium is better based on what I read about Rhodes. The JS syntax in Titaniums is also easy to ramp up on. But, from what I have seen, understanding the working of the native code is useful to understand and explain some of the behavior. There is one more comparison of the frameworks that I found recently here.

Which platform is used in companies now-a-days to implement mobile applications?

Basically i would like to know which platform is currently used to develop mobile applications i.e. J2ME etc etc...
Also any new ideas on mobile applications would be quite helpful.
Generally, the approach is to go for a website, if possible, and adapt it to each phone using a 'device detection layer'. We use DeviceAtlas.
If you want to write native applications for each phone, then you need to do it in each of the native languages (and there are a lot).
Symbian/Java: Greatest 'penetration'
iPhone/iPod Touch: Latest trend, objective-c for this.
Android: I think this is a variant of Java, and will be a very marginal component of the market for a long time, though maybe high among a certain type of techies.
Basically, you are going to need to profile your market, and determine the best approach. But as I said, in general, you'd prefer a website, and mostly, a website is all you need.
There is a framework called Rhodes by Rhomobile that allows development of native applications for all major smartphones. See my answer to a similar question earlier this year.
We are primarily targeting the iPhone, but don't always make an iPhone-specific application. The web browser on the iPhone is good enough that a lot of our web apps just run there ok. So many of the apps we're writing continue to be done using the same platforms we've always used. We're a big institution so this runs the gamut from J2EE and .NET to Php and Ruby.
Mobile-only apps are developed in XCode (or web versions in DashCode).
If you need to cover multiple mobile (esp. smartphone) platforms, Javascript (with HTML and CSS) may be the only way to go, despite all its limitations. You get under the radar of Apple's iPhone app vetting, it's the only way to target Pre, you can also cover Blackberry, Android, Windows Mobile, AND Nokia on a single codebase... unless the limitations are just TOO stifling for your specific purposes, it sure seems like the way to go!

Resources