java基础 -- java 运行过程及跨平台原理,JDK,JVM,JRE区别

java基础 – java 运行过程及跨平台原理,JDK,JVM,JRE区别

java基础 -- java 运行过程及跨平台原理,JDK,JVM,JRE区别

编写期: 是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件。

编译期: 是指使用 Java 编译器对源文件进行错误排査的过程,编译后将生成后缀名为 .class 的字节码文件

运行: 是指使用 Java 解释器将字节码文件翻译成机器代码,执行并在控制台显示结果。

一般idea创建的均为.java文件,在运行的时候自动编译为.class文件。并通过解释器翻译为机器代码,显示出来


Java为什么可以跨平台

java代码编写后后缀.java文件,如果运行,是需要进行编译的,编译为字节码文件 .class,而字节码文件是一种和任何具体机器环境及操作系统环境无关的中间代码。二进制文件。

大致如下图所示

java基础 -- java 运行过程及跨平台原理,JDK,JVM,JRE区别
这种代码一般机器和编程人员无法直接读懂,所以java提供了开发环境,虚拟机,以及运行环境。统称为JDK

它必须由专用的 Java 解释器来解释执行,Java 解释器负责将字节码文件翻译成具体硬件环境和操作系统平台下的机器代码,以便执行。因此 Java 程序不能直接运行在现有的操作系统平台上,它必须运行在被称为 Java 虚拟机的软件平台之上。Java 虚拟机(JVM)是运行 Java 程序的软件环境(JRE)开发环境(JDK),

执行过程:
首先会启动 JVM,
然后编译为.class文件
然后进行解释器,解释运行输出结果到控制台。

由于 Java 字节码程序只能运行于 JVM 之上。这样利用 JVM 就可以把 Java 字节码程序和具体的硬件平台以及操作系统环境分隔开来。

只要在不同的计算机上安装了针对特定平台的 JVM,Java 程序就可以运行,而不用考虑当前具体的硬件平台及操作系统环境,也不用考虑字节码文件是在何种平台上生成的。

后面会根据虚拟机编译问题会涉及到类序列化,也就是文件编译为二进制,再编译到文件先提一下。

所以总结为,只要安装了虚拟机和虚拟机运行环境,就可以去运行java文件。不管在什么环境上面,只需要又这个java服务支持就可以执行,实现了java的跨平台根本


JDK,JVM,JRE区别

java基础 -- java 运行过程及跨平台原理,JDK,JVM,JRE区别
java基础 -- java 运行过程及跨平台原理,JDK,JVM,JRE区别

JDK=JRE+多种Java开发工具

JRE=JVM+各种类库

这三者的关系是一层层的嵌套关系。JDK>JRE>JVM

综合所述,只需要安装JDK 便包含了JRE及虚拟机