Here's mine:
Java 8:
Reified generics
Removal of dead features (java.awt.Button, etc.)
Java 9 (or whatever Sun decides to call it, having version numbers go up):
Closures
Macros (the kind that's IDE friendly, not the C kind)
I believe closures needs to be on the table forever. The moment
everyone cave in to the "Java has used up all its complexity budget"
line of thinking, Java will be dead.
I'm not saying that I disagree with the claim that "Java has used up all
its complexity budget" here. I do not know about Java's internals to
make up my mind. But the fact that multiple proposals (with feature
complete implementations, and specifications) exist seems to favor the
argument against that claim.
I understand that things aren't always decided on technical grounds.
Funding, competitive positioning of vendors, trends in technologies
external to Java, etc., all impact the direction of Java.
But still, the rank and file Java developers need to know Java *is
moving forward* and not *standing still*, for some definition of moving
forward.
--
Weiqi Gao
weiq...@gmail.com
http://www.weiqigao.com/blog/
Ideally Javadoc gets updated to hide such cruft by default as well.
Then you get the best of both worlds -- nothing breaks, but you don't
have to pay for cruft in any real sense.
--
Jess Holle
You could make the same point for any overloading. If you can
distinguish between
singleParameterMethod(A param);
and
singleParameterMethod(B param);
why not distinguish
listParameterMethod(List<A> param);
and
listParameterMethod(List<B> param);
?
The conceptual difference seems very similar. Even more extreme if you
include arrays -- but I'd rather ignore those.
>> what can actually be recovered by the JVM at runtime is this:
>>
>> List<String> foo = new ArrayList();
>
> It gets more paradoxical with the like of Collections.emptySet
The problem exists only if you look at a mutable version, otherwise
the empty set can be seen as being of any type. Once you require
mutability it is only fair to request the specification of a type
parameter.
Peter
You can now vote for how this closure drama will end at Java.net:
http://today.java.net/pub/pq/242
and "Closure added in Java 9" is one of the choices.
Here's how this thing will end:
+ No closure in Java 7
+ No closure in Java 8 (People who killed closure for 7 won't relent
for 8.)
+ Massive talent drain away from Java (cool language designers will
work on ABJ--anything.but.java, cool programmers will latch on to what
the cool language designers design)
+ Closure-denialists finally see the light
+ Closure added to Java 9 (everyone will say it's too late, but it
won't be)
+ Everyone lives happily ever after
Don't think this scenario is plausible? This is exactly how the "Open
Source Java" theme played out.