java的虚拟机的工作机制_java(一)虚拟机工作机制

知识储备:

java是半编译半解释型语言,与传统的编译型、解释型语言有所不同

编译型语言:使用专门的编译器,针对特定的平台,将源代码一次编译成可以被该平台硬件执行的机器码文件(包括操作数和机器指令),然后包装成可以被该平台执行的可执行文件的格式。因为是一次编译完成,所以可以脱离编译器独立的运行,运行效率较高。但是一般是不能移植的。如果想移植到别的平台,需要将源代码用别的平台的编译才可以。代表有:C、C++、ObjectiveC等。

解释型语言:使用专门的解释器,针对特定的平台,把源代码逐行解释成特定平台的机器码并立即执行,所以一般解释器不会对源代码进行整体的编译和链接处理,它相当于把编译器编译和解释过程混合在一起进行。所以每次执行解释型语言的程序它都要进行一遍编译,因此它是不能独立运行的,并且不能脱离解释器,这就造成了运行效率低。但是它跨平台比较容易,每个平台上特定的解释器负责把源程序直接解释成特定平台可以执行的机器码,因此可以方便的进行源代码的移植,但是这是以牺牲运行效率为代价的。代表有Python、Ruby等。

伪编程语言:例如VB,它属于半编译型语言。它首先编译成P-代码,然后将解释引擎封装在可执行程序内,当程序被启动,P-代码就会真正被编译成二进制代码。表面上看,VB也可以生成EXE文件,这个文件也可以脱离开发环境独立在平台上运行,很像编译型语言,但其实是因为EXE文件中既有程序的启动代码,也有链接解释程序的代码。

java语言编写的程序需要经过编译过程,但并不会生成特定的机器码,而是生成与平台无关的字节码文件(通过javac.exe生成),就是.class文件,字节码文件不能被执行,需要java解释器来解释执行,所以字节码文件是由JVM(java虚拟机)来运行的。JVM是可以执行字节码文件的虚拟计算机,它向上向编译器提供相同的接口,而向下向不同的平台提供不同接口,这就实现了,一次编译、处处运行。

javaw.exe:

跟java命令相对的,运行java命令时,会出现并保持一个console窗口,程序中的信息可以通过System.out在console内输出,而运行javaw,开始时会出现console,当主程序调用之后,console就会消失。

JVM是JRE的一部分,JRE是JDK的一部分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值