【问题标题】:JVM based language without language runtime没有语言运行时的基于 JVM 的语言
【发布时间】:2026-01-19 15:55:02
【问题描述】:

有没有人知道一些替代的 JVM 语言,不管它多么晦涩难懂,它可以编译成普通的旧 java 字节码,而不需要语言运行时。

我需要这个来尝试开发没有启动或大小损失的 android 应用程序。 Scala、Clojure 和 Groovy 都需要与应用程序一起分发的自己的运行时库,因此它们超出了本问题的范围。

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

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

【问题讨论】:

  • 如果你有耐心,there's a web site devoted to languages for the JVM。完成这些并找出可能的候选人应该不会太难。
  • 顺便说一句,我认为很难找到一种语言——任何平台上的任何语言——它没有自己的运行时库。我的意思是即使 C 也有用,你有一个标准的 C 库,100 次中有 99 次出现。
  • 我澄清了这个问题,当然,no-runtime 实际上意味着除了 JRE 之外没有额外的运行时。

标签: android jvm runtime mirah


【解决方案1】:

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

唯一的区别是您的设备上已有多少可用的课程。 如果您开发 Java 并且只使用设备上已有的库,那么您的应用程序将会非常小。

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

如果速度和时间真的很关键,另一种方法是使用 NDK (C/C++)。

【讨论】:

  • 目标是避免使用 Java,但不会付出太大的体积和性能损失。像 ProGuard 这样的代码最小化器可以减少运行时占用,但不能完全删除它。此外,尽管我想避免使用 Java,但我更想避免使用 C/C++。
  • 我会使用 Scala。 Proguard 的大小还可以,它不是 Java,它和 Java 一样快(不像 JRuby、Mirah、Jython 等)。
  • 仅供参考 Mirah 是 JVM 上的编译语言,可以生成 .class 文件或 .java 文件。它不需要单独的解释器或运行时,并且目前没有标准库,因此它与 Java 一样快——比如 Scala。
【解决方案2】:

Xtend 有一个超薄的库 (100kb),直接委托给 JDK 和 Guava。

【讨论】: