Welcome!

Microsoft Cloud Authors: Andreas Grabner, Nick Basinger, Kevin Benedict, Pat Romanski, Liz McMillan

Related Topics: Microsoft Cloud

Microsoft Cloud: Article

Mono Releases Version 1.2

And other updates

The long-awaited third major release of Mono, version 1.2 is now out. The main delay was getting System.Windows.Forms (SWF) to work cross platform. This has been accomplished for the most part. There are a few of the rarely used methods still being worked on, but the vast majority of Windows applications should work: just copy the .exe file to a Linux box or a MAC with Mono installed. The Mono implementation of Winforms supports themes with several included in the current version. Mono even supports WinProc, so many third-party controls that rely on Windows messages will run correctly.

SWF is implemented to the .NET 1.1 level, with some .NET 2.0 controls and functionality included. Now that this milestone has been met, the work on .NET 2.0 features will accelerate. ADO.NET, ASP.NET, and System.Configuration are also complete to the .NET 1.1 level, with some .NET 2.0 capabilities. Most other libraries already support the .NET 2.0 standard.

Mono 1.2 includes two compilers: one for .NET 1.1 compatibility and one with full support for .NET 2.0, including generics. Work on the C# 3.0 compatible version of the compiler has been held up while programmers were focused on getting this release shipped, but I expect a fork of the C# compiler supporting the C# 3.0 standard to appear soon. This release includes runtime support for VB.NET 1.1 and 2.0. A 2.0 compatible Basic compiler is currently being worked on.

Included Packages and Tools
This release of Mono includes an impressive array of tools and third-party (open source) packages:

  • Bindings for the Cairo API
  • A provider for the Firebird Database engine
  • The complete Npgsql Database
  • IKVM for running Java on Mono
  • Nunit for unit tests
  • The XSP application server
  • Modmono to run ASP.NET on Apache
  • makecert for generating PKCS#12 files
  • prj2make for converting Visual Studio project files into make files for Mono on Linux
  • dtd2xsd, which converts DTD from an XML file into XML Schema definitions
  • mono-xmltool for validating XML files and doing XSLT transforms from the command line
  • mono-service for starting services based on the System.Services API
  • permview for displaying declarative permissions in an assemble
  • mono-shlib-cop, which watches managed assemblies for errors or suspicious behavior
  • A profiler with code coverage capability
  • A runtime for JavaScript
It also includes a cool tool called Mkbundle. Mkbundle takes a .NET application and creates a "bundle" or .exe, which contains everything needed to execute the application, including the libraries and the runtime engine; you can just copy the .exe to a machine and run the application without having to install .NET. As far as I know you can't do that with Visual Studio.

The current big missing piece is code access security; a lot of work has been done on this, but there are still a couple of pieces missing, and the auditing of the class libraries has barely started. The problem is that this type of security is either 100% or 0%; even the smallest piece that is incomplete will be the door intruders come in through. Work on this continues and is expected to be complete for the Mono 2.0 release.

The Past and Future
The first official release of Mono was version 1.0, released on June 30, 2004. It had a complete C# compiler, a second C# compiler capable of compiling generics and a limited subset of other C# 2.0 enhancements, a runtime, ASP.NET, GTK# graphics, core libraries and much of the base class libraries, IKVM for running Java applications under Mono, and some development tools. It was missing Winforms, Windows-specific system functions such as COM interop, and a number of classes that were close to but not completely implemented.

The next release of Mono is Mono 2.0 (not to be confused with .NET 2.0) and is planned for release in Q3 of 2007. It is expected to have full .NET 2.0 API support; code access security (CAS) should be complete; it should include both VB.NET version 8 (including generics) and GCC compilers, compacting garbage collection, and integration with Visual Studio and Apple X-Code IDEs. It will also include a subset of the Microsoft "Indigo" and InfoCard technologies, which have been started as a Mono subproject code-named "Olive." Olive is a massive undertaking that will be building on the System.Workflow, System.Query, System.Xml.Xling, and System.Windows.Serialization (including xaml and xamlc support). Mono currently has a need for developers to get involved with Olive, especially those interested in writing test code.

