2010-09-08 59 views
9

有没有人知道一些替代的JVM语言,但它可能是模糊的,它可以编译为普通的旧Java字节码,而不需要语言运行时。没有语言运行时的基于JVM的语言

我需要这个为了尝试开发Android应用程序没有启动或大小的惩罚。 Scala,Clojure和Groovy都需要将自己的运行时库与应用程序一起分发,所以它们超出了这个问题的范围。

声称满足这个目标的唯一一种语言是Charles Nutter的Mirah,但我无法使它在Windows上工作。

编辑:澄清一点,我知道任何语言必须有运行时库。显然,我正在寻找的是除JRE之外没有额外运行时间的语言,或者至少非常有限的语言。

+1

如果你有耐心,[有一个专门为JVM编写语言的网站](http://www.is-research.de/info/vmlanguages/)。通过这一点并不难,找到可能的候选人。 – 2010-09-08 13:23:16

+1

顺便提一下,我认为找到一种语言将很困难 - 任何平台上的任何语言 - 它都没有自己的运行时库。我的意思是让C甚至是有用的,你有一个标准的C程序库,它可以在100次中使用99次。 – 2010-09-08 13:29:16

+0

我澄清了这个问题,当然,没有运行时实际上意味着没有额外的运行时间。 – Marko 2010-09-08 14:03:38

回答

7

没有我能想到的(也许Mirah,这是实验性的,至少需要一些额外的类,我猜)。每种语言都需要一个运行时间来执行您想要执行的任务。

唯一的区别是设备上已有多少可用类。 如果您开发Java并仅使用设备上已有的库,则您的应用程序将非常小。

虽然它可能不是解决问题的最佳方法,但您是否考虑过使用ProGuard? ProGuard可以删除未在特定程序中使用的部分运行时。

另一种方法,如果速度和时间是真的关键会与NDK(C/C++)相反。

+0

目标是避免Java,但不要支付太大的尺寸和性能损失。代码最小化器如ProGuard可以减少运行时间占用,但不能完全移除它。另外,尽可能避免使用Java,我甚至更愿意避免使用C/C++。 – Marko 2010-09-08 15:04:28

+1

我会用Scala。 Proguard的大小是可以的,它不是Java,它和Java一样快(不像JRuby,Mirah,Jython等)。 – soc 2010-09-08 15:10:20

+6

仅供参考Mirah是JVM上的一种编译语言,可以生成'.class'文件或'.java'文件。它不需要单独的解释器或运行时,目前没有标准库,所以它像Java一样快 - 就像Scala一样。 – BaroqueBobcat 2010-09-13 23:25:30

1

Xtend有一个超薄型库(100kb),直接委托给JDK和番石榴。