J2Objc : Traduire un code Java en Objective-C

Android et Apple
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

Rate this post

1 COMMENTAIRE

Répondre à Walid Farhi Annuler la réponse

Please enter your comment!
Please enter your name here