java 程序从编写到最终运行经历了哪些过程?

发布时间:2023年12月24日

对 Java 的加载与执行的理解
java 程序从编写到最终运行经历了哪些过程?

java程序非常重要的两个阶段:
编译阶段
运行阶段
注意:Java程序员直接编写的 java 代码(普通文本)是无法执行被 JVM 识别的。java 程序员编写的 java 代码这种普通文本必须经过一个编译,将这个“普通文本代码”变成“字节码”,JVM 能够识别“字节码”。
java 代码这种普通文本变成字节码的过程,被称为:编译。

java 代码这种普通文本被称为:java 源代码。(程序员编写的代码是源代码)
源代码不能直接执行,需要先进行编译,生成源代码对应的“字节码”,JVM 可以识别的是字节码。

编译阶段和运行阶段可以在不同的操作系统上完成吗?
在 windows 上编译,编译之后生成了“字节码”,把“字节码”放到 Linux 上运行,完全可以,因为 Java 是跨平台的。可以做到一次编写到处运行。

java 源代码一旦编译之后,源代码可以删除吗?只留下字节码可以执行吗?
完全可以执行,因为源代码不参与程序的执行过程。
参与程序执行过程的是字节码。
但是最好不要删除源代码。因为有可能执行结果不是你需要的,当执行结果不是你需要的时候,
你可以重新打开源代码进行修改,然后重新编译生成新的字节码,再重新执行。这样会有新的执行效果。

放源代码的文件扩展名必须是:xxx.java
并且需要注意的是:编译生成的字节码文件扩展名是:xxx.class

.java 文件就是源文件,这个文件中编写源代码。
.class 文件就是字节码文件,这个文件是编译源代码而得到的。

另外需要注意的是:
1个 java 源文件是可以编译生成多个 class 文件的。最终运行的是 class 文件。

问题:字节码文件是二进制文件吗?
字节码文件不是二进制文件。
如果是二进制的话,就不需要 JVM 了。因为操作系统可以执行二进制。

java程序从开始到最终运行经历了什么?
编译期:
第一步:在硬盘的某个位置(随意),新建一个 xxx.java 文件
第二步:使用记事本或者其它文本编辑器例如 EditPlus 打开 xxx.java 文件
第三步:在 xxx.java 文件中编写“符合 java 语法规则的”源代码。
第四步:保存(一定要将 xxx.java 文件保存一下)
第五步:使用编译器(javac【JDK安装后自带】)对 xxx.java 文件进行编译。
第六步:如果 xxx.java 文件中编写的源代码是符合语法规则的,编译会通过,如果 xxx.java 文件中编写的源代码违背了语法规则,那么编译器会报错,编译器报错之后 class 文件是不会生成的,只有编译通过了才会生成 class 字节码文件。并且一个 java 源文件是可以生成多个 class 文件的。(编译实质上是检查语法)

运行期:(可以在 windows 上,也可以在其他的 OS 上。)
第七步:如果是在 Linux 上运行,需要将 windows 上生成的 class 文件拷贝,不需要拷贝源代码,真正运行的是字节码。
(但是源代码也不要删除,有用)
第八步:使用 JDK 自带的一个命令/工具:java(负责运行的命令/工具)执行字节码
第九步:往下的步骤就全部交给 JVM 了,就不需要程序员干涉了。
JVM 会将字节码文件装载进行,然后 JVM 对字节码进行解释(解释器负责将字节码解释为1011010100. . 等的二进制)
第十步:JVM 会将生成的二进制码交给 OS 操作系统,操作系统会执行二进制码和硬件进行交互。

注意:在以上的过程中,需要使用两个非常重要的命令?
javac 命令,负责编译
java 命令,负责运行

源文件编写的代码叫做源代码。

javac.exe 负责编译
java.exe 负责运行

编译阶段:
怎么编译?使用什么命令?这个命令怎么用?
需要使用的命令是,例:C:\Program Files\Java\jdk-13.0.2\bin\javac.exe
这个命令需要先测试一下,打开 DOS 命令窗口,看看 javac 命令是否可用。

为什么 ipconfig、ping 等命令可以使用呢?为什么 javac 用不了?
我们发现 windows 操作系统中有可用一个环境变量,名字叫做:path,
并且发现 path 环境变量的值是:
	.................................................................
我们还发现了再:C:\Windows\System32 这个目录下存在:ipconfig.exe

注意:修改环境变量之后,DOS 命令窗口必须关闭重新打开才会起作用。

将 path 环境变量中的:C:\windows\system32; 删除之后再测试:
显示 'ipconfig' 不是内部或外部命令,也不是可运行的程序或批处理文件。

配置环境变量 path 的步骤:
桌面计算机上右键-->属性-->高级系统设置-->环境变量
怎么修改 path 环境变量?
找到 path,path 环境变量当中都是路径,路径和路径之间用半角“;”隔开

注意:环境变量包括:“系统变量”和“用户变量”
	系统变量:范围比较大,系统变量会让计算机所有用户都起作用。
	用户变量:范围比较小,这个变量只是作用于当前用户。

怎么查看编译器版本?
javac -version

怎么看java虚拟机的版本?
java -version

查看安装:
javac
java

javac命令怎么用?
语法格式:
	javac java源文件的路径
什么是 java 源文件?
	java源文件的名字以“.java”结尾,该文件中写了 java 源代码。 
java 源文件的路径是什么意思?
	注意:路径永远包括绝对路径和相对路径。

注意:把 java 源文件直接拖进到 DOS 命令窗口,那么 DOS 命令窗口就有这个路径了。

怎么在 DOS 命令窗口中快速定位到某个路径呢?
打开计算机-->打开一些文件夹-->在地址栏上直接输入 cmd 回车,这样直接就过去了

运行阶段:
运行的前提是:class 文件(字节码)生成了。没有字节码文件程序是无法运行的。
假设文件名是 Test.class,那么:Test 就是一个类名。

怎么运行,使用哪个命令?
使用 JDK 的 bin 目录下的:java.exe 命令来运行的。

先在 DOS 命令窗口中测试 java.exe 这个命令是否可用
java -version

“java.exe”这个命令怎么用,语法格式是什么?
java 类名

对于这个字节码:Test.class,应该:java Test
对于这个字节码:A.class,应该:java A
对于这个字节码:Hello.class,应该:java Hello
. . . . . . . . 

运行 Java 程序需要哪些步骤呢?
第一步:先使用 cd 命令切换到 xxx.class 文件所在的路径。
第二步:执行 java xxx
切记:执行 class 文件时,java 后面只能跟类名
文章来源:https://blog.csdn.net/friend18750230725/article/details/135161646
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。