JVM、JRE与JDK简介

一、 JVM

       JVM(Java Virtual Machine),是架构在Linux、Windows等各种操作系统平台之上的一种虚拟的机器。

       它为所有编译程序提供一个共同的接口,编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode)(class文件的内容),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。

       这也是Java能够跨平台的原因。对于计算机而言,只认识一种语言,也就是0、1序列组成的机器指令。当我们用Java或者C++等语言写好程序时,计算机是看不懂它们的,这就需要一个翻译员将我们写好的代码翻译成0、1序列组成的机器指令,这个翻译员的工作就是编译(Compiler)。

        而其中的问题在于,每个平台认识的0、1序列并不一样。某个指令在Windows上是0101,在Linux下可能就是1010,因此必须使用不同的编译程序为不同平台编译出可执行的机器码,这样无法做到跨平台。

        Java程序要想执行,也要通过编译。不过Java编译时,并不直接编译为依赖于平台的0、1序列,而是翻译为字节码(ByteCode)。Java原始码扩展名为.java,经过编译后变成扩展名为.class的位码。如果想要执行位码文档,目标平台必须安装JVM。JVM会将位码翻译为与平台相关的机器码,如图1所示。



图 1


        不同的平台需要安装专属该平台的JVM。打个比方就是,你讲中文(.java),Java编译程序帮你翻译为英文(.class),这份英语文件到各地后,再由当地看得懂的人(JVM)翻译为当地语言(机器码)。

        所以,JVM就是把.class位码文档,翻译成所在平台看得懂的0、1序列。这样就能达到跨平台的目的。需要记住的是:对Java程序而言,只认识一种操作系统,就是JVM,.class位码文档就是JVM的可执行文件。Java是执行与JVM上的,而JVM去与底层平台(如Linux)等进行沟通,但是我们不必考虑这些。


二、JRE与JDK

        拿一句最基础的代码为例:

        System.out.println(“Hello World”);

        Java是个标准,System、out、println都是标准中规范的名称。实际上必须有人根据标准写出System.java,编译为System.class,这样才能直接使用System类上out对象的println()方法。
       而写出System.java的厂商(如Sun、IBM)必须根据相关的JSR标准文件将标准链接库开发出来,这样写好的Java程序在Sun、IBM等厂商开发的JVM上运行时,引用如System这些标准API,才能运行在不同平台。

       在图2可以看到JavaSE API包含各种常用的链接库,像是通用的集合(Collection)、输入/输出、联机数据库的JDBC、撰写窗口程序的AWT与Swing等,这些都在各个JSR标准文件规范之中。



图 2


        JRE(Java Runtime Environment)是Java执行环境,包括JavaSE API与JVM。使用JavaSE API中的链接库,在安装有JRE的计算机上就可以直接运行。

        前面说过,要在,java中撰写Java程序语言,使用编译程序编译为.class文档,其中编译程序这样的工具程序就有JDK提供,全名为JavaDevelopment Kit。

        JDK包括了javac、appletviewer、javadoc等工具程序,对于要开发Java程序的人,必须安装JDK。JDK本身包括了JRE,这样才能执行Java程序。总的来说,JDK包括了Java程序语言、工具程序与JRE,JRE则包括了部署技术、JavaSE API与JVM。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值