java为什么是一次编译,多次解释

简介: 本文详细解释java为什么是一次编译,多次解释。

前言



在编程语言中分为编译型语言、解释型语言,而我们的java语言既是编译型的也是解释型的,因为比如c语言是编译型的,因为我们将c语言的源代码编译过后就形成了.exe文件,这样windows系统就可以直接运行,然而我们的java是先将源代码编译成.class文件,然后再由我们的jvm虚拟机解释为我们操作系统所认识的操作指令。


操作



我们先用文本文档新建一个HelloWord.txt文件,然后写上一个简单的HelloWord代码,然后将.txt后缀改为.java,然后cmd运行命令行来编译解释这段程序。


32.png


1、编译,在cmd中找到文件所在的位置,然后执行 javac HelloWord.java指令,如下图


33.png


然后我们可以看到在之前的文件夹内多了一个HelloWord.class的文件,如下图


34.png


但是我们打开这个.class文件是乱码的,是看不懂的,我们可以通过运行 javap -v HelloWord.class > HelloWord.txt 指令将.class反编译一下,成为可供查看的代码,如下图


35.png


然后我们打开这个txt文件可以看到内容如下


36.png


这个就是java编译器将我们的源代码编译为.class文件的内容,这样编译一次就可以了,然后我们一般将我们编译好的.class文件发给用户,用户想使用的话,只需要使用jvm去解释就可以运行了,所以也就是为什么java语言是一次编译,多次解释。



相关文章
|
5天前
|
Java 开发工具 流计算
flink最新master代码编译出现Java Runtime Environment 问题
在尝试编译Flink源码时遇到Java运行时环境致命错误:EXCEPTION_ACCESS_VIOLATION。问题出现在JVM.dll+0x88212。使用的是Java 11.0.28和Java HotSpot(TM) 64-Bit Server VM。系统为Windows客户端,没有生成核心dump文件。错误日志保存在hs_err_pid39364.log和replay_pid39364.log。要解决这个问题,建议检查JDK版本兼容性,更新JDK或参照错误报告文件提交Bug至http://bugreport.java.com/bugreport/crash.jsp。
|
5天前
|
存储 Java C语言
Java代码解释Flash原理
Java代码解释Flash原理
38 0
|
5天前
|
Java
请解释Java中的异常处理机制,并给出使用try-catch块的示例。
请解释Java中的异常处理机制,并给出使用try-catch块的示例。
|
5天前
|
Java 编译器
有关电脑中idea编译报错问题java: No implementation was created for AdminUserConverter due to having a problem in
有关电脑中idea编译报错问题java: No implementation was created for AdminUserConverter due to having a problem in
66 0
|
5天前
|
Java Kotlin
java调用kotlin代码编译报错“找不到符号”的问题
java调用kotlin代码编译报错“找不到符号”的问题
17 10
|
5天前
|
ARouter Java
Java注解之编译时注解
Java注解之编译时注解
16 3
|
5天前
|
Java
JDK环境下利用记事本对java文件进行运行编译
JDK环境下利用记事本对java文件进行运行编译
16 0
|
5天前
|
Java 编译器 Maven
一文解读|Java编译期注解处理器AbstractProcessor
本文围绕编译器注解都是如何运行的呢? 又是怎么自动生成代码的呢?做出了详细介绍。
|
5天前
|
Java
916.【Java】javap 查看 class 文件的jdk编译版本
916.【Java】javap 查看 class 文件的jdk编译版本
98 2
|
5天前
|
搜索推荐 Java 编译器
Javac 编译自定义注解及分析 Lombok 的注解实现
Javac 编译自定义注解及分析 Lombok 的注解实现
69 0