Java remplacé par C# dans Android ?
Xamarin développe XobotOS, une solution qui annule l'utilisation de Java dans l'OS mobile de Google

Les rubriques (actu, forums, tutos) de Développez
Tags
Réseaux sociaux


 Discussion forum

Retrouvez le dossier complet de la rédaction
Le , par Hinault Romaric, Responsable Actualités
Alors que le procès entre Oracle et Google pour violation de brevet Java dans Android bat son plein, la startup Xamarin développe une solution pouvant permettre de ne plus utiliser le langage dans l’OS.

La société à l’origine de Mono pour Android, l’implémentation open source du framework .NET permettant la conception des applications natives Android en C#, s’est lancée dans un projet ambitieux avec pour objectif de remplacer le code Java dans Android par du code C#.

Le projet a donné naissance à XobotOS, une plateforme d’exécution d’applications pour Android entièrement en C# qui ne nécessite pas Java.



Pour parvenir à ce résultat, les développeurs de Xamarin ont utilisé Sharpen, un outil de conversion de code Java en C#. La société a dû améliorer Sharpen afin qu’il puisse gérer la complexité de la base du code Android. Certaines portions du code Java ont dû être portées manuellement.

L’analyse des performances de XobotOS a permis de constater une exécution plus rapide des programmes .NET par rapport aux programmes Java équivalents dans Android. Selon les développeurs du projet, la machine virtuelle Mono est mature avec des optimisations plus poussées que la machine virtuelle Dalvik de Google et profite de certaines fonctionnalités du Framework.NET dont ne dispose pas Java.

De plus, cette solution serait même plus avantageuse pour Google dans la mesure où Microsoft a proposé le langage C# et la machine virtuelle .NET à l’ ECMA pour standardisation, et la plateforme est couverte par la licence Microsoft Community Promise license permettant à Google d'obtenir une licence peu couteuse.

Pour l’instant, XobotOS n’est qu’un projet de recherche pour Xamarin qui n’a pas l’intention de le maintenir comme un projet autonome, mais l’utiliser comme une couche d’accès direct au système d’exploitation plutôt que de passer par la machine virtuelle Java pour améliorer Mono pour Android.

XobotOS a été publié comme un projet open source sous les termes de la licence Apache, sur GitHub. Une solution sur laquelle devrait se pencher Google pour contourner l'utilisation de Java dans Android ?

Le projet sur GitHub

Source : Xamarin


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Guyt54 Guyt54
http://www.developpez.com
Membre confirmé
le 05/05/2012 15:17
Je suis très loin d'être un développeur professionnel et je me sens de plus en plus dépassé par tout ça, mais je me permets quand même de vous donner mon avis, un prof (de systèmes embarqués) a toujours un avis sur tout.

J'avais regardé Java il y a quelques années, car l'idée de travailler avec un langage qui ne laisse pas de choix de programmer orientée objet me séduisait.

J'ai vite abandonné devant la complexité du design du UI, beaucoup de codes pour arriver à pas grand chose. Vous savez, ce qui m'intéresse c'est d'écrire des logiciels qui s’interface avec le monde réel et je veux pas passer des heures à concevoir et implanter un bouton. Et quand tu pars de Delphi ou Builder C++, disons que tu tombes de haut.

Android m'a presque réconcilié avec Java. Je regarde un layout en xml et un "dfm" Delphi et il me semble que ça se rapproche au niveau du principe. Je trouve que le design de l'interface avec Eclipse est encore trop laborieux et qu'on pourrait automatiser l'intégration au code, mais bon, il me semble que ça va dans la bonne direction.

Oracle devrait plutôt remercier Android pour le second souffle qu'il donne à Java. Il me semble qu'une alliance avec Google serait plus payante à long terme qu'une bisbille en cour. Microsoft doit rire dans sa barbe à les voir aller.

