标签:width 执行 研究 run 合并 法律 roc tac 经理
目录
Windows 系统的 cmd 命令行工具;
Linux 或 macOS 的 Terminal 终端;
java -version
[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)的版本信息.
[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 实现.
百度百科上关于 OpenJDK 的说明:
Sun 发布的 OpenJDK 是一款只能运行在 i386 和 AMD-64 机器上的软件。
Java 由 Sun 公司发明, 在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 二进制代码许可协议获得许可.
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 是一致的.
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.
OpenJDK 采用GPL V2协议放出, 而 Oracle JDK 则采用 JRL(Java Research License, Java研究授权协议) 放出. 两种者虽然都是开放源代码的, 但在使用上却要注意:
GPL V2允许在商业上使用;
JRL 只允许个人研究使用, 要获得 Oracle JDK 的商业许可证, 请联系 Oracle 的销售人员.
部署的功能包括: Browser Plugin、Java Web Start、Java Mission Control, 这些功能OpenJDK 是没有的.
在采用 GPL 协议的 OpenJDK 中, SUN JDK 的一部分源码因为产权问题无法提供给 OpenJDK 使用, 其中最主要的是 JMX 中的可选元件 SNMP 部份的代码, 因此这些不能开放的源码将它作成plug, 以供 OpenJDK 编译时使用.
参考:
https://blog.csdn.net/sinat_38259539/article/details/78114983
https://javapapers.com/java/oracle-jdk-vs-openjdk-and-java-jdk-development-process/
https://stackoverflow.com/questions/22358071/differences-between-oracle-jdk-and-openjdk
版权声明
作者: ma_shoufeng(马瘦风)
出处: 博客园 马瘦风的博客
您的支持是对博主的极大鼓励, 感谢您的阅读.
本文版权归博主所有, 欢迎转载, 但未经博主同意必须保留此段声明, 且在文章页面明显位置给出原文链接, 否则博主保留追究法律责任的权利.
你安装的是 SUN/Oracle JDK 还是 OpenJDK ?
标签:width 执行 研究 run 合并 法律 roc tac 经理
原文地址:https://www.cnblogs.com/shoufeng/p/9719995.html