目录
介绍:
我们知道计算机只能理解 0 和 1,我们需要在
同样的方式。
编程语言用于指导计算机理解指令
由人提供。
文件结构:
我们以不同的文件结构编写指令。
- .java 文件,如果是 java。
- 对于其他像 C 我们使用 .c 文件等等。
- 在 C 和 C++ 中,我们编写代码并将代码提供给编译器。
- 这里的代码由编译器编译为可执行的机器代码。
- 但是在java的情况下,它转换成字节码,然后转换成机器码,所以java是
平台独立,可以在任何地方运行。
- 如果是 python 解释器编译代码。
解释程序:
逐行编译代码。
编译器:
获取代码并将其转换为 0 和 1。* 但是在 Java 中,我们将代码发送到编译器,整个文件被发送到字节码,即
存储在 .class 文件中。
我们有字节码,因为我们不能直接在系统中运行,所以我们使用 JVM。
JVM是指java虚拟机。
java执行如下图所示。
关于这些术语会有很多混淆,所以让我们就这些主题进行一些小讨论
1.平台独立性:
-平台独立性意味着字节码可以在所有操作系统上运行。
- 在编译 C 和 C++ 文件时,我们得到依赖于平台的 .exe(可执行)文件。
- 平台相关意味着只在一个平台上工作。
- 在 java 中,它创建字节码,我们可以在任何文件或平台中使用该文件。
- 在 java 中,字节码是使用 JVM 转换为机器码创建的。
- 如果我们有 JVM,我们可以运行任何 java 文件,但 JVM 是平台相关的。
- 字节码与平台无关。
Architecture of JAVA
- JDK-Java Development Kit
- JRE – Java Runtime Environment
- JVM -Java virtual Machine
- JIT-Just in time compiler
JAVA的架构
- JDK-Java开发工具包
- JRE – Java 运行时环境
- JVM -Java 虚拟机
- JIT-即时编译器
A package or set of files which provides tools to run a program.
- Development tools – provides and environment to run a program
- JRE – to execute the program
- Consists of compiler – javac
- Archiver – jar
- docs generator – javadoc
- 6.interpreter / loader
1. JDK
提供运行程序的工具的包或文件集。
- 开发工具 – 提供运行程序的环境
- JRE – 执行程序
- 由编译器组成 – javac
- 存档器 – jar
- 文档生成器 – javadoc
6.解释器/加载器
2. JRE -Java 运行时环境:
提供运行程序环境的安装包
它包括
- 部署技术
- 用户界面工具包
- 集成库
- 基础库
3. JVM-Java虚拟机:
.class 文件之后
类加载器加载执行程序所需的所有类
JVM 将代码发送到字节码验证器并进行代码格式化。
Java没有指针。
编译时间
- .java 文件编译为 .class 文件
javac——java编译
类加载器
类加载器中的两个操作
- 正在加载
- 读取 .class 文件并创建二进制数据
- 在堆内存中创建此类的对象
链接:
链接包含三个步骤
- 验证 .class 文件
- 为类变量和值分配内存
- 用实际值替换符号引用。
JVM 有栈和堆内存分配。
所有值都将分配给它们各自的值。
静态意味着值没有改变。
JVM执行
解释程序:
- 逐行执行。
- 字节文件逐行执行。
- 当一种方法被多次调用时,它将被一次又一次地使用。
- 字节码一次又一次地转换为机器码。
因此,为了一次又一次地解决重复执行,我们使用 JIT。
4. JIT——及时
JIT 提供机器代码,因此不需要重复解释,这可以加快执行速度
这里也使用垃圾回收垃圾回收简称垃圾回收是指删除未使用的变量和值,并且仅使用已声明的变量,从而节省内存
执行过程可以给出如下步骤
Java 源代码 – .class 文件被发送到 JDK,在那里它转换为字节码,JVM 检查并转换为机器码,JRE 运行并检查运行程序所需的包,并显示输出
JRE 和 JRM 相互连接以执行代码编译并提供所需的文件。
让我们赶上!