Bon, un véritable RAD Studio pour Wiindows en Java, c'est pour quand?
Avatar de Guyt54 Guyt54
http://www.developpez.com
Membre confirmé
le 05/05/2012 16:13
Citation Envoyé par kedare  Voir le message
C++ n'est pas considéré comme un langage attirant donc ça attire moins de devs, donc moins d'apps donc moins de parts de marché...

Si je peux me permettre, le C++ est très attrayant dans certains milieux (le miens en tout cas).

Pour beaucoup, sa compatibilité avec le C leur permettent de continuer de programmer exactement comme on programmait il y a 25 ans, sans la moindre évolution.

Programmation modulaire, orienté objet et événementielle, connait pas. Et pourquoi je changerais? J'ai déjà eu assez de difficulté à apprendre le C comme ça. Et puis, la programmation orientée objet, c'est beaucoup trop lourd et lent pour un microcontôleur, c'est écrit partout sur le net. Et au moins avec la programmation séquentielle, on sait où on s'en va.

Remarquez, je respecte les choix des individus, là où j'ai un problème c'est quand ça se passe au niveau de l'enseignement.

Bon, ça fait les états d'âme.
Avatar de nicroman nicroman
http://www.developpez.com
Modérateur
le 05/05/2012 16:38
Je vais me faire un ennemi de Guyt

