Java 5.0 provides several new welcome additions to the language, now for 6.0 I would like the following added to the language:
- Named parameters. Which would allow me to say
foo(src: object1, dest: object 2) the advantage of this is I won't have to get confused as to which one comes first source or destination. I got dinged with this from BeanUtils.copyProperties().
- Package versioning and loading. This would add extra constructs to the
import command to automatically download libraries from external sources as long as the
SecurityManager allows it. Something along the lines of
import somepackage.name.goes.here.* "groupId" "artifactId" "1.0";. The jar load can be done from a
maven-type repository. This should reduce dependency hell a bit since you get the libraries on demand.
Now for somethings that I got spoiled with in Perl and Ruby but I don't think we should really do.
- Regular expressions as part of the language. I liked this in Perl, but I don't really mind doing
new RegExp("blah") in Java.
- Version numbers as part of the language. I also liked this in Perl, but I don't really mind doing
new Version(major,minor,subminor) in Java assuming they provide that class as part of the language.
- Eliminate double, int, etc. This I liked in Ruby and Perl because I have arbitrary length numbers automatically. However this is something not really possible in Java I think because of performance issues.
- Support units and currency as part of the language. This would be good, in order to replace something like
new UnittedValue(233, Unit.MILLIMETER) with something like
233 [Unit.MILLIMETER] or
233 ["mm"] but I think its better done through APIs instead.