- Il ne supporte qu'une partie des API disponibles dans J2SE
- La machine virtuelle est Dalvik.
Je vais tenter de référencer les problèmes auquels on peut s'attendre lorsqu'on tente d'utiliser une librairie java sur android dans une série d'articles. J'ouvre le bal avec AWT :
- Références à AWT et Swing interdites
Eh bien c'est un peu un problème de conception du J2SE : Lorsqu'on souhaite par exemple faire du traitement sur des fichiers d'images (lecture, écriture, redimensionnement, ...), la plupart du temps on utilise ce que nous propose J2SE c'est à dire java.awt.Image...
Si vous tentez de référencer awt dans votre propre code on vous averti gentillement à la compilation.
Si vous avez récupéré directement le .jar de votre librairie, vous pouvez facilement savoir quelles parties de J2SE sont utilisées avec le fabuleux utilitaire jarjar disponible ici
java -jar jarjar-1.0.jar find class javamail-1.4.2\mail.jar "%JAVA_HOME%\lib\rt.jar"Avec un pipe et un grep vous trouverez facilement ce qui vous intéresse...
Que faire si des références sont trouvées ?
Certaines classes appellent des fonctions natives de l'interface, dans ce cas, vous êtes fichus. Pour beaucoup d'autres, il n'y a pas d'objection technique à les utiliser, je vous suggère d'extraire ce qui vous intéresse des implémentations opensource OpenJDK ou d'Apache Harmony. Une fois ceci fait, toujours en utilisant jarjar, renommez les références des packages java.awt et java.swing de votre "sous ensemble de jre maison" et dans la librairie.
Etant donné le travail important que cela nécessite, n'hésitez pas partager dans vos commentaires, vos efforts d'adaptations de librairies !
A suivre : Le Classloader et le chargement dynamique...