How To Fix Java

2003-09-11: There are always things you want to fix about the language you are working in. Dan Tull and I were talking today, and I decided I would finally make a list. Note: this page is just my whiteboard notes. I plan to add description and discussion about these to make them more clear.


C o m m e n t s :     updated: 2006-09-10 (3879 days ago)
2006-02-16 :
  1. Numbered enum type for array indexing.
  2. Ability to access enums outside of class that defines it.
  3. Xith3D to be officially supported with JOGL, LWJGL, and DirectX bindings. All should support Swing and fullscreen resize.
  4. Line numbers or code to be displayed where exception occurred.
  5. String concatenation to automatically use StringBuffer.
  6. Improvement of Ant.
  7. Ability to terminate threads or running applications from console.
  8. Networking abstraction for NIO for UDP or TCP.
  9. The death of JSP taglibs. How many abstractions of HTML do we need?

2006-02-17 : Now that's an interesting list. 1) Java 1.5 enums have an ordinal method so they can be used to index arrays. The ability to auto-unbox an enum to an int might be interesting. 2) That's possible - just declare the enum to be public. 3) That's a library issue, not a language issue. 4) Line numbers will be displayed if you compile with debug info turned on. Code can't be displayed unless you bundled the source code with the compiled class (rather bloaty) or added some method of specifying the source code path (and there are plenty of debuggers that take care of that already). 5) String concatenation always uses StringBuffer (or StringBuilder in Java 1.5) unless the strings are constants and are concatenated at compile time. 6) Ant is a third party library, not part of the language. Plus you didn't say how you wanted to improve it. 7) That's an OS issue, and can be done with existing tools. Terminating a thread in an app has serious consequences and is not something to be done lightly, but it is currently possible. 8) NIO is an abstraction that supports UDP and TCP. There are libraries that are even more abstract, like Java Spaces and Java Message Passing. 9) Again, that's a library issue, not a language issue. Or, if it is a language issue, the language is not Java. :) We'll know we have enough abstractions when people stop wanting to create more. :)
-- Louis
Edit