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.
http://www.sencha.com/products/touch/
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.
From what I've heard people aren't making much money on the Android side yet. That could change, but it's not a good sign if being paid to code is your goal.
"Life is a series of mistakes and success depends on how well we learn from them." - Isaac Church
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
Point and click utility apps are relatively simple to do on the android. If you are targeting high performance applications such as 3d games the IPhone clearly owns that space.
Got Code?
must be flagged as flamebait.
Schools seem to like the iDevices. If schools are your target market, that's a safe way to go. Do I dislike Android? Absolutely not, it's Linux for the masses. It just hasn't caught on as well with schools as teaching devices yet. It will get there at some point!
Pick one main platform to begin with, but write your app in a portable fashion so that it compiles and runs on two or more. Writing portable code improves code quality even if you only intend to deploy on one platform.
Also, it's easier to learn another platform "as you go along" rather than putting it off until some arbitrary time in the future.
Stick Men
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
Let the school use this
Drop the rest, go with the best !
The main thing you need to get used to in Objective-C (for iOS) is an extra square-bracket syntax for calling an object's methods. It's not really so much like calling a method in Object Pascal / C++ OOP. It's more like sending a message in Smalltalk. It allows for very late binding and unbinding. In that sense, it has the flexibility of coding in JavaScript, but in a compiled language. Also it's VERY supportive of MVC, which you can use to increase the flexibility of your apps.
By they way, you're platform neutral, not platform agnostic. Platform agnostic would be coding HTML5 offline web apps and not caring whether you're on OS X, Windows, Unix or mobile.
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.
This answer will probably get modded down into oblivion, but get Flash CS5, and you can write for both with the same code. See: http://blogs.adobe.com/cantrell/archives/2010/04/one_application_five_screens.html
I believe there are other code platforms that are write once run everywhere, in case you have an allergic reaction to Flash.
The world moves for love. It kneels before it in awe.
Last time I checked (this was a good 3+ months ago), to develop applications for the iphone (this was pre-ipad) you had to own a mac in some form to use their sdk and other dev stuff. This was to my knowledge the only way possible to write iphone applications at the time. You could use the hackintosh method but this still in essence was a mac. On the other hand, Android applications can use any hardware and they give you the option of using the SDK inside Eclipse (an ide if you didnt know).
I've made a couple of Android applications but I'm not going to shell out for a mac just to write for the iphone.
You should use Sencha Touch and program for both!
If you want to earn money with your application then learn iOS. In Android, piracy is a serious problem: search "Android piracy" in google.
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
Seriously, suggesting a real programmer to use a wysiwyg programing tool is insulting.
wysiwyg are for incompetent idiots.
Hell no! Don't waste you time with programming, run for you life and get a job with good hours and good pay!
go iPhone. There is no market for payed Android apps. While it's technically possible to sell paid apps, the people that buy Android are either opensource "I don't think it right to pay for software" or are just too cheep to pay. Combine that with the fact that you will have to support 10X the number of model of device with their variations in screen size and support for touch or buttons etc and the clear winner for an independent developer is iPhone. Do you really want to ship software for devices that you haven't tested on?
Working with both systems will give you a deeper understanding of each
I think that's really true regarding computer languages. It's a great idea to know a lot of different languages.
But when talking about whole platforms, it's very hard to work with both systems, and become proficient in one. I think there's a lot of value to mastering a system so you can REALLY understand it and perform well developing for it.
If for some reason you need to switch platforms, the experience you gain knowing what works well on a mobile UI will roughly translate from one to the other, so it's not like that really locks you down much.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
We have one in Montreal for example .
What's that, EE? ECE?
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.
surely the point of it as a WORE
however for business / school applications many of which people will expect to be web based - something run on the webserver where you can get easily available people (or even students) in to do work is a good idea - like php - along with the supporting javascript and html5
Windows Phone 7 !!!! ;^)
If you already know C then it makes sense to jump into iOS programming. There are also a lot of really good resources from Apple to get you started :
- The iOS Dev Center has very extensive documentation on everything from the OjectiveC language to Apple's GUI guidelines and everything in between.
- There's a Stanford iPhone programming course you can download for free on iTunesU along with slides, assignments, etc. which is excellent.
- Very active userbase around the web, if you have a problem just Google it and somebody will have already discussed it somewhere
The downside is the cost which runs at $100 for a developer license (which you can get around if you don't mind jailbreaking) and you'll need a mac to do development, unless of course you use the open source toolchain but I wouldn't recommend it for beginners. If you work for an educational institution you might get a free dev license, I know Apple sometimes do this for students but I don't know the
If all else fails, immortality can always be assured by spectacular error.
I would recommend not thinking you can "revive" you skills and produce useful apps for a school district (or anyone for that matter). You will probably just produce a lot of non-maintainable code naively written. Based upon the background you described, your software experience is basically that of a CS undergrad (full respect for your 18 years as a hardware designer). Minimum knowledge for useful apps today: client/server, databases, web, AJAX, networking, threading or multi-tasking, efficient GUI, OS, etc, all which take years of knowledge building to master, before even thinking about SDK's and development environments or methodologies. Your idea is like a software developer with 18 years experience saying "I would like to start designing with integrated circuits and build useful devices (I took an electronics course once, long ago) and want to know which electronic CAD packages are best. Sorry, I just don't see this is a productive plan.
iOS has a an extremely well thought out GUI, and a very decent OS, but you will have to deal with Objective C which sucks on many levels. The lecture series from Stanford on iphone programming (available through iTunes) is worth giving it a try if only to experience those lectures.
That said, you should also learn Android. Adroid is a dream to program. Man, it's Java, and it's quick, it's natural and Imho it's better thought out from top to bottom than the iOS. Presently is a little bit less polished on the GUI side, but I can't help but feel that that will change because the foundations of the thing is just rock solid. Very easy to work with.
So in the end, what will it be for you? Well, Android will for sure be the most widely available platform. It may already be. That wide availability will include devices at a lot of price points, from very cheap to very high end, and will also include physical form factors that will suit many different kinds of people. This is good. Apple will probably be very polished also in the future, but will be more medium to high end, so there will be fewer people that buy Apples stuff. It's always been like that and I don't see it changing much. Apple has very nice growth in profits, but their market share isn't growing very fast. This is nice for Apple, since I don't see anyone removing them from their niche anytime soon. Apple will (or so I've heard) stay at about fifteen per market share, meanwhile Android with its more rapid growth will be more prevalant than that, in particular in the more cost-sensitive parts of the market.
So there you have it: Learn both, enjoy the experience and hopefully make some great apps. Happy hacking :-)
and Windows Phone and Symbian..... NO. Just learn HTML, javascrpit and css and use PhoneGap!!!! http://www.phonegap.com/
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.
Why go for the primitive? Use monodroid and monotouch and you will have .NET to boot.
and WebOS too.
I know the original poster didn't ask about it, but what about webOS? The barrier to entry is very low, both technically and monetarily ($0 to become a developer and sell apps right now and have a look at Ares for technical entry). You'll learn html, javascript, and css if you stick to just the SDK, but can also do C/C++ with the PDK if you feel adventurous. Those web languages are going to become much more prevelant with HTML5 and companies will realize they can pay someone once to write a web app rather than paying to write an app for each platform. Half the apps I see on android and ios would work just as well as web apps as they do 'native' apps. And now with HP at the helm, I wouldn't be surprised to start seeing a lot of webOS devices (tablets included) making their way into school systems and businesses in the next year.
I suggest you target HTML5 instead. With it and some JavaScript you can create apps for both of those, as well as webOS and desktops. Learn a skillset that's not tied to a particular vendor. I'm personally not a fan of Java and Objective C (which isn't -required- for iOS but is the de facto standard) is way too niche. This isn't to say that you shouldn't try those languages out. Learning new languages and tools is great for a programmer.
Author of Enyo: Up and Running from O'Reilly Media
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.
For ios.
"beginning iPhone development" pub by apress. Might be a litlle out of date but a good starting book, it is easier to develop that shown in this book now, maybe a new version out now... ....
" more iPhone development" by same
" the iPhone developers cookbook" pub by adison welsy
Some great videos on YouTube...
Some great Stanford college classes online free too, if you sign up for the developer program then you can get many more videos free too from iTunes... And the beta tools and info...
It's really quite simple, just a little different to get your head around....
locked out of this slashdot account for 10+ years... Im back
iOS is locked down which many geeks have issues with, and requires investment in Mac hardware (not an issue if you already own a mac). Android has a slightly smaller community and doesn't have the iTunes app store of you do want to sell your stuff.
So there's a certain amount of give and take here. There's really not a lot in it unless you have strong objections to the issues with apple's hardware.
Figure out who you're going to be selling your first products to, and research what their preferences are. Then learn that platform, but also learn how to keep your options open so that you can port to other platforms as your expertise (and your potential markets) grow.
Am I the only one who thinks it is obvious?
Adobe AIR is cross platform... the regular arguments for and against AIR are basically the same as the age old Java vs. C++ discussion.
If you're not writing a high-end 3D game or something, AIR will let you maintain one set of code for both platforms.
Andrew Orlowski really has a nasty attitude about Apple, doesn't he?
From a technical perspective, I'm impressed by both platforms.
Be aware however that deployment of iOS applications to the general public may only be done with Apple's approval of your specific application. And unless you are targeting jailbroken phones, all revenue must pass through Apple. They may choose to reject an app for reasons stated in their developer agreement, or for unstated reasons: http://www.macworld.com/article/151680/2010/06/myframe_rejection.html
The Android market's terms are more lenient than Apple's, and the Android market does not have a formal approval process of any kind. Apps may however be removed for violations of the Android Market developer agreement.
But even then, Android phones allow the installation of apps from sources other than the Android market.
If you are just trying to get back into programming and want to learn how to program again, I would go with Android. Programming in Java is easier than in Objective C for a beginner. Objective C, managing memory, etc = pain.
If you want to start making money from writing your own apps right now, the money is in iOS. There are simply more iOS devices out there buying apps compared to Android.
If you are going to take a while to get going writing your own apps, do Android. After Christmas there will be "enough" devices to make it profitable to write Android apps.
If you want to make money writing apps for other people, learn iOS. Once you have an app or two published you can easily get a high paying job writing apps for a company. There are a moderate number of iOS jobs out there and *nobody* to fill them. There are no Android development jobs out there that I see. I would expect the Android jobs to show up in the next four to six months.
- An experienced iOS developer
The vast majority of applications you COULD write would work just fine as web applications. If you want to reach the largest audience with the least API-lock-in, think HTML/Javascript. Frameworks like Sancha, Worklight, Sproutcore, Phonegap, Rhodes, and jQueryMobile are providing an extremely good API that allows you to target the web browser so that you not only can have users on iOS and Android, but also Blackberry, Symbian, Windows Mobile, webOS, and any other touch-based web browser.
These frameworks allow you to take advantage of the new features of HTML5 such as local/offline SQLight storage, canvas, drag/drop, OpenGL, etc. The main downsides are that you DON'T get listed in the various markets, you don't have access to many platform-specific features - notifications are still a little tricky, but I'm sure that there will be an open source app to handle web-based notifications in a multi-platform way in the future.
I wish most of the apps in the Android/iOS Markets would just go away and become web sites, because they have no purpose as downloaded apps, including many games.
Tell you what...
Screw them both. Dont learn a new language. Program for symbian. works fine on c++. And symbian is the market leader! And offers a million dollar prize for the best app for n8!!!
This is the normal Apple vs Microsoft question, just with Apple vs Android.
In the beginning, Apple had more market than Microsoft, but their corporate methods and 30%+ higher prices was lost on the masses.
The same is happening with Android. It will be 90% of the market, but it will take a few years. Android isn't just portable devices - it will be in TVs, toasters, ice boxes, microwaves, AND portable devices like tablets, phones, eReaders. Soon your watch will be running Android.
Ok, I don't like either choice, so I develop websites that only work with Nokia Linux-based portable devices. i-Whatever are specifically dumped to a page about consumer rights. Android phones are dumped to a page about computer privacy. My web site would probably work just fine with both systems, this is a personal statement.
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.
Neither. Both platforms force you to use a specific programming language. They don't give you choice of development tools. Apple limits how you distribute your programs. Both platforms actively try to make it harder for developers.
Stick with the PC or find a mobile platform that is developer-friendly. I used to recommend Windows Mobile but it seems Microsoft thinks that developers had it too good and is locking Windows Phone 7 down.
HTML5 seems to the safest, long term way to go. Accessible from most things. Android and iOS will change, and fade away, while non-platform specific stuff like Java, HTML, etc hang around like a bad smell.
One is open source and the other is enough closed. However,I think approaching both platforms is the way to go.The more platforms you support ,the wider your potential customer base will be. Android = Java , iOS = Objective-C. Both have C as a base. I think you will be just fine.
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.
You've got to be kidding me.
The parent is modded off-topic, then troll? A link to a method of accomplishing both the OP's objectives is totally on-topic.
I could understand a lack of moderation due to apathy, but wtf is wrong with you, mods? The parent is on-topic, and I don't see how pointing out a system that functions on both android and iOS is any kind of troll.
Perhaps there is something I don't know about sencha touch, which causes it to be an abomination of some kind?
In that case, the proper response is to reply with the missing information, not moderate into oblivion.
The only reason I can see for giving the parent any kind of grief is that it wasn't a clickable link.
--
Whoops, there went my karma...
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
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
You know, MS is the company of the future.
They have products that make everyone say "meh" (i think that means good, but i'm not sure yet).
And since it already has a base of everyone in MS (that didn't throw it away of course, or sell it on craigslist), then
ah, nm, I was going to be funny, but shit, MS sucks so bad, it's not even funny anymore.
So if you have to ask, I suggest you don't bother. You've missed the boat.
Be seeing you...
Until I bought my iPhone...
Surprise, surprise! I cant write software for a device I own, unless I:
- buy a fscking iMac or something
- pay Apple an annual fee
- get Apples approval to have my software available at Apple Store
- buy a license for the software I wrote
The thing isnt even capable of recording a phone conversation! A throwback to the 90's !
I used to think Windows sucked and decided to give an Apple product a try. My feeling today is that Windows sucks because MS people dont have a clue of what goes on inside their OS. iStuff sucks BY DESIGN!
I understand the iPad suffers from the same ailment. And you have to sit with your feet on your table to use the thing! Now, thats some user interface...
Sorry, offtopic, I know, but I cant see the iPhone living too long with such ill-conceived (dis)funcionallity.
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'm surprised nobody has mentioned jqtouch and phonegap yet.
Amazing project. This is the future.
Phonegap works well on both. You can learn JavaScript, CSS and HTML and be done.
Learn HTML5/CSS/Javascript. The web (and all the flexibility that HTML5 brings) will become the defacto, platform agnostic tool for mobile devices, just like it has for the web.
If you know C, then iOS, which is C. Android is Java. With Xcode you can make apps for iPhone, iPod, iPad, Mac, and potentially AppleTV. They are desktop class native apps, not applets that run in a virtual machine.
As far as the market, Apple's App Store has 50 times the revenue of Android Market, operates in many more countries, and has a much larger installed base of users. iOS users specifically buy iOS devices and like to buy apps and accessories for them.
It is also cheaper to develop for iOS, because you can buy an iPod touch for $229 with no contract and have the latest handheld hardware. That combined with the simulators in the dev tools is all you need because there is little hardware variation. The SoC in the iPod touch is also in iPhone, iPad, and AppleTV. With Android, you are talking about $500 devices and you'll need a few of them at least.
Android's Dalvik engine is also under a patent suit from Oracle, and HTC is under a patent suit from Apple. On the Apple side you are working with an app platform with 20 year heritage back to NeXT and hardware platform with 10 year heritage back to iPod and 20 years back to Newton. It wasn't just cloned yesterday.
Oh FFS Slashdot... will you please remember my long winded comment if I forget my passord on a different PC... dang it.
Well anyway my response pretty much boiled down to...
iOS has the users... Android has the flexibility and the growing market, but is a pain...
Depends on whether you're striking out on your own, or you're looking for work... if the latter... just look at the job market and decide, which has more job ads where you want to work and on what... if the former... well Android is likely to have the larger market long term... but it's a shit to support with all the different O/S and device combinations... and that's assuming the iPhone doesn't ever get off of AT&T in the US (which I assume from your comments is likely to be your major market striking out on your own).
Programming wise... if you're a programmer... i.e. one who can actually hold down a job and get some work done as opposed to a religious asshat, it's more about the libraries than the language.
Yes there are a few subtelties here and there, but Java and C (and Objective C) are reasonably alike (actually as a Java programmer of 10+ years I prefer Objective C)... Memory management is a bigger issue in Objective C than in Java, but frankly if you'd rather ignore memory management when programming in Java, I'd rather not employ you.
If you have some killer app that you have in mind... go for BOTH platforms.... not that hard... from a programmers perspective they're not that different. i.e. understand each platform's lifecycle etc. ...and yes, the comment is a bit rambling, but it's late, there is alcohol involved... and I'm a programmer who's been around long enough (I've programmed in X86 assembler) to realise that asking which platform to program for is kind of like asking which type of bread should I learn to bake, or which plan of house should I learn to construct (yeah, probably not great examples, but you get my jist).
Seems kind of obvious to code for whichever device you have, you wouldn't have both would you?
if you have neither, code for whichever device you like/prefer/agree with.
If you learn HTML/CSS/Javascript you can target Android/IOS and the Web.
Tools you can use include:
Appcelerator
Sencha Touch plus Phonegap
You can read this article for more information and other options.
Here's a question for everyone:
Why haven't any apps emerged that are a reason for buying an iPhone or Android in and of themselves? What really caused empires to rise and fall has been software. For example:
Lotus 1-2-3 and WordPerfect simply drubbed every other spreadsheet and word processor in the 8/16 bit era. They were simply the reasons that people bought PCs. (Apple survived on a niche market diet powered by HyperCard, PageMaker and Quark)
MS Office and QuickBooks were the reasons people bought Wintel PCs in the 32 bit era. (Apple survived on a niche market diet powered by PageMaker and Quark)
The difference between platforms is smaller in the 64 bit era... but Windows enjoys a great
What are the mobile apps that are so compelling that they drive sales of devices? The closest thing to a killer app I've seen is Google Maps + Navigation for Android... but it's still not at the level that say 1-2-3 was against it's peers...
-- $G
Using Flash and CS5 you can export to android and i(fill in the blank).
There is room in any normal humanoid brain!
you had me at #!
The real dilemma nowadays is between writing native apps (for every single OS out there) or wrtting webapps for all of them.
With the current advances in javascript performance and the advent of html5, it's way easier and more intelligent to make your apps all web based.
Check jquery.mobile to see what's coming...
Why not develop for both at the same time? : http://www.appcelerator.com/
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
I also looked into developing a cell phone application. My application hopes are modest: I don't expect to make much money and I don't have much money, and I prefer a $15 a month cell phone, In this setting, the android or a Linux based phones are the platforms I considered.
The problem is, the entire cell phone field is divided into little silos. The field is just transitioning from "charge all the market will bear and insist on 2 year contracts." to the slightly more price variability. But cell phones are still bound up because they don't have a visible TCP/IP networking layer and a uniform port 80 service. The cell phone world is like the computer world in the era of bulletin boards and Compuserve.
Thinking of my long gone Turbo Pascal, Mix C compiler and Morrow CP/M and RS-232 interfacing and 2400 Baud dial up connections, I for one realized that computer networking required "something more" but I didn't know what. Like everybody else, I worked my way through Novell Netware, and AOL.
For my educational application, I see it as something a teacher would run on her desktop. I am using the Google App Engine cloud computing system with the Python programming language. Attractions are: cheap to get started, modern programming language, open source, and a simple development environment. Plus, my app will run on most any computer that a user has.
I have an idea for a ride-sharing cell phone application that needs access to a GPS sensor, like dozens of other cell phone applications, the siloing just eliminates an app from running on most phones. A two dollar ride sharing event has broken economics if you have to buy a specific $150 phone and pay $2 a day for wireless service to support the application.
Flash will never be fucken installed on my N1 ever
Shit is not bitter....
Android is the New Linux; destined to endlessly entertain the geeks, but no one else. The Evils of Apple control of a single platform that does not require users to spend half of their work-day, and most of what's left, to figure out how to get their non-conforming hardware/software/corporate IT/service provider to get back to the same capability before the .01B update, is what makes Apple the only choice after getting burned by the "more economical" freebies. Android is the best thing that could possibly happen to Apple.
I would say go with android, you have all the flexibility and freedom to do wat ever you want and seeing the number of android devices being released to market i would say now except nokia almost everybody has switched to android (off course there is apple), but if you compare apple vs (the rest - nokia) i would really go for android. Even i was in a similar situation , and android really rocks..!! And for the apple, well you can take it as a second option , but remember its all programming languages and api stuff if you learn one the rest are just find replace of specific api methods (tat's not as simple as it sounds, but still).
That is completely retarded. Of course you still need to market your application unless you want it lost in the sea of mediocrity that is the ITMS and the Android marketplace
There are simply too many similar applications, you can't just expect users to automagically find and install your application. You need to market it and make sure people can find it when they are looking for the functionality your application provides
Calling someone a "hater" only means you can not rationally rebut their argument.
Both Java and Objective-C are easy to learn and work with.
I've been searching for a mobile app programming job for a while. No one even wants to interview you unless you can provide the name of at least one App that is already in the App store.
I'm working on an implementation of Conway's Game of Life for the iPhone. Here is the manual. Here is my call for beta testers.
It's going to Alpha in a few days as it is stable and nearly feature-complete. I'll finish writing the manual during Alpha and Beta test, then as soon as I submit to the App Store, I'll write the whole thing over again in Java for Android.
Both systems have limited resources and tiny screens. You often have to solve the same UI problems for both systems, but there are some differences that mean your UI solutions will be different between the two platforms.
Android App Development is to be distinguished from Android Platform Development.
Android Apps are written in Java, are directly visible to the user and are user-installable.
The Android Platform includes the Linux kernel, the Dalvik Java VM and the various userspace middleware libraries. The kernel is written in C and assembly code. The middleware is written in C and C++. The Android API includes libraries written in Java.
If you're going to develop for Android, you should learn both App and Platform development. Which one you do in the long run depends on your personal abilities and preferences, but even if you only develop Apps, it's useful and helpful to understand the Platform.
As for documentation... Apple has always had the best developer doc. They also have very good developer mailing lists with active participation by Apple engineers. Thus if you have never done any mobile development at all, I'd start with the iPhone.
However, iPhone development requires an Intel Mac. Android can be done on Mac or Linux. If you don't have a lot of money and don't own a Mac, start with Android while you save up the money for an Intel Mac.
A Mac Mini works just fine for iPhone Development, but to sell yourself as a developer, especially if you want to do independent consulting, you'll need a MacBook Pro laptop. Those are way expensive.
Request your free CD of my piano music.
* Which programming environment (iOS or Android) is easier to jump into from a technical perspective / number of languages needed to master?
That's hard for me to decide. You need to learn Objective-C for iOS, and Java for Android. On iOS you can easily mix your code with pure C and even C++. On Android, native code requires a little more effort, but is also well supported. When it comes to languages, both platforms are pretty easy to master.
Objective-C is somewhat tricky in that it manages object lifetime by explicit reference counting, and then garbage-collects objects with a zero reference count during the main UI run loop. Unfortunately any function you call can yield to the main run loop, making it simply unknowable whether an object you created in one line of your function exists a few lines down after a call to another function. In Java, memory management is less manual, and more predictable on the whole.
My biggest argument for Android over iOS from a technical perspective is that the platform APIs are generally a bit saner, by which I mean they suffer a bit less from http://www.codinghorror.com/blog/2006/10/on-frameworkitis.html
Other than that, both platforms have their flaws. I've found Android a bit more comfortable on the whole.
* Which one has a better SDK ecosystem of documentation, programmer support, and developer community(s)?
About the same. When you encounter a bug in the operating system code, Google is a tad more likely to respond, but they'll still take too long for it to be useful to you. At least you have open source code then that you can peruse and decide how to work around the bug.
Really, I'd go as far and say that Android has vastly better documentation, simply because you have the code. But it's not everybody's cup of tea to solve their problems that way.
* Where is the market and the money going?
iOS apps still sell better, but the Android market is growing rapidly. If you buy what market analysists say, the future should belong to Android, but the present is firmly in iOS's hand (saying that, it depends a bit on where you look. The USA has a far larger Android market share than Europe, and Asia seems to be dominated by Symbian).
So far as I know, you can't install an app on an iPhone unless either its a developer's iPhone or your app is in the store. You can install arbitrary apps on Android phones. If you want to write apps that will be of use to your colleagues or the students but not much use to anyone else then you may be best to learn Android programming just so you can distribute them locally without having to submit them to either app store (assuming of course a reasonable proportion of the potential users are using Android). Otherwise, if they're all iPhone users or you want to target both, you might want to stick with writing web applications (or use an environment like Titanium Mobile to develop for both).
Dell, HP, IBM (their PC division is quite healthy as Lenovo) are all going strong.
How many of the old UNIX vendors that tied their implementation to overpriced hardware are still around? Sun is now Oracle's bitch, and SGI has been dead for years. IBM still supports legacy installations of AIX, but they're more about Linux, which is why they're still around.
But yeah, Apple will be different. OK.
I don't know much about programming, so I'm wondering:
To what extent does Rhomobile solve this question?
http://en.wikipedia.org/wiki/Rhomobile
It claims you can write something that compiles for all devices. What are the limitations to this approach?
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.)
Should I Learn To Program iOS Or Android Devices?
Learn to program instead.
For the long run forget native apps. Learn HTML5, the API's properly and most importantly HTTP properly. Yes HTTP. for example CORS, HTTP Upgrade / 101 response. Imagine what you could start to do with that. We are entering an era of proper, dyed in the wool, web applications, Real ones, not just 'websites'.
To the best of your ability, write in HTML5 and JavaScript, which is more or less 100% portable between the two platforms. Now, that's not going to get you all the capabilities of a native application, but for many things it's more than sufficient and cuts out a huge amount of grief.
Failing that, I'd say learn both, but pick one to start and don't go with the other until you've fully mastered the first.
Chance are that you probably already have Java skills and no particular familiarity with Objective C. In that case, Android (programmed in Java) is likely to be easier to pick up. The key to either platform are the libraries, and those, not the language, are where the learning curve is. You'll find that each platform removes tedium from one part only to put tedium somewhere else. If you are really comfortable with iOS and Objective-C, I'd say developing a quality native-feeling app for it is much faster and easier. Getting to that point, however, involves a huge investment of time.
Android buys you a much wider array of devices and platforms that look like they will probably surpass iOS is market (unless something drastic happens with iOS exclusivity). That variability does add a little extra effort on the developer's part - particularly because many versions of Android are in play at the same time (in part because vendors don't always make it possible to upgrade -- whereas iOS is a little better in that respect).
Anyway, I'd advise using the browser rather than native apps whenever possible. Failing that, learn both to hit the biggest audience, learn Android if you have no particular devotion to iOS, and learn iOS if you know that the demographic you target is more likely to purchase your app on iOS. I wouldn't say that Android or iOS development are particularly difficult to learn, but both take time, and the effort learning provides no help in learning the other. That said, we are so much better of today than we were before Android and iPhone hit the market.
Certainly careers are a major concern to slashdot's core audience. And such a section would be far more relevant than many of the obscure and/or obsolete sections that slashdot maintains.
What market are you going to write for? Corporate? Gamers? Gen Pop?.,,, Write for that market
Personally I think that IOS has a better chance than android at being adopted by corporations. iPads, in my opinion, have a lower total cost of ownership and are more secure.
For regular folks, it's a total toss up. I'd still recommend picking one and getting good at it.
I'm in the process of learning IOS and could not imagine trying to learn another platform at the same time.
very sarcastic.
For those of you that don't remember developing a Brew or J2ME app for a Verizon device, let me refresh your memory.
* $15k submission fee - *non refundable*
* A 2-4 weeks biting your nails period to see if you app 'qualifies'
* If not, bend over, submit $15k again, repeat
Or, bail on Verizon all together.. Which I know many devs who did.
Now, that being said, it's amazing how much the big V is never discussed in regards to all this open/closed stuff. I guess many people just never had to deal with them. They're not the shining white knight that people think they are. Crippled phones, crazy fees for stupid stuff. I dunno, if the iPhone does come out for Verizon, I'd have to really read the contract before I switched. While their cell service is far superior to AT&T (and yes, AT&T is teh crap), their policies are worse.
And right now, it is Verizon, not Google, that controls Android...
Skip both platforms and learn to develop for the web. There is very little a native app can do that an HTML 5 app can't. Apps are a fad that will quickly be replaced by the ubiquitous approach of HTML 5 - develop once, run on all platforms. Developers want this and will start to push harder for it now that HTML 5 is gaining wide platform support. We've seen the pattern before.
MOD PARENT UP INSIGHTFUL
One thing you are seeing now is the proliferation of versions of Android out there. In other words, maybe Google is making the same mistakes Microsoft did with "DLL hell", only much worse. This would seem to me to make it difficult for the third party vendors out there. With Apple, I have to test for iOS 4.1, 4.0, 3.2, 3.1, maybe iOS 2.0. With Android, throw in more versions, and more hardware, and you've got some additional complexity.
Another interesting advantage of iOS is that Apple doesn't have to convince Linus, as Google does, to make a change to Linux to support devices vastly different from the typical hardware Linux runs on, from big iron like IBM mainframes, to powerful Unix servers, to laptops. There was a fascinating thread on the Linux Kernel a while back about Linux Power Management, all about sleep mode, etc. Fascinating in that it gives insight into the tremendous amount of thought that goes into what might seem a trivial problem, but then you realize how this might impact other systems, well, it isn't so simple. Is this due to Linux monolithic kernel, vs. the mach kernel used in iOS? Just a thought. Anyway, it occurred to me reading this thread, that Apple has a significant advantage in not having to convince a third party to make a change like this.
You could try this,
http://sourceforge.net/projects/quickconnect/
it lets you write the app in html, javascript and css, then you can have it work for several platforms (ios, android, blackberry, etc.)
It's super easy and works great.
It is the Biggest selling computer of all time.....
Back in the 1980s Steve Jobs started his workstation company NeXT. His staff was pretty forward-looking and deduced the cutting edge software would be written in an Object Oriented paradigm. However there was almost nothing commercially supported out there, with exception of Objective-C. Many people thought a "C"-like language would be the future. C++ was mainly a slow, buggy research lab project at the time. But because it mostly free and you could see the source, the open-source community gravitated toward it and improved it. And the rest is history. Save Apple still stuck in the 1980s.
Idiotic. As the Android market saturation accelerates, the iProducts will be seen as an expensive niche for people who see them as a lifestyle choice, just like they are in the desktop/laptop arena.
You ask a great question, but it seems to be two questions:
1) Should you upgrade your skills to programming applications with one of the popular smartphone OSes?
2) Which OS?
To the first, the overwhelming answer is ABSOLUTELY YES. I recently ( AUgust 30) wrote on my blog for embedded microcontroller designers my own feelings on this subject: why someone designing/programming in an unrelated field should learn to develop iPhone apps (PSoC Design Methods and Madness).
My answer to the second question is choose iOS and learn to program for iPhone. The main reason for is that I believe Apple has the bar-setting tools and they reinforce learning how to develop great applications. For instance, in the interface tool there are automatic guides that support laying out buttons so they are well-placed: not too close to edge or each other and not too small.
The disadvantage of iOS is that to distribute apps you need to pass the review board and get them into the app store. This is not, in my mind a disadvantage. It means that there are a set of minimal requirements that need to be met before distributing an app, and that when you get an app yourself off the app store these requirements have been met. And if you can get friends who trust you to let you disposition their iPhone or iPod Touch for testing, then you can load your app on their device before it gets in the app store.
Gartner groups predicts that by 2014, Android based phones will outsell iOS phones - simply because it will be on more platforms.
At what point did Gartner predict that Android based MP3 players will outsell iOS based MP3 players (iPod touch)?
Andriod users like free stuff, its easy to hack Andriod, its an open platform, therefore it attracts all those who think all software should be free, weather its authors believe so or not. Do some searching about iPhone vs. Andriod conversion rates, software sales, piracy. I remember reading an article about a #1 selling iPhone app developer making Andriod versions of their games, full sales data released, they had the #1 Andriod game and made 1/20th of what they make on the iPhone. Piracy rates on iPhone are 5-50%, on Andriod is more like 95%.
In the education sector, the apps you will be developing will be probably be informational, and your clients will most likely have wifi network access. In which case I'd suggest you developing web apps, so you only need to develop a mobile and a standard interface. Then they'll be available to everyone, and you only have to learn one very well-understood platform.
Do as you would be done to.
On the same premise he should be doing Android period. Android also has an ndk which allows C/C++.
But that's really different than being able to code in the primary language and slip into C, or being able to easily make any API call they like with no obtuse bridging involved - you could add just a single ObjC call in the middle of a C function if you like, but for the NDK you'd have to call some C variant of the Java call, if the call even exists...
"There is more worth loving than we have strength to love." - Brian Jay Stanley
As a developer you'll be far more valuable if you're able to deliver and app no matter what the platform is.
The idea is, the platform, the language etc... is entirely irrelevant for an engineer. My personal definition of an engineer is either "A person who can produce the most complex solution for the simplest problem" or more applicably to the discussion "A person who can identify a problem, break it down into smaller easier problems, posit solutions for each one, design and/or implement each solution therefore solving the problem".
Writing an application is a big problem. You need to identify "Do we need it?", "What should it do?", "Desktop, mobile, specialized device?", etc... once you've identified that you're interested in writing a mobile application, you can then identify whether it should run on just one platform or be platform neutral. If it's platform neutral, can a "core functionality" be identified and written as a library which will compile for any device of interest. Then you can implement the UI for each device as needed.
Problem is, unless you're using Adobe tools or maybe Unity3D (for the moment, which means you'll have to reinvent some major wheels at times) there isn't a common programming language for the mobile platforms. Apple has C/C++ support (then stick it in a ObjC wrapper), Android has C++ support... with effort, then make a Java wrapper. Windows Phone 7 tries to pretend like C/C++ doesn't exist, but I've heard of success of using it through managed extensions. Symbian if you actually consider that platform worth bothering with has C/C++ with Qt which is kinda nice. And Blackberry (another annoying waste of time) will require a bunch of rewriting everything for Java. (I hear you can use C/C++ but at your own risk). Brew doesn't even count, that platform is a programming disaster.
People are trying to make cross platform solutions for phones, but Apple, Google, RIM, Nokia etc... are making this as complicated as possible. MonoTouch is okish and Air is also okish, but you'll have limits on them both as opposed to programming natively for each.
What I have been doing is to write all my core libraries in C#, but "typedef" all your types to something native to your code. Then for strings, subclass String and add functionality to it to make it work like the one from Qt. C# is great because it borrows so heavily from C++ AND Java. If you code like this, then you can make a simple script that will convert your C# to either C++ or Java without any intervention and then porting is EASY!!!!
Ha ha ha ha ha ha
ha ha ha ha
*ROTFLMAO*
HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA
*Snif*
Ha, good joke, that was a really good one. *wipes tear of laughter from eye*
After 371 comments, you probably don't need one more, but since I do development for iOS, as well as a bit for Android, my take on the matter might be worth a few sentences.
Probably the most important thing you should know is that if you're going to use the Apple dev kit as your primary development platform, you'll be using Objective C. Unless you already know Smalltalk or Obj C, it may well be difficult to get a handle on. It's very different than C++ or Java or pretty much anything else in both syntax and method. If you're thinking your C skills will get you through, well, not really. You'll still need to learn a whole new syntax, and that syntax is, let me say again, *very* different from most other languages.
Android uses Java, and if you haven't already used Java, you've probably used something close to it.
There are also several platforms out there that allow you to write once then compile for both. I happen to use Corona SDK which uses Lua as it's development language, but it's certainly not the end-all of development for iOS.
If you're looking to actually make money, I suggest writing for Android. It's easier to get seen on Android than on the App Store, and response seems to be a little better.
Sean.
I read somewhere that only 1% of iOS developers make more than $500/month. I'll take my chances at the casino or the stock market.
They both suck. Use QT on Nokia if you actually care about, you know, market share and powerful programming environments.
That is their business model. They are desperately trying to hold on to that.
.. hmmm ... so I brought my equivalent app, I proceeded in the same manner without the go home and sync part.
They are trying to inovate faster than open devices. It seems like they might loose the lead.
iOS will continue to make money. In fact alot more for a long while as their margins are much higher.
Apple create an environment that attracted developers and a particular type of app.
Google created a different environment that competes in attracting developers and creates aparticular type of app.
For example, my iPhone bearing friend showed off his ringtone app. He has a song he likes, he brings up his app.
He edits the song and saves it as a potential ring tone.
When he goes home, he will be able to sync it and be able to select it as a ringtone.
I (android phone) said
The whole thing worked in front of him in 2 mins
His next phone will not be an iPhone now although he will forget, because he is an apple fanboy