Pages

lundi 3 novembre 2014

Groovy alternative au langage Java pour créer une application native Android

Cédric Champeau travaille pour Pivotal sur le langage Groovy. Il avait fait le buzz en juin quand il a annoncé le support Groovy sur Android lors de la conférence Groovy GR8Conf Europe 2014. Le truc sympa c'est qu'il avait fait le merge de la pull request en direct lors de la conférence (voir le post Google+ de son comparse Guillaume Laforge). Cédric fait maintenant le tour des conférences pour présenter ce que Groovy peut apporter aux développeurs Android. Je vais essayer de revenir sur sa session faite fin octobre à SoftShake

Grovvy et Android, pourquoi ?
Le SDK Android est une implémentation spécifique du langage Java faite par Google. Ils sont partis d'une version Java 6 mais toutes les classes du SDK Java standard ne sont pas disponibles (pas de librairies graphiques et ajout de quelques librairies utilitaires pour accéder à la base locale, faire des appels distants...).

Quand nous sommes développeur Android, nous sommes donc cantonner à une vielle version de Java et ce n'est pas prêt de bouger au vu de la guerre entre Oracle et Google. Nous ne pouvons pas bénéficier des sucres syntaxiques offerts par les versions plus récentes de Java comme par exemple  les lambdas. Je parle des lambdas car dans une application Android, nous écrivons de nombreux listeners et nous n'arrêtons pas de créer des classes anonymes.

Groovy tourne sur une JVM et Groovy peut offrir tous les éléments pour simplifier le développement d'une application Android. Malheureusement ce n'est pas si simple car la JVM Android est aussi spécifique. Elle s'appelait Dalvik jusqu'à la version Lilopop (5.0). Aujourd'hui les équipes Google on réécrit la VM pour supprimer la compilation Just In Time afin de limiter la consommation de la batterie (version ART). Si le sujet vous intéresse j'ai écrit un article sur Dalvik et un sur ART.  

Revenons à notre sujet du jour. La création d'une application Android suit le workflow suivant

Les sources Java sont compilées pour obtenir le bytecode java puis ce bytecode est mis au format attendu par la JVM Android. Une application est au final une archive APK contenant un ensemble de ressources et de fichiers dex. L'archive est ensuite déployée sur un device Android et en fonction de la VM (ART ou Dalvik) le code est compilé ou non.

Groovy se compile en Java donc le workflow suivant doit fonctionner sans problème
Cette compilation statique est proposée avec la version 2 du langage (ajout de l'annotation @CompileStatic sur vos classes). Pour rappel Groovy est un langage a la base dynamique. Dans son mode standard beaucoup de choses sont faites au Runtime. Les principales difficultés étaient liées au fait que le SDK Android n'embarque pas toutes les classes Java et notamment les java.bean.xxx. Il a fallu adapter le code de Groovy. 

Pour le moment les modifications ne sont pas disponibles dans la version actuelle 2.3 mais devrait l'être dans la version 2.4. Mais vous pouvez tout de même utiliser la version béta de cette 2.4 pour commencer à bénéficier des apports de Groovy. 

Ce que Groovy peut appporter
Je ne vais pas refaire toutes les démonstrations de Cédric et je vous laisserai consulter ses slides mais je peux montrer deux captures qui peuvent montrer les possibilités



Groovy  peut permettre de simplifier le code verbeux d'une application classique juste avec ses concepts de base. Vous pouvez adopter Groovy progressivement puisque par défaut il est capable de fonctionner avec du code Java standard. 

Il existe un plugin gradle pour Groovy (heureusement vu que gradle c'est du Groovy...) et vous pouvez donc facilement vous pluguer dans un process de build standard.  

Conclusion
Personnellement je suis sorti de cette conférence en ayant envie de tester. Si vous avez envie de voir vous aussi le code d'une application, Cédric a mis à disposition le code de l'application exemple qu'il a montré à GR8Conf (l'application est téléchargeable sur Play Store).

Au niveau de la maturité il est intéressant de noter que des gros acteurs n'ont pas hésité à franchir le pas. Le New York Times a par exemple récemment annoncé que la version Android de leur application serait réécrite en Groovy.

Aucun commentaire:

Enregistrer un commentaire

Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.