A hitchhiker's guide to alternate .NET languages

.NET development gives you a choice of languages, as long as you choose C#, C++, or VB, right? Not exactly.

Microsoft's big claim with the .NET platform is that the developer's choice of language has become a matter of personal taste. The platform brings things like easy code reuse, a powerful class library, and platform independence—in theory anyway—within reach of any programming language. At least, as long as your chosen language is C++, C#, or VB, right?

You may be tempted to assume that this is the case, since the "big three" get all the attention, but you would be wrong. The truth is, several language vendors and even a few enthusiasts have been working on .NET-enabled versions of non-Microsoft languages for some time. Indeed, much of this work began back when .NET was still in early beta. Let's take a look at a few of the alternate languages you can use to leverage the features of the .NET platform to build Web or Windows applications.

Python and Perl
With built-in regular expression support and incredible string manipulation features, Perl has long been a staple for Web scripting. Python, on the other hand, is a relatively new language that's praised for clean syntax and very rapid development. ActiveState has done quite a bit of work to bring both of these languages into the mainstream.

ActiveState's PerlNET works with the company's Perl Dev Kit to allow Perl programmers to develop .NET components using Perl, while Perl for ASP.NET makes it possible to develop ASP.NET applications and Web services with Perl. Additionally, ActiveState has two "research" products, Perl for .NET and Python for .NET, which one day may allow developers using either language to develop true .NET applications.

Although they don't allow .NET development per se, Visual Perl and Visual Python are two offerings from ActiveState that integrate into Visual Studio .NET and enable you to build applications in Perl or Python using the Visual Studio .NET IDE. Both products support Visual Studio's debugger, editing environment, source code control, and dynamic help features. Visual Perl includes support for ActiveState's Perl Dev Kit, while Visual Python adds support for Intellisense. ActiveState also offers a Visual XSLT plug-in that allows you to create and debug XSLT documents from within Visual Studio .NET.

The return of J++?
Although it's something of a pariah, Microsoft's Java implementation, J++, is still alive and kicking, and it's back for .NET. This time around, it's called J#.NET and it plugs seamlessly into Visual Studio .NET. However, owing to Microsoft's court settlement with Sun, J#.NET includes support only for older JVM specifications, and holding your breath for an update isn't recommended. Nevertheless, J#.NET does provide a way for Java applications to run on the .NET platform and gain access to the CLR's features. Figuring out why you'd want to do so is your job.

Some of you may snicker at the name, but COBOL is one of the most widely used programming languages. Despite its age, it still forms the unseen backbone of many enterprise systems. Fujitsu NetCOBOL for .NET, or more simply, NetCOBOL, includes a COBOL-85 compiler capable of producing Microsoft .NET-compliant code, making it possible to port existing COBOL to the .NET runtime. While the prospects of building an ASP.NET application or XML Web service using COBOL may seem pretty farfetched, it's nevertheless a reality. For new development, NetCOBOL integrates with Visual Studio .NET and includes support for the .NET Windows Forms designer. This makes it possible to create Windows and Web applications using Object COBOL.

Building towers with .NET
Hailed by its practitioners as the purest of object-oriented languages, Eiffel has a relatively small but dedicated following. Interactive Software Engineering, the creators of Eiffel, has produced a Visual Studio.NET plug-in and retrofitted its own Eiffel IDE, EiffelStudio, to allow developers to produce .NET-aware applications.

Scheming for .NET
Scheme developers won't be left out of the act, either. The Hotdog compiler is currently in development and promises to provide hooks to back-end JVM, C, and .NET compilers. That should give Scheme the best of all three worlds.

What about Delphi?
Delphi programmers will soon be able to get in on the act, too. Borland announced its plans for a .NET-capable Delphi product at the Software Development West conference in April. Borland also has plans for .NET-ready versions of its other development products, Kylix, C++ Builder, and JBuilder. You can read about the Delphi announcement and check out a teaser screen shot (scroll down a bit, it's there) on Borland's Web site.

Mono: A truly portable .NET
Finally, we have the Mono project, which hopes to make the cross-platform aspect of .NET development a bit less theoretical. Mono is an open source effort to port the .NET framework and runtime onto Linux. The group has made significant progress: Mono's C# compiler has been functional for some time, and the group recently announced the availability of an ASP.NET parser. In addition to C#, Mono eventually hopes to support Java and Visual Basic .NET. For a more in-depth look at Mono, check out "Ximian's Mono project: .NET for monkeys, penguins, and gnomes."

What's your language of choice?
Which language are you using, or do you plan to use, for .NET development? Send the editors an e-mail or post to our discussion and let us know what your chosen language is and why.


Editor's Picks

Free Newsletters, In your Inbox