Mono C# Compiler
Over two years ago the Mono C# compiler was forked into a 1.1 branch and a 2.0 branch that supported generics. Since then, changes in either compiler were manually duplicated in the other branch. The main reasons for the fork were that the specifications for generics were changing, and the generics-enabled compiler was somewhat experimental and not guaranteed to be as stable as the main Mono C# compiler. Now that the C# 2.0 standards are fixed and the generics compiler stable, the two code bases have been merged. There are still two separate compilers, but, with the exception of the tokenizer and parser, both compilers are built from the same source code.

Grasshopper 2.0 Preview
Mainsoft has released a preview version of Grasshopper 2.0. I reviewed version 1.0 when it was released last year (see DNDJ, Vol. 3, issue 7). Grasshopper converts .NET byte code to Java byte code and supplies a Java version of the .NET framework classes, enabling .NET applications to run under Java virtual machines. This release supports converting Visual Studio 2005 projects to run on J2EE V2, C# 2.0, and partial support for the .NET 2.0 Framework (emphasis is on ASP.NET 2.0 compatibility). There are a number of issues with the preview release, such as no VB.NET support, limited support for generics, Tomcat is the only supported app server, and the options for connecting to SQL Server are limited, so keep in mind that this is a just a technology preview. I will report on further previews and the final product as they are released. One interesting feature of this release is that it uses the CECIL tool to help with the .NET to JVM conversion. Mainsoft has long been a big supporter of Mono, and has donated much of the Grasshopper code to the Mono project. More details and downloads can be found at http://dev.mainsoft.com/default.aspx?tabid=236.

