O Google liberou o J2ObjC, um tradutor que converte código Java em Objective C para iPhone e iPad. A ideia por trás do J2ObjC é permitir que desenvolvedores compartilhem código que não seja de interface de usuário de forma mais fácil entre dispositivos com Android ou servidores baseados em GWT que usam Java, e dispositivos com iOS que usam Objective C. O tradutor pode lidar tranquilamente com Java 6, apesar de ter sido descrito como de qualidade “entre alfa e beta”.
Atualmente, o processo de tradução envolve a conversão de java.lang.Object para NSObject, boolean para BOOL, byte para char, variáveis de instância para propriedades, inner class e classes anônimas viram outer class nomeadas, interfaces viram protocolos e os testes usando JUnit são convertidos em testes estilo JUnit. Em seguida, arquivo map define a conversão dos métodos Java em métodos da iOS Foundation. O processo é documentado em Design Notes e converteria, por exemplo,
int getLength(Listlist, int index) { return list.get(index).length(); }
em
- (int)getLengthWIthJavaUtilList:(JavaUtilList *)list withInt:index { return [(NSString *) [list getWithInt:index] length]; }
Como o código Java possui garbage collector, o tradutor também precisa gerenciar esse mapeamento. Desenvolvedores podem especificar quando usar a contagem de referências (o padrão), garbage collector com libgc (com –use-gc) ou contagem automática de recurso (ARC, –use-arc) na hora da tradução. Os desenvolvedores esperam tornar o ARC o padrão no futuro. Eles não planejam desenvolver qualquer tradução para interface de usuário, mas, em vez disso, pretendem focar na tradução da lógica da aplicação e de elementos que não sejam de interface de usuário.
O tradutor pode ser integrado ao fluxo de trabalho de desenvolvimento do XCode IDE ou com Maven e Make. O J2ObjC está disponível a partir do site Google Code, onde documentação e guias sobre seu uso também são oferecidos.
Com informações de The H