.NET, an alternative to Java
The .NET framework (pronounced Dotnet) is a runtime environment for software, created by Microsoft. It runs on Windows and there is a compatible software for Linux.
The version 4.5 is natively installed on Windows 8. It allows users to run applications on the classic desktop next to Modern UI applications that have WinRT for backend. See the diagram in the article on the Modern UI.
.NET offers a library of functions for graphical interfaces, data access, networks and Web applications, plus compilers and a virtual machine.
Mono is a version of .NET 2.0 compatible with Linux, made by Novell. After the acquisition by Attachmate of Novell, the Mono development team has decided to form an independent company, Xamarin. They continue the Mono project and provides commercial version for the main OS smartphone including Android and IOS.
Mono is portable: it can run on any UNIX, MacOS and Windows. There is a version of .NET for all systems which opens the way for Web applications on this platform.
An advantage of Mono is that it is possible to compile C# into native code for Linux and Windows, the exact same source code, performing the same games as shown Unity, which is specialized in games for Mono. They also work on mobile phones and game consoles.
In fact the programmer is primarily concerned with the choice of a programming language and tools to compile and APIs available to build the application.
Java vs. .NET? Which platform to choose?
To build an application now should we choose Java or. NET? Compatibility and richness of functionalities are the keys to a better choice, but other factor must be taken into account.
Since November 2008, Java is under a open source license, GPL, partially (the mobile version is not).
Many programming languages have been ported on this platform and are compiled to bytecode interpreted by the JVM. This includes Python and Ruby.
From there, a question arises: do we still need to Mono on Linux, and should we choose a tool based on a Microsoft proprietary technology, rather than a free and fully portable platform?
XAML or JavaFX
Mono and .NET had another advantage that was Silverlight, a Web technology using a lighweight multi-browsers version of .NET, and Mono provided a Linux port, Moonlight (which is now dropped).
For its part, Java includes JavaFX, that the main development tools (see at bottom) support.
We can say that both platforms have a tool for creating effective graphical user interface and that enhances productivity.
Publishers are more than reluctant to use the Modern UI to the extent that a game publisher has launched its version of Linux, SteamOS, and manufacturer are considering replacing MUI by Android operating under Windows! This second initiative is in favor of Java.
Even if you program on the desktop, mobiles are a factor to consider because it is a plus if you can reuse your experience a day on these devices. It is also an area where future development will be the most important.
The Java virtual machine, not free on smartphones, is supplanted by Dalvik, an alternative virtual machine for Android which is ported to some other OS too.
It is possible to program in C# on Android thanks to the port of .NET by Xamarin. It is the language of choice on Windows Phone.
Given the importance of Android, Java is the language that prevails on smartphones. The true alternative is here with Objective C for iOS.
Java comes with the advantages of seniority: stability, community, documentation, many development tools while .NET offers more openness: almost all languages, new ideas.
Under Windows 8. NET is kept for desktop applications, but is replaced by a subset for immersive applications on Modern UI. And MUI is the preferred interface for future Windows applications. So if you looking for a universal portability, HTML 5 may in fact be the solution.