RoboVM 1.0 发布 —— 商业许可和新功能介绍 已翻译 100%

oschina 投递于 2015/03/17 07:52 (共 22 段, 翻译完成于 04-30)
阅读 2494
收藏 15
2
加载中

RoboVM 1.0 Released – Commercial Licenses & A Look under the Hood

经过数月的艰苦工作我们很自豪的宣布我们的第一个稳定版 RoboVM 1.0 发布了!如果没有优秀的社区给予我们反馈、缺陷的追踪,这是不可能实现的。深深的感谢2000多个测试版的订阅者的贡献!

随着1.0的发布,我们希望我们的社区能够更深一步的壮大。基于此,我们将会揭开RoboVM的面纱,让新加入者对RoboVM是什么,它如何工作,以及我们推出它的动机有一个清晰的了解。如果你想了解更多信息,请查看 “什么是 RoboVM?”

被盗用户
被盗用户
翻译于 2015/03/17 13:01
2

更新了啥?

 1.0版本出现了很多新特性并修复了许多bug:

  • 调试器经历了新一轮的更迭. 所有JDWP功能现在都实现了.

  • 支持 RAM级磁盘缓存.这对于慢速硬盘来说能够帮助加速编译和链接。

  • 支持HFS+ 文件压缩。所有放入缓存的文件都是压缩的,深入加速编译同时还减少了RoboVM 所需缓存空间的大小。

  • 初始化的工程模板 且支持Maven原型。

  • 新的Eclipse工程向导,使用了模板工程。es project

  • 支持通过robovm.xml调用工具。当前支持TextureAtlas , 将来还有更多。

  • 清理并简化了Objective-C绑定,详细看绑定状态页

Parser7
Parser7
翻译于 2015/03/17 15:08
1

商业授权的发布

首先:对于用户来说,我们以开源软件为核心是没有什么改变的!你能够在无任何人为限制的情况下继续的新建软件,并且无任何的花费。在新的商业授权下,我们增加了针对开源版的方便性操作以及支持性服务。这能够支持我们继续的开发免费的开源内核,并且这能够支持整个项目的长远发展。

我们的商业授权能够根据你的业务规模进行调整,包括了个人开发者,初创企业,中小企业和大型企业。根据你的规划,你可以得到以下的特性和服务:

  • 模拟器或真实设备的调式都使用JDWP兼容调试器

  • 改进的崩溃报告

  • 有无服务等级协议都会得到私有的e-mail服务支持

  • JavaFX的支持

  • 补丁支持

  • 内测通道以获得新的商业特性

完整的价格信息在 http://www.robovm.com/buy.

在过去的几个月,有超过2000名开发者订阅了我们的测试版的程序。你们提供的反馈是无价的。对你们的感谢也不会仅是一句谢谢!

所有的测试用户都可以用半价获得一份个人开发型或初创公司级别的授权(需一年的订阅)! 请使用您的e-mail地址登录试用 测试版。我们会在14天内把带折扣的授权回复于你。

被盗用户
被盗用户
翻译于 2015/03/17 19:08
1

下一步计划是?

1.0 版本的发布对我们来说是一个重要的里程碑。但是我们离成功还有很长的路要走。我们会继续之前的快节奏的版本发布,下面的特色已经包含在不久将来的开发计划中:

  • 改进文档,用户指南和录制视频

  • 集成Intellij IDEA & Android Studio, 一个初步的基于Gradle的插件已经可用

  • 集成界面生成器(商业功能)

  • 支持扩展(动态库)以支持周边设备如苹果手表

  • 支持静态RoboVM到Objective-C应用的链接

将来会是激动人心的时刻! 对于所有的这些,让我们一起来揭开RoboVM的面纱。

被盗用户
被盗用户
翻译于 2015/03/17 13:32
1

RoboVM是啥?

在Trillian 手机上,我们真的很喜欢JVM生态系统. 有许多丰富强大的IDE, 生成体系,适合各种口味的语言,还有巨多的第三方库。我们认为这是身边最高产的环境。但这么多年过去了,JVM生态系统却逐渐退出了客户端,要么更好要么更坏(还有人记得applet吗?)。比起Android,客户端Java是一个东西,但那仅仅是两大手机平台阵营之一。

我们对于 RoboVM的寄托就是让其成为后端、Android以及iOS之间的桥梁。我们想要统一数以百万计的JAVA, Scala, Kotlin, Groovy 和 Clojure上开发者的工作流,如此一来他们就可以使用他们的工具和技术为每一个平台创建真真的本机应用。

Parser7
Parser7
翻译于 2015/03/17 15:18
1

