Should I Learn To Program iOS Or Android Devices?
HW_Hack writes "In my early career in the '90s I had a hardware tech degree, but also a strong interest in software. I completed software courses in assembly, Pascal, HTML, and C as I prepped for a CS degree. I then got my chance to do hardware design for a major US firm and went that direction for a good 18-year career. I now work in a good sized school district doing IT support work at a large high school. I plan to revive my programming skills this winter so I can write apps for the flood of mobile devices. I am very much platform / OS agnostic and I support on any one day OS X, XP, Win 7, Linux servers, and now iOS as we pilot iPads in our school. My question focuses on three topics: Which programming environment (iOS or Android) is easier to jump into from a technical perspective / number of languages needed to master? Which one has a better SDK ecosystem of documentation, programmer support, and developer community(s)? Where is the market and the money going? I do not expect to get rich doing this, but with my insights into K12 needs I hope I can write effective apps for that market."
you should.
"You'll get nothing, and you'll like it!"
iPhone is too proprietary it is a dead end.
If you don't already have a Mac, iOS requires Apple hardware for development. You also need to learn objective-C which doesn't get much play outside of a Mac environment. None of that is bad, just a hurdle.
Personally, while iOS is currently ahead of Android (user base, # of devs, apps, etc) I think before long it's going to start playing catch up to Android. Android has got a lot of momentum.
Working with both systems will give you a deeper understanding of each, as well as allowing you to sell to a larger customer base, should that be something that appeals to you.
Chu vi parolas Vikipedion?
You should never, EVER think platform, then app. Think audience, application, and THEN learn what you need.
Your school district is using iPads? Then learn iOS. You have an android phone at home, or have java experience? Learn Android. You want to just make something work? Get the Android, iOS, and WebOS SDKs, and test like @#% so your mobile phone works everywhere. (Heck, get Blackberry and windows mobile if you can.)
You definitely should. One of the biggest benefits of building apps for mobile phones is that you don't need to market your app - the app stores are excellent distribution channels and your app isn't stuck out there waiting to be discovered by the masses for the next 20 years. Major indie mac developers have made the switch to the iPhone and now more actively focus on iOS devices than they do on the Mac. This is a general trend. Smartphones' potential is still being discovered. Try to profit from the gold rush while you can.
Why not aim to learn both iOS and Android? You'll please more people and incur the wrath of less. If you pick just one, you have to deal with the tens of percents that can't run your apps, which is difficult.
Yes, it will take more time and effort to learn to environments, but not much more. Most of your time will be spent designing and testing the apps, not implementing code.
Yes. You should hedge your bets and learn both. The smartphone wars are far from over, and most smartphone content producers are releasing for, at the very least, both iOS and Android. Some also simultaneously release for Blackberry and Windows Mobile as well.
Each platform has its relative strengths and weaknesses. Writing code on Android pretty much means learning Java; similarly, writing code on iOS pretty much means learning Objective C. Neither language is likely to become obsolete very soon. The startup costs for writing code on Android are a bit lower; you don't need to buy anything to write Android apps. If you expect to write iOS apps, you need a Mac and you need XCode. On Android, you need Eclipse and the Android Eclipse SDK.
But, like I said, I wouldn't learn just one.
My blog
must be flagged as flamebait.
I'm not a hardcore programmer (PHP/Perl... lite stuff), but I thought it would be fun to try out mobile app development. I happened to have an iPhone, mac, etc... so I started there. Even with the books and intro material, I found it very difficult to get into. My C and similar is very rusty, so that was part of the problem. For the heck of it, I tried android and that was MUCH easier to get into. My Java was never great, but better than my C - which again - helped. All in all, I much more enjoyed the experience of working on the Android platform because it tended to have lower barriers to entry (less hardware, less software, etc), be easier (Java _is_ a simpler language) and be fun.
Though get a good book for android. Last I checked, the official docs online from Google were for like 1.0-1.5 and we're on 2.2. In short, horribly out of date (usable in some cases, but out of date).
snowulf.com
I disagree... I originally learned IOS back in the late 1990s when it was at version 9. I still use IOS equipment that have version 12.4 and 15.0 all over the place. learning IOS was the best thing I ever did. I have a CCNA.
First of all, given a C base you'll probably be a little more comfortable with Objective-C, because you can fall back on C when you need to. The language itself is a superset and the superset is a really different mindset than C itself is, but it's a very nice OO language with some great features.
But also, currently iOS has a ton of awesome educational material. Apple itself provides a lot of documentation, and if you pay the $99/year fee to develop for devices (you should) then you also get all of the videos from the past developer conference, plus of course there's the free iTunesU videos from Stanford on iPhone development.
There are also a ton of third party books and at this point probably local Cocoaheads groups you could attend meeting with questions.
I think for some time to come Apple is going to be the leader in the space of mobile development, but especially around education - there are a lot of kids applications on the iPhone and Pad and a ton of parents are buying these devices in part so that kids can use them. I have been astounded at how fast this has happened, especially with the iPad.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Apple is making exactly the same mistakes they made in the early desktop market: they're refusing to license their software to more nimble hardware manufacturers, so they'll get passed over.
Except one 99c app like angry birds netted the developers more than the gross of the entire android marketplace..
What.... the.... fuck...
Choose sides, and you will surely lose at the end of the day. Apple's iDominance will die out. Android will fork to the point of there being a new distro daily. The best way to remain relevant is to develop the core ideas behind your application THEN learn how to implement them using the tools at hand. Consumers care about what works. Lets face it, what works today might not work tomorrow.
If you're only going to learn one, go Android. Java is reusable in other environments and frankly, it's just easier.
My personal opinion is that Objective C is pretty tedious and annoying. The syntax is ugly and non-intuitive. Again, this is my personal opinion. But having done years of C, C++, C#, I find it bizarre that Objective C syntax is non-obvious. Not that it is particularly complex, but if you know C++, Java and C# seem pretty obvious, whereas Objective C is just very different in syntax.
Finally, Java is platform agnostic. Objective C has few platforms that it's good for and you have to buy Apple hardware to build iPhone apps which to me is plain stupid and I think in the long run, it's going to be one of the things to hurt the iPhone.
Just my own opinions based on my experience with both. I sat down and immediately started writing Android apps using the SDK and simulator with no previous Java experience. Even after several days of playing with existing iPhone apps, I had difficulty even following what was happening in the code, understanding the stuff I was seeing in the watch windows, and figuring out exactly what the various syntactical crap meant.
If you're talking about the old PalmOS. The original Palm company was sold to 3M with the provision that Handspring (composed of the people who originally built and ran Palm) would get a license to continue building products with it. Third parties were never allowed to produce PalmOS devices.
It's not just Microsoft's strategy. All the old UNIX vendors withered under Linux, which could be run on commodity hardware.
There will never be one hardware vendor to rule them all. It just doesn't work that way. If you insist on tying a platform to a single vendor, it will die.
If those platforms lock you into languages and development environments that tightly, I'd be ignoring them completely and looking for something else to develop on.
Seriously, is that what the world's coming to? Is it the 1980s all over again?
Stick Men
I'd suggest iOS because it is harder to learn meaning you have less competition and more is a more unified platform meaning more potential customers will have easy access to buying your app.
Also people who buy Android tend to be cheaper, thus buying the cheaper Android devices, and are less likely to spend a lot of money on apps.
Of course why not learn both. Android is pretty easy to learn and most of the time it isn't difficult to port an app from iOS to Android or vice versa. Sure they're different languages but the app logic can be very similar and Java and Obj-C aren't horrible dissimilar. Tools exist to make the job easier too. Or if you're geeky you can write your own programming language that can compile to Android/Java and iOS/Obj-C. I've been playing with my own toy language which is similar to Python in syntax. Also did a little Brainfsck one but that isn't really practical. Was amusing myself with the idea of allowing users to script certain elements of a program in Brainfsck.
At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
If you want the money, go for iOS.
Otherwise, if you are a FOSS adept, go for Android.
Otherwise, if you have a Mac already, go for iOS.
Otherwise, go for Android.
I hear people on /. saying this all the time and I simply don't think it's true. I've been coding post-university for > 14 years so I consider myself a "senior developer". I used to know c way back in the day, and have done some Java coding and a bit of C#, but Objective C still to me isn't "a few late nights" simple.
.NET or iOS development, are the libraries and everything that goes beyond the bare syntax. Understanding what method to use where takes a LOT more than just a few late nights. Additionally, every language brings with it its own pitfalls, security issues, etc., that a newbie developer is just not going to pick up right away.
Sure, a few late nights will let you pick up the syntax, but the real value of a platform, whether it's JEE,
Sure, after a couple weeks of hard studying you can start to program in a new language. I'm not debating that. Additionally, some languages and environments are going to be easier than others. But the vast majority of developers are not going to be even nearly up to speed on a new language without having a severe impact on the timeline of a project.
www.clarke.ca
There's something stinky about flash on mobiles. They tried to make it the next big mobile platform before (aka Flashlite) and it flopped.
Three big flash developers Nitrome, Semi Secret Software and Astro Ape Studios, are rewriting their games for iPhone natively rather than using CS5, because flash is too slow.
http://www.gamasutra.com/view/news/30368/InDepth_iOS_Flash_Devs_Cautiously_Optimistic_Of_Apples_New_Tools_Policy.php
I want to thank the Slashdot community for comments - suggestions - perspective - etc. And yes even the zingers - diatribes - and "in my opinion .." posts. I knew this could be considered a flame-bait post but i have to be honest here ... I don't even own a iPhone or smart phone or an android device. So parts of this market are not obvious to me. However I have been testing/using an iPad for our school district and it has impressed me. I'll also say Apple got as many things wrong in the iPad as they got right. And I have so far only cursory insights into the SDKs for either device.
So this was a post to help me gather more input. While I was indeed swayed towards android briefly --- I will take a serious shot this Fall - Winter - Spring coding in iOS environment. This is partially driven by my current work in K12 (Apple and i-devices have a strong pull) but also because Apple understands that average consumers don't care whats "under the hood" (open or closed environments) they just want easy to use devices and a "safe" one stop shopping place for apps. For all their faults - Apple has had the "corporate fortitude" to build the iTunes realm and foresight to make the app store. This is the part of the android ecosystem I find most concerning. There is no doubt Google could pull such things off if they focused on it, but IMHO Google doesn't want to invest the effort into it.
Thanks for the all the fish ...
Its not the years, its the mileage
Insightful? I rather doubt that "Angry Birds" is the average development model, especially for someone who looks to Slashdot for free advice:
The initial cost to develop Angry Birds was estimated to exceed €100,000, not including money spent on the subsequent updates.
Don't know about you, but I'm not about to put up $134K of my own money for a chance to make it rich from the iOS marketplace. (Yes, they sold ~6.5 million copies --- in this case.)