知其然知其所以然
-
Java之父:詹姆斯·高斯林 (James Gosling)。
什么是Java
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念。意思Java不支持多继承、指针。Java语言具有功能强大和简单易用的两个特征。Java语言作为静态面向对象编程语言的代表,极好的实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
JVM、JRE和JDK的关系
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)
等
JDK的核心版本
而到目前为止,我们的JDK存在了三个版本的长期支持版。分别是JDK8、JDK11和JDK17
我司在由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
许可获得许可。