为实现这一目标,RoboVM 平台需要如下组件:

所有这些组件允许你编写原生的 iOS 应用程序,共享 Android 后端代码,在一个健全的构建和测试环境中,让你快乐的开发,除了调试器,所有的组件都是开源软件,可修改并提交到 Github!

RoboVM核心采用 AOT 预编译。JVM 通常采用 JIT 即时编译器。JVM 字节码加载到运行时并翻译为机器码。苹果公司不允许在 iOS 系统中采用 JIT 即时编译器,内存分页不能被设置成可执行的。为此,RoboVM 需要你把 APP 转换成部署设备可执行的 Java 字节码。因此,RoboVM 运行时不能记载字节码,是 RoboVM 众多优点中唯一的缺陷。

伯松
伯松
翻译于 2015/03/19 15:38
1

以字节码作为输入,RoboVM 并不关心字节码是由谁产生的。你可以使用 Java、 Scala、 Groovy、Kotlin,、Clojure 或其它 JVM 语言编译产生的字节码提供给 RoboVM 编译器,它将编译成本地代码。这是通过使用类似 J2Objc 进行对比处理完成的,通过使用 Java 源码而不是字节码,并且把它翻译成等价的 Objective-C 代码。无需依赖源代码就能轻易的集成第三方 JAR。

作为编译处理的第一步:RoboVM 通过 Soot 解析类字节码文件,Soot允许我们把基于stack-machine 的JVM字节码翻译成更易于管理的3-address代码,这个过程称为 Jimple。我们在这个Jimple 代码中做了许多优化和简化:例如清除无用代码。

伯松
伯松
翻译于 2015/03/23 13:05
1

一旦我们把所有的 Jimple 转换做完,我们就能够应用自定义转换,这样我们就可以支持 java 8 的特性,例如 lambda,而且我们的名为 Bro 的自定义绑定桥,具有简单可靠的 C 和来源于 java 的Objective-C 接口。

做完这些转换之后,我们将大幅修改后的 Jimple 转换到 LLVM-IR。LLVM 是使用 Clang 的编译器基础架构,可以编译 C,C++ 和 Swift,还有其它一些语言。通过使用 LLVM,我们得到了与这些“本地”语言相同的好处:对广泛的CPU架构例如 x86,x86_64,ARM thumb v7 和 ARM 64-bit 等高度优化的参数。LLVM-IR 在手,我们就可以生成特定架构的汇编文件,然后就可以组装成最终的目标文件。

社会主义好
社会主义好
翻译于 2015/04/25 13:35
1

由于编译器采用模块化方式, 我们可以添加插件改变编译的过程。 其中一个插件,允许我们把DWARF 元数据添加到 LLVM IR 中, 由此可以得知局部变量在堆栈中的位置, 或是在什么地方插入调试指令

由于一个类文件会编译成一个对象文件, 编译是一件很耗时间的事情。所以RoboVM 采用的是渐进式编译: 只有在上一次编译过后,有修改过的文件才重新编译。编译出来的对象文件会被缓存起来, 以便再次使用。

盲目的编译项目 classpath 中指定的类文件并不是一个明智的选择。只要给出一个 main 类作为入口点,RoboVM 就能自动算出实际用到哪些类。我们甚至可以通过tree-shaking(一个我们正在探索的新领域) 这种技术减少编译的类,方法和字段的数量。

BreakingBad
BreakingBad
翻译于 2015/04/28 18:02
1

对于使用一个关联项目中的所有对象文件,我们能连接最后的可执行文件。Robovm 允许你轻易地指定任何外部的原生框架或者你想要连接的库,或者通过在代码中的注释或者项目配置非系统框架和库的文件。我们也需要连接 ROBOVM 的运行时间,包含像 GC,调试支持,本机代码类库等等。

单独的可执行文件是不够的,因此,ROBOVM 也将带给你所需要的任何资源,可选择性地通过诸如TextureAtlas 工具运行它们,并且编译最终的应用程序包,准备提交到App store。

crossmix
crossmix
翻译于 2015/03/30 19:46
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(5)

我是你
意思是 android上跑jvm吗 能跑javaflex?那swing为啥不支持一下
hantsy
hantsy
这种还不如 ReactJS Native,把组件标签直接翻译成 Native 方式。
饼干的荣耀
饼干的荣耀
这么好的东东,不弄个全平台?
Force武装卫队
Force武装卫队
这货的定位如果放在Desktop感觉会好些
DarkAngel
DarkAngel
话说,相对于研究它的授权到底适合不适合我,我更宁愿花时间学习一门新的Swift
返回顶部
顶部