jvm是用来将.class文件翻译成字节码放在虚拟机上,然后由虚拟机根据不同的硬件环境解释成可执行代码,实现java的跨平台。那小弟问下java虚拟机是不是有很多种啊,比方说对于80x86系列有一种,对于ARM有一种,对于MIPS之类的也有一种,反正不同的硬件环境对应不同的虚拟机啊,事实上java是将移植代码的工作量转换成了移植虚拟机啊?

解决方案 »

  1.   

    是的。
    不但是跟硬件平台有关,还跟不同的操作系统平台相关,比如windows,linux和solaris上的jvm,即使同样工作在x86体系结构上,它们也是不同的。
      

  2.   

    虚拟机应该是在操作系统之上的,虚拟机实现了对操作系统的封装。java代码只能看到虚拟机,看不到操作系统。java是将对操作系统的实际操作交给了虚拟机。
      

  3.   

    明白了,这样说来java的跨平台其实也有限啊,例如新出来一个处理器可能连java虚拟机也没有,那时候java也就无用武之地了!
      

  4.   

    这就要系统级开发人员负责开发新的jvm,比如龙芯上要跑java程序必须自己开发虚拟机。
    SunSpot用到是Arm的芯片,也是做了相关的jvm移植工作。