Java的加载与执行原理剖析

Java初学笔记(四)

Java体系的技术被划分为三大块:

  • JavaSE: 标准版
  • JavaEE: 企业版
  • JavaME: 微型版

安装JDK后:

  • JDK:Java开发环境
  • JRE:Java运行环境
  • JVM:Java虚拟机

Java程序的两个阶段:

  • 编译阶段
  • 运行阶段

   注:  Java代码这种普通文本被称为:Java源代码。源代码不能被执行,需要先进行编译,生成源代码对应的“字节码”  。字节码才能被JVM所识别。

    Java代码这种普通文本变成字节码的过程,被称为:编译

思考

    Java的编译阶段和运行阶段可以再不同的操作系统上完成吗?

  可以。依托于Java语言的跨平台性,Java程序的编译阶段和运行阶段可以再不同的操作系统上完成。(一次编译到处运行)

    Java源代码编译之后,可以删除吗?只留下字节码可以执行吗?

  可以。因为源代码不参与程序的执行过程,参与执行过程过程的是字节码。

  但最好不要删除源代码。如果Java字节码的执行结果并不是自己想要的话,我们需要对源码进行修改,然后重新编译生成新的字节码,再重新执行,得到新的执行结果。

关于源代码与字节码文件的拓展名:

放源代码的文件拓展名必须是:xxx.java

需要注意的是:编译生成的字节码的文件拓展名是:xxx.class

因此,.java文件就是源文件,在这个文件中编写源代码

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

需要注意的是:一个Java源文件是可以编译生成多个class文件的,最终运行的是class文件。

那么,字节码文件是二进制文件吗?

不是。如果是二进制的话,就不需要Java虚拟机了,因为操作系统可以直接执行二进制。

Java程序从开发到最终运行的过程

编译期:

  • 第一步:在硬盘的随意某个位置,新建一个xxx.java的文件;
  • 第二步:实用记事本或者其他文本编辑器,例如:Editplus打开xxx.java文件;
  • 第三步:  在xxx.java文件中编写“符合java语法规则”的源代码;
  • 第四步:保存。每次编写或修改,运行前一定要保存;
  • 第五步:使用编译器(javac【JDK安装后自带】)对xxx.java文件进行编译;
  • 第六步:如果xxx.java文件中编写的源代码是符合语法规则的,编译会通过,反之,编译器会报错。只有编译通过了才会生成class文件,报错后class文件是不会生成的(编译实际上是检查语法的);

运行期:

  • 第七步:如果在Linux上运行,需要将Windows文件上生成的class文件拷贝过去,不需要源代码,真正运行的是字节码;
  • 第八步:使用JDK自带的一个命令/工具:java 执行字节码;
  • 第九步:往下的步骤就全部交给JVM了,就不需要程序员干涉了,JVM会将字节码文件装载进去,然后对字节码进行解释(解释为二进制码);
  • 第十步:JVM会将生成的二进制码交给操作系统,系统会执行二进制码和硬件进行交互。

注意:在以上过程中,需要使用两个非常重要的命令!

  • javac 命令,负责编译;
  • java   命令,负责运行。

xxx.java源文件经过编译之后生成了A.java、B.java、C.java等文件(一个源代码文件可生成多个字节码文件),我们称A是一个类,B是一个类,同样的,C也是一个类。其中,A、B、C是类的名字。

至于类到底是什么,我后续会进行讲解,这里先挖个坑。

猜你喜欢

转载自blog.csdn.net/w009550/article/details/107744387