Wednesday, October 27, 2010

Apple, Java and me. Proprietary bites, again

As a software developer who currently makes a living from Java development, I follow Java related news quite keenly. The last few months have been quite interesting, in the old curse kind of way.

Apples decision to "deprecate" their Java implementation is the one news item that will have the most impact on my future directions. It is one of those defining decisions that will be looked back on as either another of Steve Job's great decisions, or the misstep that started a decline in Apple's fortunes.

Why a misstep? Well, I currently develop and learn my craft on a Mac. It appears that I will no longer be able to do that.

Just as it was coming up time for me to replace my primary development computer at home. I was going to buy one of those very nice shiny big iMac computers. But now I can't. Given that I want to run a Unix style development environment, I will probably build a machine from scratch and install Ubuntu. Most developers won't bother - they will simply buy a Windows machine. So in the short term Microsoft and Ubuntu win from this decision, Apple lose.

Companies and government departments that bet on the cross platform nature of Java for applications find themselves in an odd position. They are either going to have to abandon the Mac, or rewrite their cross platform software. This takes time and budget: so until decisions have been made and choices reached, the most likely result is a freeze in further Mac upgrades. So in the medium term, again, Apple lose.

And in the long term? Java applications will not be deployable onto the Mac. As the second largest PC platform out there, this effectively kills Java's cross platform promise. And removes Mac OSX as a deployment option for server side applications. So finally Java looses, and again, so does Apple.

I am not optimistic about other parties picking up the pieces and running with them successfully. I don't believe Apple will donate it's current code – it's just not in their DNA, as far as I can figure. I also don't see an economic imperative for anyone else to take over the work. So this leaves open source volunteers to pick up the slack – and after the Apache Harmony/TCK and Android debacles, why would anyone want to risk getting involved?

This is not like Apple's Flash decision: in that case they were keeping Flash off of new platforms. In this case, Java developers are being excluded from an existing platform going forward.

Some people have rationalizes this along the lines of, “well, Apple can use their Java maintainers more productively elsewhere”, but here's a thought: What percentage of Apples advertising revenue would their support of Java be? Because this support is effectively another form of advertising: one that brings developers such as myself to their platform. It's not exactly as though the Java platform is a rapidly changing one. Most of their development costs have already been spent.

Also note that it is a lot easier to get into iPad/iPhone development if you already own a Mac. Just as it is now going to be a lot easier for the Java developers who return to Windows to develop for Windows Mobile 7.

As most people seem to dislike developing multiple copies of the same application, what will they turn to in place of Java? On the presentation side there are several options: flash, Silverlight and HTML 5/ CSS. I would argue that only the latter is unencumbered by FUD. The browser is the new VM.

On the server, pure Python, Ruby and PHP developers will happily be able to continue developing on and deploying to Mac's. However we are moving to a polyglot programming model where people mix and match libraries and languages. Those who stick with the Mac will find that the large Java ecosystem closed to them.

So given the large size of the Java ecosystem and the performance benefits, I do feel that going forward Apple have just ceded the server market.

So if not on servers, and not being used by developers, Apple will become more and more a creator of devices to consume content. They will become the television manufacturer for the Internet generation.

Again, no matter how I look at it, the decision to deprecate Java has no upside for Apple.

And Java – well, it's the new Cobol. There's probably enough of it out there to keep me busy until I retire. So I'm not sweating yet. But I am going to sharpen my Css/Javascript/HTML skills to prepare for the coming of the new VM.

To finish, I find some deep ironies in this unexpected turn of events.
  • The Visual Basic programming model (a scripting language manipulating objects created in another more able language) wins through.
  • The Swing model (no native operating system widgets, rather a rendered canvas) thus trumps the Eclipse model of delegating to the underlying os.
  • But Eclipse will be the one IDE that will possibly carry on working on Apple computers, thanks to SoyaLatte and Eclipse's decision not to use Swing.
  • Those people who bet on Flash as a cross platform deployment model are laughing.
  • Apples decision shows that those freedom loving open source advocates have a very good point. Had Apples JVM been an open source one, we would not be in the quandary we now find ourselves. Proprietary bites, again.


Oleg Kiorsak said...

Well done, Martin!

Very good summary and analysis...

What is also a bit interesting/disturbing is that Apple still invests in MacRuby development....

Could it be that Steve has bought into the "Java is dead, but Ruby is cool" mantra that a lot of former Java developers preach these days and for quite some time by now??

(And quite coincidentally they also happen to be the ones that are Apple "fanboys"... ;-)

Surely, this group is not fully representative of all Java developers/Mac users (like yourself) for example... but it is the most "vocal" one.. so maybe Steve Jobs got this perception that all cool&progressive developers (aka "uber-geeks") of the world were awaiting and will all but applause this decision?...


Jazzie Casas said...

Java and to some degree .Net are the main choices because they have been consistently pegged as the “safe” choice to go with for mid-level project managers in the corporate world. No one was ever fired for choosing Java or Microsoft.

However, there are many large distributed applications these days that run primarily with technologies like Python, PHP, et al. Even companies like Google and Yahoo are heavily invested in these technologies. Java may be the main choice for enterprise development now, but it’s days are numbered as the only stalwart option to go with.

Let’s face it, many of these so called “enterprise applications” could easily have been written much faster and with less overhead using technologies like Python, PHP, et al.