Java跨平台的关键——JVM

来源:互联网 发布:动漫设计与制作软件 编辑:程序博客网 时间:2024/06/06 12:28

前言

   今天李达师哥给我们介绍了jvm,虽然之前在J2EE里学到过,但是有些难懂,所以这个问题一直被我挂起。现在回去再学习一下这些知识。


从已知推未知

    大家都知道Java之所以被人广泛应用,主要是因为它可以跨平台,而支撑Java跨平台的关键所在正是jvm。


    jvm是一个虚构出来的计算机,是通过实际的计算机上仿真模拟各种计算机功能来实现的。——百度百科


    看了百度百科的解释,是不是忽然有些明白了jvm到底是什么东西了吧。因为有了jvm,Java语言可以在不同平台上运行是不需要重新编译,并且,jvm屏蔽了与具体平台相关的信息,使得Java程序只需生成jvm上运行的目标代码。这回算是明白了为什么我们在Notepad++编写的Java文件必须在Java环境下生成的class文件才能运行了,而生成的class文件可以随时运行,不用再从Java文件再次生成。这也正体现了“一次编译,到处运行”的原理。可是为什么生成的class文件能够在jvm上运行呢?因为他们是二进制数据,计算机只认识“0”和“1”。所以“一次编译,到处运行”。


jvm的执行过程

   那么jvm是怎么样执行的,我们已经知道从Java文件生成 class文件的步骤,但是接下来的过程需要查一下资料。jvm提供类加载器,把class文件读入内存,并创建一个Java.lang.Class对象。而这个时候,就进入类的连接阶段,这个阶段负责把类的二进制数聚合并到jre中,这个阶段需要对二进制字节码进行校验、解析之后将类进行初始化,然后执行,最后垃圾收集。执行过程如图所示:

          

  

jvm的体系结构

   在计算机原理中,我们了解到计算机由控制器、运算器、输入输出设备等组成。jvm是虚拟的计算机,所以它和正真的计算是有一定的相似的。它也有是属于它自己的部件,jvm是要和操作系统与硬件进行一些交互,所以它又有别于计算机体系结构。下面的图是我在网上找的,这张图有利于我们对jvm的理解。


             


总结

    这是我根据师哥的讲解以及查阅的一些资料所做得理解和总结,可能会有些地方不太到位,欢迎指正。



0 0