This week, Apple had one of their famous announcements. As usual it was on at an unfriendly time of day for me, since I live in the UTC+0700 timezone (meaning it started at midnight on the Thursday/Friday) – but I still stayed awake to watch it. I am a registered iPhone developer and I myself have an iPhone 3G, so I am interested in Apple’s announcements generally, and in particular I am interested in the iPhone OS announcements.
So we have all seen the stuff that was publicly announced, and that is all I am using as source material for this post – as well as some of the online ‘gossip’ sites. I am not breaking any NDAs or talking about anything that is specifically marked as “Apple Confidential” on the iPhone Developers section of the Apple Developers site.
After the event, I have been listening to people complaining about a few items. Specifically, the biggest complaints have been:
- The new version of iPhone OS will only support iPhone 3G and 3GS in “summer” and the iPad in “fall”.
- The headline feature (multitasking) only works on the iPhone 3GS.
I will address these in order.
So according to many online sources, Apple are only allowing applications that make direct use of the Cocoa API, or web applications that run under Safari.
Specifically, iPhone native (as opposed to web-based) applications must be written to use the Cocoa API directly, and must be written in C, C++ or ObjectiveC using the libraries supplied by Apple without any other code in between the application and the Cocoa libraries. I got this piece of information from Daring Fireball (a good source of reliable information) rather from any of the less reliable blogs, or from anything covered by Apple’s NDA.
The Daring Fireball post linked to above mentions that this pretty much puts the kibosh on Adobe’s upcoming Flash CS5 software, one of whose headline features is the ability to write an application in Flash, and then through a set of compatibility libraries allow the application to be built into a native Cocoa application. Daring Fireball also mentions the MonoTouch project, that uses a similar method to allow a developer to write an application in .NET and then build an iPhone application out of the resulting code.
I would be more broad about this though, and say that Apple are not simply trying to poke Adobe in the eye and say “we told you already – no Flash on the iPhone”; it is my opinion that they wish to keep the standard of software that runs on the iPhone at its highest possible level.
If someone writes a set of libraries that allow you to put programs together that are written in a non-iPhone native language, and then acts as a translator between that code and Cocoa, then how do you think its performance will be compared to an application that was written in C/C++/ObjC that uses Cocoa directly? On a scale of Slower/Similar/Faster, you just know it’s not going to be “Faster”. If the developer is really lucky, it might approach the performance of a native app, but since it has a translation layer in between, you can’t fancy its chances. The answer has to be “Slower”.
And the overall performance is also affected by the mere presence of a translation layer, which must occupy extra space in memory. Given that this version of the OS is focusing on multitasking, prohibiting the use of applications written to use intermediate translation libraries makes good technical sense right now.
Devices Supported At All by iPhone OS v4
This one is what actually prompted me to write this post.
The question was: why are Apple only supporting the 3G and 3GS, and not supporting the first generation iPhone?
The cynical answer is that Apple are in the business of selling hardware, and they want people to buy the latest phone. However, if you look a little closer, you will see that Apple have committed to releasing versions of OS4 for the 3G, 3GS and the two later models of iPod Touch. These are all the versions of hardware that Apple currently sell, so this makes good sense for them.
That’s already four versions of the operating system they need to create, test and support.
They say the schedule for this is “summer”, which I am assuming means Q3. (Please note that in the Southern hemisphere, summer is actually December until about March. And where I live, it’s the height of summer right now, which is replaced by the rainy season next month.)
But the rumour mills have also been churning, about the successor to the 3GS. This is apparently due to come out around the end of June, with the corresponding update to the iPod Touch around September.
So really, that is six separate versions of OS 4 that Apple will already need to support when it first comes out, with the iPad version coming out by the end of the year. They do not need another two versions for the original first generation iPhone and iPod Touch.
There is precedent for this in the mobile market, too – if you buy a Windows Mobile phone and a new version of the OS comes out soon after, you may be able to get an update for your phone. However, if the phone is more than six months old, chances are you’re out of luck.
Well, the iPhone 3G is nearly two years old, and can run the new OS. The first generation iPhone is almost three years old and cannot. I actually think that is fair.
Multitasking not supported on the 3G and its equivalent iPod Touch
This one was painful for me to hear, as I own an iPhone 3G.
The ‘S’ of 3GS apparently stood for ‘speed’. This was achieved by increasing CPU and doubling RAM. The CPU is of course important when running many tasks, but in particular increasing the RAM makes an enormous difference.
If the RAM in the iPhone 3G must hold the system as well as all running tasks – doubling the amount of RAM means a massive increase in the amount of memory available for holding applications and their data (way more than just double, since the system takes a significant portion of the available memory on an iPhone 3G). This is the main reason why the 3GS feels so much faster than the 3G.
So trying to run multiple tasks, even using the multitasking techniques in OS4 that are optimised to reduce RAM usage, on an iPhone 3G would simply not work.
So grudgingly, I have to accept that my iPhone will not support multitasking.
And of course, when the next version of iPhone comes out, that is one more reason to want to upgrade.
Apple no longer provide OS updates for the three-year old iPhone and iPod Touch, but they do for the two-year old versions. I think this is fair (and sorry Spadge – I know you wanted to upgrade when it came out!).
Multitasking only works on iPhones and iPod Touch models less than two years old, which for technical reasons I (grudgingly) think is also fair.
And was it worth staying up until 01:30 to follow the presentation, when I had work the following morning?
As an iPhone developer, I was hoping that there would be a beta of the new operating system to download, as well as one of the development environment – which there was. So I was able to start those downloading before finally calling it a night.
Definitely worth staying up for.