This post originated from an RSS feed registered with Java Buzz
by Brian McCallister.
Original Post: Good Enough
Feed Title: Waste of Time
Feed URL: http://kasparov.skife.org/blog/index.rss
Feed Description: A simple waste of time and weblog experiment
Okay, so this is like kicking a dog with three legs, but I cannot
resist =) Apparently, Java is good
enough. Michael has some very good points -- the biggest being
that languages have become dominant in the past when they have
ridden a new application paradigm. Java rode the move from
client/server to... a different client/server with a web client
backed by a gargantuan app server playing the same role as the
mainframe used to, or as he points out, with the mainframe still
right behind it.
Apparently Java is good enough -- specifically in the arena of web
app development. I think he misses Java's real strength which is
that there is a huge pool of mediocre developers available who can
do good enough work when given tools indistinguishable from magic =)
This is a huge benefit, which is not to be underestimated,
and no, my tongue is not in my cheek when I say that, really. The
productivity level achievable with IDEA (or Eclipse, or NetBeans)
and Java for the Corporate Developer (Sun's marketing term for who
they aim Java at, at least the one they say to people) is immense.
So, because we have tools which make the language irrelevant, is it
really Java we care about? I think we need to stop calling ourselves
Java Developers and start being honest about it, we are IDEA
Developers, Eclipse Developers, or, to be completely honest, XMLSpy
Developers.
You master your tool and can work wonders with it. I have macros,
er, I mean Live Templates, for probably a third or more of the code
I actually right. tnuo[tab], test[tab], set[tab], tear[tab],
xsde[tab], puts[tab], itar[tab], fore[tab], itli[tab],
etc[tab]. Nice. Now, consider for a second an alternate
approach. Consider a tool which made it really easy to make those
macros, by say, interpreting them at runtime. You'd have to pick
better combos than tnuo (throw new
UnsupportedOperationException("come back and implement
me!");) but funny how it works. Now, that could be kind of
handy. What if you can do the same thing for how the tool
works?
Sure, Java is good enough. So are two penny nails. Unless you are
trying to eat ice cream. Then a spoon helps.
Ruby isn't going to replace Java. Java is a marketing term for
Gnome. Ruby isn't a window manager. Well, er, it does play nicely
them though, not too
bad, actually. Sorry, back off the tangent. Ruby isn't going to
replace Java like Java replaced C++. Java replaced VB (which is an
awesome tool around a ... hey, wait a minute!).
Java is definately good enough. The key thing is for it to evolve to
stay good enough. Will it? Well, the language is under the control
of a committee of committees of people who dislike each
other. Luckily, we aren't actually Java Developers, we are IDEA
Developers, and IDEA is under the control of some very big-thinking
Russians. I think us IDEA Developers have some potential, not sure
about the Eclipse folks though, they have the whole open source
thing going, but it seems like most of the control over Eclipse is
by people who sell competition to it and use it as a testbed for new
research ideas ;-) So it will either be an awesome amalgamation of
cutting edge software engineering research and heart warming open
source community goodness, or a bike shed. Overall, not bad. I think
us IDEA and Eclipse, and even the NetBeans Programmers, have a
future.
Seriously now, IDEA is a fantastic, er, language (?) when you have
big complex systems with a significant number of developers. Static
typing, good garbage collection, a good compiler, excellent code
navigation, and medium-level performance for the actual
runtime (note that performance != scalability). It has fantastic
libraries via it's Java runtime system, and bindings to most every
information system around. IDEA has legs.
I still prefer Ruby, personally, but I do more work in IDEA than I
do in Ruby, so take that as you want.
Side not: Fortran still being used because it is "good enough" is
bollocks. Fortran is still used because nothing is faster when you
need hardcore number crunching. Part of this is the immense
optimization that has gone into compilers, the very mature vector
processing libraries, the harsh limitations in what you can actually
describe in the language in order to help the compiler optimize the
code better (us IDEA developers have complained about non-reentrant
EJB's, how about non-reentrant *functions*) etc. Most scientists I
have met (this is not a scientific survey, I don't know that many)
prefer Perl. Go figure.