Question

I am entering mobile development. I have been working primarily in .NET since 1.0 came out in beta. Before that, I was mostly a C++ and Delphi guy and still dabble in C++ from time to time. I do web apps quite a bit so I am reasonably proficient with Javascript, JQuery and CSS. I have also done a few Java applications. I started web programming with CGI and live mostly in the ASP.NET MVC world these days.

I am trying to decide on which platform/OS and tool to select. I am concerned with the size of the market available for my applications as well as the marketibility of the skills I will pick up.

The apps I have in mind would work on both phones and pads. Some aspects of what I have in mind will play better on the bigger screens that will be available on pads.

Here are the options I am considering:

  1. Apple iPhone/iPad using pure Apple SDK (Objective-C)
  2. Apple iPhone/iPad using Mono Touch (C#)
  3. Android using pure Android SDK (Java)
  4. Multiple platforms using something like Titanium to generate native apps from web technologies (HTML, CSS and Javascript)
  5. Multiple platforms using HTML5 web applications that run in the browser (HTML, CSS and Javascript).

Which option would you choose? Do you have a different suggestion? What are the pros and cons?

Was it helpful?

Solution

I think you have cover almost all options, let me share my opinion on each.

  1. It is worth to start with highest priority as its Buzz now a days.
  2. According to iPhone OS 4 developers agreement section 3.3.1, apple will only allow apps developed in C/C++ and JAVA script. I would not suggest you to put your efforts in C#.
  3. Its worth and if you have good grip over core JAVA then, you can be productive in few days. At this stage Android might not have much market share but My personal opinion is ANDROID IS FUTURE.
  4. My point number 2 effect Titanium as well but according to their latest tweet, they have approval from Apple. I am not aware with ground reality.
  5. Same as point number 2

It is good, if you start to concentrate on native iPhone and Android programming framework at this stage. Still if you have time you can invest on Blackberry RIM as well, as you have JAVA background.

Welcome to smartphone dev. :)

Thanks,

Rajnikant

OTHER TIPS

If you're targeting the iPhone/iPad, the changes to the iPhone SDK agreement that are being ushered in with iPhone OS 4.0 and the new SDK state that you are only allowed to submit apps to the App Store that have been written in C/C++/Objective-C, or Javascript if its a webapp.

You need to take this into consideration, because compatibility layers, cross-compilers, source translators all look like they're going to be prohibited under the new agreement, which includes things like MonoTouch, Adobe's Flash CS5, Phonegap, etc.

Cross platform frameworks you should look at:

PhoneGap QuickConnet

You may be best off sticking to web apps if you're looking to make them cross-platform; the major smartphone OSs—iPhone OS, Android, and WebOS, with the Blackberry OS rumored to be next—all use the Webkit renderer, and you'll have an easier time making things that don't feel alien to each platform than if you're using one of the frameworks for writing ostensibly cross-platform code. This is the particularly the case when you take into account Apple's recent changes to their SDK license agreement: tools like MonoTouch and PhoneGap may no longer be usable for getting things into their App Store.

I just wanted to cover a point re. Android v iPhone development. Let me be upfront and say that I have not developed for Android but I have for the iPhone. However, we do own an Android-based phone and an iPhone in our household, so I can speak as a user for both.

As far as the apps go, I find iPhone apps way easier and fun to use (for the end user). A lot of Android apps are really crappy. This isn't to say that iPhone apps aren't, but the natural iPhone interface really props them up somewhat. Android's interface is nothing special at all. As an end user, I prefer the iPhone and this should matter to a developer who is trying to choose a platform.

Lately, there has been a lot of flak going towards Apple for their ToS change, and developers saying they will move to Android. I say - stick to the iPhone because the iPad is creating buzz and is a unique opportunity for you. As someone who has used Titanium and Objective-C to create apps, I suggest that you stick with the native toolset. It will take longer to learn, but you will learn the correct design patterns as opposed to Titanium which doesn't even teach you good JS patterns to be honest (Not really much MVC there).

There is a lot of things to consider. First you have to ask yourself two questions:

  1. Which platforms and which type of users you want to cover.
  2. Do you need to communicate with the phone (GPS, SMS etc...) or you need only some basic data manipulation and views.

If you need access to phone features then you have to develop an actual application that runs on the phone. The safest bet here is JAVA because it runs on almost all phones. But even JAVA is out as unified cross platform tools as of late. Apple put restrictions on the iPhone and iPad and MS is also unclear to me with the latest Windows Phone 7.

Now if you only need to display and manipulate data, HTML could be a valid approach. It has a benefit of being cross platform and all newer phones will have no problem displaying basic HTML. Javascript or more complex forms are still questionable though. Still to me it is the future for data oriented apps as the web support is only going to get better, javascipt included. As for HTML5 I say forget about it. It will take time to be wide spread on desktops and on phones it will take years to get there for sure.

To develop native apps for large variety of phones is quite a chalange and takes a lot of work and probably a large team. So again it depends on the task you have to do. Also if you are doing high end bussines apps, then you could only target Blacberry, Windows Mobile and something else. I don't know how widespread iPhone and Android are in the bussines world. I figure not so much.

These would be my guidellines. Obviously if you can, stick to web apps.

Independant of the new developer agrement, the effects of which are still unknown (for example people assumed that PhoneGap and Appcellerator were dead which is not the case); you are still better off in my mind targeting Objective-C on the iPhone OS platform.

The thing is that there are a lot of very powerful frameworks in Cocoa. By using Objective-C, you are also learning to think like the framework designers which means you'll have a much easier time understanding the patterns used, and also over time learn to anticipate abilities and names within the framework wince you have a clearer grasp over stylistic standards in use.

You are also instantly ready to leverage new abilities within the language and frameworks (like blocks or multitasking) rather than waiting for the framework writer(s) to figure out how to present some new feature to you. Given the acceleration of platform features, that could be a significant advantage.

Also, on a personal level - you are simply better off as a programmer the more languages you deeply understand, and the more you push outside your comfort zone to learn something truly new. That broadening helps your mind in other ways and makes you a more flexible thinker.

I have nothing against those who use other languages like Mono on the platform, I just think it makes the most sense to really use the tools and languages that are primary to whatever platform you are targeting. If I were to move into Android development I would switch to all Java in a heartbeat rather than seeking an Objective-C bridge.

If decide to go the Objective-C route, think about still taking a loot at MonoTouch, as a learning tool, because of all the experience you have with C#.

Being able to learn the framework first, and then move to the language simplifies learning a lot. With monotouch you'll be able to learn all the iPhone frameworks you'll need to learn (UIKit, etc) in the language you're already familiar with, as well as get used to tools like Interface Builder and some of XCode.

Picking up Obj-C after you already know the framework well makes things a LOT easier. I'm doing that right now. And depending on the timeline, the moon, and Steve Jobs' mood, you might just end up being able to end up never having to go to Obj-C at all.. :)

In one of your comments you state that you own a Droid, love it, and prefer Google's approach. In your question you state you're a Java developer - of course, you could always learn Objective-C as a Java dev like I did, but then again I'm totally in love with the iPhone. It sounds like you are totally in love with Android, so I'd say apply your passion to that and make some kick-ass Android apps. I don't think you would do as good of a job on the iPhone, especially without a great understanding or passion for the platform.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top