2023最新面试题-Java-1

知其然知其所以然

  • Java之父:詹姆斯·高斯林 (James Gosling)。

什么是Java

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念。意思Java不支持多继承、指针。Java语言具有功能强大和简单易用的两个特征。Java语言作为静态面向对象编程语言的代表,极好的实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

JVMJREJDK的关系

JVM
Java Virtual Machine Java 虚拟机, Java 程序需要运行在虚拟机上,不同的平 台有自己的虚拟机,因此 Java语言可以实现跨平台。
JRE
Java Runtime Environment 包括 Java 虚拟机和 Java 程序所需的核心类库等。核心类库主要是 java.lang 包:包含了运行Java 程序必不可少的系统类,如基本数 据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包
如果想要运行一个开发好的 Java 程序,计算机中只需要安装 JRE 即可。
JDK
Java Development Kit 是提供给 Java 开发人员使用的,其中包含了 Java 的开发 工具,也包括了 JRE 。所以 安装了JDK ,就无需再单独安装 JRE 了。其中的开发工 具:编译工具 (javac.exe) ,打包工具 (jar.exe)

 2023最新面试题-Java-1_第1张图片

JDK的核心版本

 而到目前为止,我们的JDK存在了三个版本的长期支持版。分别是JDK8JDK11JDK17

我司在由8向11过渡

不过最新20都出来,未来的21好像也是长期支持,技术发展太快,我还是好好搬砖。

这篇文章介绍了JDK版本的迭代核心内容:https://blog.csdn.net/wu6cfp38/article/details/130124836

什么是跨平台性?原理是什么

 所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上 运行。

实现原理: Java 程序是通过 java 虚拟机在系统平台上运行的,只要该系统可以安 装相应的 java 虚拟机,  该系统就可以运行java 程序。

什么是字节码?采用字节码的大好处是什么

字节码 Java 源代码经过虚拟机编译器编译后产生的文件(即扩展为 .class 的文 件),它不面向任何特   定的处理器,只面向虚拟机。

采用字节码的好处:

Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的 问题,同时又保留了解 释型语言可移植的特点。所以Java 程序运行时比较高效, 而且,由于字节码并不专对一种特定的机器, 因此,Java 程序无须重新编译便可 在多种不同的计算机上运行。

先看下java中的编译器和解释器:

Java 中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机 器。这台虚拟的机器在 任何平台上都提供给编译程序一个的共同的接口。编译程 序只需要面向虚拟机,生成虚拟机能够理解的 代码,然后由解释器来将虚拟机代 码转换为特定系统的机器码执行。在Java 中,这种供虚拟机理解的代 码叫做字节 码(即扩展为.class 的文件),它不面向任何特定的处理器,只面向虚拟机。每 一种平台的 解释器是不同的,但是实现的虚拟机是相同的。 Java 源程序经过编译 器编译后变成字节码,字节码由虚 拟机解释执行,虚拟机将每一条要执行的字节 码送给解释器,解释器将其翻译成特定机器上的机器码, 然后在特定的机器上运 行,这就是上面提到的Java 的特点的编译与解释并存的解释。
Java 源代码 ---- > 编译器 ---- >jvm 可执行的 Java 字节码 ( 即虚拟指令 ) ---- >jvm ---- >jvm 中 解释器 ----- > 机器可执行的二进制机器码---- > 程序运行。

 Oracle JDK OpenJDK 的对比

1. Oracle JDK 版本将每三年发布一次,而 OpenJDK 版本每三个月发布一 次;
2. OpenJDK 是一个参考模型并且是完全开源的,而 Oracle JDK OpenJDK 的一个实现,并不是完全 开源的;
3. Oracle JDK OpenJDK 更稳定。 OpenJDK Oracle JDK 的代码几乎 相同,但 Oracle JDK 有更多的 类和一些错误修复。因此,如果您想开发企 业/ 商业软件,我建议您选择 Oracle JDK ,因为它经过 了彻底的测试和稳 定。某些情况下,有些人提到在使用OpenJDK 可能会遇到了许多应用程 序崩溃 的问题,但是,只需切换到Oracle JDK 就可以解决问题;
4. 在响应性和 JVM 性能方面, Oracle JDK OpenJDK 相比提供了更好的 性能;
5. Oracle JDK 不会为即将发布的版本提供长期支持,用户每次都必须通过 更新到最新版本获得支持来 获取最新版本;
6. Oracle JDK 根据二进制代码许可协议获得许可,而 OpenJDK 根据 GPL v2 许可获得许可。

 

 

你可能感兴趣的:(2023最新面试题整理,java,面试,jvm)