In other words, objective opinion about C# isn't exactly easy to find. But after a few phone calls, I was able to enlist the able assistance of Derek Ruths, chief scientist and co-founder of Advanced Reality, a startup that has developed technology to make any application collaborative. Ruths developed his Presence AR application in Java, but he's actively exploring C#. His opinion and that of Gartner analyst David Smith were essential in this quickie examination of the myths and realities of C#:
C# is "Java-like." This is true in some ways, false in others. Microsoft denies that C# is a "response" to Java and claims it's a direct descendant of C++--although the same can be said, of course, about Java itself. Reportedly, porting Java apps to C++ is relatively easy and many of the APIs and classes have the same names. And like Java, C# includes garbage collection, where unused memory is recovered during runtime. But there's one enormous difference: Java is platform-independent and C# is pretty much Windows-only.
Java is still vastly superior. Java was created partly as an answer to C++, which is a difficult but powerful language. But Java has been around for a while, while C# can start fresh. "Some design decisions from early versions of Java remain embedded and are difficult to work around," says Ruths. In addition, C# adds some "syntactic sugar," as Ruths calls it--keywords and concepts that make development a little easier. On the other hand, he considers C#'s windowing model weak compared with Java Swing. The general consensus is that, strong and weak points aside, C# and Java are roughly comparable in their power and ease of use.
C# will cause Java programmers to defect. Gartner doesn't think so. Java still has the momentum. Few doubt that C++ and Visual Basic programmers will migrate to C# in droves--but for Java programmers to switch, they'd have to buy into the self-contained world of the all-Microsoft platform--and that platform still has very little penetration in the enterprise back office. Why should Java programmers leave all that behind? Of course, a great deal of the motivation behind the .Net initiative is to establish a beachhead in the back office, but that will take time.
If you want to develop .Net Web services, learn C#. Well, it might be a good idea. Microsoft's refrain is that "C# is the first component-oriented language in the C/C++ family." Ruths agrees that "out of the box, it's easier." But the Common Language Runtime in .Net enables you to use any many different languages to write .Net components.
Another interesting point: Ruths think that C# may revive downloadable, client-side applications along the lines of old-fashioned Java applets (but not in mobile environments, since this area is still dominated by Java). COM components have always been desktop-oriented, so that speculation makes sense. One thing is certain: C# is the linchpin of Visual Studio .Net, which Bill Gates has called Microsoft's most important product. You'll be hearing a lot about C# in the months to come.
Have you or your developers tasted C#? What's the verdict? E-mail Eric or Talk Back below.


