Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Handhelds Programming Software

Should I Learn To Program iOS Or Android Devices? 403

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."
This discussion has been archived. No new comments can be posted.

Should I Learn To Program iOS Or Android Devices?

Comments Filter:
  • Sencha touch (Score:0, Informative)

    by Anonymous Coward on Saturday September 25, 2010 @04:32PM (#33698702)

    http://www.sencha.com/products/touch/

  • Re:Yes (Score:2, Informative)

    by l0ungeb0y ( 442022 ) on Saturday September 25, 2010 @04:35PM (#33698736) Homepage Journal

    EXACTLY!

    As a developer you'll be far more valuable being able to deliver an app to as many platforms as possible.

  • Personally, Android (Score:4, Informative)

    by ResQuad ( 243184 ) * <(moc.ketelosnok) (ta) (todhsals)> on Saturday September 25, 2010 @04:41PM (#33698782) Homepage

    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).

  • by SuperKendall ( 25149 ) on Saturday September 25, 2010 @04:57PM (#33698900)

    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.

  • by wembley fraggle ( 78346 ) on Saturday September 25, 2010 @05:13PM (#33699040) Homepage

    There is a great iPhone application programming course on iTunesU, which includes an introduction to ObjC and rapidly moves into powerful programming techniques for iOS. Better yet, it uses a lot of the examples from the SDK as the course material (there's no book), and the slides are provided as part of the program. It's all free to boot. Definitely worth watching for a good introduction to the platform. Plus, it's all free.

    It's the Stanford University CS 193P, iPhone Application Programming, Spring 2010 course that I watched.

  • by rrossman2 ( 844318 ) on Saturday September 25, 2010 @05:22PM (#33699092)
    Haven't really played with it yet, but you can get the BlackBerry Dev tools for free. They provide a plug-in for Eclipse to develop the Java apps for BlackBerrys, even provide tutorials, examples, and even phone simulators. Granted it's not the platform you're looking into, but I know Symbian phones will run MIDP java apps (they have the full stack in the S60/S80 OS), so an app that will run on a BB *should* also run on a Symbian phone. I'm not sure if an MIDP app would also run on an android or not... but just wanted to toss that out there
  • by Pedrito ( 94783 ) on Saturday September 25, 2010 @05:48PM (#33699258)
    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.
  • by Rix ( 54095 ) on Saturday September 25, 2010 @05:53PM (#33699312)

    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.

  • Re:Yes (Score:2, Informative)

    by Anonymous Coward on Saturday September 25, 2010 @05:56PM (#33699330)

    Blackberry? Well, they have too many devices and versions of their OS. Testing our app for Blackberry required the hiring of service to provide access to test devices and separate builds for each device type. I would discourage Blackberry development.

    Blackberry has made device emulators freely available for many years.

    Blackberry has had documentation and an SDK freely available for close to a decade.

    Blackberry puts no restrictions on how you sell or distribute your applications.

  • Re:Yes (Score:5, Informative)

    by object404 ( 1883774 ) on Saturday September 25, 2010 @06:18PM (#33699484) Homepage
    Learn Flash/Actionscript3/Adobe AIR. It will simply run everywhere. (cue Flash vs HTML5 flame war. off-topic, IE9 ain't coming to XP so screw that -- I'm sick of all the "this will only work on Safari" or "this will only work on Chrome" HTML5 demos. As someone who actually builds stuff for clients instead of just blogging about these technologies, this is a dealbreaker and ***FORWARD*** compatibility headache as Windows XP will never go away for the near future. The original reason I learned Flash coding was because of the bloody headache of cross-browser compatibility.)

    Back on topic, Flash is coming to every single smartphone platform (and even TV set top boxes [yfrog.com]). 19 of the top 20 mobile manufacturers are already part of the consortium Adobe Open Screen Project [openscreenproject.org] and they're working to get Flash running on their respected platforms. Only Steve Jobs didn't sign up for whatever his reasons. Flash is now out on Android, Symbian, Maemo, coming to WinMo 7 (Flash Lite is already out on older versions of WinMo), Blackberry & Palm, definitely on Meego (Nokia Maemo + Intel Moblin).

    Flash CS5 can now be used to make native iPhone apps legally again as per App Store policies (the process is the same as making an Adobe AIR app). Here's a refresher on exporting your AIR project into iOS: Packager for iPhone Refresher [adobe.com].

    There's some surprising current statistics [pcpro.co.uk] to fix one's perspective on the death of Flash by the iOS gadget crowd. Currently 97% of the internet is Flash capable and iOS only has 1.1% share. Of course, the iOS share will increase as more customers buy them, but think of that when building stuff with the widest reach possible. Also, currently, devs seem to be monetizing the most on iOS, but the App store is now *so* *so* *so* saturated that it's hard for a new app to get noticed amidst all the noise.

    Flash 10.1 is already out on Android Froyo (2.2) and AIR for Android is currently in public beta and should come out soon http://labs.adobe.com/technologies/air2/android/ [adobe.com] so Flash is already good to go if you want to target Android.

    Another thing to consider is that Android market share has now overtaken iOS and since there's not enough decent content on the Android and Adobe AIR marketplaces compared to the Apple App Store, if you build a good app on any of those platforms, it's easier to pull in a user base since there isn't much competition yet.

    Your Flash apps would run on Symbian^3 devices which are already out (N8, C3, etc) as they have all Flash Lite 4.0 (A slightly stripped down version of Flash 10 which already runs AVM2 AS3 swfs). In fact, Nokia just launched the $10million Calling All Innovators N8 app contest [callingallinnovators.com] and Flash is one of the formats you can enter in.

    Not only will your apps run on mobile devices if you build 'em in AIR, they will also run on Desktop Linux, Mac & Windows and that is the biggest plus for me. For complaints about the cost of Adobe tools, you can build SWFs and AIR apps from completely Open Source tools. The Flex SDK is FOSS [adobe.com] and you can build apps just with your .AS3 sourcecode + a command line just like with the JDK for Java (or pick any appropriate IDE of your choice to make your life easier). Oh, btw, the commercial Flash Builder is free for students & teachers + developers who're hit by the economic crisis and are currently unemployed -> apply here for license [adobe.com].

    Of course, please don't forget to *optimize* *optimize* *optimize*. Flash is not a slow platform. T
  • Re:Yes (Score:2, Informative)

    by tgatliff ( 311583 ) on Saturday September 25, 2010 @06:30PM (#33699552)

    Other than simple "hello world" type development, most of the time the way you really learn a new platform is by getting a new project and then learning it as you go. Pretty much any senior developer can pickup new platforms with only a slight impact (mostly late nights) in the overall timeline.

    For me personally, I have not been able to get any clients to bite on iOS development, but I found early on that android is an almost ideal OI for industrial automation. Hence, why I currently am only doing android development at the moment until I can find someone to fund a iOS project.

  • Re:Yes (Score:2, Informative)

    by naz404 ( 1282810 ) on Saturday September 25, 2010 @06:36PM (#33699600) Homepage
    Oh, also, for developing on iOS devices like the iPhone, iPod Touch & iPad, think of the environment as closer to game consoles where the owners have very tight grips on which devs can enter. The license & requirements to dev on iOS is much cheaper than compared to applying for Playstation, X-Box, Wii & NDS (and that's why it's also a lot of game developers are switching to iOS).

    Aside from that, a growing number of users are already ditching their PSPs & NDSs for smartphones/PMPs. Nokia had the right idea with the N-Gage, they just borked its execution horrendously (whoever had the final say on designed the ergonomics obviously never played a console game in his life).

    Oh, and don't forget to look into Unity3D [unity3d.com]! It's also cross platform and with proper tweaks, you can get your app to run on Windows, Mac, iOS & w/ additional licenses, Wii, X-Box 360, PS3, Android (soon).
  • Re:Yes (Score:5, Informative)

    by bm_luethke ( 253362 ) <luethkeb.comcast@net> on Saturday September 25, 2010 @06:49PM (#33699674)

    "Android has a hidden danger - malware has already been found in the wild that attack Android phones."

    So does the iPhone - there have even been a few that have made it to the front pages of Slashdot. One of the Apple "hidden dangers", as you call them, is some strange confidence that Apple doesn't have these bugs and people act accordingly. Indeed their PDF reader had a remote root exploit that makes any and all Android exploits pale in comparison. Heck, even *the store itself* has been compromised on at least one occasion (most likely by multiple different people too) and a large number of unauthorized purchases initiated by said intruders.

    However, that really doesn't matter that much with respect to what environment to learn and frankly matters little to most people (note how many use Windows). If you want to develop mobile application then it would be suggested that you learn iOS, Android, and RIM.

  • by chartreuse ( 16508 ) on Saturday September 25, 2010 @06:51PM (#33699692) Homepage

    Ditto. Though I see it's Winter 2010. They did it last year, too, though a) I don't know that it's available now, and b) the iOS platform itself evolves quickly enough that capabilities and best practices have changed since then.

    If you sign up for the developer program ($100/yr, and necessary to put your code on the device instead of the simulator) you can also get access to videos of sessions from the developer's conference for free and get advice straight from the horse's mouth.

    I'd also recommend getting a book or two. I'd recommend O'Reilly's C Pocket Reference if you're rusty in C. Erica Sadun's iPhone Developer's Cookbook, Second Edition covers a lot that you'd need, though the way she organizes her code can make it difficult to reuse if you're just starting out. I can dis-recommend the Sam's "24 hour" iPhone programming book, unless it's been revised and corrected -- it's almost as likely to hinder you as help.

    You'd also inevitably be using Apple's own SDK documentation, which can be quite overwhelming to begin with, and web searches both at Apple's developer forums and at large on error messages and class/method names are often fruitful once you get a handle on iOS.

    I'd estimate it would take one month of spare time to get your bearings, and 2-3 to really know what you're doing. What can blindside you is that a lot of advanced graphics and sound applications -- games, for example -- require some C++ afaik. (So much for my plans for avoiding it.)

  • Re:Yes (Score:1, Informative)

    by Anonymous Coward on Saturday September 25, 2010 @07:08PM (#33699828)

    This is ALMOST the correct answer, a well designed application for android does NOT need to know which devices it is designed for, it has scalable objects/images/etc built in from the initial designs of the platform, if you have a decent CS background with a decent software engineering ability, Android will mesh quite well with your abilities and allow your application (unless you are making the next folding@home@mobile application or other such thing) to never have to worry about the underlying arm/x86/etc implementation of hardware that it is running on. Also I've personally done research into Android security and it is leaps and bounds beyond what any desktop OS has, is it perfect... no... but its alot better than anything else out there IMHO. and if you WANT to worry about the hardware development area, then Android had the NDK (Native Development Kit) so you can work with a subset of assembly/c/c++ commands(also a few linux commands ..I think...still learning NDK...{like 'ls', etc})

    But if you make a well made Android application, then you don't have to worry about phone X,Y,Z coming out because it will already be compatible with those phones

    Also Android gives you fine grain control on which devices will be able to see your application in the marketplace based on the device specifications. Good Developers need to use this to their benefit more.

  • by shutdown -p now ( 807394 ) on Saturday September 25, 2010 @07:43PM (#33699996) Journal

    I looked at Dalvik (java like language)

    Dalvik is the name of Android's VM and bytecode format, which isn't particularly Java-like (for one thing, it's register-based, not stack based). The actual language used for Android development is Java. Not "Java like", but actual Java, as defined by Java Language Specification.

  • Re:Yes (Score:5, Informative)

    by gbjbaanb ( 229885 ) on Saturday September 25, 2010 @07:46PM (#33700024)

    a fair point, Air is a common-baseline platform to develop for, more ubiquitous than Windows! Develop for Air and you'll be ok no matter where you want to put your apps.

    There is an alternative: Qt.

    It's a more 'serious' development platform requiring C++ skills (that pretty much get compiled to any platform) with a rather easy to use GUI, and now they also have a wonderful QML 'fluid' capabilities where you can extend the 'boring' old GUI with new fancy features very easily.
    It has support on Android (through the Lighthouse project) and all traditional desktops, and all Nokias (of course) with iPhone support being worked on at the moment.

    Its also free for everybody. If you want to develop for multiple platforms without the 'embarrassment' of using Flash, then this could be a way to go.

  • by shutdown -p now ( 807394 ) on Saturday September 25, 2010 @07:48PM (#33700036) Journal

    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.

  • Re:Yes (Score:2, Informative)

    by dr-alves ( 1612081 ) on Saturday September 25, 2010 @09:15PM (#33700488)

    "your full of crap" - always nice to bring the big guns to a moderate discussion

    As for Android vs iOS, I know both and I like the dev platform (Xcode) iOS is full of quirky stuff such as weird macros whose function is not clear at first glance or manual memory management. Android is Java, while it might be quite verbose sometimes it is simpler as a language and easier to learn that Objective C

    As for HTML5/CSS3/Javascript well that's the revolution that we've all seem to be expecting for a few years now and I've yet to see the promised full blow, 3d native looking, responsive apps.
    It might be the common denominator but it is still far away in terms of features AND development environment from the native platforms.

  • Re:Go Android (Score:4, Informative)

    by antifoidulus ( 807088 ) on Saturday September 25, 2010 @09:30PM (#33700570) Homepage Journal
    In one word: delegates. Delagates make GUI programming MUCH simpler in the Cocoa world than they do in the Java GUI world(now on servers they aren't nearly as useful, but I digress). Basically just telling a widget to do a callback on me when some event happens instead of forcing myself to register for each and every event I may or may not be interested in is a huge timesaver. Not to mention that unlike Java, in Objective-C there is 0 problem with only implementing PART of an interface(ie the part I am interested in).

    Other nicities like core data, key-value observing also make life a lot easier in Objective-C than they are in the Java world. Now would I ever code enterprise apps in Objective-C? Doubtful since Apple seems to show very little interest in making enterprise-capable APIs, but for GUIs Cocoa is a dream.
  • Re:Android (Score:4, Informative)

    by znerk ( 1162519 ) on Saturday September 25, 2010 @10:37PM (#33700804)

    [citation needed]

    Fair enough. Here you go [gizmodo.com]. It's a bit outdated (being from March and all), but I doubt the situation changed significatively in the last 6 months.

    I asked for a citation because I felt it was inaccurate. A quick google search [google.com] proved your point, but with some reservations...

    On 17 March 2009, there were about 2,300 applications available for download from the Android Market, according to T-Mobile chief technical officer Cole Brodman.
    By December 2009, there were over 20,000 applications available for download in the Android Market.
    By August 2010, there are over 80,000 applications available for download in the Android Market, with over 1 billion application downloads
    . Recent months (in 2010) have shown an ever increasing growth rate, recently (in May 2010) surpassing 10,000 additional applications per month.

    copypasta from http://en.wikipedia.org/wiki/Android_Market [wikipedia.org]

    In addition, that's just the "official" "app store". There are links to 3 "alternative stores" on that same wiki page. I would post a link to Apple's alternative stores, but there don't seem to be any that are available without jailbreaking your device. Apple appears to have failed at quelling the android uprising.

    As of September 1, 2010, there are at least 250,000 third-party applications officially available on the App Store, with over 6.5 billion total downloads.

    copypasta from the similar article for apple's "marketplace" [wikipedia.org].

    This data appears to contradict me, and reinforce your position. There are, apparently, more apps for iOS than for android. However, it would appear that Apple's momentum is slowing, whereas android's momentum appears to be increasing. Development of new iPhone apps appears to have dropped below 10,000 new apps per month, whereas android is now above that line, and continuing to increase.

    I suppose the argument could go either way, if we want to get picky, but it still stands to reason that android is still picking up steam, and iOS is slumping - probably largely due to the bad press the iPhone and iPad have received as of late, whereas no one seems to have anything bad to say about 'droid.

    And a parting shot:
    If the number of available apps is your only beef with android, what will you do when the developers stop developing for iOS, due to the myriad restrictions placed upon the apps that even make it into the store?

  • Re:Go Android (Score:4, Informative)

    by dokebi ( 624663 ) on Saturday September 25, 2010 @11:05PM (#33700900)
    Huh, it's the opposite for me. Eclipse is the *BEST* IDE I've used.

    I used be a purist. I wrote my PhD thesis in Vim. Afterwards, I switched to EMACS (org mode rocks!). I still use it every day as my main notebook system. But when I started writing software more or less full time, I tried many many different IDEs and always end up with Eclipse. Why?

    * Supports many different languages. At one point, I was writing and debugging python, perl, java, javascript, flex all at once. Eclipse let me do this without switching ides. No IDE comes even close.
    * Good emacs binding. (emacs+)
    * Excellent Java support: good refactoring, auto completion, "quick fix" (god, I love that feature. Must for syntax heavy java).
    * FindBugs for Java
    * Amazing auto format for Java. With Android development, you just load their xml template, turn on "format code on save", and I don't have to worry about lining up my brackets, sorting imports, or any of that. Just hitting Save formats everything.
    * Native widgets and font rendering (I really hate netbeans font rendering. No anti-aliasing? In 2010?)

    Sure, it's got its share of bugs. Sometimes it gets hosed based on some changed setting. I take a working snapshot every now and then. It's a memory hog. Give it at least 512MB on startup, if not a whole gig (-Xms512m -Xmx1024m in eclipse.ini). Still, it's an amazing piece of free software. And add the ridiculous number of plug-ins available, there is no need to use anything else. And it's Free!

    (I guess if you are using writing for Windows, you are stuck with Visual Studio, the same if you write for Mac, you're stuck with XCode. I can't say anything about those--I'm a linux user.)
  • by HW_Hack ( 1031622 ) on Sunday September 26, 2010 @12:03AM (#33701098)

    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 ...

  • Righhhhht. (Score:2, Informative)

    by Mathinker ( 909784 ) * on Sunday September 26, 2010 @06:53AM (#33702240) Journal

    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. [wikipedia.org]

    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.)

  • by michaelok ( 1892648 ) on Sunday September 26, 2010 @02:32PM (#33704476)
    I've been impressed with the Stanford course. The material is quite dense, I find I have to pause the tape every once in a while and take notes, so they move fast. A good background in some other language like C, and even an OO background like C++ would be useful, as concepts carry over well from Java. In fact, Java was influenced by Objective-C.

    The course material is very good too, such as the lecture presentations and the assignments. In the '09 semester I believe they did a Twitter-style app, in the Spring 2010 semester, which you can also download from itunes, they do a flickr app. They bring in various speakers, including Apple employees working on the various supporting libraries.

    The only minor quibble I would have is that the Xcode app has changed from the version used in the course, so sometimes you can't follow the instructions exactly.

    Given the OPs background in C and hardware, I'd agree with the folks on this thread that suggest going the iOS/Android/Flash route vs. using a web application. It would seem to me easier, given that background, of using a GUI framework like Cocoa, than figuring out a web framework. And this gets to the most important point - what are his requirements? The school uses iPads, so he probably has some ideas for some time of application that would benefit the school. This is probably the best way to learn - scratch an itch, and start from the top down, rather than learning every nuance out there, since these frameworks and platforms can be huge and complex.

Always draw your curves, then plot your reading.

Working...