Most of the points mentioned by Rusty Harold are things that you stumble over when you write books, whereas you point out things that seem to stem from experience in using Java in large scale project (especially the const problem is my prime candidate when debugging).
I 'd like to add a few ...
- synchronous destructor/finalizer (in order to use powerful idioms such as allocate/lock-in-ctor, dealloc/unlock in destructor/finalizer). N. B. this does not have anything to do with GC and meory management, there are way more sresources to manage than memory
- replace String and StringBuffer with String and MutableString (both supporting + operator etc.)
- operator overleading (I want to define operators for my value types)
- Fast GUI (move event dispatch to native code)