Thursday, January 28, 2010

My list of features missing in Java

It is a very common question on interviews about what features you consider missing and would like to add to Java. Here is my list:
  • C#-style properties accessible as such via reflection;
  • C#-style yield keyword;
  • C#-style as keyword;
  • Get rid of java.util.Date hell - will require changes in java.sql as well;
  • Function objects, specifically for bulk processing on collections; implies C#-style delegates;
  • modularity, e.g. OSGi-like bundling - no jar-hell;
  • Annotation-based configuration for JavaBeans, again, like it is done in .NET System.ComponentModel; extensive support in Swing;
  • Something similar to org.springframework.util.Assert class for common runtime checks;
  • Human-oriented Generics;
  • Byte-code emitter API;
  • Unified interfaces and compiler support for events like in .NET, free of known problems;
  • One more feature would be nice to have - a user-defined context reference in java.lang.Class object. This would let keep all class-related extensions, e.g. persisters, serializers, validators, type descriptors, etc, acessible by simple navigation as opposed to keeping multiple mappings.
  • Extremely useful feature - C#-style verbatim string literals (@"...") = multiline strings in Scala ("""...""");
UPD: I think I'd better provide some explanations why I deem these features to be missing.:-)

No comments:

Post a Comment