5

只是想知道是否有任何 Java 实现可以在没有 JVM 的情况下工作。我感兴趣的原因仅仅是因为我很好奇,我想知道是否有任何“轻量级”Java 实现(没有附加所有 Sun 库)。

我也对在 C++ 中嵌入 Java 感兴趣,但在 C++ 中嵌入 JVM 对我来说似乎相当荒谬。我只想利用我的 C++ 应用程序中的一些 Java 语言特性,而不是利用所有琐碎的 Java API。

编辑:

我从我得到的很多答案中看到我需要澄清......

我最近开始开发使用 JavaScript 的 node.js 应用程序。istelf 中的 JavaScript 是一种语言规范,它不会自动附带 DOM、window.open 等,尽管它有一段时间。我想知道是否有类似于 Google 的 v8 的东西,除了不是 JavaScript,而是 Java。最后,我不在乎是否不能用它编写 Hello World 应用程序,我只想能够将 Java 嵌入到 C++ 应用程序中,就像我可以使用 v8 或 SpiderMonkey 将 JavaScript 嵌入到 C++ 应用程序中一样。如果我能做到这一点,那么我可以在 C/C++ 中实现控制台输出,然后使该实现可以从 Java 中调用。

4

5 回答 5

6

你想要没有 API(标准库)的 Java VM 吗?

JRE 由 JVM(Virtual MAchine)和标准库组成,我怀疑您是否可以在没有 JVM 的情况下找到 java 实现......您可以找到将 java 源代码编译为本机代码的编译器(看看GCJ ),但不是没有 VM 的 Java 实现。

查看这个 wikipedia 页面,了解一些替代 Java 实现。

于 2012-11-25T20:34:53.957 回答
2

GCJ(Java 的 GNU 编译器),但自从 OpenJDK 开源以来,该项目已被弃用。

于 2012-11-25T20:46:48.927 回答
1

正如其他人所暗示的那样,“JVM”是一种知道如何加载类、解释“字节码”和管理存储的机制。它本身不包含任何 java.lang... 的东西,除了需要一些类(String、Class 等)来表示 JVM 中的类和其他基本数据结构。

因此,没有 JVM 的 Java 只是一堆毫无意义的比特。

有(或曾经)编译过的 Java 版本需要/不需要解释器(尽管相当紧凑的解释器很容易构建)。原始类加载器和某种存储管理仍然是必要的,但类加载可以保持简单,并且对于短期应用程序(或具有特殊限制的应用程序),存储管理器不需要进行垃圾收集。

正如 pstanton 所建议的,有一些适合小型设备的“轻量级”Java(或“类 Java”)实现。

于 2012-11-25T20:46:59.330 回答
1

有设计用于小型设备的轻量级 Java 处理器,例如JOP

于 2012-11-25T20:33:47.530 回答
1

恕我直言,您需要重新检查您真正想要的是什么。

Java 运行时由两个主要组件组成

  • 运行代码的JVM
  • 它附带的标准库。

您建议您要使用 Java,但如果没有这些,您将一无所有。

例如,你甚至不能在没有库的情况下编写“hello world”程序,因为 String 是 JDK 中的一个类。

于 2012-11-25T20:53:40.200 回答