1.3.2 java程序的运行机制和jvm

java语言比较特殊,由java语言编写的程序需要经过编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(也就是*.class文件)。当然,这种字节码不是可执行性的,必须使用java解释器来解释执行。因此,我们可以认为:java语言既是编译型语言,也是解释型语言。或者说,java语言既不是纯粹的编译型语言,也不是纯粹的解释型语言。java程序的执行过程必须经过先编译,后解释两个步骤。如图1.1所示。

java语言里负责解释执行字节码文件的是java虚拟机,既 JVM(java Virtual Machine)。JVM是可运行java字节码文件的虚拟计算机。所有平台上的JVM向编译器提供相同的编程接口,而编译器只需要面向虚拟机,生成虚拟机能理解的代码,然后由虚拟机来解释执行,在一些虚拟机的实现中,还会将虚拟机代码转换成特定系统的机器码执行,从而提高执行效率。

当使用 java 编译器编译java程序时,生成的是与平台无关的字节码,这些字节码不面向任何具体平台,只面向JVM。不同平台上的JVM都是不同的,但他们都提供了相同的接口。JVM 是java程序跨平台的关键部分,只要为不同平台实现了相应的虚拟机,编译后的java字节码就可以在该平台上运行。显然,相同的字节码程序需要再不同的平台上运行,这几乎是“不可能的”,只有通过中间的转换器才可以实现,JVM就是这个转换器。

JVM是一个抽象的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。

提示:JVM的作用很容易理解,就像我们有两支不同的笔,但需要把同一个笔帽套在两支不同的笔上,只有为这两支笔分别提供一个转换器,这个转换器向上的接口相同,用于适应同一个笔帽;向下的接口不同,用于适应两支不同的笔。在这个类比中,我们可以近似地理解两只不同的笔就是不同的操作系统,而同一个笔帽就是java字节码程序,转换器角色则对应JVM。类似地,我们也可以认为JVM分为向上和向下两个部分,所有平台上的JVM向上提供给java字节码程序的接口完全相同,但向下适应不同平台的接口则互不相同。

Sun公司制定的 java 虚拟机规范在技术上规定了JVM的统一标准,具体定义了JVM的如下细节:

  • 指令集
  • 寄存器
  • 类文件的格式
  • 垃圾回收堆
  • 存储区

Sun公司制定这些规范的目的是为了提供统一的标准,最终实现java程序的平台无关性。

时间: 2024-10-13 05:29:56

1.3.2 java程序的运行机制和jvm的相关文章

Java基础8-浅谈java程序的运行机制与JVM运行

一.java程序的运行机制 Java开发的整个生命周期,可以概括为两个阶段:编译阶段和运行阶段. 1.编译阶段 ①程序员编写一个符合java语法的xx.java的源文件. ②使用javac.exe命令对以上的java源程序进行编译. ③若编译通过则生成一个xxx.class文件. 2.运行阶段 ①打开命令窗口,在命令窗口中使用java.exe命令运行java程序. 二.java虚拟机运行 如上图所示,java文件解释执行时会启动JVM(java虚拟机)来给程序划分内存区域并转换成计算机系统可以识

Java程序的运行机制和JVM

1. Java语言比较特殊, 由Java编写的程序需要经过编译步骤,但这个编译步骤不会产生特定平台的机器码,而是生成一种与平台无关的字节码(也就是.class文件).这种字节码不是可执行性的,必须使用Java解释器来解释执行.因此可以认为: Java语言既是编译型语言,也是解释型语言. 或者说,Java语言既不是纯粹的编译型语言,也不是纯粹的解释型语言. Java程序的执行过程,必须经过先编译,后解释两个步骤. 2. Java语言里,负责解释执行字节码文件的是Java虚拟机,即JVM(Java

Java程序的运行机制

计算机高级语言按照程序的执行方式可以分为编译型和解释型两种方式,java属于编译型和解析型的结合.由java语言编写的程序需要经过编译步骤,在编译之后不会生成特定平台的机器码,而是生成与平台无关的字节码(也就是*.class文件).使用java解析器(这里是java虚拟机JVM)来解析执行*.class文件.总的来说java程序的执行必须经过先编译后解析来执行. 在安装完JDK后,在JDK的安装路径下可以看到有如下的文件夹 bin: 改路径下存放了JDK的各种工具命令,常用的java.javac

论Java程序的运行机制

低级语言就是计算机易于理解而人不易理解的,如汇编语言之类的. 高级语言与之相反易于人理解,接近于自然语言. ,如目前流行的Javac,c++,pascal,python,lisp,prolog,FoxPro,Delphi等等.   ,这两种语言都是面向机器的语言,和具体机器的指令系统密切相关. 机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序. Java是面向对象语言的代表,是属于计算机高级语言. 计算机高级语言按程序的执行方式分为两种: 1)编译型 :一次性的将代码编译成机器码,可

Java语言的运行机制

计算机语言分为编译型和解释性两种类型. 编译型: ( C/C++.Pascal/Object Pascal(Delphi) ) 编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高. 解释性: ( Java.JavaScript.VBScript.Perl.Python.Ruby.MATLAB ) 解释性语言在运

Java程序的运行过程

Java程序的运行过程 java的两种核心机制:java 虚拟机 (java Virtual Machine) 垃圾回收机制:Garbagr collection java程序的运行过程 *.java源程序 -->java编译器 -->.class 字节码文件 --> 类装载器 -->字节码校验器  -->解释器 -->操作系统平台 核心机制之java虚拟机:(JVM) java虚拟机可以理解为一个以字节码为机器指令的CPU 对于不同的运行平台,有不同的虚拟机 java

《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制

内容 1.高级语言的运行机制 2.Java 语言的运行机制 1.高级语言的运行机制 高级语言主要分为编译型语言和解释型语言两类. 编译型语言是指使用专门的编译器.针对特定平台(操作系统)将高级语言源代码一次性“翻译”成该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行文件格式,这个转换过程称为编译(Compile).编译生成的可执行程序可以脱离开发环境,在特定的平台下独立运行.有些还需要链接其他编译好的目标代码 编译型语言是程序在执行之前需要一个专门的编译过程,把程序

第一章 第二节 Java语言的运行机制

1.Java语言的运行机制 首先,我们介绍一下什么是计算机语言.对于计算机来说,真正能够直接执行的是所谓的"计算机指令".这种计算机指令,一方面跟着操作系统有关,也就是说,Windows系统和Linux系统下的指令不同.另一方面说,也跟计算机的硬件有关系,不同的CPU具有不同的指令集. 直接操作计算机指令,使用的是计算机语言以及汇编语言.然而,对于程序员来说,直接使用汇编语言来编写程序进行开发是非常慢的,为了能让程序开发的速度提升,设计出了计算机高级语言. 所谓的计算机高级语言,实际上

MFC第一节-windows程序内部运行机制

一.窗口 设计窗口类时: 1 typedef struct _WNDCLASS{ 2 UINT style; //如水平.垂直变化是否重绘,禁用Close,检测双击 3 WNDPROC lpfnWndProc;//窗口过程函数句柄 4 int cbClsExtra;//类附加内存 5 int cbWndExtra;//窗口附加内存 6 HANDLE hInstance;//实例句柄 7 HANDLE hIcon;//图标 8 HCURSOR hCursor;//光标 9 HBRUSH hbrBa