Introduction
Il y a un peu moins d’un an, j’écrivais un article nommé Windows phone 7 VS Android : point de vue d’un développeur, où j’exposais mon point de vue sur les deux plateformes, et leurs intérêts pour les développeurs d’applications.
Mais un an après, les choses ont changées, en partie. Il est donc temps de rejouer le match !
One Year After
Que ce soir du côté de Windows Phone 7 ou d’Android, nous avons vu, en l’espace d’un an, paraitre plusieurs événements majeurs.
Côté Microsoft, la mise à jour Mango a été déployée. Elle apporte un lot conséquent de nouveautés, que ce soit pour l’utilisateur ou les développeurs. Je vous conseille cet article de Pierre Cauchois pour en savoir plus. Nokia a également rejoint la bataille il y a quelques mois, et a réellement aidé à diffuser Windows Phone auprès du grand public, avec sa gamme Lumia.
Côté Android, malgré une version 3.0 relativement intéressante, le système n’a pas convaincu, d’autant que la version 4.0 était très attendue. En effet, celle-ci avait pour but de réunir enfin smartphones et tablettes sur la plateforme. Le miracle est arrivé en Octobre dernier. Même si sa présence n’est pas encore grande, cette version 4.0 porte de nombreux espoirs ! D’ailleurs, il suffit de voir la vidéo suivante pour s’en convaincre :
Les outils
Un an après, les outils ont-ils beaucoup évolué ? Oui et non.
Côté Android, on retrouve toujours Eclipse et Netbeans. Néanmoins, l’IDE intelliJ de chez Jetbrains s’est joint à la bataille. Ce dernier est très apprécié de bon nombre de développeurs Java, mais dispose néanmoins d’une intégration à Android moins poussée que ce qu’on peut avoir sur Eclipse (oubliez les interfaces graphiques pour modifier vos ressources par exemple).
Néanmoins, du côté d’Eclipse justement, de nombreuses améliorations ont eu lieu. Ainsi, l’éditeur d’interfaces graphiques est enfin utilisable et pratique, et nous propose, via une nouveauté nommée Android Lint, de petites astuces de performance pour nos interfaces. Peu intrusif et très pratique !
Malgré tout, il reste toujours quelques bugs parfois (le xml qui disparait de l’écran par exemple), et le système DDMS n’a que peu évolué (même s’il était déjà très complet). Côté émulateur, c’est beaucoup plus rapide qu’avant, mais ça reste un peu douloureux, particulièrement pour émuler une tablette.
Du côté de Visual Studio, pas de changements majeurs, mais des nouveautés bienvenues. On note par exemple un outil complémentaire à l’émulateur, et qui permet de simuler une localisation pour le GPS, de jouer avec l’accéléromètre, et de prendre des screenshots facilement. Finie la galère des captures d’écran pour le marketplace !
D’ailleurs, concernant ce dernier, un nouvel outil nommé Marketplace test kitpermet de lancer quelques tests de conformité avant de publier votre application. Au niveau des vérifications, on y trouve la gestion du bouton back, le temps de démarrage, la gestion de la mémoire etc. Il y a également une liste de tests à faire manuellement, pour que vous puissiez être vraiment sûr que votre application est parfaitement conforme. Enfin, vous pouvez maintenant changer le skin de votre émulateur. Vous en rêviez n’est-ce pas ?
Au final, les deux partis ont apporté des améliorations appréciables, mais Visual Studio n’en reste pas moins bien plus pratique que son concurrent open-source !
Parlons design
Commençons par l’essentiel : le design d’interfaces n’a pas changé de façon de faire en un an. Android utilise toujours du xml pour définir les contrôles visuels, et WP7 a conservé le célèbre XAML (qui sera également utilisé dans Windows 8).
Néanmoins, au niveau des outils, des améliorations ont fait leur apparition. Du côté WP7, on trouve plus de maturités et de plus en plus de toolkits sont disponibles, sans parler de celui de base qui est de plus en plus fourni. On disposait déjà d’outils très performants comme Blend, de ce côté-là, difficile de faire mieux.
Côté Android en tout cas, on a vu arriver une véritable révolution : un éditeur visuel ENFIN performant. Un positionnement intuitif, des menus contextuels très bien pensés pour modifier les propriétés, une possibilité très simple de créer des interfaces spécifiques pour les tablettes ou différentes versions d’Android, sans compter Android Lint dont j’ai parlé avant. Sans attendre un niveau de qualité comme celui de Blend, On a enfin un outil utilisable !
Mais il manquait un élément important à la plateforme auparavant : des guidelines pour le design. Et voilà que le 12 Janvier dernier, Google a ouvert un site justement dédié au design pour Ice Cream Sandwich. Bon nombre de règles restent néanmoins applicables aux précédentes versions. Le site est très bien fait et comble un véritable manque pour la plateforme. Allez y faire un tour !
http://developer.android.com/design/index.html
Malgré tout, Android est en train de payer cher sa fragmentation. Bon nombre de propriétés d’animation et de rendu graphique sont apparus avec Android 3.0 (rotation ou alpha par exemple), et ne sont donc pas compatibles sur Android 2.x, vous devrez donc vous arranger autrement. Sur Windows Phone, on dispose depuis le début de nombreuses propriétés d’animation (même si on ne dispose pas des effets de Silverlight comme les ombres ou le blur).
A mon sens, même si Android a pas mal rattrapé son retard, WP7 conserve une bonne longueur d’avance en matière de création d’UI.
Les fonctionnalités
Ici, toujours aussi difficile de faire des comparaisons. En effet, Android nous propose l’accès à à peu près tout le système. Cela nous donne un grand contrôle, mais donne parfois une impression de devoir tout recoder, et ça peut vite devenir long.
Un bon exemple est celui du stockage d’informations. Pour nos applications, on peut passer par un système de préférences, le système de fichier, ou une base de données SQLLite. Certes, on a le choix, mais quid de la facilité d’utilisation ? Montrez la base de données à des débutants, vous allez vite voir le regard qu’ils vont vous jeter.
A contrario, sur Windows Phone 7, on dispose effectivement d’une base de données embarquée, mais nous pouvons tout à fait s’en passer grâce à l’isolated storage, qui est d’utilisation très simple.
De plus, avec l’arrivée de Mango, de très nombreuses fonctionnalités supplémentaires sont apparues. On peut citer les sockets, les tâches de fond, les alarmes et reminders, l’accès aux calendriers et aux contacts, une API pour la caméra… En somme, une liste impressionnante de possibilités qui sont apparues, et qui sont simples d’accès. Ce n’est pas encore Android, certes, mais on s’en approche. Vous voulez une preuve qu’il reste du chemin à faire ? Pas d’accès au Bluetooth sur Windows Phone. Dommage non ?
Au final, même si les fonctionnalités sont parfois difficiles d’accès sur Android, elles restent plus nombreuses (avec les problèmes de sécurité inhérents).
Ecosystème
Avec plus de 10 milliards d’applications téléchargées, et 700 000 Android activés par jour, difficile de faire concurrence avec Windows Phone, qui, même s’il dispose d’une forte progression, et à vraiment commencé à se
répandre avec l’arrivée de Nokia sur le marché, il reste encore du chemin à parcourir. De plus, Android est présent sur les tablettes, ce qui n’est pas le cas de son concurrent (même si une fois Windows 8 sorti, il est assez facile de porter ses applications WP7).
Conclusion
En un an, de grosses évolutions ont eu lieu dans les deux camps. Windows Phone 7 reste, à mon sens, plus pratique et agréable pour les développeurs. Néanmoins, Android propose plus de fonctionnalités différentes, et cible surtout bien plus d’utilisateurs (sans compter les tablettes). De plus, il reste encore certaines API manquantes qui interdisent d’office à WP7 d’avoir certains types d’application (Bluetooth par exemple).
Néanmoins, sachez qu’il est possible de porter une partie de son code depuis WP7 vers Android, et inversement (merci la ressemblance entre C# et Java), du moins du côté de la logique. Vous pouvez toujours développer sur ces deux plateformes en même temps non ?
Et quid des technologies web ? Développez pour un webbrowser et l’embarquer dans une application avec une librairie comme PhoneGap ? Hum… Vous voulez parler d’une application qui ne respecterait pas les guidelines de chaque plateforme et offrirait donc une expérience dégradée ? Non, vous pouvez oublier.

























