Les développeurs Linux devraient-ils s'intéresser à Mono ?
Un développeur défend la plateforme
Le 2015-06-19 21:16:05, par Olivier Famien, Chroniqueur Actualités
Mono est un projet open source mis en œuvre en 2004 afin de porter le Framework .net sur plusieurs plateformes. Le succès réel de celui-ci a été remarqué depuis 2011, c’est-à-dire avec la reprise de cette plateforme par Xamarin afin de favoriser le développement des applications à la fois pour Windows, Linux, Android et iOS.
Depuis lors, on assiste à plusieurs itérations de cette plateforme s’efforçant d’assurer une compatibilité avec le langage C#, les API de la norme ECMA, le serveur Web de la technologie ASP.NET, etc.
Plusieurs avantages peuvent être donc reconnus à cette plateforme, mais le constat consternant est que la plateforme est assez peu utilisée par les développeurs Linux. Un éditorialiste nous donne cinq raisons qui devraient pousser tout développeur Linux à considérer Mono lors du choix de sa plateforme de développement.
Premièrement, l’équipe à la base du projet assure une veille permanente par rapport à C# afin d’intégrer les dernières versions du langage. Par exemple dans la version 3.8 du projet, l’équipe a intégré une préversion de C# 6.0. De ce fait, nous avons une intégration des fonctionnalités telles que les constructeurs primaires, les filtres d’exception, l’opérateur Nameof pour ne citer que ceux-là. Les développeurs C# n’ont donc pas de soucis à se faire, car aussi bien sur Windows avec .net que sur les autres systèmes avec Mono, ils arriveront à tirer parti de l’ensemble des fonctionnalités offertes par ce langage.
Deuxièmement, Mono est soutenu par MonoDevelop, un environnement de développement intégré multiplateforme incluant un débogueur, un environnement graphique pour la conception d’interfaces graphiques en Gtk#, un outil de visualisation des classes, une complétion de code ainsi que bien d’autres fonctionnalités. Les développeurs sous Linux ne sont donc pas obligés d’investir dans un EDI à grands frais pour utiliser Mono.
Troisièmement, Mono évolue avec l’ère du temps. Les smartphones étant en grande progression au fil des années, il est possible de développer des applications Android et iOS avec Mono. Toutefois, deux facteurs un peu limitants sont à prendre en compte pour ces plateformes. Pour compiler une application pour iOS, il va falloir utiliser OSX et également débourser environ 300 dollars pour obtenir la version commerciale de l’EDI de Xamarin afin de générer une version compilée des applications pour iOS.
Quatrièmement, Mono est multiplateforme. Cela sous-entend que les applications conçues sur Windows tourneront sans difficulté avec Mono sur les plateformes telles que Linux, Mac OS X, BSD, Sun Solaris, Nintendo Wii, Sony PlayStation 3, Apple iPhone et Android. Seules quelques spécifications telles que les applications WPF ne pourront pas être prises en charge.
Et en dernier point, vous pouvez utiliser Mono dans un projet développement de jeux. Dans ce sens, nous avons l’éditeur de scripts Unity qui peut être utilisé avec Mono.
En résumé, voici quelques raisons qui somme toute peuvent être prises en compte par les développeurs de la plateforme Linux afin d’adopter Mono.
Toutefois, les raisons évoquées ci-dessus peuvent également s’appliquer à de nombreuses autres plateformes de développement disponibles sur Linux. Et Mono sur Linux ne bénéficient pas de la même richesse que .NET Framwork, qui est intimement lié à Windows. Ce qui représente un gros frein pour son adoption par de nombreux développeurs. Il faut aussi noter que les développeurs Linux sont plus orientés dans le développement des solutions embarquées et des outils, dont l’accès aux ressources systèmes pousse ces derniers vers des langages comme C.
De plus, avec la publication de .NET Core, une implémentation open source de .NET soutenue par Microsoft, Mono pourrait perdre de sa pertinence et les développeurs pourraient plus se lancer dans l’adoption de cette dernière.
Source : Dice.com
Et vous ?
Que pensez-vous de ces arguments ? Les trouvez-vous convaincants ?
Quel est le frein selon-vous à l’adoption de Mono sur Linux ?
Pensez-vous que les développeurs Linux devraient s’intéresser à Mono ? Pourquoi ?
Depuis lors, on assiste à plusieurs itérations de cette plateforme s’efforçant d’assurer une compatibilité avec le langage C#, les API de la norme ECMA, le serveur Web de la technologie ASP.NET, etc.
Plusieurs avantages peuvent être donc reconnus à cette plateforme, mais le constat consternant est que la plateforme est assez peu utilisée par les développeurs Linux. Un éditorialiste nous donne cinq raisons qui devraient pousser tout développeur Linux à considérer Mono lors du choix de sa plateforme de développement.
Premièrement, l’équipe à la base du projet assure une veille permanente par rapport à C# afin d’intégrer les dernières versions du langage. Par exemple dans la version 3.8 du projet, l’équipe a intégré une préversion de C# 6.0. De ce fait, nous avons une intégration des fonctionnalités telles que les constructeurs primaires, les filtres d’exception, l’opérateur Nameof pour ne citer que ceux-là. Les développeurs C# n’ont donc pas de soucis à se faire, car aussi bien sur Windows avec .net que sur les autres systèmes avec Mono, ils arriveront à tirer parti de l’ensemble des fonctionnalités offertes par ce langage.
Deuxièmement, Mono est soutenu par MonoDevelop, un environnement de développement intégré multiplateforme incluant un débogueur, un environnement graphique pour la conception d’interfaces graphiques en Gtk#, un outil de visualisation des classes, une complétion de code ainsi que bien d’autres fonctionnalités. Les développeurs sous Linux ne sont donc pas obligés d’investir dans un EDI à grands frais pour utiliser Mono.
Troisièmement, Mono évolue avec l’ère du temps. Les smartphones étant en grande progression au fil des années, il est possible de développer des applications Android et iOS avec Mono. Toutefois, deux facteurs un peu limitants sont à prendre en compte pour ces plateformes. Pour compiler une application pour iOS, il va falloir utiliser OSX et également débourser environ 300 dollars pour obtenir la version commerciale de l’EDI de Xamarin afin de générer une version compilée des applications pour iOS.
Quatrièmement, Mono est multiplateforme. Cela sous-entend que les applications conçues sur Windows tourneront sans difficulté avec Mono sur les plateformes telles que Linux, Mac OS X, BSD, Sun Solaris, Nintendo Wii, Sony PlayStation 3, Apple iPhone et Android. Seules quelques spécifications telles que les applications WPF ne pourront pas être prises en charge.
Et en dernier point, vous pouvez utiliser Mono dans un projet développement de jeux. Dans ce sens, nous avons l’éditeur de scripts Unity qui peut être utilisé avec Mono.
En résumé, voici quelques raisons qui somme toute peuvent être prises en compte par les développeurs de la plateforme Linux afin d’adopter Mono.
Toutefois, les raisons évoquées ci-dessus peuvent également s’appliquer à de nombreuses autres plateformes de développement disponibles sur Linux. Et Mono sur Linux ne bénéficient pas de la même richesse que .NET Framwork, qui est intimement lié à Windows. Ce qui représente un gros frein pour son adoption par de nombreux développeurs. Il faut aussi noter que les développeurs Linux sont plus orientés dans le développement des solutions embarquées et des outils, dont l’accès aux ressources systèmes pousse ces derniers vers des langages comme C.
De plus, avec la publication de .NET Core, une implémentation open source de .NET soutenue par Microsoft, Mono pourrait perdre de sa pertinence et les développeurs pourraient plus se lancer dans l’adoption de cette dernière.
Source : Dice.com
Et vous ?
-
tomlevRédacteur/ModérateurQu'est-ce qui te fait dire ça ? async/await est tout à fait supporté par Mono.
http://www.mono-project.com/docs/abo...compatibility/
Il n'y a que pour ASP.NET que le support de l'asynchrone est incomplet.
Tu n'as pas du bien regarder... C# a commencé comme un quasi-clone de Java, avec quelques trucs en plus, et a évolué beaucoup plus vite pour proposer beaucoup plus de features. Quelques trucs utiles qui existent en C# mais pas en Java (liste non exhaustive) :
- types valeur
- passage de paramètres par référence
- propriétés
- delegates (grosso modo, des pointeurs de fonction)
- événements
- itérateurs (permettent de générer facilement des séquences de façon lazy)
- types anonymes (rien à voir avec ceux de Java, ça ne remplit pas le même rôle)
- Linq (Java 8 a les streams, mais Linq pousse le concept beaucoup plus loin)
- de vrais génériques réifiés (Java implémente les génériques en utilisant le principe de type erasure, donc les génériques n'existent plus lors de l'exécution)
- typage dynamique (principalement pour l'interop avec des langages dynamiques)
- async/await pour la programmation asynchrone
- expression trees
- pointeurs (rarement utilisés, mais utiles dans certains scénarios où les performances sont critiques)
Pour l'instant, la seule feature de Java que j'aime bien et qui n'existe pas en C#, c'est les default methods.
Pour ce qui est de mieux connaître Java, C# y ressemble suffisamment pour que tu ne sois pas perdu.
La même chose qui se passerait si Oracle abandonnait Java... c'est open-source, donc la communauté peut le reprendre sans problème.
Cela dit, ça me semble hautement improbable que MS abandonne C#, qui est sans doute la meilleure chose que MS ait produite ces 15 dernières années. Ce serait vraiment se tirer une balle dans le pied, tous les développeurs tourneraient le dos à MS et iraient voir ailleurs.le 23/06/2015 à 10:58 -
tomlevRédacteur/ModérateurC# n'a rien à voir avec ECMAScript. ECMAScript est un standard pour des langages de script, implémenté notamment par JavaScript. Par contre, C# 2 est standardisé par l'ECMA.
En fait cet argument ne tient plus vraiment, dans la mesure où le nouveau compilateur C# MS fonctionne sous Linux. Donc il n'y a plus "besoin" de Mono pour compiler du code C# sous Linux (et même pour l'exécuter, puisque le nouveau runtime "CoreCLR" est multi-plateforme). Après, rien n'empêche de continuer à utiliser Mono, mais ce n'est plus la seule option.
Eeeeeuuuuuuuuh... mouais, on y est pas encore vraiment. Certains types d'application fonctionneront sans modifications d'une plateforme à l'autre (applis console qui n'utilisent aucune fonctionnalité spécifique à la plateforme, applis web qui n'utilisent pas de fonctionnalité spécifique à IIS...), mais déjà pour tout ce qui est application "desktop" c'est mort, vu que les frameworks UI sont complètement différents d'une plateforme à l'autre (il y a bien GTK#, mais c'est un peu limité par rapport à WPF par exemple).
Maintenant, c'est vrai qu'on peut partager pas mal de code entre les plateformes. Il faut juste bien séparer les parties UI pour pouvoir en faire une implémentation différente pour chaque plateforme.
C'est vrai, mais c'est sans doute pour de mauvaises raisons (principalement, le mépris de tout ce qui vient de MS, et la perception que "C# c'est que pour Windows". Espérons que les mentalités vont changer maintenant que C# est open-source. Le langage a suffisamment de qualités pour intéresser toutes sortes de développeurs. le 22/06/2015 à 16:33 -
GraffitoExpert éminentNeckara: Mais concrètement, moi, qui me prétend développeur Java, est-ce que je gagne vraiment à passer au C# ?
- la qualité de Visual Studio (On dévellope sous windows et on exécute l'exe résultant directement sous Linux),
- le framework (.net ou mono) qui intègre la quasi totalité des fonctions de base, contrairement à Java qu'on doit compléter par de nombreux modules genre spring, struts, xstream, hibernate, apache, xerces, ...
le 23/06/2015 à 23:04 -
tomlevRédacteur/ModérateurAnders Hejlsberg est également à l'origine de TypeScript
Certes, mais il faut avoir un QI de 150 pour vraiment le comprendre et s'en servir correctement
C# ou Java sont quand même beaucoup plus accessibles, et généralement plus productifs.
Sous Linux en particulier, je ne vois pas vraiment d'arguments en ce sens. Pendant longtemps il y avait des arguments contre, mais ils n'ont plus de raison d'être aujourd'hui.
Par contre, pour utiliser C#, indépendamment de la plateforme, il y a plein d'arguments. Le principal étant le fait que c'est "simplement un très bon langage bien foutu", comme l'a si bien dit Pierre Louis
Ouais, enfin il y a quand même pas mal de contraintes à respecter pour que ça marche... notamment ne rien utiliser qui soit spécifique à Windows
Et puis VS n'existe que sous Windows, donc je doute que cet argument soit de nature à convaincre Neckarale 24/06/2015 à 1:18 -
Paul TOTHExpert éminent sénior1) je doute que les "développeurs Linux" soient fan de C#
2) les "développeurs Linux" ont déjà des IDE OpenSource pour leurs langages
3) le "développeur Linux" ne cherche pas à développer pour iOS et sous Android il peut accéder directement à la sous-couche Linux
4) le "développeur Linux" cherche à amener des utilisateurs sous Linux par la qualité de ses productions, et certainement pas à porter ces atouts sur d'autres plateformes
évidemment, c'est ma vision du "développeur Linux" si toutefois ceci veux dire quelque chose.le 20/06/2015 à 13:21 -
Laurent 1973Membre chevronnéEn fait, c'est des arguments qui cherche juste à indiquer que C# et .net fonctionne sous Linux (presque) aussi bien que sous Windows.
Par contre, il ne cherche pas à convaincre que l'environnement mono est mieux que les autres.
En plus, la remarque sur iOS est hors de propos et dessert le message de l'article (je m’interroge sur la culture informatique de l'éditorialiste)
=> Quelque soit la technologie utilisée, il vous faudra un Mac pour compiler une application pour iOS
Il serait intéressant, plutôt, d'avoir un comparative avec d'autre système, comme:
- mono vs java
- mono vs python/django
- mono vs javascript (+ cordova pour mobile)
- mono vs c/c++
- mono vs pascal objet
- ....
Si mono n'apporte pas un plus en terme de productivité, les linuxiens n'ont en effet aucun intérêt à adopter cet environnement.
Le seul argument que je retiens de cet article, c'est le support à Unity vu que ce framework de jeu utilise C# pour ses scripts.le 22/06/2015 à 11:40 -
tomlevRédacteur/ModérateurJe ne comptais pas non plus lancer un débat, je répondais juste à ta question (enfin techniquement tu n'as pas posé de question, mais tu disais que tu n'avais pas d'arguments pour privilégier C#, donc je t'en donne
)
En fait, j'ai l'impression qu'on ne débat pas tout à fait de la même chose : moi je me suis focalisé sur le langage (ce que tu appelles les features "bas niveau", indépendamment de tout framework (ce que tu appelles les features "haut niveau" , alors que toi tu considères le tout (langage + framework).
En termes de framework et d'écosystème, Java n'a effectivement rien à envier à C#. Purement en termes de langage, par contre, C# a clairement l'avantage.
Pourquoi ça ? C'est juste une formalisation d'un "pattern" répandu (getter/setter) ; en Java ou en C++, il n'y a techniquement aucun lien entre le getter et le setter. C# a juste formalisé ça, ce qui simplifie la tâche des outils comme les designers, sérialiseurs, etc. Qu'est-ce qui te gêne au juste ? Peut être le fait qu'on ne réalise pas qu'on appelle en fait une méthode quand on accède à une propriété ?
Effectivement, si tu as une grosse base de code existant en Java, ça n'a pas de sens de passer à C#... Par contre si tu pars sur du neuf, c'est une option à envisager.
Potentiellement, oui, parce que le langage permet d'exprimer certaines choses plus facilement et plus efficacement qu'en Java.
Pas spécialement. Tu peux écrire du bon code ou du code dégueulasse dans n'importe quel langage (quoique certains langages tendent à encourager le code dégueulasse... PHP, I'm looking at you)
C'est vrai. Si je commençais demain à bosser sur un projet Java, je n'aurais pas de mal avec le langage, mais il me faudrait du temps pour apprendre à connaitre le framework et les outils.
C'est une petite subtilité de C# avec laquelle les débutants ont souvent du mal. Mais en pratique, tu as assez rarement l'occasion de t'en préoccuper (surtout si les types valeurs que tu manipules sont immuables, ce qui est fortement conseillé).
NHibernate
Cela dit je déteste NHibernate, si tu as besoin d'un ORM je te conseillerais plutôt Entity Framework.
Le compilateur de la prochaine version (C# 6), qui ne devrait plus tarder à être finalisé, est totalement open-source (licence Apache).
.NET Core (future version du .NET Framework, réécrit pour être modulaire et multi-plateforme), est également open-source.
Certaines parties du framework ne sont effectivement pas (ou pas encore) open-source (principalement des trucs spécifiques à Windows, comme WPF)
Un peu tard il me semble... ce n'est pas le genre de chose sur lequel tu peux revenir facilement. D'autant plus que le code a déjà été cloné par un paquet de gens... une fois que c'est dans la nature, c'est trop tard pour le récupérer. Le changement d'attitude de MS vis-à-vis de l'open-source a bien redoré leur blason, un revirement serait catastrophique pour leur image. Ce scénario ne me semble pas du tout plausible.
Oui, mais encore une fois, on pourrait dire la même chose sur Java
Idem
D'où mon message précédent
Le langage C# lui-même n'est pas optimisé pour une plateforme en particulier. Le CLR (la machine virtuelle), en revanche, est certainement optimisée pour Windows, vu qu'elle ne tourne que sous Windows
Le nouveau CoreCLR, en revanche, existera pour plusieurs plateformes, et j'ose espérer qu'il sera optimisé pour chacune de ces plateformes.le 24/06/2015 à 1:00 -
Pierre Louis ChevalierExpert éminent séniorJe crois que tu n’a pas bien lu la news et que tu nà rien compris au système de news du club developpez.
Ça n'est pas du tout les propos du "chroniqueur actualité", il ne fait que rapporter ces propos (pas terrible j'en conviens aussi), pour qu'on puisse en débattre.
C'est ça le but : en débattre entre nous pour témoigner du pour et du contre, ces propos ne sont qu'un prétexte pour lancer le débat (ou le troll si tu préfère).
Le lancé de trolll à très bien marché vu que le débat à démarré, j'ai même appris deux ou trois trucs personnellement en le lisantle 05/07/2015 à 23:34 -
Pierre Louis ChevalierExpert éminent séniorS'il y à des fans de Mono, et il y en à , bref C# sous Linux, ils doivent avoir leurs raisons. Un exemple avoir appris C# pour faire des jeux avec Unity 3D, ou avoir fait des jeux en C# pour windows et autres plateformes Microsoft, puis vouloir réutiliser ce langage (plutôt très bon comparé à PHP par exemple) pour la partie serveur, tout en exploitant des batteries de serveurs Linux peu couteux comparé à des serveurs windows. Je pense que le plus gros des développeurs Mono ont "upgradés" à partir de Python/Perl/PHP/... vers C# que "downgradé" à partir de Java...le 23/06/2015 à 21:33
-
Pierre Louis ChevalierExpert éminent séniorTu veux baser tes raisonnements sur de la pure logique c'est tout à ton honneur.
Je pense que le plus gros des développeurs Mono ont essayés un jour C#, ont pensé que "C# c'est cool", et certains se sont dit pourquoi pas sous Linux et ils ont fait Mono...
C# est simplement un très bon langage bien foutu, il à été créé par un pur génie nomé Anders Hejlsberg, qui était avant d'etre recruté à coup de millions de dollars par Microsoft le créateur du Pascal Objet/Delphi Langage chez Borland, un autre excellent langage qui à encore à ce jour de nombreux fanboys (désormais chez embarcadero ex codegear ex inprise ex borland).
Donc si te je répond : parce ce que "C# c'est cool," est ce que ça répond à tes interrogations scientifiques purement cérébrales et objectives ?le 23/06/2015 à 22:19