Sunday, February 04, 2007

Java - State of Denial

I've been participating in an interesting discussion on Tuple Spaces over on TSS

Actually the discussion was on JavaSpaces, but since Tuple Spaces is the "non-branded" name for the architectural pattern - we quickly moved on to Tuple Spaces. There were some useful posts by people knowledgeable in the "distributed" Java technology space - like Cameron Purdy of Tangosol, but the debate quickly deteriorated (IMO) into a discussion of what you should and should not do with a Tuple Space.

To me this seemed very odd, because Tuple Spaces as a concept has very few restrictions, in fact the API is very simple, just four verbs (read, write, notify and take). So why the big discussion about what you can and can't do? Then it dawned on me. Some of us were talking architecture, whilst others where still talking implementation. So what Cameron was perhaps saying was that the Java implementations of Tuple Spaces have various limitations. Given that Java and distribution is Cameron’s area of expertise, he could well be right.

Yet, I know of at least one other implementation, not in Java that isn’t limited in the way he describes. So why would someone with his level of expertise not know of other implementations too?

I think this is a symptom of something I've seen descend over the java community over the years. I think what has gone on with the Bush Administration over Iraq, in some ways resembles what has happened to the Java community:

The first similarity is having all the answers. The JCP was meant to be the answer to everything. By committee Java would flourish and evolve. All good ideas would emanate from the JCP, and we didn't need to look elsewhere - Baker/Hamilton, no thanks!

The second similarity is staying the course. What do you mean that AppServers and EJBs are dead and buried? We intend to stay the course despite the fact that no one is adopting EJB3.0.

The third is denial. Java is still cutting edge, we are leading the vanguard in technology innovation - we will win through!

The Java community has become somewhat inward looking and entrenched IMO. Much of the interesting ideas are coming from outside Java, but the Java community consumed in its own grandeur is blissfully unaware of the rest of the world.

The sad thing is, that even Microsoft is evolving. WPF and WPF/e will deliver on the promise of Applets, which Sun made years ago. In contrast the Java community has stagnated, stuck with a language designed in a hurry to power toasters. Nothing is wrong with that btw, we've all got to start somewhere, the problem is though, that through denial no one sees the need for change.

So C# 3.0 is adopting even more from functional languages, whilst Java's thinks about closures. Ruby comes along and shows what can be done with a dynamic message send, and the Java community, slays the messenger Bruce Tate. The last time I looked Bruce was hiding out on the IBM forums writing articles for people who where interested in "crossing borders" like he had.

So the experts in distributed data solutions in Java haven't heard of Croquet. I guess it is not of interest, even though the Croquet team lead is the guy that invented Objects in the first place!

I don't believe Java is going to go away any time soon, but unless this culture of denial changes I can see it suffering a long lingering death. That in itself is not necessarily a bad thing, times move on. The problem though is that a lot of programmers have identified themselves with "Java". So they are no longer just programmers, they are "Java" Programmers. I once responded to a post that was clearly antagonistic towards Ruby from someone who openly admitted that he had only "read about it". Given his ignorance, I was surprised at his antagonism. When I asked him why, he came out with all the usual static typing arguments, and he also mentioned that he would not go on to a Ruby forum and make comments on Ruby. I guess by implication, he meant that I should not comment on a Java forum because I was obviuosly a Ruby programmer. I guess it never crossed his mind that I may program in both!

I could imagine Rumsfield coming out with a stupid statement like that. So the Java community has become tribal and partisan - and even Microsoft is more open minded and outward looking knowadays (have you noticed that XAML looks a lot like Adobe Flex?).

I guess the final service Java can provide to the developer community is as a repository for developers with a closed mindset. People able to think for themselves can just leave, much like Bruce Tate did, and move on to more interesting things. And the "I've just put the latest JCP acronym on my CV" programmer can stay with Java safely out of everyone’s way!



Shai said...

Interesting post.
It mirrors some of my thoughts while being the exact opposite to many of them ;-)
I think the Java community/Sun are in a state of denial about whats important. The JVM has some technical advantages but they are not big enough to matter, we have terrible bugs and a huge overhead.
Instead of fixing this and integrating the toolchain to offer a developer experience that can compete with MS/Adobe etc. people are arguing about minor language changes... Would that make the difference??? Not likely! You either like Java or you don't and feature X that you want is the exact feature that another guy hates. But everyone needs a better VM!
The Java language is great but its not the end all, thats why JRuby/Jython/Groovy/Scala etc. are a great idea and an option to anyone who wants these things.

About EJB3 I quite disagree, there is allot of interest but most organizations haven't moved on because they are still working with 2.x products and haven't upgraded to Java 5... I think EJB3 will take off in the long run and I do see huge interest in its new features. The fact that there is an open market and competition from lightweight frameworks (and from the tuple side of the fence) is great because diversity yields the best of breed. This is something no other platform can rival, diversity.
Having said that I do think that Sun needs strong leadership that understands these things otherwise Java won't "be all it can be".

Paul said...

Hi Shai,

My crystal ball is no better than yours, and you could well be right about EJB3.0.

I think what is missing though is a unified vision. Sun like most coporates is a multi-headed beast.

So what is Suns vision for Java? Do you remember the days of Scott McNeally: "The Network is the Computer" and "Write once and run anywhere" - so what is the vision today?

The big theme today is the internet - and to be honest, I can see Java getting squeezed here.

I think you have eluded to the underlying issue which is poor leadership by Sun.


willCode4Beer said...

Maybe a better title is Sun is in a state of denial.
Look at how so many developers have rejected EJB's and moved toward frameworks like Spring. The Java community is adopting Groovy in droves while Sun is trying to push jRuby (and pretend Groovy doesn't exist).
Alot of the EE spec can only result in non-OO developemnt and the developer community has mostly rejected it in favor of pojos.
EJB3 is dead in the water for quite a few reasons. First, after the last 2 EJB specs, nobody trusts sun. When you see SQL inside of annotations, you wonder how its different from jdbc.

Paul said...

I think you raise an interesting point about trust. Sun launched and dropped Applets, only for Adobe and Microsoft to re-invent them properly ten years later.

EJB2.1 was a joke. I remember reading about CMR for the first time and thinking that they could not be serious. BTW, no one still has an answer to class loader hell, which basically renders EJB as a flawed component model. So IMO EJB3.0 is flawed, and ten years after inception, I'm still to see a true off-the-shelf EJB component.

The sad thing is though, is that Sun knew better, much better infact. Sun has done some useful research into Objects and Components - see the Self Project.

From the outset Java was primarily driven by commercial opportunism. The Oak developers knew it wasn't ready for what Sun had in mind. The Self researchers at Sun knew too. And Java effectively killed off Smalltalk, which is a far more sophisticated language (take a look at Strongtalk which Sun bought and buried).

Personally, I believe that placing trust in vendors is foolish, they all aspire to be Microsoft anyway. What happened to the days when innovation and leadership came from Universities like Standford (Lisp) and Research Organisations like Bell Labs (Unix/C) and Zerox Parc (Smalltalk)?

I think many developers are waking up to the fact that we need to take responsibility for our own futures, and rely less on vendors. Hence the rise in open source.


butlimous said...

Thanks for the nice post!

Free PS3