一、java程序运行方式
1.C/C++ 
编译器将代码整体编译为二进制指令,再给设备运行,是不可以跨平台(即操作系统win,mac)使用的。具体编译运行过程通常包括以下几个步骤:
-
编写源代码:首先,你需要使用文本编辑器编写 C 程序的源代码,并将文件保存为
.c
扩展名。 -
预处理:编译器的预处理器(通常表示为
cpp
)处理源代码文件中的预处理指令(以#
开头的行)。这些指令包括宏定义的展开、文件的包含(#include
)、条件编译指令(#ifdef
、#ifndef
、#endif
等)。 -
编译:编译器(如
gcc
或clang
)将预处理后的源代码转换成汇编语言。这一步通常由-c
选项触发,它会生成目标文件(.o
或.obj
文件)。 -
汇编:汇编器(如
as
)将汇编语言转换成机器语言,生成目标代码。这一步通常也是由编译器自动完成的。 -
链接:链接器(如
ld
)将一个或多个目标文件与库文件和其它资源链接在一起,生成可执行文件。在 C 语言中,这通常包括链接 C 标准库(如libc
)。 -
运行:最后,你可以在命令行或通过双击(在某些操作系统上)执行生成的可执行文件来运行程序。
在某些集成开发环境(IDE)中,这些步骤可能会被封装起来,使得用户只需点击一个按钮即可完成编译和运行。
2.python
解释型:按行一句句翻译,并交给设备运行,所以python是天生开源的,平台都是看得到代码的。
3.java
混合型(编译+解释):
-
编写源代码:使用文本编辑器编写 Java 程序的源代码,并保存为
.java
文件。 -
编译:使用 Java 编译器(
javac
)将源代码编译成字节码(.class
文件)。字节码是一种中间表示,它不是直接在硬件上执行的机器代码,而是 JVM 可以理解和执行的代码。 -
运行:使用 Java 运行时环境(JRE)中的 Java 虚拟机(JVM)来运行编译后的字节码(java并不是运行在操作系统中的,而是虚拟机中的,只需要根据不同的操作系统给出不同的虚拟机即可)。这通常是通过
java
命令完成的。
java是可以跨平台运行的,任何类型操作系统(mac,win)都可以运行java文件。
二、JRE和JDK
JDK(Java Development Kit,Java 开发工具包)和 JRE(Java Runtime Environment,Java 运行时环境)之间的关系可以这样理解:
-
JRE 是运行 Java 应用程序所必需的最小环境,它包括:
- Java 虚拟机(JVM):一个可以执行 Java 字节码的虚拟机,它提供了运行 Java 程序的平台。
- 核心类库:Java 应用程序运行所需的基础类库,这些类库提供了 Java 应用程序运行所需的各种功能,如数据类型、字符串处理、网络通信、文件操作等。
- java运行工具(java)
-
JDK 是用于开发 Java 应用程序的工具包,它包括 JRE 以及开发工具。具体来说,JDK 包括:
- JRE:JDK 包含了一个 JRE,因此它提供了运行 Java 应用程序所需的所有组件。
- 编译器(javac):用于将 Java 源代码编译成字节码的工具。
- 调试器(jdb):用于调试 Java 应用程序的工具。
- 打包工具(jar):用于打包 Java 应用程序和库的工具。
- 文档生成器(javadoc):用于生成 Java 源代码的 API 文档的工具。
- 其他工具:如
javap
(反编译字节码)、javah
(生成 JNI 头文件)等。
JDK = JRE + 除去运行工具之外的其它开发工具(如编译工具)
简而言之,如果你只需要运行 Java 应用程序,那么安装 JRE 就足够了。但如果你想要开发 Java 应用程序,那么你需要安装 JDK,因为它提供了编译器和其它开发工具。在安装 JDK 的过程中,JRE 也会被自动安装,因此你不需要单独安装 JRE。