Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java实现的一个。。。JVM?_Java_Jvm - Fatal编程技术网

Java实现的一个。。。JVM?

Java实现的一个。。。JVM?,java,jvm,Java,Jvm,不久前我找到了这个项目。遗憾的是,这个项目已经被it作者放弃了(我通过电子邮件询问) 我想知道是否有一个(继续)开放源代码项目在Java中完整地实现JVM,就像这样 所谓“完整”,我的意思是,不仅仅是为了模拟移动设备。是一个用Java编写的JVM,用于研究并处于积极开发状态。是一个用Java编写的JVM+操作系统,运行一台裸x86 PC或虚拟机。该项目的SVN最近相当不活跃(大约在过去6个月),但我相信该项目的GIT镜像中有活动。可能是用Java编写的最突出的JVM实现。然而,它的最低级别实现只

不久前我找到了这个项目。遗憾的是,这个项目已经被it作者放弃了(我通过电子邮件询问)

我想知道是否有一个(继续)开放源代码项目在Java中完整地实现JVM,就像这样

所谓“完整”,我的意思是,不仅仅是为了模拟移动设备。

是一个用Java编写的JVM,用于研究并处于积极开发状态。

是一个用Java编写的JVM+操作系统,运行一台裸x86 PC或虚拟机。该项目的SVN最近相当不活跃(大约在过去6个月),但我相信该项目的GIT镜像中有活动。

可能是用Java编写的最突出的JVM实现。然而,它的最低级别实现只是由对“magic”接口的静态方法调用组成,该接口由编译器专门处理并转换为本机代码

(最初由Sun实验室开发,现在由Oracle实验室开发)是一个真正的元循环虚拟机,其中不仅所有内容都是用Java编写的,而且编译器中没有特殊的外壳。更重要的是:maxinevm不仅是用Java编写的,它甚至可以自己运行!这听起来可能很疯狂,坦率地说,我不知道它是如何工作的,但它是基于(由Sun实验室开发)的,它对自编程语言也做同样的事情

这有一些非常有趣的特性:因为JVM本身是JVM解释的代码库的一部分,与用户代码所属的代码库相同,这意味着它可以进行优化,例如跨VM边界进行内联。IOW:它可以将VM代码内联到用户代码中,反之亦然。这还意味着虚拟机本身要进行与其他虚拟机(甚至包括Jikes)相同的运行时评测和动态优化,只有用户代码是这样的,这意味着虚拟机本身要不断地重新编译和优化,以适应不断变化的负载、加载的新类、不断变化的配置文件,改变使用模式等等

在HotSpot、JRockit、J9等VM上,这些优化是不可能的,原因很简单,JVM只知道如何优化JVML字节码,但VM不是用Java编写的。但即使在Jikes中,这也是不可能的,因为尽管VM是用Java编写的,但它在运行之前会被静态编译为本机代码,并且VM本身的代码不是VM“看到”的代码的一部分


这也是Sun实验室(现在是Oracle实验室)开发的JVM。与Maxine不同,它的目标受众大致类似于J9、HotSpot或JRockit,Squawk更类似于KVM(最初由Sun开发,现在由Oracle开发),即针对资源受限的嵌入式设备。Squawk的灵感也来自克莱因。与Maxine不同,它有一个用C编写的小抽象层。但请记住,Maxine需要一个操作系统才能运行,而Squawk没有操作系统。因此,在某种意义上,SUWAK甚至比玛克辛更纯净,因为许多不是Max的一部分,而是OS的一部分(它们通常在C、C++或其他低级语言中实现),实际上是SUWAKK本身的一部分。例如,设备驱动程序是用Java编写的。只有一个小的硬件抽象层和I/O库是用C编写的。

一个有趣的Java JVM实现是:

它能够运行简单的Java程序和一些高级程序。它也应该能够自己运行。 它还有一个子项目,其中包含能够在浏览器中运行的JVM的JavaScript实现。它非常快。 您可以通过以下方式运行JS实现:

mvn clean install
cd jsjvm
./run.sh
JavaScript实现有一个简单的JDK,其中包含一些用于DOM操作和WebGL绑定的类。
我计划为它实现JDWP(Java调试器Wire Protocol)。如果完成,您将能够连接调试器(例如来自IntelliJ)并调试浏览器中运行的Java代码。

我在Maxine VM常见问题解答页面链接后发现了类似的项目:Joeq、OVM和Moxie。Joeq依次引用了JavaInJava和铆钉系统。非常感谢您的回答。JVM是我所能看到的国产的,它需要相当多的内存才能正常工作。@ThorbjørnRavnAndersen-是的。jnodejvm核心(包括JIT)和所有操作系统功能都是自主开发的。它名义上运行在256Mb上,尽管这并不实际。一个原因是它不使用虚拟内存。