在iOS上使用Avian的Scala

有一个称为Avian的相对较新的轻量级JVM,可以为iOS目标生成可执行文件。

网站上没有太多的文档(用Googlesearch的内容也不多)。 我想知道是否有人知道如何使用Avian在iOS上运行一个基本的Scala程序一步一步的教程。

另一种用于iOS编译器的JVM是RoboVM 。 虽然它还处于早期阶段,但看起来相当有希望,并提供了如何编译Scala for iOS的示例。

编辑这是一个旧的答案,当时有效,但是,正如@JamesMoore所指出的那样,RoboVM已经不复存在了。 现在看起来非常有前途的,很可能是在不久的将来在iOS上运行Scala代码的方式是Scala Native

编译的Scala源码是完全标准的类文件。 你应该能够按照说明 (寻找“embedded”)在网站上没有很大的变化,只要把scala-library.jar作为你的代码的依赖。

我设法引导了几天前在Avian上运行的完整编译器和标准库。

有些部分在边缘上可能仍然有点粗糙,例如有一个强制修复 ,这将是下一个Scala版本(2.10.1)的一部分,但不在2.10.0中。 如果你现在想玩它,你需要使用一个每晚构build,直到2.10.1被释放。

如果您遇到任何其他问题,请报告!

我可能不再需要它了,现在Oracle正在iOS和Android上开发JavaFX开源代码 !

编辑:甲骨文更新了文章宣布,他们不会释放一个JVM,所以它看起来像JavaFX +禽stream感可能是要走的路。

在iOS上运行Java字节码(不根植)不仅仅运行那个或那些JVM。 据我了解,iOS内存pipe理不允许可执行内存页面在用户模式下可写。 这基本上禁止任何JIT编译。 所以,即使可以在特定的Java VM上运行某些编译(从Java或Scala)类,我也会仔细检查该VM如何支持Ahead-Of-Time编译,以便在iOS上运行。 正如我所看到的,Avian AOT在桌面上运行良好。 对于iOS,你将不得不亲自检查一下,尽pipe该项目在AOT领域看起来很有希望。