Java has been the very first commercially acceptable language for object oriented development.

Although a powerful language, I don't consider the macro-assembler approach of C++ to fully support object oriented development. The lack of garbage collection is a show stopper that complicates lifetime management in general.

My personal experience has ranged through system programming in assembler languages and 'C', knowledge based systems using AI languages, research projects, commercial production control and retail systems, and more recently web and internet technologies.

After several years of using Microsoft software, moving to java-based development was a real pleasure and a more consistent technology on which to build. We can have little faith. based on past performance, that Microsoft technology will not shift its focus again. .Net and C# seem to be okay, but the cross platform delivery of java is to be preferred, particularly with the strengthening of the Linux platform.

It would, however, be straightforward to port Cut The Crap java software to C# at sometime in the future.