First of all, let’s make things clear: I’ve been a very satisfied Mac user for the past 4 years or so, but I’m also a Java and a Flex developer, which means I have interests in all three of those technologies. And yes, I’m also a big fan of Steve Jobs, but despite all expectations, I try to be lucid about him and some of his weirdest choices/decisions/open letters ;o).
The problem I have at the moment is that, in the name of sensationalism, a lot of blogs post with titles like “Macs won’t have Flash anymore”, or “Java is dead on the Mac”, as if it was just an evil continuation of the “no Flash on iPhone/iPad” fuss that started at the beginning of this year. Now it’s certainly a great way to draw attention to those sites who only live thanks to advertisement, and hence number of visits. But let’s try to reestablish a few realities here.
First off, let’s talk about what everybody has at the back of their head when they think about Apple and runtimes: iOS. Yes, iOS doesn’t support any alternative runtime. In fact, besides Javascript, iOS doesn’t support any virtual machine. Flash and Java work on virtual machines and they’re not supported on iOS. There are 2 major reasons for that. The first one is performance, because a virtual machine, that is a software execution environment on top of a hardware one, will never be as performant as the native one. Despite all the optimization efforts that Adobe has done with Flash on mobiles, first experiences on Android tend to confirm that there’s still work to be done. Even though they have improved a lot in the past 3 years thanks to the iPhone impulse, mobile devices still run with very limited hardware capacities. And they still haven’t reached the point where they have a lot of free resources to spare, like personal computers have. So the official reason makes sense. But of course the less official reason is also important for Apple: iPhone’s number one sales argument is apps. When you think about it, it’s almost funny because when the first iPhone came out without an SDK, everybody complained about it, and then Steve Jobs answered that there was no use for a SDK. And obviously at that time, Apple was already working very hard on the App Store and the iPhone SDK. But when you know you have something huge in the pipeline, something that will make your device even more frightening to the competition, what is the best thing to say to the competition? “Don’t worry, this is just another one of our silly shiny gadgets that will just convince our existing fans”. And then a mere 18 months later, Apple comes out with not only an excellent SDK, but a whole new sales and distribution channel, and a marketing strategy that is based solely on all the apps your can install. I’m sure that there must have been a couple of WTF-moments at Nokia, RIM and others. So when your whole marketing strategy relies on your controlled and polished SDK and distribution channel, you have absolutely no interest in letting others in, be it J2ME crap (I’ve done J2ME development too, iark!) or the more threatening Adobe AIR. So let’s deal with it: no virtual machines on iOS, and whether we like it or not, it makes sense.
So are recent news just a continuation of that? Is Steve Jobs trying to eliminate all competition on the Mac too. NO! He’s not! It’s a completely different story!
Let’s start with Flash on the Macbook Air. Yes, the new Macbook Air doesn’t have Flash pre-installed. Actually, Safari does not have the Flash plugin preinstalled anymore. But nothing prevents you from installing it yourself. As nothing prevents you from installing Firefox and its Flash plugin as well. On iOS, it’s not pre-installed, and you can’t install it yourself. On MacOSX, from now on, it won’t be pre-installed but you will still be able to install it yourself. Huge difference! The Flash community has complained enough about the outdated version of the pre-installed Flash plugin. Of course Apple will not change their systems every time Adobe fixes a security or performance bug. So the best way to avoid any remanent hole, is to allow no hole at all by default. And if you need Flash, you just install the latest version and you’re good to go. That’s for the official reason. But as always there is… one more thing! One of the main marketing arguments for Flash is that, unlike any other cross-platform runtime, it’s installed on a crushing majority of machines, somewhere above 95% of them. But that is partly thanks to those integration deals that make Flash ship with every new PC or Mac, independently of the popularity of Flash as a development platform. Apple’s bet is that with the advent of HTML5, users will use the Flash plugin less and less often. But if they pre-install it, this drop in usage won’t reflect on Adobe’s marketing. Once again, whether we like it or not, it makes perfect sense for Apple. And it even makes sense to me: even if I’m a big Flash advocate, even if I think the HTML5 fuss is just oversold, I think Adobe has been a little too slow to react lately, as if they were resting on their dominance of the cross-platform runtime market. So everything that makes them fight harder to build a better development and runtime environment is good. And I’m sure they will fight. They just need to invest more in it. Mobile Flex development only in early 2012 (and that’s the first estimates, the ones that are always wrong) will just be too late for the show. So that’s it: no Flash plugin preinstalled in Macs means no Mac shipping with outdated security holes built-in and no built-in popularity bias either, which is good for competition. But nothing will prevent your from installing Flash yourself.
Let’s talk about Java now. When you read the news, you tend to feel like Apple’s war on competition is nothing personal against Adobe, that it’s targeted at everyone else, that Java will be Steve’s next victim. But that’s just so untrue! First off, contrary to what happens with Flash, Apple never said that they would ship Macs without Java built-in. They just said that it would enter a pure maintenance phase and that they would stop supporting it… themselves! But once again, they won’t prevent anyone else to take over support for Java on the Mac. In fact, that’s probably why they took this decision: there was a time when Apple had their own interests in Java, when there was a Java-Cocoa bridge in the development environment, when Java was even a great way to make the Mac ecosystem richer, because a lot of developers would write their desktop applications in Java to support all platforms with a single code base. But of course, with the deprecation of Java-Cocoa bridge and the advent of the iPhone and what it means in terms of popularity for Objective-C and Cocoa native environment, Apple’s stake in Java has decreased dramatically. So much so that today, those who have the most interest in Java on the Mac are… those who support Java developers. And since Steve Jobs and Larry Ellison are known to be big friends, I’m sure Oracle and Apple are perfectly clear with who is going to take over. Maybe the community can help with Soy Latte and OpenJDK, but I can’t believe that Oracle won’t step up themselves, given the overwhelming Mac install base amongst java devs. And still, whatever the solution, Apple won’t prevent any one else to support Java and offer a Mac installation package for it.
So Flash and Java are not dead on the Mac! At least not based on existing statements and choices from Apple. But we can’t know what Steve has in mind, and I can’t help worrying about the end game of all this. Given the huge success of iOS, which makes perfect sense in the mobile world, I’m really afraid that Steve Jobs won’t know where to stop and will want to reproduce the same model on desktop. And I certainly don’t want that. I’m not ready for it yet. And I think a lot of people are not ready either, so if Apple moves too fast in this direction, they could loose a lot of customers in the process, especially if Steve Jobs starts this transition and then leaves this for others to deal with. But we’re not there yet. So please bloggers, keep your heads cold and please avoid feeding fear, uncertainty and doubt.