Google 发布 J2ObjC 1.0:将 Java 转换为 Objective-C

  • Abel Avram
  • 黄晓雯

2016 年 2 月 16 日

话题:Java开源移动GoogleAndroidiOS语言 & 开发

J2ObjC是一个 Google 开发的开源工具,用于将 Java 代码转换为 Objective-C 代码。其目的是为了能在 iOS 平台上重用 Android 平台、web 服务器端的 Java 代码。服务器端代码的转换由GWT完成。J2ObjC 并不转换 UI 代码,这部分需要针对不同平台分别开发。

我们在 2012 年发布了J2ObjC 的 alpha 版本,并公布了部分实现细节。J2ObjC 的逐渐发展到稳定版 1.0 版本,并应用于开发 Inbox、Calendar、Docs、Sheets、Slides 和 Google My Business 等 Google 产品的 iOS 版本。同时,J2ObjC 由 Java 6 升级到 Java 7 和 Java 8,该项目的 Google 工程师 Tom Ball 表示这是为了“支持当前和过去主流的 Java、iOS 和 Xcode 发布版本”。此外,J2ObjC 集成了 JUnit、Mockito、Gradle 和 Maven,并支持通过原生方法将 Objective-C 代码嵌入 Java 代码

在被问到 J2ObjC 对 Java 8 的支持程度时,Ball 告诉我们:

这取决于怎么定义"Java 8"。:-) 我们加入了对 Java 8 一些语言特性的支持,如 lambda 表达式和方法索引。但是因为我们的 JRE 运行时基于 Android 的libcore 库,所以目前还不支持任何 Java 8 引入的 API。我们计划与 libcore 团队定期同步,这样他们添加的所有 Java 8 支持都能很快地被引入到 J2ObjC 的运行时。

谈及未来发展,Ball 补充道:

J2ObjC 主要是一个构建工具,因此会根据使用该工具的应用开发人员的需求来确定未来计划。我们现在了解到的需求是,他们希望我们持续且快速地支持 iOS 新特性、优化 Swift 互操作性、支持 Java 8 接口、提供更好的工具集成、减少构建次数。作为编译器开发工程师,我们也会专注于优化生成的代码和快速修复 bug。

J2ObjC 使用 Apache License 2.0 许可协议。

查看英文原文Google’s J2ObjC 1.0 Translates Java into Objective-C


感谢郭蕾对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者(已满),InfoQ 读者交流群(#2)InfoQ 好读者)。

Java开源移动GoogleAndroidiOS语言 & 开发