According to a recent article iPhone has gained a better appeal than Android among programmers. I'm quite a newbie to Java and a complete profane to ObjectiveC, in your opinion, in which one of the two could I have a try?
iPhone is by far the best phone i've ever had, havent tried googles but, how hard can it be, if you know C / C++ Objective C is juts a new dialect and you program against an API which probably is well documented by apple..
Google however probably, will have a broader developer community.
Short-term (easy to get into, not as much you have to think about), iPhone. Long-term (more of a skillset to develop and more you can do once you have it), Android.
It's a bit amusing how that article skims past the comparative release dates of the platforms it's comparing.
I don't think you can compare by the size of the developer community, which is what that article is doing. The iPhone has been out for a lot longer and has a much broader user base, so of course more developers are targetting it now. Plus, there are significant flaws in the first G-phone, the G1, which will probably be fixed by later iterations.
So the question really is: Do you develop for the iPhone knowing you have a user base and other developers competing for that same user base, or do you develop for Android knowing that there are fewer customers (so far) and also fewer competitors (so far)? The answer you give today might be different than the one you give in January.
I think Android will interest more programmers with times to come as Android become mature. iPhone is a great platform but has lots of politics around building apps for it. I think with more Android phones, things will pick up. I can see something happen with NetBooks becoming popular running gOS. Maybe I am dreaming :). A final word, I think its too early to call Android infertile.
Android hasn't made it big yet because there are only a few phones that support it, and they have only been released recently (for example, the T-Mobile G1, released in September 2008) so there are very few consumers with Android phones.
It seems to me like Android is going to have the stronger and more open development community, based on it being a Google Code project. But it's too soon to tell.
A bigger point (imo) to consider is access to the marketplace. Apple determines which of the eleventy-zillion lightsaber apps is the best ones, and only allows a few on the store at a time. You may add some amazing features to your version of "Flashlight", but if there are too many apps on the store already that are similar, yours won't be accepted.
With the Android, like the internet marketplace, no such artificial control exists.
I picked up objective-c and cocoa pretty quickly (3 months of off hours development). My feeling is that Android will be popular with developers because of the restrictions placed on them by apple. iPhone will in the end be more popular with users because of the marketing and ease of use with which they can install apps. After the success of iPods I find it very hard to bet against iPhone.
It sounds like you just want to work on programming a mobile device, based on you're experience I'd suggest Android. You can get up and running quickly using what you already know and learn more about the details of a mobile platform.
If you're interested in making money off a particular application a different ansewr might be appropriate. But if you already know Java and you just want to program a phone then Android is the way to go.
I have both phones (iPhone and G1) as a user, but I chose to develop for the android platform. Even though I am an Apple fanboy I made this decisions based on my dislike for Apple's politics (appstore, NDA, see above) but also for architectural reasons:
- Android makes it very easy to integrate with other apps on a somewhat finegrained level. Sharing application logic across applications is done by using intents (http://code.google.com/android/intro/anatomy.html).
- Also I want to pickup my phone and start to read news, not start to download news. With the iPhone that is not possible for a 3rd party developer to accomplish due to the lack of background tasks.
It is very simple. Go for iPhone now. It has market share, a polished device and an obvious growth path. With Android you can currently only target early adopters, and there is no killer handset.
If Android takes off, you won't find it difficult to switch to it with your iPhone experience.
If you just want to play, not create a business, pick whatever you like.
Depends on what you're doing. If you're looking to sell your application, iPhone. no question. The current Android phone is butt-ugly and, IMO, will never be more than a tiny blip on the radar. Unless/until someone comes out with an Android phone that doesn't look like a doorstop, is as thin and sexy as the iPhone, it will never be much of a player.
If you're just programming for programming's sake, pick whichever one's SDK appeals to you more.
The rumor is that the Android Market will start to allow charging for apps in January, which IMHO, is key to attracting developers. While the G1 is not a very good device and I question whether it will last for the 2 years of my contract, the OS is downright sexy. HTC makes some nice hardware so it's really too bad that they relegated the G1 to an apprentice designer and really only gave him or her the left-over scrap plastic to make it out of.
I've heard the rumor about Android Market opening up in January as well. I think it's more than a rumor, I heard that they launched it with a 90 day prohibition on pay-to-play apps.
If your background is C#, then Android (Java) will be pretty easy to figure out. Obj C on the other hand, not so easy. See my comparison of Hello World here (bottom half):
http://codingmostly.blogspot.com/2008/12/hello-android.html.
If your background is C++, then Obj C won't be to tough to figure out I suppose. I'm not really sure. Obj C looks like something from 1985 to me ;)
There's rumors of many more Android phones on the way in 2009. Samsung may be releasing an Omnia that is running Android in 2009 (no idea on the carrier).
My conclusion: Android will take over the portion of the smartphone market that's not dominated by the iPhone. More developers will move to Android simply because of how developer-friendly it is. Developers = apps, apps = gain in market share. Maybe it's not that simple, but that's part of it for sure. Also, bye bye WinMo :)
Edit: Also, virtual keyboard and stereo bluetooth will be in the January update. I for one like my G1, I'm a fan of buttons, touchscreens are great for pointing and swiping, but not the best for typing. Sure, it's a bit plain and I'm sure the G2 will be cooler. But the difference between Android and iPhone is that there will be many phones running Android (choices!) vs. one iPhone.
Here's the link to the Samsung Android Omnia/Instinct: http://www.switched.com/2008/12/19/samsung-launching-google-phone-in-2009/
About 6 months ago I got an iPhone, simply because the Android wasn't there yet. The main advantage of the iPhone is the great hardware-built device.
The downside of the device is the limited (and sometimes unpredictable) battery-life: Prepare to charge it every night. I don't think this will be much different with an android device.
Another downside is that the device reminds me of earlier windows O.S. instability: the thing crashes a lot, most of the time not caused by installed applications: Either you end up back in the Summerboard application launcher, or worse, it just restarts with you simcard locked. Even with some of the updates I applied, this has not been improved. I've also noticed that jailbreaking has no influence on the stability (I tried the iPhone some time without jailbreaking to check).
All-by-all, I still enjoy the device. It's the first phone-sized internet device and the touch works great. And both the free applications and available jailbreak applications have not tempted me to buy any payed applications.
I speak as an active iPhone developer with a few shipping applications, but also an experienced Java developer with one eye on the Android platform.
I feel at this point the iPhone has a much more refined set of libraries than the Android platform. Partly this is because they borrow a lot of foundation classes from the Mac, but also it's because Apple has put a huge degree of thought around APIs that are fundamentally touch driven.
I'm not sure Android has this same fundamental commitment to everything being centered around touch (never mind multi-touch). Android devices will probably all feature at least a number of buttons, possibly even always offering a physical keyboard.
What that means in terms of development is that you too want to decide what kind of application you are writing. If high leverage of the touch interface calls to you, then develop for the iPhone. Otherwise, you may want to consider the Android platform for the degree of flexibility it gives to possible applications.
A more practical matter is also market share and potential market - there's no denying the iPhone has a very large base of users at this point, while we do not even know details of what Android development looks like in terms of revenue from the Android equivalent of the app store. The large existing iPhone install base is why so many developers have been drawn to iPhone development to date, and it could be the sheer size of the development community has enough momentum to keep growing indefinitely at this point - just as Palm application development did for many years even as other organizers (and eventually smartphones) challenged them. In the end it was Palm that brought down Palm, and I do not see Apple making the same platform mistakes that crippled Palm and allowed other companies to steal away the market out from under them. Apple has far too much focus for that.
As far as which is easier to learn - at this point both Java and Objective-C have very large libraries that are much more what will consume your learning time than mere language syntax. Happily both Java and Objective-C have very well thought out libraries, so I'm not sure you can go wrong either way.
Java the language will have more reference material than Objective C, but the iPhone SDK has more third party documentation and probably will for some time to come.
I'm surprised no body has mentionned the Symbian alternative.
Symbian OS is the market leader of smartphones with over 200million devices shipped worldwide. It provides the most advanced whilst stable mobile OS and provides support for a great many languages C++ (native),C,Python,Ruby,Java etc.
iPhone and gPhone whilst both having their own advantages do not come close to Symbian when you look at the real issues such as market share, stability, binary compatibility etc.
iPhone is better than Android in the following:
- current number of users
Android is better than iPhone in the following:
- many phone manufacturers creating phones, possible very large amount of users in the future
- no approval needed, no "censorship"
- nice and easy to start development environment and guide to it (arguable of course)
- easier to communicate with other applications and integrate applications like Google Maps
- possible to replace default dialer or "home" application with your own
- fully open-source
- possible to have application running in background
- apps can run in parallel
- easy to embed web content
- much more flexibility and power in general
Feel free to correct me and suggest your items in comments, would be very happy to hear.
Hi,
One of the reasons why I chose Android over iPhone is, Android is open source operating system, where as iPhone is hardware + software + Apple politics. We at androidcompetencycenter.com, have already ported Android to multiple platforms targeting Netbook market and custom apps for such light weight PCs (?) .
From business point of view, right now you cant choose to ignore any of the Symbian, iphone, blackberry, WinMob and Android. And it seems that mobile market will never become single pole world. So better yet to learn multiple things.
Nobody has mentioned cost to market with iPhone applications. You have to buy yourself a Mac Mini or Macbook to write an iPhone application. To release it on iTunes you have to pay a $99 yearly subscription.
So with the Mac Mini option, it's about $600 to get started. Plus the optional Objective-C book if you want a reliable way of learning, though it's easy to pickup for C/C++/C#/Java developers.
Of course after shifting ~1000 units of your $1 app you've made the money back.
I have developed games on both. Android platform sucks in OpenGLES/graphics and generally iPhone development is very easy due to Interface builder.
Did I mentioned memory issues. Android uses Java and it has memory leaks.. duh ! stupid API design where internally many classes hold references.. iPhone programming was a charm, Performance Tools are awesome..
I feel iPhone development tools make Developer life easy and better in terms of development and in terms of revenue returns.
See this article http://www.codeproject.com/KB/mobile/wm_iphone_android_market.aspx it has WinMob as part of comparison also.
As someone with Windows Mobile development experience, I am not qualified to compare Android and iPhone from a development or architecture standpoint. As someone who just replaced a Windows Mobile phone with a Nexus One, I think that Android makes for a very interesting platform that has great potential to compete against the iPhone, and possible overtake it in terms of market share in the next 3 to 5 years. There are a lot of ifs and whens, though. Android has compelling advantages, but also quite a few limitations for certain user segments that will hamper its ability for growing market share in the short term. I would not rate the Nexus One a device that is ready for a broad consumer market.
If you look at the Android issues list (I compiled a list of my 10 favorites), with many critical ones unadressed since 2008, you have to ask yourself if they will have to change their process in order to become a more serious force.
All things considered, though, I think that this is the time to bet the horse on Android. It is early enough to get in before it really takes off. Android Market is fun to use, and new devices will come out soon that are equally potent as the Nexus One, creating more buzz among potential converts. I will port my most popular .Net CF app to Android and not to the iPhone in the next couple of months.
I wrote a quick comparison of the newest phones. I hope it will help. http://adrianvintu.com/blogengine/post/Comparison-of-Android-vs-IPhone-vs-Nokia-vs-BlackBerry-vs-Windows-Mobile-7.aspx
Try this article. The author has compared the two on various Zones. http://java.dzone.com/articles/android-vs-iphone-development