Damn Java; such an annoying language. It is quite elegant, but about as clumsy as basic, though for different reasons. You end up with large, kludgy systems. The Java library is a good example of this. When basing something of it, you cannot choose how much to reuse; either you resuse everything, or nothing. The functionality is locked tightly into the classes it is defined within, and the parts of the library that would be useful to base something of your own upon can only be used through the large, bloated messes that inherit them, and to have much of a choice in making your implementation of something, particularly GUI-related things, you either have to copy a massive chunk of the library source and modify it, write gutwrenchingly horrible and extremely inefficient hacks to get things to work the way you want them to, or write your own solution from scratch. An annoying language. A very, very annoying language. Few things are as immensely frustrating as GUI and graphics programming using its libraries. Java is a horrible nightmare to work with for perfectionists like me, who cannot stand being forced to do things in an obviously suboptimally efficient way.
*goes off to ponder upon the beauty of C and hand-written assembly*