|
INTEGRATION WATCH: Mono Brings Portability to .NET
By Andrew Binstock
August 1, 2004 Novell has just announced the release of Mono 1.0, its open-source implementation of Microsoft’s .NET runtime environment. This product comes with a C# compiler, a JIT, a boatload of development tools, and most of the key API sets defined by Microsoft. Certainly, enough of the APIs are implemented to do most everything you’d need.
While Mono set out to be an open-source implementation of .NET for Linux, it ultimately ended up being far more portable. In its current version, it ships with a JIT compiler for x86, PowerPC, S390 and SPARC-based systems. There is also an interpreter that enables the bytecodes to run on StrongARM architectures. As to operating systems, Mono runs on BSD, Linux, Mac OS X, Solaris and Windows.
The principal language Mono supports is C#, although it also works with VB.NET and ASP.NET. The Mono distribution includes both a JIT and a regular compiler that emits native binaries. It supports versions 1.0 and 1.1 of .NET, with testing of 2.0 features almost completed. It has nearly universal database support (DB2, Oracle, Sybase, Microsoft SQL Server, SQL Lite, MySQL, PostgreSQL, Firebird, OLE DB and ODBC).
As to working with C# code developed on Windows-based .NET, it is code- and binary-compatible provided that ported code makes no calls to Win32 APIs. In other words, pure .NET code runs fine. To verify portability, developers can use the Mono release for Windows. In fact, many of the developers on the Mono project did their programming work primarily on Windows. Such is the magic of execution environments.
Mono brings to .NET a badly needed portability and an open-source implementation. Both factors will fire up the mostly dormant competition between Java and .NET. As it stands now, someone with no stake in either side would probably view C# as the better language and would definitely view Java as the better platform.
The latter perception is based on its enterprise credentials, which have yet to be established for .NET. Java and .NET have not competed head to head much until now because of several factors.
First, there’s religion: All-Windows shops favor .NET; most other sites favor Java. At sites without religion, the presence of existing programming skills can often tilt the decision—generally toward Java.
Second, there’s portability: .NET’s lack of portability made vendors worry about lock-in. Here, Mono will make its presence felt. On the surface, you might think that there is no way people committed to Linux are going to use .NET even if it does run on Linux. But this is looking at things from the wrong end of the telescope. Actually, shops interested in .NET will find themselves further drawn to it knowing they can deploy on Linux and other versions of Unix later on.
Finally, it provides different enterprise entry points. As I have discussed before (“.NET Progress Worries Java,” Nov. 1, 2003, page 35), .NET is mostly confined to projects costing less than US$5 million. In fact, I would guess its current sweet spot is well under $5 million. Everything above .NET is pretty much Java. However, both camps are actively working to move into the other’s turf. Microsoft will continue boosting .NET and improving it until it can work at true enterprise levels—a long effort, no doubt. And, likewise, Sun is trying to make Java and J2EE easier to use so that it will appeal to smaller sites—an equally long effort.
So, Mono brings portability to .NET and removes a key element of the Java zealot’s screed. As a result, I predict we will see an uptick in .NET adoption, and we will start to see niche vendors selling Java-.NET interoperability technologies. Already some early birds are working this edge. For example, Codemesh offers JuggerNet, which enables communication between Java and .NET objects, specifically calling Java components from .NET applications. Eventually, though, this integration will be the province of Web services—a technology that is supported well by both platforms.
.NET will find new users through Mono. In my view, it deserves to. C# is a great language and it has been standardized, as has much of the execution environment. And, unlike Java, .NET now has a complete open-source implementation. I expect that eventually some clever developers will implement C# on the Java VM—rather like Jim Hugunin’s coup with Jython. At that point, despite the best efforts of Sun and Microsoft to carve out their own separate niches, the two technologies will be ubiquitous: on the server, on the desktop and on the handheld. Customers will not be vexed by this because interoperability will be trivial. Much of this ushered in by Mono.
Andrew Binstock is the principal analyst at Pacific Data Works LLC.

Andrew Binstock is the principal analyst at Pacific Data Works LLC
|
|
Advertisement
Click here for a complete listing of Integration Watch Columns
Click here to see a complete Column Archive. |
Back to Top
|