Slashdot Mirror


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

18 of 403 comments (clear)

  1. Yes by Ranger · · Score: 5, Insightful

    you should.

    --
    "You'll get nothing, and you'll like it!"
    1. Re:Yes by Anonymous Coward · · Score: 5, Funny
      No no no!

      Microsoft Windows Phone 7 is coming out in just a couple of months and just as Microsoft has done on the desktop with superior choices like Windows NT, they will quickly dominate the mobile front as well. Microsoft Windows Phone 7 is programmed completely in the industry leading .net programming language and augmented with the unmatched Silverlight technology providing an unrivaled technological platform with which you will only be limited by your imagination for the applications you can develop. Why play around with a tired platform like ios or android (an operating system only tech geeks can use and understand), when you can go with the undisputed leader in computer technology that is Microsoft. Furthermore, the MetroUI as seen on the ZuneHD audio player makes androd and ios look like sad anachronistic throwbacks. No serious developer will even touch aple and googls stuff when Microsoft Windows Phone 7 is unleashed.

    2. Re:Yes by Ronin+Developer · · Score: 4, Insightful

      Having the knowledge to develop for both platforms is a wise idea. There are some who think that Apple's proprietary-ness will lead them to their doom. I don't think that's the case at all. I know that with "walled garden" of iOS, my apps are checked for proper behavior before being placed in the wild. And, there is a system in place to sell apps and collect revenue. Granted, Apple takes a nice slice for the privilege - but its a thriving environment.

      The language you need to learn is currently Objective-C. Apple has recently changed their development tool policy - so, expect other languages to become available that cross compile down to Objective-C. We'll see. Documentation is very good and there are plenty of 3rd party books out there also.

      Android requires Java and knowledge of the Android SKD. It also has a large community following. Gartner groups predicts that by 2014, Android based phones will outsell iOS phones - simply because it will be on more platforms.

      Android has a hidden danger - malware has already been found in the wild that attack Android phones. And, if the code keeps forking for each device type out there, you will have to know all the nuances of a given platform. This is something you don't have to worry about too much with iOS. I am not familiar with the selling of Android apps - how that ecosystem works - maybe, somebody else can expound on that.

      A third contender will be Microsoft with Windows Phone 7. We'll have to see if their system catches on - the first devices are due out in October. It may be too late for them.

      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.

      If you plan to sell to your services to the business world, learn both environments. There's where the money is to be made - the days of the "big app" making your a zillionaire are pretty much gone.

    3. Re:Yes by object404 · · Score: 5, Informative

      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). 19 of the top 20 mobile manufacturers are already part of the consortium Adobe Open Screen Project 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.

      There's some surprising current statistics 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/ 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 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 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.

      Of course, please don't forget to *optimize* *optimize* *optimize*. Flash is not a slow platform. T

    4. Re:Yes by dr-alves · · Score: 5, Interesting

      As a developer:
      - Android is way easier than iOS.
      - ActionScript is the place when good language design went to die

      As a user
      - iOS apps, if designed natively, are extremely hard to beat in terms of responsiveness, beauty and general "native feeling"

      As a vendor
      - Flash is the common denominator, i.e., it may commoditize the platform, but I've yet to see a flash based app that looks as good as the best native apps
      - Android will have a bigger user base but a worse monetization mechanism than iOS, i.e., more users but which consume less (more due to the neglect of the market than otherwise).

    5. Re:Yes by bm_luethke · · Score: 5, Informative

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

      --
      ------- Sorry about the spelling, I suffer from two problems. Dyslexia makes it difficult to spell well, lazy makes it
    6. Re:Yes by gbjbaanb · · Score: 4, Informative

      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.

  2. Go Android by log0n · · Score: 4, Insightful

    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.

    1. Re:Go Android by Joe+Tie. · · Score: 4, Insightful

      I hated java before I took up writing for android. What I learned was that I hated java libraries and the million and one legacy additions. In particular, I hated swing. Java's synatax without all that is actually kind of nice.

      --
      Everything will be taken away from you.
  3. App first, platform second by Planesdragon · · Score: 5, Insightful

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

  4. Yes. by morgan_greywolf · · Score: 5, Insightful

    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.

    1. Re:Yes. by catbutt · · Score: 4, Insightful

      As someone who has learned both, I don't suggest this approach for most. Especially if you are just getting back into programming. There is an immense amount to learn for both, and much of the knowledge does not carry over. They are very different.

      I suggest picking one of them and learning it well. If you make something that seems to have potential, hire someone to port it -- or then take the time to learn another platform.

      Just my suggestion. Trying to learn both at once can be quite overwhelming.

  5. Re:Android by Anonymous Coward · · Score: 5, Funny

    Yes, iPod touches, iPhones and iPads still haven't really caught on with the mainstream consumer yet. Consumers can regularly be seen debiting the merits of a cell phone based on the openness of the product - not the functionality or usability. I believe Apple has sold some product units but i'm expecting all the millions of owners to ditch their iDevices any day now simply because Android is less proprietary.

  6. iOS first, better for your background by SuperKendall · · Score: 4, Informative

    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
  7. Re:Personally, Android by wembley+fraggle · · Score: 4, Informative

    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.

  8. Re:Android by bigstrat2003 · · Score: 4, Insightful

    I wouldn't say "dead end", but the fact remains that as long as Apple has capricious and arbitrary rules for their app store (which, knowing them, will probably be until the end of time), iOS development is a risk. There is a very real possibility that your app which you invest hard work into will be rejected for no real reason. At least on Android, you can sell your app to people even if it is removed from the market for some reason (and far less apps are unjustly removed from the Android market than Apple's app store).

    --
    "16MB (fuck off, MiB fascists)" - The Mighty Buzzard
  9. Re:Android by DurendalMac · · Score: 5, Insightful

    Saying it doesn't make it true. You know what? END USERS DON'T GIVE A DAMN. FOSS advocates need to come to grips with that. They don't give a crap if it's open or not. They want it to be simple and do what they want, and for most consumers, the iPhone fits the bill. Android may also fit for a lot of folks. Also, iPhone users spend more money on apps than Android users, so it's certainly not a dead end.

    What is it about open source zealots that utterly blinds them to reality? FOSS is all fine and dandy, but end users usually don't know or don't give a damn. They'll buy whatever they think is nifty.

  10. Not true by aclarke · · Score: 5, Insightful

    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.

    Sure, a few late nights will let you pick up the syntax, but the real value of a platform, whether it's JEE, .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, 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.