Showing posts with label Spring. Show all posts
Showing posts with label Spring. Show all posts

Friday, May 22, 2009

Advice to Sun from Michelangelo

Sun is a great company with some great software, yet something holds it back from achieving its true potential. What is it that's missing? I've been thinking about this ever since I got back from Sun Developer Day earlier this week.

And then I got it. Nothing's missing. On the contrary, there's too much.

Michelangelo defined sculpture as the art of "taking away", not "adding on". The sculpture already exists inside the block of marble. The sculptor only has to take away the excess to reveal the work of art within.

Sun has a full line-up of extremely useful products. But there's some superfluous marble covering the work of art within. That's what prevents us from seeing the masterpiece. It's an unfinished work, and the sculptor's unwarranted sentimentality towards superfluous marble is what prevents him from completing the statue.

The biggest piece that Sun needs to sculpt away is OpenSolaris. No, really, the world doesn't need another Open Source Unix. Now that we have Linux, that's more than enough. Let's not get into bureaucratic arguments over which is the more senior Unix. Put bluntly, OpenSolaris is a dog-in-the-manger that just muddies the waters. It will limp along, delaying Linux's inevitable triumph, yet never quite succeeding, and in the process, never letting Sun achieve greatness. To quote from one of Sun's own marketing campaigns, they need to put "all the wood behind one arrowhead." An arrowhead called Linux. Sun should help port ZFS and DTrace to Linux, and quietly bury OpenSolaris.

But OpenSolaris isn't the only offending piece. There's the GlassFish app server. Mind you, there's a lot that's cool in GlassFish, such as Jersey (for REST services) and Metro (for .NET-compatible SOAP/WS-* Web Services). But these are components that should simply be contributed to Tomcat as libraries. We don't need an app server when we have Spring and Tomcat. By clinging to a heavyweight EJB container, Sun is refusing to chip away at one of the ugliest pieces of marble obscuring Enterprise Java. (There's no such thing as a lightweight EJB container, by the way. The EJB spec is heavyweight, even with the figleaf of annotations.)

The last bit is NetBeans. NetBeans is all right by itself as an IDE, but the world already has one - Eclipse. Why doesn't Sun throw in the towel already? If they have something to contribute in IDE land, let it be in the form of Eclipse plugins! That's what the rest of the world does.

There's altogether too much "invented here" sentiment that prevents Sun from ruthlessly pruning its inventory and letting elegance shine.

So much for taking away. Moving on from sculpture to painting, which is all about "adding on", there's some stuff Sun is neglecting, too.

I think they're wasting time with MySQL when they should just leave it alone. MySQL is doing just fine by itself. It's an OK database for a lot of people, but Sun's energies are better spent improving another one. Let me beat the drum once more for my favourite Open Source database, which seems to me to be the world's best-kept secret - Ingres.

Sun should contribute to Ingres. I believe Ingres is near-perfect, with just one fatal flaw. It requires the installer to understand sophisticated database concepts before even installing it. If you don't understand why the database snapshot and journal files should be on a separate disk from the database itself, then you've missed the whole point about database recoverability and also messed up your install. Sun should contribute to the usability of Ingres, just as they poured millions of dollars into Star Division GmbH's software to make it a friendly office suite known as OpenOffice 3. My mouth waters at the thought of a rejuvenated Ingres, more beginner-friendly and riding as a package on board the best distribution channel in the world - a Linux installation CD.

But fat chance of that happening now that Oracle has its hooks into Sun :-(.

On second thoughts, forget painting. If Sun can just be a good sculptor and chip away at extra marble, they can still contribute to that masterpiece - a lean and clean Enterprise Java ecosystem that is also Open Source.

Thursday, April 02, 2009

Java's Centre of Gravity Has Shifted

I was amused to read this slant on the rumours of IBM's takeover of Sun.

No, it wasn't industry analysts who were being asked their views on the merger. It was Rod Johnson, original developer of the Spring framework and CEO of SpringSource.

SpringSource isn't an IBM or an Oracle in size. Outside of the most tech-savvy segment of the Java development community, SpringSource and Rod Johnson are virtual unknowns. Yet the press was beating a path to this man's door. That in itself was somewhat surprising. Even more surprising was that Rod's reaction to what should have been major industry news was rather ho-hum. His reasoning was that in recent times, Java middleware has been influenced more by Open Source and independent developers than by large corporations, so it really doesn't matter either way if the merger goes ahead or not.

I tend to agree, with one caveat. The roadmap for an Open Source Java is still murky, and I'd like this to be clarified before I'm willing to yawn at the irrelevant plans of corporate titans. There are those like Stephen Colebourne who have almost a conspiracy theory about Sun's plans for Java. While I hope they're wrong, I too would like to see an open Java 7 specification that can be implemented by anyone and be certified as such.

If I can't have an open Java specification, I'm willing to settle for at least one safely Open Source (i.e., GPL-ed) implementation of Java, but I'm disappointed even there. Java is still not 100% Open Source. It still suffers from "encumbered code". There are a few libraries that have not been released under the GPL, and that is a lingering source of worry.

But in the main, Rod Johnson is right. A few years ago, JBoss began to shift the centre of gravity of Java away from the Weblogics of the J2EE world towards a more lightweight, Open Source implementation of J2EE. Today, that wrenching movement has continued with the marginalisation of J2EE itself.

I believe that Spring and Tomcat are ringing the death knell for heavyweight Java. If Java becomes a 100% open platform with a completely open specification and at least one completely GPL-ed implementation, then it won't matter which industry heavyweight buys which. It will be a mating of dinosaurs in the age of mammals.