SDK Shoot Out, Android Vs. IPhone
snydeq writes "Fatal Exception's Neil McAllister delves into the Android and iPhone SDKs to help sort out which will be the best bet for developers now that technical details of the first Android smartphone have been announced. Whereas the iPhone requires an Intel-based Mac running OS X 10.5.4 or later, ADC membership, and familiarity with proprietary Mac OS X dev tools, the standard IDE for Android is Eclipse. And because most tasks can be performed with command-line tools, you can expert third parties to develop Android SDK plug-ins for other IDEs. Objective-C, used almost nowhere outside Apple, is required for iPhone UI development, while app-level Android programming is done in Java. 'By just about any measure, Google's Android is more open and developer-friendly than the iPhone,' McAllister writes, noting Apple's gag order restrictions on documentation, proprietary software requirements to view training videos, and right to reject your finished app from the sole distribution channel for iPhone. This openness is, of course, essential to Android's prospects. 'Based on raw market share alone, the iPhone seems likely to remain the smartphone developer's platform of choice — especially when ISVs can translate that market share into application sales,' McAllister writes. 'Sound familiar? In this race, Apple is taking a page from Microsoft's book, while Google looks suspiciously like Linux.'"
Android runs on Linux....
So I can run any CPU from any vendor, with any OS, and no familiarity with anything, to develop for Android? Cool!
We buy MACs as conversation starters, PCs because we are depressed and dont like ourselves, and are gluttons for punishment.
Which of these phones is going to make me more attractive? Which phone will increase the size of my- er, um, bank account?
I dont just want a fuckin phone, I want a phone to provide solutions to Global Warming, AIDS and Fat People. THAT is the phone I want, dammit!
In this race, Apple is taking a page from Microsoft's book, while Google looks suspiciously like Linux.
It's more like Apple is taking a page from Apple's book and Google looks suspiciously like Microsoft.
For all their faults, Microsoft have always been more developer friendly than Apple.
I actually RTFA because I clicked on it before there were comments, got to the end and went looking for the next page link - but there isn't one. It's pretty light on any interesting technical details - mentions some stuff about the IDE, the frameworks ("one is Java and the other is Objective-C") and ends with the same question everyone else is asking, at the moment - which will be better.
If you've payed any attention at all to both Android and iPhone development already there's probably not much in there you won't have picked up from casually reading bits and pieces. Unfortunately. Let me know when there's a nice in-depth article available!
requires a intel mac?
dont tell that to my G5... it's happily working.
Do not look at laser with remaining good eye.
Apple is taking a page from Microsoft's book, while Google looks suspiciously like Linux."
No, Apple looks pretty much like Apple, and Android looks as much like Microsoft as it does Linux.
We have seen it for thousands of generations, the oppressed/rebel kid/cool dude becomes the oppressor. Apple is the new Microsoft. Pretty soon Google will be the new Microsoft, who knows what next.
What I do know is eventually it'll lead to by the law of natural selection the most oppressive organisation in the form of Skynet and mankind's only hope will be an Austrian Terminator (no no Summer Glau of Sarah Connor Chronicles is NOT a fighter type more like a japanese maid robot)
p.s. we do have to melt the terminator in the end just to be on the safe side
The iPhone is primarily an awesome hand-held phone, GPS, PDA, etc. Pre-loaded 1st-party apps are what make the device sing. The ability to get 3rd-party apps is a secondary benefit. Most people buying this device are using it for what it comes with. This will be the case more and more as the device becomes more mainstream.
I hope that Android phones don't focus on the development aspects first, and the 1st-party applications second. If the device has all the same nice features of an iPhone + is better to develop for, then great. But if it does not have the ease-of-use and functionality of an iPhone right off the bat, then it won't succeed.
It would be nice to see comparisons of the market leaders with development for iPhone / Android.
Based on raw market share, Symbian is the market leader (57%), followed by Blackberry (17%), Windows Mobile (12%), Linux (7%) and then iPhone (2.8%). Android yet to make a showing!
( Figures from http://en.wikipedia.org/wiki/Smartphone )
I've done Symbian developement and there are lots of ways of doing it. Nokia's C/C++ API, Java or even Python. It isn't 100% open as in you can't have the source code of the OS, but the APIs are all documented and there aren't any restrictions on what your apps can do. If you want your apps signed it can be harder I'm told, but I've never tried that.
Every man for himself, all in favour say "I"
You must be joking. Comparing Javascript to Java in terms of 'nativity' or saying that C++ and Objective-C are 'slightly different' in 'trivial ways' betrays your lack of IT experience right off the bat, sorry ;-)
It's true that neither Java nor Javascript are 'native' compiled code in the traditional sense, but it's still not a fair comparison. Javascript's runtime environment is the browser which is (by design) very limited in the amount of access it can have to the underlying system, hardware, etc. Java's runtime environment, the JVM, on the other hand, can be arbitrarily privleged, and depending on how the OS is laid out, can do just about anything any native app can do (at a perhaps minor performance penalty). Seeing as they plan to have Android running on a bunch of different phones, the choice of Java is pretty much a 'must' if they want to have any sort of ubiquity as a 'platform'.
Also, Objective-C and C++ are quite, quite different. It would be easier to list their similarities than their differences -- they both have the basic goal of providing object-oriented facilities to C. That's about where the similarities end; C++ goes the route we've all come to know and love (hate), while Objective-C goes for a more pure "Smalltalk"-style message-passing paradigm. The similarities between the approaches are cosmetic -- the kinds of problems you run into in these two languages are quite different.
Besides, the main difficulty in writing apps for the iPhone is learning Cocoa, not Objective-C. Most programmers can pick up new languages (even fairly unique ones) in a matter of days or weeks (at least to a passable level of competence), but a giant framework like Cocoa is hugely intimidating and often changing and much harder to find resources for.
iPhone SDK requirements to develop an iPhone app:
OS X 10.5.3 or later (Intel or G5)
ADC membership (free but requires registration)
XCode (free bundled with OS X Tiger and above but not installed)
Objective-C language
To distribute iPhone app:
Yearly License: Individual $99 or Enterprise $299
Android:
Windows XP or Vista, OS X Tiger or higher, or Linux (tested on Ubuntu Dapper Drake)
Eclipse 3.3 or 3.4 (free download from eclipse.org)
Java JDK 1.5 or 1.6 (free from Sun)
Apache Ant 1.65 (Linux/OS X), 1.7 (Windows) (free from apache.org)
Good chart at engadget.
Well, there's spam egg sausage and spam, that's not got much spam in it.
User interests beat developer interests, assuming that the first doesn't utterly cripple the second. And it does have to utterly cripple them to cause a problem.
* Every Wikipedia story, Slashdot commenters bitch about their experiences of participation. However, the site's still #7 in the world, so what's it doing right? Focusing on the reader.
* GPL (a user-rights license) vs BSD. Compare the popularity of Linux versus FreeBSD.
* iPhone vs Android. The best mobile phone interface ever. In this case, Apple is going further than anyone before in trying to utterly cripple developer interest - but if you can work an SDK then that many users is going to be attractive.
Openness will get Android a fabulous ticky-box feature list ... but, y'know, Windows Mobile has a fabulous ticky-box feature list, and no-one picks that instead of an iPhone if they have a choice.
http://rocknerd.co.uk
Sure, Android is more developer-friendly than the iPhone. Has Apple ever pretended otherwise?
Apple goes for something entirely different - being customer-friendly. Apple demands high-quality apps, and rejects substandard ones. Apple requires well-engineered user interfaces. Apple restricts the number of functionally equivalent apps and ways of doing something, to follow the well-known interface guideline of not overwhelming a user with choice.
I can already see how Google's Android is going to end up. Want a sneak peek? Go look at SourceForge today. Maybe 10% of the projects are extremely useful high-quality projects supported by a vibrant community. 90% of the projects are abandoned crap - but they're developer-friendly! You can get the source and fix it!
Being developer-friendly helps by making it easier to create software. That's a double-edged sword, however, because as much as developer-friendliness makes it easier to create good software, it also makes it two or three times easier to create crap software. Witness the plethora of Google apps that have never left beta, witness the gross proliferation of spyware and script-kiddie viruses, witness the rampant proliferation of me-too Linux distributions used by two people and their dog.
The Cathedral and the Bazaar. This is very simple - when I want something fun to play with, when I want to indulge my hobbyist sweet-tooth, I go to the Bazaar. When there's something I need to depend on and I don't have the time to tweak it myself, I go to the Cathedral. Now, in all seriousness, do you see a cell phone more as a fun toy or a necessary, must-work piece of your life? I imagine a lot of Slashdot readers want the cell phone to be a toy, but I also imagine most people in this world would prefer something to Always Just Work, even if it's less fun. It's the difference between driving a fun but high-maintenance sports car on the weekends and driving a reliable commuter car to work every day; everybody wants a sports car, but most people pick the commuter car.
Which means I don't buy the hype around Android. It's a fantastically wonderful toy, but Google's track record is that they do not have the discipline to enforce usability at the expense of their fun toys. And, to my great sorrow, that is Google's great weakness.
A witty [sig] proves nothing. --Voltaire
Most of the article compares subjective/non-concrete things such as how many people use Obj-C and how many use Java. It misses on one significant aspect of the choice of language. Java opens up numerous possibilities for Android. In my opinion that was an obviously good move from google. Here is why -
1) Safety - Java provides a lot wider safety net than native language can ever.
2) Control - you can enforce the signing requirements in the VM for all code that is run or you can limit it as a requirement to only certain potentially unsafe APIs (RIM does this - you don't need to sign an App with RIM provided keys unless you use the more dangerous APIs.) This arrangement can generally give the user a lot more flexibility and control over what can and cannot run on the phone.
3) Exceptions are non fatal and possible recoverable, memory leaks are harder to induce
4) Verification of software is easier - API usage, control over how much memory is used, what network connections are made etc.
Before people complain Java is ugly and slow - this is J2ME (Java Micro Edition) that we are talking about which is much more lean and has different UI (Android UI doesn't look anything like the ugly Desktop Java and neither does RIMs - both use J2ME) These factors obviously matter a lot in a Cell phone type environment. I am especially happier with my Blackberry that it allows me to control what a Application can do or cannot do - make Wifi connection - No, access my address book - hell no, Access location - yes, Access Device Settings - no etc.
Not true... It can be made to work on PPC macs with a few minor tweaks and the assistance of Pacifist. What you can't do is sign apps so that they can be run on an external device(the app signer isn't a universal binary). I use the sdk at home on my PPC powerbook, and check the code into my subversion repository, then when on an intel based Mac, sign the apps and test on the iPhone. Not ideal, but its better than nothing.
Comment removed based on user account deletion
Have you used a JME phone in a while? Let me tell you that native software is an order of magnitude faster on any phone I have used, be it Symbian or WM. When you have 200mhz to work with and lazy OS coders you can't afford the hit.