[JSR308] Can we agree on our goals?
eu at javatx.org
Fri Feb 2 19:18:14 EST 2007
Brian Goetz wrote:
> I think this is extrapolating from an experience base that has very,
> very little to do with how Java is used in the real world, and I'm
> happy to bet with you that in five years, we'd be lamenting the
> unintended consequences. Java has been very successful as a language;
> in part, this is because it has achieved a good balance of
> expressiveness and safety, and that it encourages mediocre programmers
> to write decent code.
I think that Java expressiveness and safety also allowed to write very
powerful tools for to help with development. Netbeans, IDEA and Eclipse
won't be that far if Java won't be that expressive and safe, and that is
what helping these mediocre programmers to write decent code.
Also, with all the Java safety, we still need tools like FindBugs,
Lint4j, PMD and others to find all the bugs that even more then average
level developers can introduce.
> Tinkering with such success requires setting the bar very high. For
> extending the language, the bar should not simply be "can people write
> better code than they can now?" (and especially not "does this enable
> experts to write better code than they can now"), but "will this
> encourage _average_ programmers to write better code?"
The major purpose of JSR 308 is to extend abilities of the annotation
processors and and static code analyzers. Right now many of those tools
hit the wall, and have to invent own ways to apply similar annotations
into the Java code. From your work on FindBugs, you should know that
currently it is not exactly safe to make assumptions about code and code
analyzers do need additional hints.
> Most of the code examples I've seen on this list terrify me. I'd like
> to see that degree of terror more broadly shared (so far, it seems
> like Ted, Neal, and I are the only ones that have expressed their fear).
It is perfectly understandable to see such fear and I am also with you
on this. However we did came to the point when tools need to be able to
get additional hints about the code. If you or others in this list have
better ideas how to deal this this issue please don't hesitate to share
By the way, one interesting aspect about these new annotations, is
that they can be removed, or hidden from the source code represented to
the user without affecting meaning of the code execution. Said that,
IDEs can implement new level of semantical folding or filtering, that
would help users to deal with potential verbosity of the new
annotations, and yet allow annotation processors to use these annotations.
More information about the JSR308