提供网站建设商家,江苏企业建设网站公司,mvc5网站开发项目下载,网站建设方案 评价目录
一、关于JVM 、JDK以及 JRE
1. JVM
2. JDK
3. JRE
二、为什么说 Java 语言“编译与解释并存”#xff1f;
2.2 将高级编程语言按照程序的执行方式分为两种#xff1a;
2.2 Java的执行过程#xff1a;
2.3 所以为什么Java语言“编译与解释共存#xff1a…目录
一、关于JVM 、JDK以及 JRE
1. JVM
2. JDK
3. JRE
二、为什么说 Java 语言“编译与解释并存”
2.2 将高级编程语言按照程序的执行方式分为两种
2.2 Java的执行过程
2.3 所以为什么Java语言“编译与解释共存 一、关于JVM 、JDK以及 JRE
1. JVM
Java 虚拟机JVM是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现WindowsLinuxmacOS目的是使用相同的字节码它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译随处可以运行”的关键所在。
它本身并不被解释但也可以通过将其指令集编译为硅 CPU 的指令集来实现。
Java 虚拟机对 Java 编程语言一无所知只知道一种特定的二进制格式即类文件格式。类文件包含 Java 虚拟机指令或字节码和符号表以及其他辅助信息。
关于JVM规范参考官网JVM规范
2. JDK
JDKJava Development Kit它是功能齐全的 Java SDK是提供给开发者使用的能够创建和编译 Java 程序。他包含了 JRE同时还包含了编译 java 源码的编译器 javac 以及一些其他工具比如 javadoc文档注释工具、jdb调试器、jconsole基于 JMX 的可视化监控⼯具、javap反编译工具等等。
Java开发环境搭建的步骤 下载JDK 安装JDK 配置环境变量 关于以上JDK环境的下载以及配置的详细步骤见Java——JDK的下载以及环境变量的配置超详细过程 小提示这里建议在文件夹选项中将文件扩展名显示以便于查看文件扩展名
JDK的结构图 3. JRE
JREJava Runtime Environment 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合主要包括 Java 虚拟机JVM、Java 基础类库Class Library。 也就是说JRE 是 Java 运行时环境仅包含 Java 应用程序的运行时环境和必要的类库。而 JDK 则包含了 JRE同时还包括了 javac、javadoc、jdb、jconsole、javap 等工具可以用于 Java 应用程序的开发和调试。如果需要进行 Java 编程工作比如编写和编译 Java 程序、使用 Java API 文档等就需要安装 JDK。而对于某些需要使用 Java 特性的应用程序如 JSP 转换为 Java Servlet、使用反射等也需要 JDK 来编译和运行 Java 代码。因此即使不打算进行 Java 应用程序的开发工作也有可能需要安装 JDK。 二、为什么说 Java 语言“编译与解释并存”
2.2 将高级编程语言按照程序的执行方式分为两种 编译型编译型语言 会通过编译器将源代码一次性翻译成可被该平台执行的机器码。一般情况下编译语言的执行速度比较快开发效率比较低。常见的编译性语言有 C、C、Go、Rust 等等。 解释型解释型语言会通过解释器一句一句的将代码解释interpret为机器代码后再执行。解释型语言开发效率比较快执行速度比较慢。常见的解释性语言有 Python、JavaScript、PHP 等等。 2.2 Java的执行过程
常见的编译型语言如C通常会把代码直接编译成CPU所能理解的机器码来运行。而Java为了实现“一次编译处处运行”的特性把编译的过程分成两部分首先它会先由javac编译成通用的中间形式——字节码然后再由解释器逐条将字节码解释为机器码来执行。所以在性能上Java通常不如C这类编译型语言。
为了优化Java的性能 JVM在解释器之外引入了即时Just In Time编译器当程序运行时解释器首先发挥作用代码可以直接执行。随着时间推移即时编译器逐渐发挥作用把越来越多的代码编译优化成本地代码来获取更高的执行效率。解释器这时可以作为编译运行的降级手段在一些不可靠的编译优化出现问题时再切换回解释执行保证程序可以正常运行。
Java的执行过程可参考Java 即时编译器原理解析 Java的执行过程整体可以分为两个部分第一步由javac将源码编译成字节码在这个过程中会进行词法分析、语法分析、语义分析编译原理中这部分的编译称为前端编译。接下来无需编译直接逐条将字节码解释执行在解释执行的过程中虚拟机同时对程序运行的信息进行收集在这些信息的基础上编译器会逐渐发挥作用它会进行后端编译——把字节码编译成机器码但不是所有的代码都会被编译只有被JVM认定为的热点代码才可能被编译。 怎么样才会被认为是热点代码呢JVM中会设置一个阈值当方法或者代码块的在一定时间内的调用次数超过这个阈值时就会被编译存入codeCache中。当下次执行时再遇到这段代码就会从codeCache中读取机器码直接执行以此来提升程序运行的性能。整体的执行过程大致如下图所示 2.3 所以为什么Java语言“编译与解释共存
这是因为 Java 语言既具有编译型语言的特征也具有解释型语言的特征。因为 Java 程序要经过先编译后解释两个步骤由 Java 编写的程序需要先经过编译步骤生成字节码.class 文件这种字节码必须由 Java 解释器来解释执行。