Apres avoir pris la tête du marché des systèmes d’exploitations pour mobile avec Android, grâce a l’ouverture de ce dernier. Google pousse le bouchon encore plus loin en mettant à disposition des programmeurs un outil de traduction qui traduit le Java (langage utilisé par Android) en Objective-C (langage utilisé par iOS). Une initiative plutôt intrigante !
Explications de Google : Le but principal derrière cette initiative est de permettre aux programmeurs d’applications Android d’étendre leurs applications à iOS Dans un marché ou la concurrence fait rage, ainsi ils pourront toucher plus d’utilisateurs. L’autre but est d’éviter au programmeur d’être dans le dilemme « programmer pour Android ou pour iOS ? » ainsi leur choix se portera automatiquement pour l’OS de Google.
Du coté technique J2Objc gère uniquement la logique du programme, Google préférant laisser la gestion des interfaces à l’outil de développement Xcode.
Les développeurs de J2Obc ont néanmoins du faire face à quelques problème techniques en relations avec les spécificités de chaque langage.
Exemple d’utilisation de J2Objc :
Code ‘Hello World’ en Java :
public class HelloWorld { public static void main(String[] args){ for (int i=0; i<5; i++){ System.out.println("Hello World " + (i + 1)); } } }
Transformation du code (sous une console Linux par exemple) :
./j2objc HelloWorld.java
Code 'HelloWorld.h' en Objective-C :
// // Generated by the J2ObjC translator. DO NOT EDIT! // source: HelloWorld.java // // Created by willard on 19.09.12. // @class IOSObjectArray; #import "JreEmulation.h" @interface HelloWorld : NSObject { } @end
Code de 'HelloWorld.c' en Objective-C :
// // Generated by the J2ObjC translator. DO NOT EDIT! // source: HelloWorld.java // // Created by willard on 19.09.12. // #import "HelloWorld.h" #import "IOSObjectArray.h" @implementation HelloWorld @end int main( int argc, const char *argv[] ) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; IOSObjectArray *args = JreEmulationMainArguments(argc, argv); for (int i = 0; i < 5; i++) { NSLog(@"%@", [NSString stringWithFormat:@"Hello World %d", (i + 1)]); } int exitCode = 0; [pool release]; return exitCode; }
Voir plus : Google j2objc
Alors là! Pousser les programmeurs à passer par la « minoritaire non négligeable » Android en premier c’est ce que j’appelle une révolution par Google :O