I think it would be wise for the Java designers to work on a generic conversion system. I am very pleased with the exception mechanisms in Java. Thus, if you want to free a resource or otherwise clean something up when an exception passes by, you must put that code in the destructor of an object. This is artificial, error prone, and inconvenient. Now I am not going to claim that Java has fixed all these things.
Every scope can have a 'finally' clause.
Thus, cleanup code does not have to be artificially put into some destructor. I am overjoyed with the way that threads have been implemented in Java. The implementation is minimal and elegant. They simple way that methods can be protected from concurrent update, the equally simple semaphore and critical code mechanisms, the very easy way of creating a rendezvous between two threads. This is a good feature.