.NET comme alternative à Java

Le framework .NET (prononcer Dotnet) est un environnement d'exécution de logiciel créé par Microsoft. Il fonctionne sur Windows et a un logiciel compatible sur Linux. .NET offre une bibliothèque de fonctions pour les interfaces graphiques, l'accès aux données, les réseaux et les applications Web, des compilateurs et une machine virtuelle.
Le 12 novembre 2014, la compagnie a annoncé qu'elle rendait .NET open source (sous licence MIT) et qu'il fonctionnerait dorénavant aussi sur Linux et MacOS.
La version 4.5 est installée d'origine sur Windows 8. Elle permet de faire fonctionner les applications pour le bureau classique, à coté des applications du Modern UI qui ont WinRT en backend.

.NET ou Java, lequel choisir?

Le programmeur est surtout concerné par le choix d'un langage de programmation et des outils pour le compiler ainsi que des API disponibles pour réaliser l'application. Les langages suivants fonctionnent sur .NET: Ada, Basic, C#, C++, Cobol, Eiffel, Fortran, Haskell, Oberon, Pascal, Perl, Python, Ruby, Scheme, SmallTalk. Voir la liste complète.

Passage à l'open source

Mono est une version pour Linux compatible avec .NET 2.0 réalisée par Novell. Après le rachat de Novell par Attachmate, l'équipe de développement de Mono a décidé de former une compagnie indépendante, Xamarin. Elle poursuit le projet Mono et fournit des versions commerciales pour les principaux smartphone, dont Android et iOS.

Mono est portable: il peut fonctionner sur tous les UNIX, sur MacOS et sur Windows. Il existe donc une version de .NET pour tous systèmes ce qui ouvre la voie aux applications Web sur cette plateforme.
Un avantage de Mono est qu'il est possible de compiler C# en code natif sous Linux ou Windows, le même code source exactement, de réaliser même des jeux comme le montre Unity qui s'est spécialisée dans le jeux sous Mono. Ils fonctionnent aussi sur les mobiles et les consoles de jeux.

En avril 2014, Microsoft a décidé de rendre .NET réellement open source et pour se faire de le placer sous l'égide d'une fondation indépendante, la .NET Foundation. Elle fournit le code source des compilateurs C# et Visual Basic pour différents systèmes, en reprenant le code de Microsoft et celui de Mono. ASP.NET devient aussi open source. Pour la robotique le Micro Framework, sera aussi géré par la fondation et sous licence Apache.

En novembre 2014 Microsoft porte elle même .NET sous Linux et Mac OS. Cela comprend le coeur et le framework de .NET, outre ASP.NET et le compilateur C#. Le runtime, autrement dit le JIT sont prévus sur GitHub pour 2015.
Même Visual Studio devient gratuit avec la version Community.

Pourquoi ce revirement vers l'open source? Rendre .NET plus ouvert aura de nombreux bénéfices:

En 2015, Microsoft introduit .NET core, une architecture modulaire pour remplacer le framework .NET (qui était en fait plusieurs frameworks selon les types de systèmes). Cela fournit une bibliothèque de classe unique pour tous les types d'appareils et est open source. Cela permet par exemple d'implémenter ASP.NET sur Linux.

Qu'est-ce qui est open source dans .NET?

Dans le diagramme ci-dessous (de Microsoft, traduit en français et grisé par Scriptol.fr), les composants open source sont sur un fond de couleur, et sur fond gris les composants fermés, et qui ne fonctionnent que sous Windows.

.NET 2015

Open source:

Fermés:

Code source de .NET sur GitHub.

Faut-il utiliser Java ou .NET?

Pour réaliser une application actuellement, faut-il choisir l'environnement Java ou .NET? Compatibilité et richesse des fonctionnalités sont les clés pour un meilleur choix, mais d'autres facteurs sont à prendre à compte.

Depuis novembre 2008, Java est sous licence Open Source, GPL au moins partiellement (ce n'est pas le cas de la version mobile).
Plusieurs langages de programmation on été portés sur cette plateforme et sont compilés en bytecode interprété par la JVM. Notamment Python et Ruby.

.NET est maintenant géré par une fondation indépendante, et depuis novembre 2014 est maintenant aussi libre que Java (qui ne l'est pas sur mobiles en fait). On dispose aussi de Visual Studio en version gratuite pour réaliser des applications pour tous systèmes.

C# est plus moderne et plus complet que Java mais pas plus que Scala + la bibliothèque Java. On choisira surtout en fonction de ce que propose la bibliothèque pour une application donnée.

XAML ou JavaFX

Mono et .NET avaient un atout, c'était Silverlight, une technologie du Web utilisant une version allégée de .NET multi-navigateurs, et pour laquelle Mono offrait un port sous Linux, Moonlight, maintenant abandonné.
Mais Silverlight ne fonctionne pas dans l'interface Modern UI de Windows 8 et remplacé par HTML 5 + JavaScript ou XAML + C#. Que se soit XAML ou HTML 5, même si les principes sont différent, il est facile de décrire une interface avec un langage déclaratif.
De son coté, Java dispose de JavaFX, que supportent les principaux outils de développement (voir en bas de page).
On peut dire que les deux plateformes disposent d'un outil de création d'interface utilisateur graphique efficace et qui améliore la productivité.

Les éditeurs sont plus que réticent à utiliser Modern UI, au point qu'un éditeur de jeu ait lancé sa propre version de Linux pour ne pas l'utiliser, SteamOS, et que les fabricants envisagent de remplacer MUI par Android, fonctionnant dans Windows! Cette seconde initiative plaide en faveur de Java.

Les mobiles

Même si on programme sur le bureau, les mobiles sont un facteur à prendre en compte, car c'est un plus si on peut réutiliser son expérience éventuellement sur ces appareils. C'est aussi un domaine où les développements à venir seront les plus importants

La machine virtuelle Java, payante sur mobiles, est supplantée par Dalvik, un interpréteur alternatif pour Android et qui se trouve porté aussi sur d'autres OS.
Il est possible de programmer en C# sur Android grâce au port de .NET par Xamarin. C'est le langage de prédilection sur Windows Phone.
Vu l'importance d'Android, Java est le langage qui l'emporte sur les smartphones. La vraie alternative est ici avec Objective C d'iOS.

En 2014, Microsoft a ajouté .NET Native à Visual Studio: la possibilité de compiler le code source en langage binaire, pour la boutique Windows Store, donc sur mobiles ou Windows 8. Ainsi on passe l'étape qui consiste à compiler le bytecode lors de la première utilisation d'une application. Cela économise l'espace occupé par les fichiers en langage intermédiaire.

Conclusion

Java se présente avec les avantages de l'ancienneté: stabilité, communauté, documentation, outils de développement nombreux, tandis que .NET offre plus d'ouverture: presque tous les langages, des idées nouvelles,
Sous Windows 8, .NET est conservé pour les applications sur le bureau classique, mais est remplacé par un sous-ensemble pour les applications immersives de Modern UI. Et MUI est l'interface privilégiée pour les nouvelles applications Windows. Donc si l'on cherche un portabilité universelle, HTML 5 peut être en fait la solution.

Si vous optez pour .NET, téléchargez l'EDI Visual Studio pour réaliser des applications fonctionnant sur .NET.
Et si vous êtes indécis, sachez que JSC recompile les assembly .NET en JavaScript, PHP ou Java...

Les composantes de .NET

Les programmeurs sous .NET intègrent un univers de systèmes et de composants à utiliser.

Nouveaux composants: