Google fournit un outil permettant de se rapprocher des performances du code natif, sans pour autant sacrifier les avantages du SDK : la simplicité d’utilisation et, surtout, la portabilité. Cet outil se nomme Renderscript. Il a été conçu pour développer des éléments graphiques gourmands en ressources, comme les LiveWallpaper ou les carrousels 3D de certaines applications, en s’affranchissant de l’architecture matérielle. Mais il est aussi l’outil idéal dès que l’on a besoin de performances, notamment pour les calculs.
Les téléphones Android actuels possèdent de plus en plus de coeurs et les architectures des processeurs se diversifient. Par exemple, le Galaxy S3 de Samsung possède 4 coeurs et Intel sort un téléphone équipé d’un processeur x86. Cette diversification, et non fragmentation, complique le travail du développeur quand on en vient à l’optimisation. Le SDK permet de développer des applications en utilisant des API en Java pour la Machine Dalvik. Le code est alors exécutable sur l’ensemble des plateformes qui possèdent un portage de cette machine (ARM, x86...). Le principal problème de l’ensemble Java, Dalvik et Garbage Collector est de ne pas pouvoir assurer des performances proches du code machine. Une solution existe pour interfacer du code C/C++ avec du code Java, avec le Native Development Kit (NDK) et Java Native Interface (JNI). Seulement cette approche demande d’écrire beaucoup de code et ce qui est gagné en performance, est perdu en portabilité. Effectivement, le code du NDK doit être compilé en binaire et ne ciblera donc qu’une seule architecture. Il faudra autant de binaires ou de packages que d’architectures. Cependant, il existe une solution développée par Google qui change la donne, elle s’appelle Renderscript.
Sylvain Galand