Más de uno podrá preguntarse si hay necesidad de hacer un programa que traduzca de Java a Objective-C. Una buena razón para realizar tarea semejante es que Java es el lenguaje de Android mientras que Objective-C es el lenguaje de iOS. Esto podría explicar porqué Google está detrás de este proyecto.

j2ObjC es un traductor de código fuente en Java a Objective-C. Nótese que esto no es un compilador cruzado, en donde uno escribe en un lenguaje y se compila para otra plataforma, sino que se trata de un traductor de código fuente. Como Java y Objective-C son dos lenguajes orientados a objetos, y además, son estructurados por bloques con similares estructuras de datos, no suena muy difícil intentar esta traducción en términos generales. El problema empieza no en la sintaxis sino en las llamadas a cada sistema en particular.

La intención de j2ObjC es permitir a Java ser parte ded una aplicación construida en iOS. El blog de Google (sobre código abierto), lo pone de la siguiente manera: “j2ObjC permite al código en Java ser parte de una app en iOS ya que no se requiere editar los archivos generados. La meta es escribir una aplicación que no tenga que ver con la interfaz gráfica (como por ejemplo, el acceso a datos o la lógica de la app) en Java, la cual puede ser compartida por las apps de Android, las apps web (usando GWT) e iOS”.

El sistema convierte las clases de Java en las de Objective-C que usan el marco de desarrollo de iOS. Se dice que soporta Java 6, incluyendo excepciones genéricas y threads (hilos de ejecución). La página del proyecto describe esto como una calidad entre alpha y beta, asignándole a la versión inicial el número 0.5.

El sistema traductor aún no puede convertir un programa en Java a Objective-C y habrá que trabajar mucho para portar apps. Sin embargo, parece ser un buen comienzo. j2ObjC está por el momento limitado porque no hace la parte más complicada del trabajo de la conversión, que es la de convertir precisamente el código de la interfaz gráfica. Google ha aclarado que no hay ningún plan para crear una especie de toolkit para lidiar con el problema de la interfaz gráfica. Se trata -dicen- de convertir partes importantes del código.

Para poder erjecutar el sistema, se necesita una Mac que corra OS X con Java y XCode instalado. La traducción puede hacerse automáticamente. Google indica que usa ya esta herramienta para proyectos internos ¿Será?

Referencias: Página del proyecto