Beyond Java ?
I read Bruce Tate's (much talked about ) "Beyond Java" with a great deal of enthusiasm.
Bruce has done a commendable job. Beyond Java is well-presented and fun to read.
The central theme of the book is "productivity". Bruce argues that Java has become
too complex and cumbersome to achieve simple tasks like writing web-based CRUD
applications (web-apps that typically front-end a database with Create/Retrieve/Update/Delete operations).
He predicts that parts of Java, especially those that deal with web application development will be
replaced by a dynamic, productive framework like Ruby On Rails(RoR). The book also covers the Ruby language
pretty well with a comparison between Ruby and Java.
Well ...to be honest, I would say that Java application development has never been as productive as it is today.
Yes , seriously .. and I think a lot of people would agree with me on that. Long before joining Sun I used to work for a
consulting company. And I don't remember any of our customers choosing java because it was the most productive
When I was working on my first server side Java project, my friend used to work on this cool technology called
the Allaire Cold Fusion Studio. I would write database connections pools and templates (as JSPs still in 0.9
we used our homegrown template engine !) and he would put a few CFML tags into a web page and achieve the
same. The productivity of Cold Fusion was amazing. In fact,at that time, my company had more people working on
Cold Fusion than Java.
Yet, one of our biggest customers who came by opted for a Java based solution.
Why? Vendor independence. They were attracted by the fact that they didn't have to be tied to a
particular vendor for their solution.
And then there was this time when I had to code a little GUI tool in Java. My VB/Delphi friends laughed when they saw
me hand-coding my GridBagConstraints. The truth was there was no Java IDE available to actually
generate a decent responsive GUI ! Yet the application was coded in Java because the tool needed to be platform
The point is that developer productivity, though important, is not the only reason for choosing a platform. If you want the
least lines of code, Perl would be more productive than Java. VB might be the fastest tool to develop a complex UI. RoR might be
the fastest way to create a CRUD based application. And when you compare a statically typed language like Java with a dynamically
typed language like Ruby, you will always find the latter to be more powerful.
On the other hand, times have changed for the Java developers. Today there are *plenty* of good tools out there for us to use. We
have stopped handcoding our GUIs. We can drag and drop components into web pages. We can right click and
"convert anonymous class to inner class". Today we can easily do things that we have struggled to do before. If not anything else,
we have definitely become more productive.
Speaking of tools, Bruce does not seem to be a great fan of tools or generated code (And that's where I think he misses
the point). He states that even if you are using a tool, you need to understand the code that your tool generates and
that generated code is difficult to maintain. I don't agree with that observation.
If a tool is good enough,one does not need to understand generated code(Ask a VB developer).
And generated code can actually be easier to maintain. How many of us take a look into RMI and JAX-RPC stubs
that our tools generate ? Even JSPs are generated code, but I don't remember ever trying to understand it.JSF takes the paradigm a step further.
So instead of developers moving away from Java what we are likely to see is that our tools get better and better
to make us more productive. Yes, We might never be able to reach the productivity level of a dynamic language/framework
like Ruby. But that difference would be more than offset by the inherent advantages that Java provides and the huge amount of tools/frameworks/libraries available.