【JDK和Open JDK】平常使用的JDK和Open JDK有什么区别

注意到这个问题,是在CentOS7上安装JDK的时候,查找相关的资料,发现安装JDK之前都需要检查或卸载系统上原生的Open JDK,这才引起了注意。

到了这里,引用查到的一篇说明。

转自:http://fgh2011.iteye.com/blog/1771649

 

历史上的原因是,openjdk是jdk的开放原始码版本,以GPL协议的形式放出。在JDK7的时候,openjdk已经成为jdk7的主干开 发,sun jdk7是在openjdk7的基础上发布的,其大部分原始码都相同,只有少部分原始码被替换掉。使用JRL(JavaResearch License,Java研究授权协议)发布。

至于openjdk6则更是有其复杂的一面,首先是openjdk6是jdk7的一个分支,并且尽量去除Java SE7的新特性,使其尽量的符合Java6的标准。

关于JDK和OpenJDK的区别,可以归纳为以下几点:

一.授权协议的不同:

openjdk采用GPL V2协议放出,而JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。

二.OpenJDK不包含Deployment(部署)功能:

部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在Openjdk中是找不到的。

三.OpenJDK源代码不完整:

这个很容易想到,在采用GPL协议的Openjdk中,sun
jdk的一部分源代码因为产权的问题无法开放openjdk使用,其中最主要的部份就是JMX中的可选元件SNMP部份的代码。因此这些不能开放的源代码
将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。而Icedtea则为这些不完整的部分开发了相同功能的源代码
(OpenJDK6),促使OpenJDK更加完整。

四.部分源代码用开源代码替换:

由于产权的问题,很多产权不是SUN的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。

五.openjdk只包含最精简的JDK:

OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。

六.不能使用Java商标:

这个很容易理解,在安装openjdk的机器上,输入“java -version”显示的是openjdk,但是如果是使用Icedtea补丁的openjdk,显示的是java。(未验证)

总之,在Java体系中,还是有很多不自由的成分,源代码的开发不够彻底,希望Oracle能够让JCP更自由开放一些,这也是所有Java社区所希望的。

时间: 2024-07-29 22:54:33

【JDK和Open JDK】平常使用的JDK和Open JDK有什么区别的相关文章

[翻译]JDK 8 兼容性指南

翻译官方文档,删除部分可忽略. 译者:坤谷,井桐,激酶 兼容性是一个复杂的问题. 本文介绍了Java平台潜在的三种不兼容问题: 源码: 源码兼容性问题关注Java源代码转换成class文件是否兼容,包括代码是否仍然可编译. 二进制: 在Java语言规范中,二进制兼容性定义为:"类的改变是二进制兼容的(或者不破坏二进制兼容性),是指如果改变前的类的二进制在链接时没有错误,那么改变后的类在链接时仍然没有错误." 行为 : 行为兼容性包括在运行时执行的代码的语义. 欲了解更多信息,请参阅Op

Ubuntu下手动安装jdk及配置

在ubuntu下可以通过多种方式来安装jdk,如使用Adept/新立得软件管理器在其中分别搜索"sun-java6-jre"和"sun-java6-jdk"并标记安装.通过apt-get命令来安装(sudo apt-get install sun-java6-jre.sudo apt-get install sun-java6-jdk).同样也可以通过从java官网上下载jdk安装文件进行手动安装(我下载的文件是:jdk-6u20-linux-i586.bin),这

在Ubuntu 13.10安装PyCharm 3.0.1 & Oracle JDK

由于授权问题,在较新的Linux发行版本中都不再包含Oracle Java,取而代之的是OpenJDK.Ubuntu 也是如此. OpenJDK能满足大部分的应用程序运行条件,但PyCharm无法在OpenJDK条件下运行,因此需要安装 Oracle公司的JDK. 首先到JetBrain官网选择对应操作系统的最新版PyCharm下载.如果使用虚拟机,可以先在主机中用 迅雷下载,然后传输到虚拟机中使用.下载后的文件应该是.tar.gz格式,在Ubuntu中解压到自己选择的 路径后即可使用. 运行方

Linux环境下的Java开发(二):安装JDK

地球人都知道,Linux操作系统往往都是提供了很多软件开发包的大杂烩,那 么,我们亲爱的红旗Linux为我们集成了Java开发环境了吗?这个问题,需要我们 自己去找答案.我采用的方法是这样的,先在文件系统中搜索是否有javac程序, 因为要编译Java源代码,javac是肯定少不了的.打开命令行窗口,输入如下命令 : find / -name javac -print & 最后的结果是没有找到这个文件,也就是说如果要进行Java开发,我们得自己 安装JDK. 要想查看系统是否自带了JDK,我们还

JRE和JDK的区别详解

JDK JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar).不论什么Java应用服务器实质都是内置了某个版本的JDK.最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等.其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun

linux下jdk安装shell脚本

ubuntu/centos下安装jdk shell脚本,用root执行.支持32位系统和64位系统,github链接  #!/bin/bash # jdk install # 请将下载的jdk-xxx-linux-xxx.tar.gz包与此脚本放置到同一目录 # 授予此脚本可执行权限(chmod +x install_jdk.sh) # 在终端执行此脚本开始安装(./文件名) # 注意:不可有多个版本的jdk包! #      为了使配置的环境变量生效,安装完成后你应该重新登陆. echo "P

代码片段:基于 JDK 8 time包的时间工具类 TimeUtil

知识的工作者必须成为自己时间的首席执行官. 前言 这次泥瓦匠带来的是一个好玩的基于 JDK 8 time包的时间工具类 TimeUtil.本意,用 JDK 8 写个实战的时间工具类,初版泥瓦匠写的很不好,后来雨神分分钟将这个代码优化优化,谢谢雨神.就此分享下这个代码,让更多的人看到~ 一. Java 8 time包 从 Java 1.0 有个 Date 类,想必大家不陌生,后面有了 Calendar 类(被废弃 ).API 确实比较难用,因此 Java 8 引入 java.time API,这次

java-JPA 2.0 requires Java 1.5 or newer.升级了jdk,还是出现错误

问题描述 JPA 2.0 requires Java 1.5 or newer.升级了jdk,还是出现错误 创建jpa project时出现错误JPA 2.0 requires Java 1.5 or newer.升级了jdk,还是出现错误 解决方案 你是重新安装的jdk吗?这个错误指明是版本问题.你再检查一下..包括环境配置

JDK不同操作系统的FileSystem(Windows)上篇

前言 我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口. 关于FileSystem类 JDK 里面抽象出了一个 FileSystem 来表示文件系统,不同的操作系统通过继承该类实现各自的文件系统,比如 Windows NT/2000 操作系统则为 WinNTFileSystem,而 unix-like 操作系统为 UnixFileSystem. 需要注意的一点是,WinNTF

在 JDK 9 中更简洁使用 try-with-resources 语句

本文详细介绍了自 JDK 7 引入的 try-with-resources 语句的原理和用法,以及介绍了 JDK 9 对 try-with-resources 的改进,使得用户可以更加方便.简洁的使用 try-with-resources 语句. 在 JDK 7 之前,资源需要手动关闭. 例如下面一个很常见的文件操作的例子: Charset charset = Charset.forName("US-ASCII"); String s = ...; BufferedWriter wri