做用:java
JVM:JVM有本身完善的硬件架构,如处理器、堆栈(Stack)、寄存器等,还具备相应的指令系统(字节码就是一种指令格式)。JVM屏蔽了与具体操做系统平台相关的信息,使得Java程序只须要生成在Java虚拟机上运行的目标代码(字节码),就能够在多种平台上不加修改地运行。JVM是Java平台无关的基础。JVM负责运行字节码:JVM把每一条要执行的字节码交给解释器,翻译成对应的机器码,而后由解释器执行。JVM解释执行字节码文件就是JVM操做Java解释器进行解释执行字节码文件的过程。编程
Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe能够简单当作是Java编译器。缓存
Java解释器:是JVM的一部分。Java解释器用来解释执行Java编译器编译后的程序。java.exe能够简单当作是Java解释器。架构
注意:一般状况下,一个平台上的二进制可执行文件不能在其余平台上工做,由于此可执行文件包含了对目标处理器的机器语言。而Class文件这种特殊的二进制文件,是能够运行在任何支持Java虚拟机的硬件平台和操做系统上的!编程语言
维基百科定义:性能
JVM:一种可以运行Java字节码(Java bytecode)的虚拟机。网站
字节码:字节码是已经通过编译,但与特定机器码无关,须要解释器转译后才能成为机器码的中间代码。spa
Java字节码:是Java虚拟机执行的一种指令格式。操作系统
解释器:是一种电脑程序,可以把高级编程语言一行一行直接翻译运行。解释器不会一次把整个程序翻译出来,只像一位“中间人”,每次运行程序时都要先转成另外一种语言再做运行,所以解释器的程序运行速度比较缓慢。它每翻译一行程序叙述就马上运行,而后再翻译下一行,再运行,如此不停地进行下去。它会先将源码翻译成另外一种语言,以供屡次运行而无需再经编译。其制成品无需依赖编译器而运行,程序运行速度比较快。.net
即时编译(Just-in-time compilation: JIT):又叫实时编译、及时编译。是指一种在运行时期把字节码编译成原生机器码的技术,一句一句翻译源代码,可是会将翻译过的代码缓存起来以下降性能耗损。这项技术是被用来改善虚拟机的性能的。
JIT编译器是JRE的一部分。本来的Java程序都是要通过解释执行的,其执行速度确定比可执行的二进制字节码程序慢。为了提升执行速度,引入了JIT。在运行时,JIT会把翻译过来的机器码保存起来,以备下次使用。而若是JIT对每条字节码都进行编译,则会负担太重,因此,JIT只会对常常执行的字节码进行编译,如循环,高频度使用的方法等。它会以整个方法为单位,一次性将整个方法的字节码编译为本地机器码,而后直接运行编译后的机器码。
二进制文件:广义的二进制文件即为文件,由文件在外部存储设备的存放方式为二进制而得名。狭义的二进制文件即指除文本文件之外的文件。文本文件的格式包括:ASCII、MIME、txt。