你安装的是SUN/Oracle JDK仍是OpenJDK?

[TOC]java

1 如何查看你安装的JDK版本

1.1 要用到的命令行工具

Windows系统的cmd命令行工具;shell

Linux或macOS系统的Terminal终端;oracle

1.2 查看JDK的版本

java -version

(1) 若是是SUN/OracleJDK, 显示信息为:工具

[root@localhost ~]# java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

说明:性能

Java HotSpot(TM) 64-Bit Server VM 代表, 此JDK的JVM是Oracle的64位HotSpot虚拟机, 运行在Server模式下(虚拟机有Server和Client两种运行模式).字体

Java(TM) SE Runtime Environment (build 1.8.0_162-b12) 是Java运行时环境(即JRE)的版本信息.ui

(2) 若是OpenJDK, 显示信息为:spa

[root@localhost ~]# java -version
openjdk version "1.8.0_144"
OpenJDK Runtime Environment (build 1.8.0_144-b01)
OpenJDK 64-Bit Server VM (build 25.144-b01, mixed mode)

PS. 主要的Linux发行版(如Ubuntu, Fedora和Red Hat Enterprise Linux) 提供OpenJDK或其变体做为系统默认的Java SE的实现..net

2 什么是 OpenJDK

百度百科上关于OpenJDK的说明:开放源代码

Sun发布的OpenJDK是一款只能运行在i386和AMD-64机器上的软件。

2.1 OpenJDK 的来历

Java由SUN公司(Sun Microsystems, 发起于美国斯坦福大学, SUN是Stanford University Network的缩写)发明, 2006年SUN公司将Java开源, 此时的JDK即为OpenJDK.

也就是说, OpenJDK是Java SE的开源实现, 它由SUN和Java社区提供支持, 2009年Oracle收购了Sun公司, 自此Java的维护方之一的SUN也变成了Oracle .

大多数JDK都是在OpenJDK的基础上编写实现的, 好比IBM J9, Azul Zulu, Azul Zing和Oracle JDK. 几乎现有的全部JDK都派生自OpenJDK, 它们之间不一样的是许可证:

OpenJDK根据许可证GPL v2发布;

Oracle JDK根据Oracle二进制代码许可协议得到许可.

2.2 Oracle JDK的来历

Oracle JDK以前被称为SUN JDK, 这是在2009年Oracle收购SUN公司以前, 收购后被命名为Oracle JDK.

实际上, Oracle JDK是基于OpenJDK源代码构建的, 所以Oracle JDK和OpenJDK之间没有重大的技术差别.

Oracle的项目发布经理Joe Darcy在OSCON 2011 上对二者关系的介绍也证明了OpenJDK 7和Oracle JDK 7在程序上是很是接近的, 二者共用了大量相同的代码(以下图), 注意: 图中提示了二者共同代码的占比要远高于图形上看到的比例, 因此咱们编译的OpenJDK基本上能够认为性能、功能和执行逻辑上都和官方的Oracle JDK是一致的.

<img src="https://img2018.cnblogs.com/blog/1438655/201809/1438655-20180928174818669-817981474.png" width="65%" alt="OpenJDK与Oracle JDK之间的区别" />

3 Oracle JDK与OpenJDK的区别

3.1 主要不一样

OpenJDK Font Renderer(字体栅格化引擎) 和Oracle JDK Flight Recorder(飞行记录仪) 是Oracle JDK和OpenJDK之间明显的主要区别. —— 存疑, 还没有求证.

OpenJDK使用的是开源免费的FreeType, 能够按照GPL v2许可证使用.

Oracle JDK采用了商业实现, 其中的Flight Recorder和MissionControl都是从JRockit中改造而来的.

JRockit是Oracle的JVM, 从Java SE 7开始, HotSpot和JRockit合并为一个JVM.

3.2 受权协议的不一样

OpenJDK采用GPL V2协议放出, 而Oracle JDK则采用JRL(Java Research License, Java研究受权协议) 放出. 两种者虽然都是开放源代码的, 但在使用上却要注意:

GPL V2容许在商业上使用;

JRL只容许我的研究使用, 要得到Oracle JDK的商业许可证, 须要联系Oracle的销售人员进行购买.

3.3 OpenJDK不包含Deployment功能

部署的功能包括: Browser Plugin、Java Web Start、Java Mission Control, 这些功能OpenJDK都没有.

3.4 OpenJDK源码不完整

在采用GPL协议的OpenJDK中, SUN JDK的一部分源码由于产权问题没法提供给OpenJDK使用, 其中最主要的是JMX中的可选元件SNMP部份的代码, 所以这些不能开放的源码将它做成plug, 以供 OpenJDK编译时使用.

参考资料

如何看本地安装的jdk是Sun/Oraclejdk仍是Openjdk

Oracle JDK vs OpenJDK and Java JDK Development Process

Differences between Oracle JDK and OpenJDK

版权声明

做者: 马瘦风

出处: 博客园 马瘦风的博客

您的支持是对博主的极大鼓励, 感谢您的阅读.

本文版权归博主全部, 欢迎转载, 但请保留此段声明, 并在文章页面明显位置给出原文连接, 不然博主保留追究相关人员法律责任的权利.

相关文章
相关标签/搜索