2011-05-10 5 views
10

Je sais que C# plutôt bien et aime juste Visual Studio en tant qu'IDE. :) Mais maintenant je veux commencer à développer pour Android ...MonoDroid VS Java dans le développement android?

j'ai découvert MonoDroid et je voulais demander si elle a des inconvénients à ce qui rendrait Java plus préférable, ou devrais-je désinstaller Eclipse et plonger directement dans MonoDroid? Si je comprends bien, MonoDroid déploie/compile les applications android natives et n'a pas besoin d'un framework .net ou quoi que ce soit d'autre.?

Existe-t-il des limitations importantes à ce que je peux faire avec MonoDroid? Par exemple, avoir l'application en arrière-plan ou en utilisant des bibliothèques .net externes pour l'édition d'image, etc.

Répondre

5

Il y a beaucoup plus que juste un ensemble de wrappers fonctionnant sous davlick, à vrai dire, il y a beaucoup plus d'une relation horizontale entre MonoDroid et Android;

enter image description here

Quand est-ce en utilisant la même langue que les développeurs de systèmes d'exploitation deviennent un gros problème? Il y a beaucoup de programmeurs C++ qui se demandent comment utiliser BSD ou SVR5 et beaucoup de programmeurs C qui veulent savoir ce qu'il faut faire sous Windows ++ ...

+2

ok ... mais en termes simples, donc MonoDroid rulz ou MonoDroid sux? :) – Roger

+0

Si vous connaissez .net ou linux mono, ça vaut le coup de regarder pour le développement android. Être capable d'utiliser un éditeur de code familier avec une API familière est ce que je veux, plutôt que de m'inquiéter des arguments délégués passés implicitement à une classe interne! =) ça rulz !! – RandomNickName42

+2

Juste un FYI, le .NET Runtime fonctionne à côté de l'exécution Java sur Mono Android. Vous aurez deux garbage collector en cours d'exécution, et deux cadres. Cela peut avoir une incidence sur la durée de vie de la batterie, l'empreinte mémoire, etc. Pour moi, le sacrifice était acceptable, mais vous devez le déterminer par vous-même. – emalamisura

7

Une grande partie de la documentation disponible est en Java: si vous rencontrez des difficultés avec le comportement du téléphone lors de l'utilisation de MonoDroid, vous ne trouverez pas beaucoup d'informations d'aide ou de débogage.

3

Si vous écrivez en C# de toute façon, vous devrez l'intégrer dans un code Java, alors à quoi ça sert? Aussi, vous pouvez vous diriger vers un problème très difficile en essayant de comprendre les API qui ont écrit pour la programmation Java ...

+1

Je pense que le point est qu'il est fort sur C# que sur Java. Je pense que pour la plupart des développeurs C#, MonoDroid a beaucoup de sens. Oh, et le fait qu'il devrait être capable de partager la même base de code qu'une application existante, s'il en a un. Ce serait un gros argument de vente pour moi. – Andy

9

Je m'inquiétais de la même chose - la productivité en C# au lieu de jouer avec un langage inconnu, ou en développant la façon dont les développeurs OS l'ont voulu.

Il est facile de pros liste vs contre -

pros (de MonoDroid, pour les développeurs C#)

  • environnement de développement familier, peuvent se développer en utilisant Visual Studio
  • C# au lieu de Java
  • Actifs de code réutilisables - vous pouvez utiliser beaucoup de code dans votre projet iphone ou projet Windows Phone 7 en utilisant monotouch et le SDK WP7.

contre -

  • débogage pourrait être difficile, en raison du manque de documentation api de Google. Devra dépendre uniquement de la documentation monodroid.
  • il pourrait y avoir un décalage en ce qui concerne les dernières fonctionnalités de pointe - on peut supposer que l'équipe monodroid aura besoin de temps pour envelopper les dernières fonctionnalités android chaque fois qu'il y a une nouvelle version du système. Je ne sais pas comment vous pouvez utiliser les bibliothèques open source qui aurait évolué autour de la plate-forme Android, qui pourrait réduire le temps de développement
+2

De l'expérience du monde réel, je trouve que je peux réutiliser environ 50-60% de ma base de code, c'est avec l'abstraction absolue en utilisant MVC, et les modèles de repoistory. L'autre 40-50% est pur code UI, Android est particulièrement terrible et très verbeux quand il s'agit de faire des choses simples telles que l'utilisation des onglets, des vues gonflantes, etc. Le pourcentage monte un peu avec iOS à plus comme 70/30, et sur Windows Phone c'est environ 80/20. – emalamisura

3

Voici quelques points que vous pouvez ruminer:

  1. Application Android Les descriptions sont principalement écrites avec Java. Le SDK Android lui-même est écrit en Java.

  2. L'utilisation de Mono peut ne pas fournir toutes les fonctionnalités disponibles dans le SDK Java.

  3. Si vous êtes un développeur C#, vous ne pourrez pas trouver, en Java, certaines des fonctionnalités (cool) disponibles en C# (comme les délégués de propriété, etc.).

  4. Le code écrit en .NET peut être réutilisé pour d'autres environnements - cela peut vous faire gagner beaucoup de temps à apprendre un nouveau langage/environnement (comme l'objectif C) et à coder dessus.

  5. .NET étend la pile de développement Android avec ses bibliothèques et API existantes.

Je pense que les deux sont bons pour une certaine raison. Il sera très difficile de dire lequel est préférable pour le développement Android - à la fin, c'est à vous de décider.

2

Notez également que toute version créée en utilisant monodroid ajoute 4 Mo supplémentaires à la taille de fichier apk et augmente le temps de démarrage de l'application en quelques secondes.

Pour les applications simples, cela peut signifier une augmentation de 500 à 800% de la taille du fichier - ce qui est plutôt mauvais dans mon livre.