Google a
publié
J2ObjC, un traducteur qui convertit du code Java en Objective C pour
iPhone et iPad par exemple. L'idée derrière J2ObjC est de permettre aux
développeurs de partager du code non-UI plus facilement entre des
périphériques Android ou des applications GWT qui utilisent Java avec
des appareils iOS utilisant Objective C. Le traducteur peut traiter du
code Java 6 qui est décrit comme "actuellement entre une phase alpha et
bêta de qualité."
Le processus de traduction consiste actuellement en la conversion de :
- java.lang.Object à NSObject
- boolean à BOOL
- byte à char
- Les variables d'instance deviennent des propriétés
- Les classes inner et anonymous sont converties en classes spécialement nommées pour ces cas.
- Les interfaces deviennent des protocoles
- Les tests JUnit sont converties en une version assez spéciale
- Un fichier de mapping définit ensuite la conversion des méthodes Java en méthodes Foundation iOS.
Ce processus est documenté dans le
Design Notes et permettrait par exemple de transformer ceci :
1 | int getLength(List<string> list, int index) { |
2 | return list.get(index).length(); |
en ceci :
1 | - (int)getLengthWIthJavaUtilList:(JavaUtilList *)list withInt:index { |
2 | return [(NSString *) [list getWithInt:index] length]; |
Comme le code Java est
garbage collected,
le traducteur doit également gérer le mapping dans son ensemble. Les
développeurs peuvent spécifier si celui-ci utilise le comptage de
référence (valeur par défaut), le
garbage collection avec libgc
(en mettant --use-gc) ou bien l'Automatic Resource Counting (ARC en
mettant --use-arc). Les développeurs espèrent mettre l'ARC par défaut
dans les prochaines releases mais n'ont pas l'intention de développer
une interface utilisateur multi-plateforme et préfèrent se concentrer
sur la traduction de la logique applicative et d'autres éléments non-UI.
Le traducteur peut être intégré dans le workflow de développement de l'IDE Xcode 4 ou bien avec Maven et Make.
J2ObjC est disponible sur Google Code avec la documentation et les guides.
Enregistrer un commentaire