Visual Basic support in Mono isn't new. Past versions of Mono have bundled a VB runtime component that allows VB applications to run under Linux. Explaining the changes in the latest version, Mono 1.2.3, Miguel De Icaza, vice president of developer platforms at Novell and founder of the Mono project, says that "the runtime component has been updated to contain many missing features as part of our ongoing work using Moma, the Mono Migration Analyzer. This means that applications compiled on Windows would run on Mono."
While this will help users run their VB applications under Linux, the bigger news, De Icaza says, is the inclusion of the compiler. "The ability to write software that runs easily across multiple platforms has long been a holy grail for developers. The Mono VB compiler is a milestone step forward in this direction. Using the software skills they already know, developers can now reach a much broader audience, creating applications that run without modification on all the major operating system platforms."
De Icaza explains that applications using the Code Document Object Model, or CodeDOM, require a compiler to run. "And the most popular user of the CodeDOM is ASP.Net. ASP.Net applications written with VB.Net that did not run in the past are now able to run." The other advantage, he points out, "[is] doing Visual Basic development in Linux as opposed to using Linux only as a deployment target."
The new compiler and runtime are part of Mono's new Visual Basic Framework, which aims to enhance runtime features and develop the compiler. De Icaza notes that Mono 1.2.3 includes most of the work done on the new framework and that subsequent releases will ship several updates. To assist developers, Mono 1.2.4 will also include MonoDevelop 0.13, an integrated development environment.
"Applications written on Windows," says De Icaza, "with the 1.0 or 2.0 [.Net] frameworks are supported by the runtime. But our VB compiler is only able to generate code for the 2.0 runtime." Meanwhile, Microsoft released version 3.0 of the framework in November last year. De Icaza says that before the end of the year, a Mono release will preview 3.0 support with a C# 3.0 compiler with support for Language-Integrated Query, along with some of the new 3.0 and 3.5 APIs.
But there are certain limitations in supporting a language like Visual Basic. "[While VB] is not really optimized for Windows," De Icaza says, "there are certain API calls that are Windows-specific, and we have mapped [these] to Linux, but the majority of applications do not depend strongly on Windows. The one bit that is not supported is COM components, since Linux has no equivalent to COM. If a Visual Basic application requires COM or ActiveX controls, those will not run."
Mono offers two options to run the applications compiled under Linux with the new compiler. "Either you install Mono's Visual Basic runtime," De Icaza says, "or you can use a Mono process called bundling that will generate a static executable with no external dependencies to run your binary." In true cross-platform development spirit, you can also run applications compiled on Linux under Windows as well if you have .Net 2.0 installed.
To further encourage cross-platform application development with Mono, the developers look to ship two major milestones this year: ASP.Net 2.0 support and Windows Forms 2.0 support. "This will bring a lot of new applications to Linux," says De Icaza, "[and] we are currently tracking the progress of about 1,000 applications, libraries, and components that have been submitted to Novell for porting."