1.0 版本的发布对我们来说是一个重要的里程碑。但是我们离成功还有很长的路要走。我们会继续之前的快节奏的版本发布,下面的特色已经包含在不久将来的开发计划中:
RoboVM是啥?
在Trillian 手机上,我们真的很喜欢JVM生态系统. 有许多丰富强大的IDE, 生成体系,适合各种口味的语言,还有巨多的第三方库。我们认为这是身边最高产的环境。但这么多年过去了,JVM生态系统却逐渐退出了客户端,要么更好要么更坏(还有人记得applet吗?)。比起Android,客户端Java是一个东西,但那仅仅是两大手机平台阵营之一。
我们对于 RoboVM的寄托就是让其成为后端、Android以及iOS之间的桥梁。我们想要统一数以百万计的JAVA, Scala, Kotlin, Groovy 和 Clojure上开发者的工作流,如此一来他们就可以使用他们的工具和技术为每一个平台创建真真的本机应用。
为实现这一目标,RoboVM 平台需要如下组件:
所有这些组件允许你编写原生的 iOS 应用程序,共享 Android 后端代码,在一个健全的构建和测试环境中,让你快乐的开发,除了调试器,所有的组件都是开源软件,可修改并提交到 Github!

RoboVM核心采用 AOT 预编译。JVM 通常采用 JIT 即时编译器。JVM 字节码加载到运行时并翻译为机器码。苹果公司不允许在 iOS 系统中采用 JIT 即时编译器,内存分页不能被设置成可执行的。为此,RoboVM 需要你把 APP 转换成部署设备可执行的 Java 字节码。因此,RoboVM 运行时不能记载字节码,是 RoboVM 众多优点中唯一的缺陷。
以字节码作为输入,RoboVM 并不关心字节码是由谁产生的。你可以使用 Java、 Scala、 Groovy、Kotlin,、Clojure 或其它 JVM 语言编译产生的字节码提供给 RoboVM 编译器,它将编译成本地代码。这是通过使用类似 J2Objc 进行对比处理完成的,通过使用 Java 源码而不是字节码,并且把它翻译成等价的 Objective-C 代码。无需依赖源代码就能轻易的集成第三方 JAR。
作为编译处理的第一步:RoboVM 通过 Soot 解析类字节码文件,Soot允许我们把基于stack-machine 的JVM字节码翻译成更易于管理的3-address代码,这个过程称为 Jimple。我们在这个Jimple 代码中做了许多优化和简化:例如清除无用代码。
一旦我们把所有的 Jimple 转换做完,我们就能够应用自定义转换,这样我们就可以支持 java 8 的特性,例如 lambda,而且我们的名为 Bro 的自定义绑定桥,具有简单可靠的 C 和来源于 java 的Objective-C 接口。