Friday, May 09, 2008

Java Has The Flu

I attended the JavaOne show this week, after a 4 year gap. What a difference - who knew Java could be so boring? On the other hand, this is what it feels like to go to a show for a technology that has lost half of its market share in the last 4 years (at least when measured by O'Reilly book sales - not a particularly reliable source but better than no source at all). If you don't like that source, check out Andi Gutman's recent post that Java is losing the battle for the modern web.

Let me be clear here - at WaveMaker, we have hitched our wagon to Java and hope very much that JavaOne is showing us the ghost of Java present, not the ghost of Java to come.

Trade shows in general have been eviscerated by the flood of technical information on the web. But even in the new "I'm only here for the Tchotchkes" world of conference attendees, this was a surprisingly desultory affair.

Aisle after aisle was populated almost solely by people in ugly sports shirts wearing a vacant gaze that we all reserve for particularly humiliating situations. In fact, the only booth which seemed to have any mojo was the - you guessed it - schwag booth from Sun.

This morning, I found out what was wrong. I got one of those delightful ALL CAPS emails from JavaOne informing me that we had all been the subject of a viral attack by the dreaded Norovirus. So that was it!

There is something seriously wrong, not just with JavaOne, but with Java. After 10 years, Java remains an extremely complex development environment with nothing even approaching an easy learning curve. Microsoft has gleefully filled this vacuum, driving a vast J2EE to .Net migration at the low end of the market that nobody in the Java world seems willing to acknowledge.

The Sun promise to put Java runtimes everywhere is meaningless if nobody wants to develop for those runtimes. Adobe and Microsoft are doing a far better job making their tools simple enough for mere mortals and focusing on the presentation layer.

The news at the show was that Sun's front end technology, JavaFX, was *still* not ready. The world needs Sun to stand behind one of the 200+ Ajax frameworks already out there, not create yet another one. While we're at it, why can't they just put more effort into an Ajax toolkit they have already "partnered" with, like Dojo?

Here is my prescription for curing the Java Flu:
  1. Fight for the low end: in modern warfare, death may come from above. In technology, death comes from below. Ten years from now, who will have more power over IT - web designers or core developers? If Microsoft and Adobe win the designers today, Java developers will be the Cobol developers of tomorrow.
  2. Make Java easier: something is wrong when very useful but also very complex code frameworks like Spring are considered the "easy" way to do Java development. Java needs to be easy enough for your mother to build her web-based phone list with it. I'm talking Hypercard/Filemaker/Access easy.
  3. Make Java prettier: just put a bullet in JavaFX and adopt something with momentum like Dojo or Ext. If you just can't stomach Javascript, then adopt GWT.
  4. Make Java fun: can't do this without doing the first three items. For an example of one attempt to make Java easy, check out the WaveMaker download.
Remember when people built cool web apps with Java? When was the last time you heard about a cool web app that wasn't written in Rails or PHP? OK, people still build lots of cool stuff in Java, but the love is gone and its just a day job now.


Chris Jewell said...

I suspect that Christopher Keene's cynical and pretentious analysis of the state of Java is more a reflection of his deep anxiety that JavaFX will directly compete with Wavemaker's product than that Java is 'dying'. JavaFX is really easy to learn and program, period. As for Java's ubiquitousness and popularity, if Mr. Keene had been paying attention to the Keynotes, I think he would have come to a different opinion.

Christopher Keene said...

Most people with the flu recover - I expect Java will recover faster if the Java community is a bit more open to constructive criticism ;-)

Nor am I contending that Java is not very popular. Just that it has nowhere near the excitement and momentum of Rails or even Flex for that matter.

I am sure that JavaFX is very nice and it would have had a real chance if it had shipped in 2003. Instead, it is just the latest example that Sun is more interested in reinventing the wheel than in promoting the growth and success of Java.

You should try to get out a bit more - there is more to life than Java User Groups and JavaOne keynotes. Go to a Rails conference or a mashup camp and then tell me that there is not something seriously wrong with the energy level of the Java community.

Anonymous said...

I expect Java will recover faster if the Java community is a bit more open to constructive criticism ;-)

Mmmm .... are you implying that because Mr Jewell disagreed with you, he is not open to constructive criticism?

There are many half decent metrics for measuring the future prospects of a computer language. Book sales from one publisher isn't one of them.

Go to a Rails conference or a mashup camp and then tell me that there is not something seriously wrong with the energy level of the Java community.

And then go to the same mashup in ten years time and you'll see the same subdued energy levels. That's what happens when languages/frameworks mature, and shiny new frameworks appear to take the column space. Can't say I get excited about Struts programming, but there are still more jobs going in Struts than just about every other UI framework, which is a much more accurate measure that O'Reilly book sales.

Anonymous said...

Wow this must have been the 10,000 post about how Java developers will become Cobol developers of tomorrow. First off, Cobol was just a language, it had NO community and NO VM. Why do these matter you ask. No Community means no outside influence at all. No VM means concepts like JRuby would never exist. Cobol IS JUST A LANGUAGE. Java is clearly not. The VM will be around much longer then the Java language almost like an OS. And with that developers that have worked with the JVM will benefit the most.

So you want some cheese with your wine, or would you want some Java and get back to work ;P

Anonymous said...

Well said, and stupid frameworks and complex java APIs are making definitely making java far more complicated than it should be. As you stated, nothing exemplifies this more than Spring.

Christopher Keene said...

I would not characterize Spring as a bad framework - WaveMaker is based on it!

However, since Spring is a server framework, it does little to help create a rich presentation layer which is increasingly important in delivering Web apps.

Anonymous said...

talk about lame article.

Anonymous said...

Correct me if I'm wrong but java's red bar (2007) is the highest, no?

And regardless, there are two variables measured by each bar: the language and the publisher, right? How do we know that this publisher isn't just getting beat (by say Manning) in the java market?

According to Tiobe, Java increased it's lead in mind share last year. Python grew the fastest, and Ruby actually fell. There methodology seems a whole lot more robust than yours.

Christopher Keene said...

If you like Tiobe's red bar better than O'Reilly's, bully for you. The point isn't the absolute number but the trend, and more importantly, what can be done to reverse the trend, which ain't goin' in the right direction!