Regarding Java and the iPhone

Ed Burnette, regarding Steve Jobs’s statement that “Java’s not worth building in. Nobody uses Java anymore. It’s this big heavyweight ball and chain.”

Perhaps someone should tell Steve about one of the advantages of supporting Java: managed applications in Java or .Net are inherently safer than unmanaged applications. Unmanaged applications, written in languages like C++ or Objective C (the standard OSX programming language), are closer to the hardware and can suffer from problems like wild pointers, buffer overruns, and incorrectly using deallocated memory. Managed applications don’t have pointers and leave memory management to the virtual machine they run in.

They also have the advantage of being compiled once into a portable intermediate representation (bytecode) that can be run on any hardware architecture. C/C++ applications must be built separately for each and every architecture you want to support.

Steve Jobs doesn’t give a shit about pointers. And he most certainly doesn’t give a shit about apps written for multiple platforms. What would an app written for cross-platform compatibilty look like on an iPhone? No other phone has a UI even vaguely like the iPhone’s. The only apps on the iPhone are Dashboard widgets and apps written specifically for the iPhone using Cocoa. This is to be considered a feature, not a limitation. If you consider it a limitation, the iPhone is not for you.

Jobs’s stated fear that opening the iPhone to third-party software might bring down Cingular’s network, on the other hand, sounds like poppycock. Plenty of other phone platforms allow third-party apps to run.

Also, regarding memory, it’s entirely possible that the iPhone’s OS X supports Objective C 2.0 with garbage collection. That’s not the same thing as Java-style managed code, but still.

Monday, 15 January 2007