Delphi est un mastodonte qui date des MFCs... (20 ans!) Il a surtout été pensé (un peu comme HTML) pour que des gens qui ne connaissent rien à l'informatique puissent faire une interface sans trop suer sang et eau, c'est le principe du RAD. Et comme tous les RADs, il fait 80% des choses bien, mais dès qu'on veut faire un truc plus "subtile" (les 20% restant), c'est la fin des haricots (et je ne parle pas de l'optimisation de code particulièrement nécessaire sur un smartphone ou on chasse le moindre mW).

Comparer Delphi à Java c'est un peu difficile tout de même:
Delphi regroupe: un EDI, un langage (du Pascal !!!!!! même si amélioré avec de l'orienté objet... enfin bon), un Framework ("VCL", c'est lui qui permet de faire un bouton en 2s), des librairies (pour les entrées sorties, des utilitaires, etc...), un constructeur d'application, pas un langage.

On peut donc comparer, C++, Java, C#, Objective-C, Pascal....
On peut rajouter des librairies au dessus de ces langages: stdlib, JDK, .Net, ...
On peut comparer les GUI frameworks: Qt (ou MFC), SWT, .Net, Android, iOS
On peut finalement comparer les EDI: Visual Studio, Delphi, Eclipse...

Il faut autant de temps (et de code) pour faire une fenêtre sous Java/SWT, C#/.Net, Java/Android, O-C/iOS....

A noter qu'il existe des RADs pour smartphones, et qui en général sont capable de produire des applications iOS/Android/RIM en prime... Par contre, il ne faut pas compter sur eux pour gérer une fenêtre OpenGL....

Pour revenir au sujet du thread:
L’intérêt actuel de la plateforme est triple: un langage mondialement utilisé (Java), un framework simple (Android, même si il y a plein de points que je n'aime pas), un EDI *gratuit* (Eclipse)...
Un passage à C# nécessiterait de porter le framework sur C# (pas très compliqué), de trouver un EDI pour C# (Visual Studio coûte quand même un bras, et la version gratuite est vraiment trop light) c'est déjà plus compliqué, et surtout de pondre une moulinette pour traduire le million d'applications existantes en C# ... Pas sur que ce soit très interessant....
Avatar de Guyt54 Guyt54
http://www.developpez.com
Membre confirmé
le 05/05/2012 16:54
Citation Envoyé par nicroman  Voir le message
Je vais me faire un ennemi de Guyt

Delphi est un mastodonte qui date des MFCs... (20 ans!) Il a surtout été pensé (un peu comme HTML) pour que des gens qui ne connaissent rien à l'informatique puissent faire une interface sans trop suer sang et eau,



J'adore! Hâte de voir la réaction de mes potes Delphi-Builder C++!
Avatar de nicroman nicroman
http://www.developpez.com
Modérateur
le 05/05/2012 17:18
Citation Envoyé par Guyt54  Voir le message
Programmation modulaire, orienté objet et événementielle, connait pas. Et pourquoi je changerais? J'ai déjà eu assez de difficulté à apprendre le C comme ça. Et puis, la programmation orientée objet, c'est beaucoup trop lourd et lent pour un microcontôleur, c'est écrit partout sur le net. Et au moins avec la programmation séquentielle, on sait où on s'en va.

Heu... c'est toujours de la programmation séquentielle hein ?
Et on faisait de la programmation Orientée "Objets" en assembleur sur C64 il y a 25 ans... Le C++ n'est absolument pas plus lourd que le C, il offre des outils de conception OO que le C n'a pas c'est tout !
Le Java est pour le coup plus complexe à mettre en oeuvre puisqu'il nécessite une JVM... Mais encore une fois, on parle de langage, programmation object-oriented, aspect-oriented, evements, services, tout ça c'est au niveau de la conception, pas du langage... je connais (hélas) de nombreux développeurs (en tout cas qui se présentent comme tel) qui font de la programmation fonctionelle et structurelle en Java !
Avatar de Guyt54 Guyt54
http://www.developpez.com
Membre confirmé
le 05/05/2012 18:09
Citation Envoyé par nicroman  Voir le message
Heu... c'est toujours de la programmation séquentielle hein ?
Et on faisait de la programmation Orientée "Objets" en assembleur sur C64 il y a 25 ans... Le C++ n'est absolument pas plus lourd que le C, il offre des outils de conception OO que le C n'a pas c'est tout !
Le Java est pour le coup plus complexe à mettre en oeuvre puisqu'il nécessite une JVM... Mais encore une fois, on parle de langage, programmation object-oriented, aspect-oriented, evements, services, tout ça c'est au niveau de la conception, pas du langage... je connais (hélas) de nombreux développeurs (en tout cas qui se présentent comme tel) qui font de la programmation fonctionelle et structurelle en Java !

Je suis d'accord avec toi pour dire que la programmation orientée objet est beaucoup plus un état d'esprit qu'un langage de programmation.

Perso, je n'ai jamais été doué en programmation (c'est d'ailleurs pour ça que je travaiille avec des outils pour les nuls comme XE2 Rad Studio ), alors j'ai toujours eu tendance à cacher mes données compliqués dans des structures que je manipulais avec des fonctions, alors quand j'ai vu la POO arriver, j'ai vu ça comme une libération. J'étais plus obligé de manipuler des pointeurs de stuctures dans mes fonctions et ça, pour un nul, ce n'est pas rien.

Je ne dis pas que des langages comme Java obligerait une approche orientée objet lors du développement d'applications dans mon petit monde des microprocesseurs, mais ça aiderait surement.
Avatar de madfu madfu
http://www.developpez.com
Membre éclairé
le 10/05/2012 0:14
Bon, un véritable RAD Studio pour Wiindows en Java, c'est pour quand?

Lol je me suis longtemps posé cette question, mais bon ça a l'air d'évoluer quand même

Delphi est un mastodonte qui date des MFCs... (20 ans!) Il a surtout été pensé (un peu comme HTML) pour que des gens qui ne connaissent rien à l'informatique puissent faire une interface sans trop suer sang et eau,

Je trouve ça intéressant comme remarque. J'ai arrêté Delphi il y'a presque 8 ans mais je vais me faire l'avocat du diable pour rendre à Delphi ce qui est à Delphi : je dois reconnaître que je n'ai plus trouvé aucun RAD destiné à du desktop par la suite qui lui arrive à la cheville en terme de puissance et de simplicité d'utilisation, en particulier dans le monde Java qui je reconnais fourmille de librairies très intéressantes en backend mais qui ne disposait, en tout cas jusqu'à ma dernière expérience qui s'est arrêté l'année dernière, que d'outils front-end destinés à des gens ultra compétents destinés à suer sans et eau pour produire quelque chose de relativement moche.

A noter qu'il existe des RADs pour smartphones, et qui en général sont capable de produire des applications iOS/Android/RIM en prime... Par contre, il ne faut pas compter sur eux pour gérer une fenêtre OpenGL....

J'avoue j'en ai trouvé quelques uns qui sont pas mal, ça reste pratique pour du prototypage. Après je pense qu'il ne viendrait à personne à l'idée de gérer une fenêtre openGL avec un outil RAD il faut savoir être raisonnable

Je trouve même qu'au niveau du C# c'est plus chiant lors de l'héritage (virtualiser puis override les méthodes)

Tiens comme en Delphi d'ailleurs

Concernant le sujet de ce thread, je dirais que c'est une initiative intéressante voire même amusante si ça peut permettre à Android de sortir de la JVM mais bon je n'y crois pas, le produit est encore en phase de recherche apparemment et en terme de positionnement je ne suis pas sûr que Google tienne à se retrouver étiquetté C#.

Après le fond de ma pensée c'est que l'avenir sur mobile ne sera pas dans le natif donc en tant que développeur j'attends surtout d'Android qu'il s'améliore dans la prise en charge de CSS3 par exemple.
Avatar de pitbull78 pitbull78
http://www.developpez.com
Membre actif
le 10/05/2012 17:27
C'est bien beau, mais je développe en C# et Java et je voudrais savoir comment utiliser XobotOS ?
Avatar de Gugelhupf Gugelhupf
http://www.developpez.com
Membre émérite
le 11/05/2012 18:15
Citation Envoyé par Guyt54  Voir le message
Pour beaucoup, sa compatibilité avec le C leur permettent de continuer de programmer exactement comme on programmait il y a 25 ans, sans la moindre évolution.

Ce que vous dite me fait peur.
Le C++ n'a presque rien à voir avec le C (hormis la compatibilité qu'on force cherche à garder du C).
Si c'est pour se mettre à coder du C pour dire qu'on fait du C++ ça ne sert à rien.
Alors oui, on peut forcer la compatibilité, mais si c'est pour se mettre à caster des malloc pour que le programme fonctionne...
J'imagine le projet sans class, constitué uniquement de structures...
Avatar de Mishulyna Mishulyna
http://www.developpez.com
Membre Expert
le 14/05/2012 14:32
Citation Envoyé par Guyt54  Voir le message

J'avais regardé Java il y a quelques années, car l'idée de travailler avec un langage qui ne laisse pas de choix de programmer orientée objet me séduisait.

J'ai vite abandonné devant la complexité du design du UI, beaucoup de codes pour arriver à pas grand chose. Vous savez, ce qui m'intéresse c'est d'écrire des logiciels qui s’interface avec le monde réel et je veux pas passer des heures à concevoir et implanter un bouton.


Vous pourriez faire un tour sur PrimeFaces showcase, le développement des GUI c'est devenu beaucoup plus facile. Il reste encore pas mal de subtilités mais c'est nettement mieux que JSF.
Avatar de jean-michel-78 jean-michel-78
http://www.developpez.com
Membre régulier
le 01/06/2012 15:13
je ne comprends pas trop on s'écarte du sujet dans les commentaires coder la VM en C# c' est bien mais
ça change quoi pour les applis je n ai pas vu ou on en parle moi je dis vivement tizen
pour qu'on puisse coder facile
Offres d'emploi IT
Développeur javascript
CDI
AMETIX - Ile de France - Paris (75000)
Parue le 15/07/2014
Développeur fullstack javascript
CDI
Mobiskill - Ile de France - Paris (75017)
Parue le 10/07/2014
Ingénieur étude et développement C# WCF (H/F)
CDI
BK Consulting - Ile de France - Paris (75000)
Parue le 08/07/2014

Voir plus d'offres Voir la carte des offres IT
 
 
 
 
Partenaires

PlanetHoster
Ikoula