Investigating .NET Page 6

Visual Basic .Net

VB.Net is Microsoft’s implementation of VB for .Net. This is a grown-up Visual Basic, with implementation inheritance, exception handling, overloading, overriding, proper constructors, static members, multithreading and all sorts of other good things. The one thing that VB.Net does NOT have is compatibility with older versions of Visual Basic. Of course there is a converter, but as with all converters, it’s far from perfect and probably best avoided.

VB.Net compiles to pretty much the same code as C#, so in most cases it doesn’t matter much which you use. There are some caveats though. C# is the language of the Framework class library, so there is a little bit of a bias towards C# in the documentation, especially when it comes to the more advanced topics. Another point is that VB.Net has a compatibility library that allows some old-style VB code to run. However, the stuff in the compatibility library is often not very efficient. C# is safer from that point of view.

Microsoft is having a tough time persuading VB coders to upgrade to .Net. In fact, many of them feel betrayed. Their chosen programming tool has been made obsolete. I don’t have much sympathy with the betrayal point of view. The truth is, Visual Basic was inherently broken, and the only fix was to give up compatibility. However, computer professionals can be deeply conservative despite working in a high-tech industry, and some do not want the pain of changing and learning new tools.
There is another point, this one absolutely valid. VB 6.0 applications run on almost anything, but VB.Net or any .Net application is more demanding. The .Net runtime is 20 MB. If you want the broadest possible reach, .Net isn’t the best choice.

J#

J# is Microsoft’s Java clone. It’s the Java language as at JDK 1.1, but compiles to MSIL. It also represents an upgrade path for users of Visual J++ 6.0.

I don’t really know why Microsoft has worked so hard on J#. There are some political reasons. Microsoft is aware of how Java is widely used in education, and wanted that teaching code to run on .Net. J# also makes it easy for experienced Java coders to try out .Net, although frankly any competent Java coder is going to find C# comfortable enough. J# might make it easier to port a Java app to .Net, although it’s not going to be trivial. The problem is not only the old JDK version but also all the libraries and technologies that aren’t on .Net, such as Swing, JavaServer pages, the XML parsers, Enterprise JavaBeans, and so on. The .Net world has equivalents to all of these, but you’ll need to rewrite the code.

JScript.Net

This is the most ignored of the .Net languages, even more so than J#. No Windows Forms designer. Still, if you learned JavaScript from scripting web pages, you can now take it server-side with .Net.

Managed C++

Managed C++ is most impressive. With a compiler switch, your C++ code now compiles to MSIL. You can even mix managed and unmanaged code in the same file. In many ways this is the most powerful .Net language, although not the easiest.

Next