Origins of .NET on Linux: An explanation for Java Developers
The .NET framework is a relatively young technology when compared to the rest of computer science history, but as it turns fourteen this year, we can look back and see a long-standing record of innovation, developer productivity, and more recently a refreshing open-source mentality from Microsoft that has resulted in the first ever release of (the official) .NET framework in a Linux distribution.
.NET is a development platform that includes several programming languages, notably C# and Visual Basic, and the .NET web framework. Microsoft Visual Studio itself is built on .NET, along with numerous open-source applications including the notable Gnome-Do (a quick-launch utility similar to the Windows key quick-launch) and KeePass (a password manager).
Origins, parallels to Java, ahead of its time
The fact that .NET development actually started in the late 1990s is little known, and at the time the framework was referred to as “Next Generation Windows Services” or NGWS. The official announcement for .NET on June 22, 2000 arrived nearly a full two years before version 1.0 of the framework was released, and was part of a larger rebranding and refocusing effort on behalf of Microsoft. This effort would (as history shows) likely re-define Microsoft’s products and services vision as they prepared for the internet-enabled age, eventually offering Office Online and other web-driven tools.
Often compared to the Java Virtual Machine (JVM) and its ecosystem of JVM runtime languages, the .NET framework provides a broad selection of programming languages to choose from. But, unlike Java’s JVM (which has been used coincidentally as a platform for alternative language development), the .NET runtime was built with polyglot programming in mind; version 1.0 of .NET was released on Feb 13, 2002, and included the first Common Language Interface (CLI) and Common Language Runtime – enabling multiple programming languages to be interpreted and executed in the same application.
At the time of its release, similarly again to Java’s JVM, the .NET CLI would not yet be recognized by the programming language community for its full potential. C# (C-sharp) and Visual Basic were the primary development languages delivered with the initial release (paired with the ASP.NET web framework). The first release already demonstrated the power of polyglot programming, but the CLI and CLR would later enable dozens of languages to be implemented within the .NET ecosystem.
Microsoft approached .NET very seriously, and Bill Gates himself took the opportunity to devote his full attention to the project as chief software architect. Not without its problems, however, .NET suffered from some initial usability issues and bugs that gave Microsoft the opportunity to quickly and fully show its intent to support the technology. Making good on their promise to provide a “cohesive, user-driven” experience, Microsoft released .NET version 1.1 in less than a year, fixing numerous fatal error scenarios and other bugs in the framework.
Progress continued, platform stabilized
The next iteration of .NET took longer to arrive (released nearly three years later on January 22, 2006), but version 2.0 introduced critical development productivity features for C# that built on and surpassed some of those recently introduced in Java SE 5.0 – anonymous methods, iterators, partial classes, support for 64-bit devices, and truly generic types that did not suffer from many of the problems faced by the Java generics implementation.
Only ten months after version 2.0 was made available, .NET Framework 3.0 was released November 21, 2006, and did not include a CLI or CLR update, new programming language features, nor a .NET Compact Framework release (for mobile devices, similar to Java Mobile Edition.) This release was mainly a rebranding effort, bringing the WinFX framework (already built on .NET) into the .NET ecosystem.
Version 3.5 also followed the same trend as its predecessor, providing no major language or runtime updates, but the release of version 4.0 would prove to be more substantial, including improved support for parallel computing, new language features to further improve developer productivity, and would provide the iteration of the CLI that is still in use nearly seven years later today in .NET version 4.6.
Joining the open source community
The .NET framework has had un-official open-source support since 2004, when the Mono Framework was released as an open-source alternative to Microsoft’s .NET runtime. Mono was initially announced in 2001, shortly after Microsoft’s own announcement of the .NET framework. This early adoption of .NET by the open-source is an example of how rapidly the open-source community has changed the culture of software development.
Last year, nearly a decade after the initial release of Mono, Microsoft announced that would release .NET Core as open source, a move which earned some credibility and kudos in the Mono development community, but is not without its own controversy. Some critics of the technology giant say that the gesture is “too little, too late”, and that an official open-source .NET still won’t be able to catch up with the momentum Java has built in the last twenty years. The open sourced code includes both the CLI, CLR, framework libraries such as collections and Networking APIs, and more. All of the .NET open source code is publicly hosted on GitHub.
The news that .NET has been made available as open-source comes in tandem with the latest news that Microsoft is partnering with Red Hat Software to provide .NET on Linux. Red Hat is an open-source software champion best known for its enterprise-grade distribution of the Linux operating system, Red Hat Enterprise Linux (RHEL).
A Red Hat and Microsoft partnership is particularly relevant because Linux is a popular operating system used on web servers, and the ability to run .NET in production Linux environments provides additional flexibility and choice for companies choosing production platforms. Red Hat has also recently offered the ability to host containerized .NET applications on its OpenShift open-cloud platform. Microsoft will also begin offering RHEL as an option on its Azure cloud platform, which provides a similar feature set to OpenShift.
For additional information and articles on .NET Core visit our .NET Core web page for more on this topic.