Assume that the app will include a back end API and a back end data store, but that they need not necessarily be constructed with the same technology as the front end (the app on the mobile devices). By "technology", I mean programming language and/or framework and/or platform.
There are two sides to that question. One is the mobile app itself and the other is the backend. If I misunderstood in any way and you didn't mean "native" app I apologize in advance.
On the backend, there is no clear cut answer to which is the "best". It depends solely on the developers you are able to get. We for example use Node.js , mongoDB, redis, elasticsearch and a couple of proprietary tools in the backend. But you have your pick of the litter now both on the backend api and the datastore with the myriad of options available and touted as the "best" currently on the market.
Now on the app side again it solely depends on what you need your mobile app to do. Experiencing first-hand "develop once, run anywhere" I can say it's more like "develop once, debug everywhere" to quote a Java saying. We have tried Phonegap and Titanium Appcelerator and we have switched to native (ObjC and Java) after a couple of months of trying to go the hybrid route. The reasons behind the choice are as follows:
- anything that breaks the pattern of how those frameworks NEED to operate is just a huge technical debt that keeps accruing a huge interest.
- anything that uses css3 accelerated animations on Android is buggy at best and slow as hell at worst on any lower (< 4.1 I think) versions of Android
I hope this gives you some insight. If you need/want to ask me anything feel free to contact me.
Gosh, there is no one best answer. The answer depends on what you're building. That said, I'm a great believer in rapid development and getting a beta in front of customers fast so you can begin the learning curve journey validated by experience rather than one's projections or suppositions. The fastest prototyping I know of is a combination of Firebase.com for the backend and a more general approach on the front-end to cover more mobile platforms, so HTML5 in combo with Ruby on Rails. Again this is for rapid pilot to fully understand your needs. Once you're sure of platform, I'm still a bit more biased toward native mobile development focusing on delivering an awesome app on iPhone, then porting to Android and others.
After drafting the above answer, I was reading the latest Gartner trends report and found information relevant to the question:
Gartner Identifies the Top 10 Strategic Technology Trends for 2013
Analysts Examine Top Industry Trends at Gartner Symposium/ITxpo, October 21-25 in Orlando
Mobile Applications and HTML5
The market for tools to create consumer and enterprise facing apps is complex with well over 100 potential tools vendors. Currently, Gartner separates mobile development tools into several categories. For the next few years, no single tool will be optimal for all types of mobile application so expect to employ several. Six mobile architectures – native, special, hybrid, HTML 5, Message and No Client will remain popular. However, there will be a long term shift away from native apps to Web apps as HTML5 becomes more capable. Nevertheless, native apps won't disappear, and will always offer the best user experiences and most sophisticated features. Developers will also need to develop new design skills to deliver touch-optimized mobile applications that operate across a range of devices in a coordinated fashion.
Definitely go with PhoneGap. You mention nothing that would make me suggest going full native so considering your lack of experience (and assume no desire to spend extra $$$), just go with PhoneGap: fast, solid & free.
There are some good technologies for Android, iPhone or both. I have used these and I give you my answers in full detail. I would be glad to schedule a call with you to go through some of these if you are interested.
You can develop mobile apps with several great platforms and it depends on whether you develop for iPhone or Android.
The best mobile app platforms and languages that I have used are:
For Android, 2 great platforms and I have used them both:
You can see App Inventor at http://beta.appinventor.mit.edu - It was invented by Google and is now maintained by MIT. You can create both an API and a backend as it allows for both a local and web database. App Inventor is a plug and play platform and uses no code, just a set of blocks that you add logic to various components. It is very easy to use.
Basic for Android: http://www.basic4ppc.com/
This is a platform where developers use Visual Basic to create android apps. If you know Visual Basic, this is perfect for you.
Also, for Android, you can develop in Java and XML using the Eclipse IDE.
For iPhone, you can use good ole Objective C which is a language. There are not as many options for iOS as there are for Android, but Phonegap or HTML 5 may be a good bet if you do not want to learn Objective C.
If you want to use good old HTML 5, you can download Twitter Bootstrap or Foundation from Zurb which are both responsive frameworks.
I would be glad to take you through any of these if you are interested. If you'd like to schedule a call on the phone or Skype, I could show you how some of these technologies work.
It Depends :)
For back end ,you need to ask are you looking for scalability ? or just fixed number of users.
What about the data base ? do you need a relational database or a non relational database .. ? if non relational ? Which type ?
Do you need to do analytics ? what type of analytics ?
For front end .. Is this an enterprise app ? Or will be used for public ?
Still I prefer to avoid cross platforms because :-
. Harder to maintain
. Lots of bugs
. Lower performance if compared to native apps
. Doesn't make full use of the hardware and OS platform if compared to native apps.
But this again depends on the complexity of the project and the target market needs. Sometimes the extra value of the native apps is not justifiable.
Again it depends.
If you need more help let me know , to discuss the case in more details to guide you the right way.
I am a fan of native development as it allows you to build the best application leveraging the strength that is offered by Apple and Android operating systems.