Monday, May 29, 2006

Keep the crap out of JavaSE 7

Okay I said that JavaSE 6 wasn't for the enterprise, but hoped that JavaSE 7 would be. Well guess what, it turns out that Sun's JavaSE team want to create an even worse version of Java with the Dolphin release. Yet more multilanguage support, hey why not use Basic... BECAUSE ITS A RUBBISH LANGUAGE, yet more bells yet more whistles and nothing at all for the enterprise customers. The basic idea seems to be that if you lob enough stuff into the basket that it some how becomes better. This basic idea has a fatal flaw, namely that it is bollocks. Its aiming for the "cool" and Joe Average, to tick the boxes and generally create a steaming pile for professional developers and architects.

What do I mean by professionals? People..
  1. who have learnt how to search for libraries that do what they need
  2. who like to control what the platform their application sits on does
  3. who like to make absolute choices in what should be done
  4. whose applications are rarely 100% purely the core Java platform
  5. who build things for lots of other people to use
  6. who plan for applications to be supported, not just developed
What I mean are people who use Spring, J2EE, Jini, Rich Client Platform, Swing and are able to make the right choice about the technologies on their project. I'm not interested in more bells and whistles, I'm interested in the following
  1. Turning off the stuff I don't need, this means not having to install it in the first place
    1. No Midi, Java2D etc in the core. If we need it we'll install it
    2. No JAX-WS, if we want Web Services we will select how we want to do them
    3. No scripting - if we need it we'll tell you
  2. A standard way of describing both the Java standard and 3rd parties libraries I want, and where to get thefromalalala Ivy and Maven)
  3. A core platform that is just that the
  4. few standard profiles that provide a standard base for different uses of Java
    1. Core Java
    2. Basic Desktop - no comms
    3. Full Desktop - comms, video, everything desktop
    4. Kitchen Sink Java with the whole shebang for those who admire only size and where the JavaSE team can dump the new crap they seem to be so keen on.
Right now I'd settle just for having 1 and 4, although I think 2 also has merit. The problem is that big companies, of whatever sort, don't tend to complain about things like this. There is a reason for that, they consider (quite rightly) the technology to be something to use and assume that given they are paying billions for it that people would be trying to deliver what they want.

Unfortunately with JavaSE 6 and it looks JavaSE 7 Sun have decided to go after people with no money, or talent, but lots of noise, and make the world worse for professional developers. So the rally cry starts here, I've already posted to the JavaSE 6 list at my wish and desire for 7 to have a clear split between enterprise and the bells and whistles. There are some supporters but of course nothing as yet from the JavaSE 6 team.

Java is pretty much baked for the enterprise, a few extra things like reflection of parameter names would be nice, but mainly its about the choosing right libraries and frameworks rather than adding more crap into the language and base platform.

So the campaign for Straightforward Java starts now. What we need is LESS in the core not more, but a standard way of getting in those pieces that we need. This is why enterprise people use Maven and Ivy, not Basic.

Technorati Tags: , , , ,


Anonymous said...

If you don't like all the things in Java don't use them. What is so hard about that? Please don't advocate splitting up the Java distribution. I remember that this is how Java was originally and cause was a maintenance nightmare. You obviously didn’t work with Java when Swing was not part of the core.

Also Java for the enterprise, what kind of term is that? Java is a language/platform used by many. It shouldn't be targeting by one particular group, especially the enterprise. Wasn’t J2EE for the Enterprise?

Unknown said...

I did use Swing back then, including the dreadful 1.1 to 1.2 migration problems.

If we'd stopped at JavaSE 5 then I wouldn't be calling for the split, its due to the crud added in Java SE 6, and the proposed crud for 7.

JavaEE is for the enterprise, but it runs on SE. Hence the reason for requesting the split. There should be a clear desktop profile (it already exists on the website) that has the desktop extras, and a "core" for everyone that includes the basics. You are absolutely right that Java shouldn't be targetted at one group, but with 6 and 7 it clearly is, namely Slashdot and some mythical "JoeAverage" adding features that are to the detriment of the enterprise.

This is why I want a CORE Java, that might be as big as JavaSE 5 (but hopefully not) but certainly wouldn't include the rubbish lobbed in for 6 and proposed for 7.

Anonymous said...

For me the Enterprise developer is a corporate developer, i.e. big consultancies, outsourcing body shops, etc.

Chris said...

I agree there is too much stuff in a "standard" java install (SE is as guilty as EE). On a recent desktop Java project we used IBM's J9 VM (now called WCTME) with the micro edition CDC libraries. On top of this we had the minimum Eclipse platform (OSGi).

We could then add libraries as needed to a particular install - easily downloaded on demand from a dependency and version-aware central deployment server. We end up with at a VM, it's libraries and an application that do exactly what is needed for a particular user. And the basic install they need to "bootstrap" this is tiny.

As architects we could also control which libraries were used on the project. Which means we don't have to support the 200 library stamp collection that some systems end up as.

This makes it easier for one developer to pick up and understand the work of another - because the libraries are the same. The dependencies are also explicit which allows us to monitor coupling and cohesion.

Chris said...

Oh and another thing!

This problem is just going to get worse: with every release Sun adds a load more libraries (from the JSRs) developed in the JCP into the "standard" platform.

And look at how many are queuing up to get added!!

I think what we would like is choice. Choice about what is in or not in the platform we use for an individual problem.

Anonymous said...

Very pretty site! Keep working. thnx!

Anonymous said...

Interesting website with a lot of resources and detailed explanations.

Neil Ward-Dutton said...

Do you think this is going to get better or worse once JSE is open-sourced, Steve, and the process gets opened up?

Interested in your thoughts on this suspicion (based on not very much thought at all) is that it might very easily get worse.

Vatel said...

Seems your dreams will be real soon - take a look at Consumer JRE (Java Update N) and ,especially, Java Kernel.
Also, now we have OpenJDK - why not to build parts of Open JDK?