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的理解。
总结
这是我根据师哥的讲解以及查阅的一些资料所做得理解和总结,可能会有些地方不太到位,欢迎指正。
- Java跨平台的关键——JVM
- Java基础:第三讲 Java的关键特性——跨平台性
- java 跨平台与JVM
- 关于JVM和Java的跨平台性
- JavaSE基础之Java语言的跨平台原理(JVM)
- Java语言跨平台和JVM的理解
- 《Java平台体系》——第二章 JVM——实战:ClassLoader的应用
- 《Java平台体系》——第二章 JVM——实战:ClassLoader的应用
- Java虚拟机(JVM)的平台原理说明
- "Java之所以能跨平台,本质原因在于jvm不是跨平台的"如何理解?
- 《Java平台体系》——第二章 JVM——JVM规范(JSR924)
- 《Java平台体系》——第二章 JVM——JVM指令集
- 《Java平台体系》——第二章 JVM——JVM抽象架构
- 《Java平台体系》——第二章 JVM——JVM规范(JSR924)
- 《Java平台体系》——第二章 JVM——JVM指令集
- 《Java平台体系》——第二章 JVM——JVM抽象架构
- 《Java平台体系》——第二章 JVM——JVM实现中的多线程
- 《Java平台体系》——第二章 JVM——从JVM指令到机器指令
- Apache如何合理设置连接数
- “玲珑杯”ACM比赛 Round #5 H -- Variance(线段树+方差)
- tc, QoS, priority
- 注意安全(2)!XSRF跨站伪造请求
- urllib.error.HTTPError: HTTP Error 403: Forbidden
- Java跨平台的关键——JVM
- HTML容器标签和文本标签
- java的网络编程
- 计数排序
- java中连续向Oracle数据库插入1000条数据
- 关于MTK 平台上默认打开wifi ,和默认关闭数据流量
- JavaScript——控制div的显示隐藏
- Linux上的TC流量控制几个例子(80端口流量限制)
- 3.1 数据质量分析