Java’s appearance at the dawn of the Internet Age helped to propel it to near-instant prominence, and lodged cross-platform virtual machines and garbage-collection firmly into our mainstream consciousness. In Java’s wake, .NET introduced the concept of the “cross-language” virtual machine, and helped to foster a new discussion on the benefits of functional programming. Did Java and C# have an evolutionary advantage over C++, or were they simply “Cool” (the original code name for C# / .NET)?http://vimeo.com/8235227
Note:
About "deterministic destruction" ("using" construct). At Java 1.7 try-with-resource was adding that is pretty much the same (method close() is called upon leaving block normally or ubnormally.