Tuesday, December 24, 2013

Objective-C vs PhoneGap

This is the answers for whom would like to build mobile application whether which one is better than  between Native Object-C and PhoneGap (web app combiner or wrapper)?

------------
There are multiple ways of developing iOS applications. I like to program in Objective-C to make my iOS apps.
But you can do most of the things using jQTouch, jQMobile, PhoneGap etc.

Question:
When is it suitable or appropriate to use the native platform?

There are 6 answer for your consideration

Answer 1:
  1. PhoneGap is essentially a wrapper, so it will always lag behind the latest features, in addition to possibly having bugs in some edge cases.
  2. Not all platform features are going to be available in PhoneGap, so you'll need to know what is not supported before you decide to use it.
  3. Most hardware acceleration features will never be fully available, so if you want to make an advanced game with high end graphics, it's not going to work well.
  4. The maintenance required to do custom modules that are not available out of the box may actually take more time than developing native.
  5. Do you really need to run on more than 2 mobile OSes? Writing for iOS and Android will give you a fairly large market coverage, so you may be better off going native.
PhoneGap is designed for more simple web apps, data driven apps, and social apps that require connectivity to work. You may end up rewriting the app in it native language if your apps becomes popular and you need to support more features, but if you can launch an idea quickly on multiple devices, then you have a competitive advantage in the market.
---------------
 
Answer 2:

If you have a need to develop an app for multiple mobile platforms, quickly, with a minimum effort (i.e. implement once), use PhoneGap or similar. These frameworks provide a "lowest common denominator" type of environment, so you lose access, often, to capabilities of the native platform.
On the other hand, if you are developing an app only for iOS, then by all means, develop it in Objective-C as a native app. You then have at your disposal the complete SDK and capabilities of the platform! This is, of course, Apple's recommendation as a best practice for developing iOS apps!
In my own experience, I had a conversation with my CTO before I joined my company about whether we should develop native apps for our platform or use PhoneGap. We agreed that developing native apps was the way to go because we could take advantage of each platform's specific capabilities. Beyond that, a native app would provide a better user experience on the platform, because it would behave more like other native apps the user might be familiar with. Think about that last idea. Think of all your apps you enjoy. As a developer, you can probably tell -- and quickly -- which ones are native and which ones are not, just by using them. Which do you think provide a better user experience? Something to think about. :-)
In the end, it's up to you. You said you like Objective-C programming. So, go for it and go native! On the other hand, if you have multi-platform aspirations, and you are familiar with PhoneGap (or others) or want to learn about them, then go for it! :-)
 --------
Answer 3:
From my experience all of the JavaScript applications have been slower than apps written in the native platform. Not because of the phone or JavaScript, but because of the rendering of the DOM elements.
-------

Answer 4:
Large data storage for cross mobile compatibility will be a problem with phonegap. If you need the app to store at least 10 mb worth of data (media files, documents, etc...), you'll be limited by 2-5mb or localStorage or cache manifest. See my related question here:
html5 to store greater than 50 mb worth of data?

-------

Answer 5:
I tried phonegap, and the first thing that annoyed the hell out of me was that you could not control the keyboard like you are used to in obj-c. The keyboard is exactly the same you get when browsing a website, it has an extra pane at top of the keyboard with "next/previous" buttons. Therefore I am now trying out Titanium Appcelerator instead, where you can create native GUIs using javascript instead.
-----------
Answer 6:
I think that if its within your abilities to learn or use Objective-C, it's almost always best to do so. Using the native-SDK gives you access to everything on the device in the most compatible way possible. Using layers of abstraction only hurts functionality, customizability and debugging.
That said, it seems that there are some powerful and well written frameworks to compile HTML, CSS and JS into native apps. That may be appropriate if you are no a really tight schedule or if you need to get a quick prototype out, and you are a JavaScript ninja, but a novice Objective-C coder.

 Source: http://stackoverflow.com/questions/7026786/objective-c-vs-phonegap

No comments: