我正在考虑使用JRuby(或适用于Android的Ruby的适当变体)在Android上创建应用程序.
根据我的研究,目前有两个项目支持Android上的Ruby开发:
从gotoub 上的Ruboto wiki的常见问题解答看来,Ruboto已准备好进行应用程序开发,但还不支持JIT编译,并且应用程序必须与库一起打包,这使得它占用大量空间(用于移动设备安装).
我对SL4A知之甚少,但似乎SL4A也试图在JVM上运行JRuby脚本.但主要的是SL4A仍处于alpha状态,所以我不知道它是否可以用于app开发.
对这些平台有更好了解的人可以建议应该使用哪一个?此外,在不久的将来,哪一个更有可能在JIT(性能),更低的占用空间和更好的API访问Android方面变得更加成熟?
什么米拉语言提供过的JRuby,Groovy和Scala呢?
有没有人尝试使用Ruby开发Android应用程序?如果是这样,你会推荐哪种工具?比较(两者之间)有什么优缺点?
任何经验,见解等的分享将非常感激.
有没有人知道一些替代的JVM语言,但它可能是模糊的,它可以编译成普通的旧java字节码,而不需要语言运行时.
我需要这个,以便尝试开发Android应用程序,而无需启动或大小惩罚.Scala,Clojure和Groovy都需要与应用程序一起分发自己的运行时库,因此它们超出了本问题的范围.
声称能够实现这一目标的唯一一种语言是Charles Nutter的Mirah,但我不能让它在Windows上工作.
编辑:为了澄清一点,我知道任何语言都必须有运行时库.显然,我正在寻找的是一种除了JRE之外不需要额外运行时的语言,或者至少非常有限的语言.
有了Mirah,我正在引用JVM语言:http://www.mirah.org/
在线提供的唯一有用的文档是示例.我理解它说它有类似ruby的语法,但我相信它有特定于Mirah的怪癖.
我将如何识别各种语法怪癖?学习Ruby本身就足以学习Mirah吗?
谢谢!
在任务的配置阶段,我将一些目录注册为builtBy: thisTask
。我希望gradle能够自动检测源是否已更改,但是任务总是在执行。
这是任务:
subprojects {
def srcMainMirah = file('src/main/mirah')
if (srcMainMirah.exists()) {
idea.module.sourceDirs += srcMainMirah
task compileMirah {
def classesMirahMain = file("$buildDir/classes-mirah/main")
inputs.sourceDir srcMainMirah
def thisTask = delegate
sourceSets.main {
output.dir(classesMirahMain, builtBy: thisTask)
java.srcDir srcMainMirah
}
dependsOn tasks.compileJava
doFirst {
def classpath = files("$buildDir/classes/main").plus(configurations.compile)
mirahc(srcMainMirah, classesMirahMain, classpath)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它用于以mirah语言编译源代码,*.class
就像Java编译器一样生成文件。