Slashdot stories can be listened to in audio form via an RSS feed, as read by our own robotic overlord.

 



Forgot your password?
typodupeerror

Slashdot videos: Now with more Slashdot!

  • View

  • Discuss

  • Share

We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).

×
Handhelds Programming Software

Should I Learn To Program iOS Or Android Devices? 403

Posted by timothy
from the go-straight-for-neural-implants dept.
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:
  • Yes (Score:5, Insightful)

    by Ranger (1783) on Saturday September 25, 2010 @03:30PM (#33698694) Homepage
    you should.
    • Re:Yes (Score:2, Informative)

      by l0ungeb0y (442022) on Saturday September 25, 2010 @03: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.

      • Re:Yes (Score:5, Informative)

        by object404 (1883774) on Saturday September 25, 2010 @05: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 naz404 (1282810) on Saturday September 25, 2010 @05: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 gbjbaanb (229885) on Saturday September 25, 2010 @06: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.

        • Bollocks (Score:3, Insightful)

          by edxwelch (600979) on Saturday September 25, 2010 @07:39PM (#33700330)

          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 [gamasutra.com]

        • Re:Yes (Score:3, Interesting)

          by SanityInAnarchy (655584) <ninja@slaphack.com> on Saturday September 25, 2010 @11:36PM (#33701200) Journal

          Which of your bits of anti-HTML5 FUD prevents you from simply offering Chrome Frame to IE users?

          I'd also be curious which demos you've seen which only work on Safari, or only work on Chrome. It seems like they "only" work anywhere except IE, and some even work with newer versions of IE.

          And yes, if you build your apps for AIR, they'll run on modern desktop OSes -- if people install it. Which would make them morons, because if it's really something for which HTML would be a viable alternative, why would I want to install your app instead of bookmarking it? Is it that hard to see that one of these options is both more convenient and secure?

          If you run them in a plugin, that means you are part of the problem -- you are part of a phenomenon which holds the Web back.

      • Re:Yes (Score:2, Informative)

        by tgatliff (311583) on Saturday September 25, 2010 @05: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.

        • Not true (Score:5, Insightful)

          by aclarke (307017) <spamNO@SPAMclarke.ca> on Saturday September 25, 2010 @07:00PM (#33700114) Homepage
          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.
          • Re:Not true (Score:3, Insightful)

            by xtracto (837672) on Sunday September 26, 2010 @04:05AM (#33701998) Journal

            Spot on.

            I have been programming since I was 9 years old (LOGO, GWBASIC, Pascal, C, then C++ then Java) around 1988) and if someone asks me in what languages am I fluent I would just say Java, and C, because these are the ones I have used *for work* in the last 5 years (granted, I have also used a plethora other languages ,like PHP, python, ASM, some SQLs and whatnot).

            Some time ago I read an article by Joel Spolsky regarding this topic (can someone whore some Karma by posting the link? plz). The problem is that "newbie" programmers think that knowing a programming language is just a matter of knowing the control flow instructions, memorizing the keywords and maybe learning one or two library functions.

            However, the truth is when using a language for *production* code, there really is a difference between a guy who knows the ins and outs of the language, the subtleties, and just reading a book and doing a bunch of hello worlds.

    • by bennomatic (691188) on Saturday September 25, 2010 @03:38PM (#33698764) Homepage
      This. Plus HTML5/Javascript. And even that other technology. Flash may be dying as a percentage of the market, but it's dying slowly even from that perspective. And the market is growing fast enough that even "dying" means growth. Hell, Cobol's been dying for 50 years now. Not that I'm suggesting learning cobol.

      Point is, web apps don't solve everything, but they do solve some problems very nicely, and they're powerful enough now with Webkit (on iOS and Android and WebOS) that you can even use them to do quick prototyping for a lot of types of apps. I wanted to write an interactive book for my kid as a native iApp as an excuse to learn how to write iApps, and then found myself instead looking to HTML5 and wrote the whole thing, touch gestures and page animating and all, as a web app.

      And the boy loves the wBook, by the way. It lets him see the moon gliding across the sky behind all sorts of familiar objects, from buildings to trees to his dog. Of course, I should say he loved it, from ages 6 mo to 18 mo. Now at 18 mo, he's not so fascinated by the fact that his touch animates the moon. Now he's found the home button and if I leave him alone with my iPod for more than a minute, he'll delete every app that he can. He loves the way they wobble...
      • by rrossman2 (844318) on Saturday September 25, 2010 @04:17PM (#33699064)
        You're lucky. My son would touch the screen a few times, and then try to eat the damn thing. That's how my Storm died, and my wife's phone. He was 6 months at the time
    • Re:Yes (Score:5, Funny)

      by Anonymous Coward on Saturday September 25, 2010 @03:46PM (#33698812)
      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.

    • Re:Yes (Score:5, Insightful)

      by Ronin Developer (67677) on Saturday September 25, 2010 @03:47PM (#33698822)

      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.

      • Re:Yes (Score:2, Informative)

        by Anonymous Coward on Saturday September 25, 2010 @04: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 bm_luethke (253362) <luethkeb@co m c a s t .net> on Saturday September 25, 2010 @05: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 poetmatt (793785) on Saturday September 25, 2010 @04:09PM (#33698998) Journal

      this is the correct answer.

    • Re:Yes (Score:4, Insightful)

      by Ranger (1783) on Saturday September 25, 2010 @04:52PM (#33699310) Homepage
      Actually, I'm learning HTML5, CSS3 and JavaScript. What I want to do on mobile platforms doesn't require an app.
    • Re:Yes (Score:2, Insightful)

      by aliquis (678370) <dospam@gmail.com> on Saturday September 25, 2010 @04:58PM (#33699344) Homepage

      you should.

      Good enough, didn't answer much of his questions as far as languages, communities, environments, market and so on though.

      Also what about QT? 4.7 just came out:
      http://qt.nokia.com/products/whats-new-in-qt/ [nokia.com]

    • Re:Yes (Score:5, Interesting)

      by dr-alves (1612081) on Saturday September 25, 2010 @05:32PM (#33699566)

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

      • Re:Yes (Score:3, Insightful)

        by naz404 (1282810) on Saturday September 25, 2010 @07:13PM (#33700176) Homepage

        - ActionScript is the place when good language design went to die

        You're talking about ActionScript 1. You should check out ActionScript 3, the current iteration. It's for all intents and purposes, the same syntax as JAVA. ActionScript 2 is a variant of JavaScript (it's an ECMAScript implementation).

  • Android (Score:2, Insightful)

    by incubuz1980 (450713) on Saturday September 25, 2010 @03:31PM (#33698698) Homepage

    iPhone is too proprietary it is a dead end.

    • Re:Android (Score:2, Insightful)

      by bennomatic (691188) on Saturday September 25, 2010 @03:39PM (#33698772) Homepage
      Sounds like someone's been drinking the goog-aide!
    • Re:Android (Score:5, Funny)

      by Anonymous Coward on Saturday September 25, 2010 @03:44PM (#33698794)

      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.

    • Re:Android (Score:5, Insightful)

      by bigstrat2003 (1058574) on Saturday September 25, 2010 @04:31PM (#33699164)
      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).
    • Re:Android (Score:5, Insightful)

      by DurendalMac (736637) on Saturday September 25, 2010 @04:58PM (#33699346)
      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.
      • Re:Android (Score:2, Interesting)

        by squiggleslash (241428) on Saturday September 25, 2010 @05:53PM (#33699706) Homepage Journal

        END USERS DON'T GIVE A DAMN

        But developers do, and they're the ones who write the apps. What the "end users" think is irrelevant, they'll end up having to chose the platform the developers adopt.

        There's only one reason to develop for iOS: you're retarded. At this point, you're facing a situation where you can do all the development you want, develop something Steve Jobs has actively solicited (like an iOS equivalent of Hypercard), develop something people really want, and have your app blocked by some idiot at Apple, or some non-idiot who's following the letter of a rule sheet you'll never see.

        If Apple wants to lock down the platform, fine: it has the option of doing so morally if it follows the same model as the console makers: work with the developers, make sure everyone's aware what the rules are to begin with, and if a developer wants to release something and it's not quite right, work with them until it is.

        As it is, quite honestly, it's time the telcos started helping iPhone owners jailbreak their phones (for comparison: T-Mobile USA provides forums on how to root their Android phones, and Android phones don't have iPhone-like restrictions, you pretty much only need to root an Android phone if you want to tweak the operating system/do something that requires an OS tweak.) Until then, developers should be steering well clear of putting their nuts in the hands of an abusive control freak with an axe.

      • Re:Android (Score:3, Insightful)

        by znerk (1162519) on Saturday September 25, 2010 @07:33PM (#33700290)

        FOSS is all fine and dandy, but end users usually don't know or don't give a damn.

        ... because FOSS advocates aren't end users? Interesting viewpoint...

  • Go Android (Score:5, Insightful)

    by log0n (18224) on Saturday September 25, 2010 @03:34PM (#33698724)

    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.

    • by Wovel (964431) on Saturday September 25, 2010 @04:20PM (#33699082) Homepage

      Kind of depends if this is a hobby or he wants to make money at it. There is very , very little money in Android apps atm, and that is unlikely to change any time soon.

    • Go iOS. (Score:3, Funny)

      by MikeFM (12491) on Saturday September 25, 2010 @06:18PM (#33699884) Homepage Journal

      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.

    • by gnasher719 (869701) on Saturday September 25, 2010 @07:36PM (#33700308)

      If you don't already have a Mac, iOS requires Apple hardware for development.

      Another good reason to develop for iOS.

  • Learn them both. (Score:4, Insightful)

    by brion (1316) on Saturday September 25, 2010 @03:34PM (#33698726) Homepage
    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.
    • by SuperKendall (25149) on Saturday September 25, 2010 @04:03PM (#33698950)

      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.

  • by Planesdragon (210349) <slashdot.castlesteelstone@us> on Saturday September 25, 2010 @03:34PM (#33698728) Homepage Journal

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

    • The parent is quite right on this. That said...

      I know this isn't popular here on slashdot, but being able to target both should be pretty easy using Mono. MonoTouch [monotouch.net] is already out there, and is a well proven technology, and MonoDroid [monodroid.net] should be out soon. Just remember to keep the business logic of the app separate from platform specifics.

      Or, you could just stick to C, which will work on both platforms as well.

    • by rrossman2 (844318) on Saturday September 25, 2010 @04: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 EEPROMS (889169) on Saturday September 25, 2010 @04:38PM (#33699190)
      Android platform also supports programming in C/C++, to be honest I looked at Dalvik (java like language) and decided after some experimentation to go with C/C++. In my case the applications ran very smooth and others have reported when they ported from dalvik to c/c++ the apps ran faster.

      http://openhandsetmagazine.com/2007/11/running-c-native-applications-on-android-the-final-point/
  • Yes (Score:2, Insightful)

    by shriphani (1174497) on Saturday September 25, 2010 @03:35PM (#33698734) Homepage
    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.
    • by Antique Geekmeister (740220) on Saturday September 25, 2010 @04:22PM (#33699096)

      And of course, you'll lose years of your career and maybe your house if you try this. The mobile application market is wildly overpopulated with "brilliant ideas" that founder on small but fatal flaws, ranging from poor user interfaces to being blocked by the apps stores for arbitrary and unpredictable policy reasons, to simple theft by a larger vendor who can undercut your price and merge their development work with other work and undercut you.

      Get out of the "mobile device development" marketplace unless you're extraordinarily gifted: with decades of experience, get into infrastructure work to support the mobile device companies. And make sure you get paid cash, not stock.

  • More is more (Score:4, Insightful)

    by wombatmobile (623057) on Saturday September 25, 2010 @03:36PM (#33698742)

    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. (Score:5, Insightful)

    by morgan_greywolf (835522) on Saturday September 25, 2010 @03:36PM (#33698748) Homepage Journal

    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.

    • Re:Yes. (Score:5, Insightful)

      by catbutt (469582) on Saturday September 25, 2010 @03:48PM (#33698826)
      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.
    • Re:Yes. (Score:2, Interesting)

      by Radtoo (1646729) on Saturday September 25, 2010 @05:57PM (#33699732)
      There actually are more viable language choices. Android can not just support Java, but JVM languages - which is an important distinction. Want something like Lisp? try Clojure. Want something like Haskell or Java? Try Scala. Also, it supports C/C++. There is also fairly good support for scripting languages (Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl, and shell) at the moment, though the scripting languages cannot currently do everything and run more slowly. Even more languages are supported through experimental implementations...

      Apple so far has ObjC, C, Cpp and intends to allow more, like Squeak.

      Even apart from this, programmer freedom & choice is more on Android's side - not just because of the programming languages, but also because the OS is free & open source - which even leaves you the choice of not using Google's store or create a tailored version of it all, right down to the OS. No such luck on Apple's side. They intend to press you into their App Store monopoly, and I'd say that might be enough of a reason to not pick IOS up at all, despite the larger user base. Besides, Android has nicer phone hardware (especially the high-end HTC ones)... which should also matter a little to an enthusiast user / developer.
  • by codepunk (167897) on Saturday September 25, 2010 @03:36PM (#33698752)

    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.

  • by niw3 (1029008) on Saturday September 25, 2010 @03:36PM (#33698754)
    must be flagged as flamebait.
  • by StuartHankins (1020819) on Saturday September 25, 2010 @03:38PM (#33698762)
    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!
  • by turgid (580780) on Saturday September 25, 2010 @03:39PM (#33698770) Journal

    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.

    • by catbutt (469582) on Saturday September 25, 2010 @03:52PM (#33698866)
      The only way to do this is using javascript/html/css and doing all your work in a web view component. Then you can have a small amount of objective-c and java code to support it on the respective devices.

      This is not such a bad idea (and has the side benefit of being easy to put all or part of your app on the web so it can be run without installing anything), but has disadvantages too. Many things will be slow or clunky compared to a natively written app.
  • Personally, Android (Score:4, Informative)

    by ResQuad (243184) * <slashdot.konsoletek@com> on Saturday September 25, 2010 @03: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 wembley fraggle (78346) on Saturday September 25, 2010 @04: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 chartreuse (16508) on Saturday September 25, 2010 @05: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.)

  • by WebManWalking (1225366) on Saturday September 25, 2010 @03:49PM (#33698834)
    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.
  • by sehryan (412731) on Saturday September 25, 2010 @03:51PM (#33698854)

    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 [adobe.com]

    I believe there are other code platforms that are write once run everywhere, in case you have an allergic reaction to Flash.

  • by SuperKendall (25149) on Saturday September 25, 2010 @03: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 Rix (54095) on Saturday September 25, 2010 @04:08PM (#33698982)

    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.

    • by CharlyFoxtrot (1607527) on Saturday September 25, 2010 @04:28PM (#33699136)

      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.

      Go ask Palm how licensing their mobile OS worked out for them. The fact this strategy worked for MS back in the 90's doesn't mean it'll work now.
      Here's a fun quote about that kind of thinking I read once : "Those who learn history are doomed to try and repeat it."

      • by Rix (54095) on Saturday September 25, 2010 @04: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.

    • by itsdapead (734413) on Saturday September 25, 2010 @06:07PM (#33699824)

      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.

      Here's a clue: which of the early makers of desktop computers survived the Wintel monoculture of the late 80s and 90s and is still an influential, if minority, platform today? Hint - it begins with "A". What happened to CP/M and GEM, MSX and Unix which were licensed to multiple manufacturers?

      Anyway, Apple have already tried that. Twice, actually: Apple with "classic" Mac OS and Steve Jobs with NeXTStep before he returned to Apple. That went well, didn't it?

      What has worked spectacularly since the release of the iMac in 1998 is tying the software to premium-priced "designer label" hardware (but not quite as premium-priced as the old NeXT cubes). But you're right - Apple should drop their winning formula and go with the one that has already been proven to fail.

      The fly in the ointment is that "more nimble hardware manufacturers" don't care whether they ship machines with Windows or MacOS as long as they make their money (usually by selling upgrades, peripherals, extended warranties and finance rather than the computers themselves). They'll be more than happy to attract custom from existing Apple converts, cannibalizing Apple's sales, Windows users to switch. So you've got guaranteed cannibalization of Apple's existing sales but no guarantee whatsoever that the clone-makers and their resellers will aggressively promote MacOS to Windows users. Look at Dell and Asus's feeble efforts to sell Linux-based machines...

  • by CharlyFoxtrot (1607527) on Saturday September 25, 2010 @04:15PM (#33699048)

    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 [apple.com] 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 [stanford.edu] 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 [google.com] 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

  • remain agnostic (Score:3, Insightful)

    by metalmaster (1005171) on Saturday September 25, 2010 @04:29PM (#33699152)
    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.
  • by El Royo (907295) on Saturday September 25, 2010 @04:47PM (#33699256) Homepage
    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.
  • by Pedrito (94783) on Saturday September 25, 2010 @04:48PM (#33699258) Homepage
    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.
    • Objective C... syntax is ugly and non-intuitive

      It is, which is somewhat unfortunate, but it's more or less by design to maintain compatibility.

      Because ObjC is orthogonal to C/C++ it can't use any of the traditional notation. It's perfectly legal to mix a standard method call:
              obj->method(argument);
      with a ObjC message:
              [obj2 method: argument];
      in the same file.

    • by maccodemonkey (1438585) on Saturday September 25, 2010 @07:54PM (#33700400)

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

      How is it not obvious? Your complaint seems to be that it is different, while admittedly not complex. Different != not obvious.

      Objective C is an old language, and when it came out, it was a possible competitor to the still pretty shiny and new C++. It's an old enough language, that when Java was written, Java took a lot of cues from Obj-C. Apple didn't go out of their way to make a different language because back when Obj-C was created there wasn't a standard syntax for OOP programming.

      Obj-C is dead simple, and honestly, not confusing if you take the time to learn it. However, it seems many people these days are afraid of languages that look different and immediately write it off, when it's pretty gosh darn elegant. Every time I ask people why they dislike Obj-C, they can't get any further than the brackets. It just amazes me how many people write off iOS because they think Obj-C is hard (which, alone, is mind numbing, considering the biggest draw of OS X on the desktop for software engineers is how easy Obj-C is compared to C++).

      If the ability to learn is dead in software engineering, we're all in a lot of trouble.

  • by TodLiebeck (633704) on Saturday September 25, 2010 @05:18PM (#33699482) Homepage

    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 [macworld.com]

    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.

  • by TwinkieStix (571736) on Saturday September 25, 2010 @05:27PM (#33699528) Homepage

    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.

  • by shutdown -p now (807394) on Saturday September 25, 2010 @06: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.

  • by HW_Hack (1031622) on Saturday September 25, 2010 @11:03PM (#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 ...

You can not win the game, and you are not allowed to stop playing. -- The Third Law Of Thermodynamics

Working...