Is there any more room at the Java wake?
There’s been much goings on recently regarding the apparent death of Java, so I’m a latecomer to all this. Nevertheless, it’s getting to annoy me so much now that I just can’t stay away.
The battle scene
To summarise: Bruce Tate, a leading light in the Java world, has written book called “Beyond Java” which outlines its limitations and looks forward to new ways of working with languages such as Ruby and its Rails framework. Many have agreed. Some have disagreed. I say it’s hype. Or in the words of Viz’s ventriloquist’s dummy: gollocks.
Aside from Bruce’s book you can take a look at his OnJava article which summarises it. He outlines four new technologies which challenge Java’s dominance: Dynamic languages, continuation servers, “convention Over configuration” and metaprogramming.
Chris Adamson has interviewed a number of leading Java figures, including Bruce and James Duncan Davidson, and they give largely similar views. Very roughly Ruby requires fewer lines of code, while Java’s EJBs and other “enterprise” technologies are overused.
Finally (for this trip through the naysayers) Jack Herrington has written the provocatively titled “Our long Java nightmare” which begins
I’m beginning to think that a long nightmare in the computer software development industry is at an end, or very close to it. The nightmare that was the Java revolution is fading fast and from my perspective, good riddance to bad rubbish.
Robert Cooper puts a much more balanced view with excellent links.
What are the charges?
But what’s the basis of all this? What, exactly, are Java’s problems?
Reading in more detail, and between the lines, the following come through:
- Java is more verbose than dynamic languages such as Ruby and Perl.
- Java has been overused.
- Ruby allows you to throw together a web-connected database much quicker than Java.
- The work so far in Ruby seems to be by very small teams of very highly talented people.
This is actually a pretty unremarkable list. My view of Java is that its core strengths are in the areas where you can’t rely on excellent developers and need more help from your technology.
The problems with real life
In most environments you come across you won’t be lucky enough to have brilliant developers — people like Bruce Tate and James Duncan Davidson are working for other people or themselves. They are rare indeed. Mortals like you and I will find ourselves working with a range of developers — aside from the terrific ones you’ll have those who don’t write enough tests, those who don’t bother to refactor, those who don’t have enough experience of the system, those who missed this morning’s meeting, those who forget the house coding style, and so on. You’ll also have a range of problems outside the software layer: database structures that don’t reflect the business needs well, deployment processes managed by other people with other agendas, and so on.
In those cases, where software is built by many people (and fallible people), and where many of your problems are not of your making, you need your tools to help you. You need things to be explicit, you need conventions to be forced on you, and you want to options at different layers so you can abstract away from some of the other problems.
A language in which everything has to be made explicit is a real pain for a single developer who knows the big picture. But it’s a huge benefit if you’re in a team with many people and you’re likely to be dealing with code from a different developer who may have different ideas from you and which deals with parts of the system you’ve not previously encountered. Metaprogramming which (in Bruce’s example) automagically derives objects from your database structure is wonderful when your database structure fairly reflects the nature of your business application, but terrible if you’re dealing with a poorly designed database or one which was designed with other aims in mind. A framework which allows you to throw data from your database quickly onto a web page is a dream if that’s your application, but it’s pretty useless if you want to build an energy trading application, or an accounts management system, or a web application whose data needs a lot of work after it gets out of the database. In those cases you want abstraction layers which give you a choice of technologies to plug in, and which allow numerous configuration options so that you aren’t forced to break your undersized corporate hardware budget.
Sure, Java has been overused. It was given a big push by a big company and lots of people will have tried it out because there wasn’t anything better at the time. EJBs too often didn’t work in practice, and that will have coloured the view of the core language for those who got burnt by those experiences. And if there’s one problem with standardising abstraction layers so that people have choice, it’s that people will insist on creating lots of choices for standard abstraction layers.
So when will Java die?
When it comes down to the nitty gritty, what do the naysayers think about Java’s imminent demise…?
Bruce Tate says
Java’s not dead yet, but for the first time in nearly a decade, we’re seeing compelling innovation happen beyond the borders of Java.
James Duncan Davidson says
It’s not that Ruby on Rails is going to be the next Java. Far from it. It’s that Ruby on Rails helps to break this idea that there is “One True Way.” There’s not.
Jack Herrington summarises many lessons from the Java bubble, including these:
Technology choices should be based on technology reasons [...] Hiring is everything [...] Companies lie
So there you have it. Exciting things are happening outside Java, Bruce? No kidding. Java isn’t the only technology choice we have, James? You don’t say. Hiring is everything, Jack? Welcome to the business world.
It looks to me as if a few super-talented developers have become bored with one technology and are looking for the next thrill, and they’ve found it with Ruby and Rails. I hope they have fun, and I hope their journey — which is really only just beginning — is something we all benefit from.
And if you’re wondering what language you should be using in the future, Jack offers one other piece of advice: “Change is not always good”.