一、JVM、JRE、JDK的关系
JVM:Java Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。
JRE:Java Runtime Environment包括Java虚拟机和Java程序所需的核心类库等;核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等
如果想要运行一个开发好的Java程序,计算机中只需安装JRE即可
JDK:Java Development Kit是提供给开发人员使用的,其中包含了Java的开发工具,也包括了JRE,所以安装了JDK,就无需在单独安装JRE了,其中的开发工具有:编译工具(javac.exe),打包工具(jar.exe)等
关系图:
二、什么是跨平台性?原理是什么
所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。
原理:Java程序是通过Java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序
三、Java语言的特点
简单易学、面向对象(封装、继承、多态)、平台无关性、支持网络编程且方便(java语言诞生本身就是为简化网络编程设计的)、支持多线程(多线程机制使应用程序在同一时间并行执行多项任务)、健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集)、安全性
四、Java中的编译器和解释器
Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行,这就是上面提到的Java的特点的编译与解释并存的解释。
过程:
Java源代码 ----> 编译器 ----> jvm可执行的Java字节码(即虚拟指令) ----> jvm ----> jvm中解释器 -----> 机器可执行的二进制机器码 ----> 程序运行。