.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.

Components of .NET

Programmers under. NET enter a universe of systems and components to use.

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.

The following languages work on .NET: Ada, APL, Basic, C#, C++, COBOL, Eiffel, Fortran, Haskell, Oberon, Objective Caml, Pascal, Perl, Python, Ruby, Scheme , SmallTalk. A full list is given in the CLI article (see links at bottom).

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 that never beats the original, 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).
But Silverlight is abandoned in the Metro interface under Windows 8 and replaced by HTML 5 + JavaScript or XAML + C#. Whether XAML or HTML 5, even if the principles differ, it is easy to describe an interface.
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.

Mobiles

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 alternative is here with Objective C for iOS.

Conclusion

Java comes with the advantages of seniority: stability, community, documentation, many development tools while .NET offers more openness: almost all languages, new ideas.
The question of compatibility appears to fade with time, the two platforms trends to be both more portable and universal.
Under Windows 8. NET is kept for desktop applications, but is replaced by a subset for  immersive applications on Metro. And Metro is the preferred interface for future Windows applications. But it is the same for Java. So if you looking for a universal portability, HTML 5 may in fact be the solution.

Informations and tools

Download the Visual Studio Express IDE to build .NET applications from the tool pages.

See also...