@liuhui0803
2016-04-27T14:15:26.000000Z
字数 3599
阅读 2188
RoboVM
iOS
本文翻译自RoboVM is Dead,作者是Mike Fleischauer,翻译已获得本人授权。
文章标题几乎已经说明了一切。虽然这则消息让人感觉遗憾,但基本也在意料之中。也许有人还不知道,RoboVM是一种可供您在iOS设备上运行Java应用程序的技术。这种技术也许对游戏开发者最为有用,可以让LibGDX应用程序在诸如iPad、iPhone以及Apple TV等设备上运行。
到底是如何实现的?这里面还有些故事...
为了支持iOS,LibGDX于2013年5月从Xamarin迁移至RoboVM(这事本身就够讽刺了)。当时RoboVM还是开源的,在功能方面比Xamarin做得更好。当时一切都发展的很好,直到2015年10月Xamarin突然收购了RoboVM。从那时起,这个开源项目基本停摆,大家开始不看好RoboVM的未来。Xamarin通过为LibGDX开发者提供免费许可的方式对这一问题做出回应,这些举措打消了开发者对未来的很多顾虑。当时我和Xamarin的CEO Nat Friedman进行了如下交流,现在看起来就有些诡异了:
真正的魔鬼都隐藏在细节中,对吧!老实说,Nat是个正直的人,我觉得他当时根本想象不到接下来会发生的事。随后Microsoft在2016年2月宣布收购了Xamarin。对大部分开发者来说,这无疑是个好消息,因为消息公布后没多久他们就让Xamarin免费并开源了。这一系列事件中真正让人纳闷的是,RoboVM到底该怎么处理?Xamarin以前的目标是掌控向移动设备移至应用的过程,但Microsoft的目标更主要是提高.NET开发堆栈的接受率。这么说吧,目前Microsoft并不是Java最大的支持者,那么当尘埃落定后,RoboVM该怎么办?
直到今天,RoboVM团队发布了这样一则消息:
过去几周来,为了确定RoboVM的未来发展方向,我们与Xamarin和Microsoft合作对该产品的技术和业务情况进行了评估。考虑到使用Java进行移动开发的大环境后,我们最终决定逐步停止RoboVM的开发。
为了帮助客户消化这则消息的影响,我们准备了一篇常见问题解答。对于其中未包含的问题,请联系我们:support@robovm.com。
我用RoboVM开发的应用会遇到什么情况?
客户已经发布的应用将不受任何影响。如果您的应用还在开发中,您还可以像其他任何iOS应用那样继续完成开发工作,除非Apple在iOS中引入了某些较为重大的变动。您在RoboVM Studio中创建的Android项目和应用可以使用Android Studio或IntelliJ IDEA打开并编译,您在Android和iOS上使用的任何跨平台RoboPods也依然可以在这些项目中使用,不过可能受到未来一些重大系统级改动的影响。
对于正在使用RoboVM开发的应用,我该如何处理?
取决于应用开发工作所处阶段,目前有多种方式可以帮您继续开发,包括帮您移至到Xamarin的工具,并可换为使用以iOS为目标的Java SDK版本。尤其是libGDX刚刚公布了自己对Intel Multi-OS Engine(多操作系统引擎)的支持,这意味着对于目前大部分活跃的RoboVM开发者,都有可用的备选方案。此外Microsoft和Xamarin都非常愿意为您的移动应用开发工作提供帮助,同时我们也希望能帮助您继续前进。如果您想和我们讨论您的应用开发计划,请给我们发邮件:support@robovm.com。
我能否继续使用自己的许可?
可以。在2017年4月30日之前,您可以继续激活现有的已付费或免费赠送的订阅。这样您就有了足够的时间可以将现有应用过渡至其他方案。
我已经购买了许可,可以获得退款吗?
可以。我们对截至今天的所有现有客户提供全额退款服务。请发邮件至support@robovm.com申请退款。
简单来说,Microsoft看了看RoboVM,发现它与自己的规划不符,于是就一枪崩掉了。疼啊!今时不同往日,连Microsoft都在想方设法让自己显得对开源更友好,希望通过包容、扩展,以及废除等做法摆脱自己的过去。他们没有选择将RoboVM重新开源,让用户至少能像以前那样自娱自乐,这一点真的让人感觉遗憾。如果有足够多的反对声音,也许他们最终会这样做的,至少现在有关这个话题的讨论对Microsoft来说并不是多好的消息。不过他们能为所有提出申请的客户全额退款,这一点做的倒是不错。
与此同时,LibGDX开发者又该何去何从?从上文链接的内容中可以知道答案。LibGDX项目的创始人Mario Zechner针对这一话题发布了一篇内容相当丰富的博客文章。建议您通读全文以了解各种可用的选项,不过我依然会将重点摘录如下:
RoboVM将死,然后怎么办?
几位libGDX员工持有的免费RoboVM许可密钥可用于将自己的LibGDX应用部署至iOS。这些许可密钥在2017年4月17日之前可以继续使用。然而RoboVM将不再获得后续更新,不会增加新的功能或修复Bug。整个社区所依赖的所有RoboPods也将面临相同问题。更重要的是,现在已经无法注册新的免费RoboVM Indie 许可了。
简而言之,如果您已经使用RoboVM开发了一款游戏,在许可过期之前您可以继续使用RoboVM。如果您要新开发一个游戏,此时将无法使用RoboVM。但无论哪种情况,您都应该尽早更换为其他备选方案。
备选方案都有什么?
RoboVM有很多备选方案,然而在功能方面没有一个能比得上RoboVM。一起来看看这些可用方案吧。我们会从不同的视角审视这些方案:工具(IDE、Maven、Gradle)的支持情况、绑定的支持、二进制文件大小、性能,以及与Bitcode的兼容性。
深入介绍前,我想重点谈谈对Bitcode的兼容性,这也许是最重要的功能。Apple最近提出了一个新的要求,禁止以原始机器代码(Raw machine code)的形式为watchOS和tvOS提交应用。Apple希望开发者以Bitcode的形式提交应用。Bitcode是一种(近似于)独立于机器的中间语言,Apple会通过这种语言为提交的应用生成实际的机器代码。因此任何对于Bitcode没有明确支持计划的解决方案都存在巨大的劣势。
可用方案(每个方案的特性和不足之处请参阅Mario Zechner的博客原文):
- Mobile OpenJDK 9
- Codename One
- J2ObjC
- Avian
- Xamarin + IKVM
- Intel Multi-OS Engine
--节略--
LibGDX在iOS上的未来是怎样的?
Tomski已经为Multi-OS引擎写了一个新的libGDX后端。LibGDX的发展路线图如下:
- 清理Multi-OS后端,将其与libGDX设置界面相集成,更新相关文档。这些工作我们已经完成了95%,希望能在本周末某个时间发布相关代码。
- 下周发布一个新的libGDX版本,让Multi-OS引擎成为新建LibGDX项目的默认iOS后端。
- 开始为流行的第三方iOS库创建绑定。我们希望整个社区都能参与到这项工作中。
- 在许可过期(2017年4月17日)前维持RoboVM后端继续运行。我们会尽一切努力修复后端可能存在的任何Bug,然而我们无法修复RoboVM本身存在的Bug。
您现有应用的发展路线图应该是类似这样的:
- 继续使用RoboVM 1.14.0以及相应的后端发布更新。
- 立刻开始为您在iOS平台下的应用添加基于Multi-OS引擎的版本。
- 测试您的应用,并将Bug报告至我们的跟踪管理系统。
- 尽快切换至Multi-OS引擎。
目前的情况就是这样。天还没塌,世界末日也还没到,不过前路上很快会遇到一些坎坷。一些人无疑会对此感到沮丧,不过还请理智发泄您的怒火。这件事上Mario和RoboVM团队并不是反派,实际上他们刚刚失去了自己的孩子,试想一下吧这时候你会有怎样的感觉?
一个好技术因为商业方面的原因被放弃,这种事确实很糟糕。我认为,如果Microsoft将RoboVM项目开源,而不是彻底杀死它,这样的结果更能让所有人皆大欢喜。再宏伟的计划也有可能无法实现,而开发和维护这种项目所需的技能并不常见。因此不妨给这个技术一条生路,不要让它成为商业决策的牺牲品。更重要的是,这样开发者也能在过渡至新解决方案过程中获得更多时间、更丰富的选项,实现更平滑的过渡。
最终,这不是Xamarin、RoboVM,或LibGDX能决定的。这件事的决定权百分之百在于Microsoft。如果您想将自己的精力专注于一些有意义的事情,那么这事就是一个很好的目标。毕竟Microsoft是一家试图改善自己在非微软平台开发者,以及开源社区成员眼中形象的公司。但是这样的举措... 无疑提供不了任何帮助!