Consistency vs. Possibilities
So Sun is still trying to get Java onto the iPhone. And Adobe is trying to get Flash on the iPhone. And a small subset of iPhone purchasers want to have these two add-ins on their iPhones. And what is Apple’s current answer?: NO. While it may seem unfair, and uncompetitive of Apple to have this stance, it also makes perfect sense.
On the majority of standard mobile phones out there, Java is a valid contributor to allowing applications to be installed on low-power, closed OS handsets. On smartphones Java exists, but is also seen as the ‘poor-mans’ way to getting apps on your devices. Just look around the various other smartphone-related websites, and you will not see a lot of love for Java apps. Most people prefer native-coded applications on smartphones, due in part to the way an app can integrate into the overall OS experience. Java does not integrate very well on the surface, sitting inside it’s own JVM sandbox, using the JVM to translate/hook in to the underlying OS. There is no ‘write once, run anywhere’, as you only have to look at the J2ME app-scene to see that this doesn’t work. Screens on mobile devices have different sizes, resolutions, different input methods (touchscreen, multi-touch screen, joystick controlled etc). And whether Java devs agree or not, my personal experience with Java/J2ME on mobile devices is that the apps run SLOW. Screen redraw is slow. Launch time (which is critical on mobile devices) is slow. So why would Apple, who clearly have spent a great deal of time developing the iPhone’s interface, the time spent streamlining and optimizing the OS, the time spent developing the SDK for developers want to allow a legacy framework on their hardware? Well, they wouldn’t. And if I was making the decisions at Apple, I also would not allow Java. It just doesn’t fit with the tightly-controlled HIG that Apple has set for the iPhone. Imagine the torrent of awful Java applications that would appear on the iPhone, all obeying their own sets of rules, all giving (possibly) a different experience than each other. The iPhone, as an interaction concept, would die. Lack of consistent dynamics across the platform / UI. So what about this Innaworks company that Sun is talking to? (Innaworks are developing a cross-compiler to go from Java to Objective-C). On the surface this seems quite a good idea, but really….why would Java devs spend ages coding just to recompile in a completely different language? Is it really worth the time? After all, if a bunch of new programmers, with no official frameworks, no support, and no documentation can produce applications that rival ANY Java app, what does this say for Java. I am talking here about the Jailbreak-scene. This community did it all with no official support and no documentation whatsoever. A large majority of the devs were entirely new to programming. But inside of one year, there are now hundreds, if not thousands of natively-coded applications. And all this was done for free, in spare time, with no real financial incentive (Ok, now this has changed, due to the possibilities with the official SDK / App store). So when I hear Java devs moaning about the lack of Java on the iPhone, I have no sympathy whatsoever. I say go and learn to program in Objective-C, after all, if the ‘newbie’ devs of the jailbreak scene can code a to-do list in a few hours, why do we need sandboxed Java apps? The same goes for Adobe’s Flash. While I can see it’s value on the web (in more ways than one), it is not an application framework. Flash Lite is not Flash ‘Full-Fat’. I can see some value in Flash for interface ‘rapid prototyping’, but really, if you want to build an application LEARN a language! This is why I have massive respect for developers that have learnt to REALLY code in C (this goes not only for the basis of the iPhone OS, but also Symbian as well). It’s not pretty, it’s not easy, but…in the end you have a far more powerful application than Java or Flash-based apps could ever be.
Java and Flash have their genuine value in other areas, like the server-space and web-based multimedia. But really, they don’t belong on the iPhone as a environment, in my opinion.