Arne Vajhøj wrote: [ SNIP ]
I prefer frequent (as in 1.5-2 years interval) releases with a little
less changes.
The big bangs are much harder to manage project wise.
And some of the stuff planned for 7 is needed now. Like the Fork Join
stuff.
Given that many if not most production Java systems are only just moving
off Java 1.3, let alone yet upgrading to Java 6, it could be a very good
thing to delay the introduction of Java 7. Releasing 7 before 5 is
widely adopted could be very damaging to the popularity of Java.
It shocks me to see how many developers today, those using Java 5 now in
production code, still use raw types and profess not to understand
generics. It seems to be the majority of those I encounter in the
workaday world. And who still use java.util.Vector and
java.util.Hashtable in new code despite that they were replaced in Java
1.2 over a decade ago.
As a practical matter, given the real-world Luddite culture of Java
shops, two years between Java versions is far too quick.
Projects I've worked on recently, or heard details about, use 1.4, 1.5
and 1.6, sometimes all at the same time. That is, one server may have to
run on 1.4, another on 1.5, others are on 1.6, development may mostly be
on 1.5...that kind of thing. All in the same overall project.
There often isn't much choice, even for new work, because of vendor
decisions. For example, working with Oracle SOA on Linux I'm stuck with
1.4 for some stuff and 1.5 for others...I couldn't use 1.6 if I wanted to.
Java 7 is all well and good but only some people will be able to use it.
For years to come.
Given what I work with - J2EE - Java 5 is OK. The stuff that really
matters is advances in the J2EE APIs, not in the core language. This has
been the case for a long time. I will concede that the ability to write
better APIs is made easier with language advances, but only a small
percentage of Java developers _directly_ need the new language features.
For example, most developers use generics only in the sense that they
want to make their IDE stop complaining...otherwise they could care less.
Lew, you shouldn't be shocked. Most programmers out there simply aren't
very good. Take generics as an example yet again: in order to understand
them you often have to spend hours of your own time reading tutorials and
writing your own little exercise apps. Most programmers don't program on
their own time...ergo, they don't know about anything except the minimum
they need to code at work. Not so long ago I had to educate a colleague
on what an enum is...not just the fact that they existed in Java, but
what they were, period. And don't even get me started on the general
level of knowledge concerning concurrency...Arne mentioned fork/join, but
I'll hazard a guess that at least 8 out of 10 Java programmers have never
explicitly coded using anything from java.util.concurrent, and possibly
never anything to do with threads at all. So there's no mystery why they
use certain classes rather arbitrarily.
I blame the power of IDEs for some of that. Intellisense on the MS side
and similar features on the Java side...stuff gets used because it's
there, not because it was wisely chosen. And since Intellisense only
helps so far, if you don't know about a certain API you can't very well
type in the first part of a class name, can you?
AHS