Mono now has a new Web page listing commercial users of Mono (http://www.mono-project.com/Companies_Using_Mono#Who_uses_Mono.3F). It currently lists 18 companies that depend on Mono for cross-platform support for their applications. Several of these such as imeem, Source Gear, and Mainsoft have already been mentioned in previous columns. Others were new to me, such as the embedded database from VistaDB; Versora, which uses Mono for Windows to Linux migrations (check out their white papers on migrating to Linux at http://versora.com/support/documentation.php); the SplendidCRM (see their announcement at http://news.tmcnet.com/news/2006/08/15/1794955.htm), and Fanfare, which makes test automation software for equipment manufacturers and uses Mono to satisfy their customers who want to run their FanFare runtime on non-Windows systems. I recommend visiting this page because it is educational just to see who is using Mono, and how they are using it.

Milestone for Portable.NET
Portable.NET is also receiving commercial help. Back in January (Vol 5, issue 1), Portable.NET announced two $4,500 grants from Trumf to complete LibJit and a JIT compiler for PNET. Both projects are now sufficiently complete to award the prizes, and the money has been split three ways between Kirill Kononenko, Aleksey Demakov, and Klaus Treichel. This JIT complier also makes another milestone by being able to compile Winforms-based applications. See the screenshots at http://maybe.dotgnu.info:8000/~krokas/screenshots/, but note that only the ones done in June are Winform applications; the older ones are GTK based. There is also one (in German) of the marshaling code in the new JIT at http://maybe.dotgnu.info:8000/~krokas/screenshots/Screenshot-9.png. It's an application for selling train tickets.

MonoDevelop
MonoDevelop, an IDE for use on Linux, has released version 0.12 as was mentioned in my September column. This is really getting to be a nice IDE, and it now has its own Web site at http://www.monodevelop.com/Main_Page. It's Gnome based, and is meant for use on Linux/Unix systems. It has a complete GUI designer, built-in help for the .NET API (based on the Mono documentation, which still needs a lot of work), and includes code completion and an add-in engine that includes a full API and a number of extension points that make writing add-ins easy. Some of the stock add-ins are a query add-in that makes working with databases a snap, and a NUnit add-in. You can see screenshots of both in action, as well as other images at www.monodevelop.com/Screenshots.

Odds and Ends
One of the most common problems with running .NET programs written for Windows on other platforms are hard-coded file and path names such as "\" instead of using the System.IO.Path.PathSeperator. On most non-Windows systems, the path separator is "/," so the hard-coded paths don't work. Mono now has a "compatibility" layer that corrects this. Before running Mono, define a system variable ($export MONO_IOMAP=(drive, path, or all) and the Mono runtime will convert the Window paths to Unix-compatible paths (see http://tirania.org/blog/archive/2006/Oct-05.html for details).

More Stories By Dennis Hayes

Dennis Hayes is a programmer at Georgia Tech in Atlanta Georgia where he writes software for the Adult Cognition Lab in the Psychology Department. He has been involved with the Mono project for over six years, and has been writing the Monkey Business column for over five years.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


IoT & Smart Cities Stories
After years of investments and acquisitions, CloudBlue was created with the goal of building the world's only hyperscale digital platform with an increasingly infinite ecosystem and proven go-to-market services. The result? An unmatched platform that helps customers streamline cloud operations, save time and money, and revolutionize their businesses overnight. Today, the platform operates in more than 45 countries and powers more than 200 of the world's largest cloud marketplaces, managing mo...
When Enterprises started adopting Hadoop-based Big Data environments over the last ten years, they were mainly on-premise deployments. Organizations would spin up and manage large Hadoop clusters, where they would funnel exabytes or petabytes of unstructured data.However, over the last few years the economics of maintaining this enormous infrastructure compared with the elastic scalability of viable cloud options has changed this equation. The growth of cloud storage, cloud-managed big data e...
Your applications have evolved, your computing needs are changing, and your servers have become more and more dense. But your data center hasn't changed so you can't get the benefits of cheaper, better, smaller, faster... until now. Colovore is Silicon Valley's premier provider of high-density colocation solutions that are a perfect fit for companies operating modern, high-performance hardware. No other Bay Area colo provider can match our density, operating efficiency, and ease of scalability.
ScaleMP is the leader in virtualization for in-memory high-end computing, providing higher performance and lower total cost of ownership as compared with traditional shared-memory systems. The company's innovative Versatile SMP (vSMP) architecture aggregates multiple x86 systems into a single virtual x86 system, delivering an industry-standard, high-end shared-memory computer. Using software to replace custom hardware and components, ScaleMP offers a new, revolutionary computing paradigm. vSMP F...
At CloudEXPO Silicon Valley, June 24-26, 2019, Digital Transformation (DX) is a major focus with expanded DevOpsSUMMIT and FinTechEXPO programs within the DXWorldEXPO agenda. Successful transformation requires a laser focus on being data-driven and on using all the tools available that enable transformation if they plan to survive over the long term. A total of 88% of Fortune 500 companies from a generation ago are now out of business. Only 12% still survive. Similar percentages are found throug...
At CloudEXPO Silicon Valley, June 24-26, 2019, Digital Transformation (DX) is a major focus with expanded DevOpsSUMMIT and FinTechEXPO programs within the DXWorldEXPO agenda. Successful transformation requires a laser focus on being data-driven and on using all the tools available that enable transformation if they plan to survive over the long term. A total of 88% of Fortune 500 companies from a generation ago are now out of business. Only 12% still survive. Similar percentages are found throug...
As you know, enterprise IT conversation over the past year have often centered upon the open-source Kubernetes container orchestration system. In fact, Kubernetes has emerged as the key technology -- and even primary platform -- of cloud migrations for a wide variety of organizations. Kubernetes is critical to forward-looking enterprises that continue to push their IT infrastructures toward maximum functionality, scalability, and flexibility. As they do so, IT professionals are also embr...
At CloudEXPO Silicon Valley, June 24-26, 2019, Digital Transformation (DX) is a major focus with expanded DevOpsSUMMIT and FinTechEXPO programs within the DXWorldEXPO agenda. Successful transformation requires a laser focus on being data-driven and on using all the tools available that enable transformation if they plan to survive over the long term. A total of 88% of Fortune 500 companies from a generation ago are now out of business. Only 12% still survive. Similar percentages are found throug...
As you know, enterprise IT conversation over the past year have often centered upon the open-source Kubernetes container orchestration system. In fact, Kubernetes has emerged as the key technology -- and even primary platform -- of cloud migrations for a wide variety of organizations. Kubernetes is critical to forward-looking enterprises that continue to push their IT infrastructures toward maximum functionality, scalability, and flexibility. As they do so, IT professionals are also embr...
The platform combines the strengths of Singtel's extensive, intelligent network capabilities with Microsoft's cloud expertise to create a unique solution that sets new standards for IoT applications," said Mr Diomedes Kastanis, Head of IoT at Singtel. "Our solution provides speed, transparency and flexibility, paving the way for a more pervasive use of IoT to accelerate enterprises' digitalisation efforts. AI-powered intelligent connectivity over Microsoft Azure will be the fastest connected pat...