![]() |
1
12
从技术上讲,人们创建新的JVM所需的所有信息都在语言和目标平台的公共规范中。一个JVM需要根据它是要在台式计算机上运行还是在移动电话上运行而有所不同,即使字节码的解释在很大程度上是相同的。 开始寻找信息的几个地方:
http://en.wikipedia.org/wiki/List_of_Java_virtual_machines
从我所看到的Sun、IBM或像Esmertec这样的小公司的JVM实现来看,编写一个简单的JVM是一个几个人月的项目,但是在JSR之后添加JSR以支持更多的功能可能需要几年时间。 现在,如果您所需要的只是一个简单的字节码解释器,那就没那么糟糕了,但是仍然有相当多的代码需要编写。 |
![]() |
2
5
手工的JVM是学习虚拟机的一个很好的方法,一般来说,它是程序语言设计的问题(通过JVM规范),以及解析的本质等等。 如果你选择向这个方向发展,你也可以探索优化,在优化中它会变得有趣,你可以拿研究论文和实现它们的算法。 也就是说,如果您对从头创建虚拟机这项漫长而艰巨的任务不太感兴趣,那么您可能希望修改现有的开源虚拟机,比如 Kaffe . 它将向您展示虚拟机所做的工作,但不一定是Java代码在Sun的JVM中工作的方式:
通过这种方式,您可以研究细节,但是深入到实现更有趣的特性。 |
![]() |
3
4
我知道,目前,大玩家从Sun授权Java库。然后他们添加自己的改进。实现之间的主要区别在于字节码->机器代码编译器。 |
![]() |
4
3
首先,你可能想看看 Apache Harmony 他们已经走了很长的路,所以他们的项目历史实际上可能会给你一个关于所需工作的好主意。我自己也不敢打赌这对一个人来说是可行的。 |
![]() |
Sam · jvm如何优化循环代码? 7 年前 |
![]() |
pushpavanthar · 纱线中的调谐火花作业 7 年前 |
![]() |
Ashish K · 在Groovy中将字符串参数传递给对象方法参数 7 年前 |
![]() |
St.Antario · 在Java中侦听多个目录以创建文件 7 年前 |
![]() |
Bonsaisteak · 为什么年轻一代需要三个区域来收集垃圾? 7 年前 |