What I would want is a better quality of std apis
core API's are overly protected against reuse and extensibility. I spend about 1/4 of my Java programming time to write unnecessary glue code.
It happens about once every two programming days that I want to use a functionality that is obviously implemented (file extensions associated with MimeType's to mention what happened a few minutes ago) but not available.
Extending URL's doesn't seem like an illegitimate approach to me. Why is it final? If there's a good reason, why isn't it (decently) possible to add scheme handlers?
Why are there ErrorListeners and ErrorHandlers? Almost identical but incompatible enough so that a single class can't implement both. Most annoying.
Java is really a messy business.