Google的J2ObjC工具可以将Java代码转换为iOS的Objective-C

Google已经将J2ObjC开源出来的,这是一个将Java代码转换为Objective-C的工具。

在此项目的wiki页面上有介绍,项目的初衷是解决一个app要在不同的平台上(Android,iOS)用不同语言开发两次的问题。
J2ObjC能够解决这个问题的大部分,它能够将你项目中的业务逻辑代码(Java)转换为对应的Objective-C代码;但是它不能转换界面代码。这是因为J2ObjC的开发者认为开发出高可用的iOS界面必须通过iOS的XCode工具,而不是生硬的转换或移植。

J2ObjC转换出的代码,使用了iOS Foundation Framework并能够集成到XCode中编译,运行或优化,与通过你自己新创建的XCode工程是一样的。

下面我们看看J2ObjC转换代码的几个关键步骤。

  • Dead Code Elimination
  • 这个步骤是用来删除Java文件中的无用代码,无用的代码当然无需转换了。

  • Rewriter
  • 这个步骤是将一些Java代码重写,这些Java代码是与Objective-C不能对应的代码,如静态变量。

  • Autoboxer
  • 这个步骤是处理整型类型数据,把Java中的原始的整型类型int转换为对象类型Integer。

  • iOSTypeConverter
  • 将Java的类转换为Objective C对应的类。

  • iOSMethodConverter
  • 将Java的方法申明中的参数和返回值类型转换为Objective C对应的参数和返回值类型。

  • InitializationNormalizer
  • 将Java中的初始化语句,全部转移到类的构造函数中。

  • AnonymousClassConverter
  • 将Java的匿名类转换为Objective C的内部类。

  • InnerClassConverter
  • 将Java内部类转换为Objective C的外部类,在同一个包内。

  • DestructorGenerator
  • 给每个生成的Objective C类增加一个析构方法。

Java代码转换为Objective C代码的最大问题是内存管理,Java代码是不会显示调用析构方法或finalize方法,而Objective C是需要的。
J2ObjC提供了几种管理无用对象的方法,默认的是对象引用技术方法。

J2ObjC还处于Alpha阶段,不过在Google内部已经有几个项目用了此工具。

另外一个类似的工具是XMLVM,它可以将Java,.NET, Ruby代码转换为.NET, Java, JavaScript, Python, Objective C代码。由它的名字可以想到,XVLVM将源代码的二进制文件先转换为XML,然后再将XML转换为另外一个虚拟机上的二进制文件,或者是源代码。

原文参考 Converting Java to Objective-C with Google’s J2ObjC

转载请注明:运维派 » Google的J2ObjC工具可以将Java代码转换为iOS的Objective-C

1
4.7k
2