views:

504

answers:

9

What language/framework is best worth learning for mobile application development? My specific situation is that I'm very familiar with Java and C++ (I especially love Qt), but have limited experience with other languages. Some options I'm considering:

1) Learn Objective-C and all the iPhone-specific tools

I do have access to a mac. The downside here is I'm restricted to the iPhone, so I'd have to rewrite almost everything if I wanted to branch off into another mobile device (or move later to a cross-platform framework). Even after knowing Objective-C, it seems like other frameworks might be more efficient/faster to code in?

2) Use some existing cross-platform framework for development

I've looked at rhomobile, but I only have limited experience with Ruby (and at first glance, it might be a little pricey comapred to other options). Appcelerator also looks popular and nice, but it uses html/css/javascript. Airplaysdk looks good, but it's new and I haven't been able to see much written about it (is it worth going for?).

3) Wait for something better to come along

How far away is Qt for the iPhone? That would be ideal, but it isn't available now.

So what do you recommend? Productivity/efficiency is my top priority, although learning a useful language for the long term would also be okay.

Thanks

A: 

I doubt apple is going to allow QT onto the iphone -- Just use MVC on the iphone, assuming C++ works you just do the model and controller in C++ and the view in objective-c.

You could teach yourself code-generation and then generate the views for different platforms ( but this is probably not worth the time it would take).

Hassan Syed
A: 

If you're considering building a game, then maybe the AirPlay SDK is something you'd like:

https://www.airplaysdk.com/

It's c++ based, builds binaries from windows/mac for iPhone, Android, PSP, etc... an indie license (profit < 100K) costs only 99$ a year...

Brad Parks
A: 

Have you considered building a web app instead of a native app? There are of course trade offs between web app and native app but I think that's the best solution in most cases. Your web app can also be rendered in other devices in the future.

A: 

I can suggest Java ME or J2ME technology. NetBeans provides a productive and effective environment for that purpose. I can also recommend LWUIT for UI part. Therefore, you can run applications on mobile devices that have Java VM. In my former job, we developed Java ME applications for Mobile Operator Company for different mobile devices. Mainly, BlackBerry phones caused challenges, we deployed for NOKIA and other brands with some minor config changes. But, the problem here is digital signing. That may cost lots of bucks if you want your application to be digitally signed.

baris_a
+3  A: 

In general I would never recommend to use a cross-platform tool. Most of these tools support each platform far worse than any native technology. If you want to code normal applications (no games) I would heavily recommend the “Learn Objective-C and all the iPhone-specific tools” route as you and your customers will have the highest satisfaction with your products. Creating a web app is a viable alternative, but keep in mind that web apps are still second class citizens on the iPhone, iPod and iPad (and on almost every other mobile device).

If you want to develop for multiple mobile platforms I would also go this way, bite the bullet, and learn at least the basics of different technologies. As you already said learning Java-based mobile platforms shouldn’t be a deal-breaker for you, because you know Java.

What can help you is to write code that compiles on multiple platforms and which you can integrate into different projects. But I would keep the UI still native.

Rafael
+1  A: 

Choosing a secure cross-platform mobile application development platform that enables you to develop native mobile applications is the only real option if you look at the cost, time and complexity of dedicated platform development.

It does not make sense to build an application which only runs on one platform, especially if you are looking at building commercial applications like CRM, banking, money transfer apps etc. You could get away with it if you are building your own app for an app store, but missing out on 90% of the devices in your market is not really an option for a bank for example.

Another major factor to consider is security. Some cross-platform environments like Appcelerator enables you to build Apps for only high end devices.

Our company offers a platform called RAMP that enables you to build secure, native mobile apps for both feature phones and smart phones. You develop in a web based technology so there is a very small learning curve and you only need to build one application for all the underlying platforms.

You can download RAMP at: http://ramp.virtualmobiletech.com/

Arno
A: 

You have also another cross-platform development tool, ELIPS Studio. It's based on Flex, AS3/XML. It allows you to create native mobile apps for iPhone/iPad, Android, Symbian and Windows Mobile.

You can download it here.

Joce
A: 

if you are familiar with c++, try http://www.mosync.com it's also open source.

ytbryan
+2  A: 

Although you cannot make the same code compile on different platforms, you can opt to use cross-platform frameworks. This will allow you to use the same API on different platforms. I'd like to mention Mobile Community Framework (MCF) that is built exactly for the purposes you mention: cross-platfrom development on mobile platforms. This framework running natively on all major smartphone platforms (iPhone, Android, Symbian, WinMobile, Blackberry) and allows you to build location- and proximity-aware, network-oriented applications.

Haspemulator