【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-10-19 21:25:25

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

JDK动态代理深入理解分析并手写简易JDK动态代理(上)

原文引用https://www.dazhuanlan.com/2019/08/26/5d6300df6f20f/ 博客真的是好几个月没更了,2019新年第一篇,继续深入动态代理,前两篇简单分析了动态代理的实现原理之后,这次继续深入了解具体的实现方式,并手写一套简易的动态代理已加强理解: 本博客关于Java动态代理相关内容直达链接: JDK动态代理浅析 Cglib动态代理浅析 JDK动态代理深入理解分析并手写简易JDK动态代理(上) JDK动态代理深入理解分析并手写简易JDK动态代理(下) 博客真

高版本的jdk编译过的项目移到低版本的JDK的eclipse中出错的问题

由于2台电脑安装的jdk版本不一样,导致从一台电脑移动项目到另一台电脑上时,运行出现了错误,错误信息如下: 主要是原先项目运行的JDK版本为1.8, 而要移过去的电脑的jdk是1.7的,首先已经把build path中的jre的版本换成了本机的1.7版本了,但是还是出现了上面的问题,上网找了一下,大致意思就是jdk的版本不一致造成的,但是真正不一致的地方是由于项目之前是在1.8版本上编译运行的,所有项目的属性中编译器的版本设定就是1.8了,所有只要这个设置与本机的JDK一样就可以了,具体设置是在

JDK与JRE、JVM三者间的关系及JDK的安装部署

一.JDK与JRE.JVM三者间的关系 JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库.Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库.JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序. JDK是J

什么是JDK,JRE以及Java的运行机制和环境变量path,classpath的区别

1,JDK SUN公司提供了一套Java开发环境,简称JDK,它是整个Java的核心,其中包括Java编译器,Java运行工具,Java文档生成工具,Java打包工具等. 2,JRE SUN公司除了提供JDK,还提供了一种JRE工具,它是Java的运行环境,只需要运行事先编写好的程序,因此JRE工具中只包含Java运行工具,不包含Java编译工具. 3,为了方便使用,SUN公司在其JDK工具中自带了一个JRE工具,也就是说开发环境中包含了运行环境,这样一来,开发人员只需要在计算机上安装JDK,不

设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的1

最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u92-windows-x64),JDK安装路径里有个"src.zip"就是JDK的源码文件压缩包: 设置好环境变量的JAVA_HOME变量和PATH变量(JAVA_HOME变量值也是D:\Java\jdk-8u92-windows-x64). 然后打开Eclipse设置可以Debug模式调试

CentOS安装jdk的三种方法

环境 Linux版本:CentOS 6.5.Ubuntu 12.04.5 JDK版本:JDK 1.7 目录 方法一:手动解压JDK的压缩包,然后设置环境变量 方法二:用yum安装JDK 方法三:用rpm安装JDK 方法四:Ubuntu 上使用apt-get安装JDK 内容 方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创建java目录  [[email protected] ~]# mkdir/usr/java [[email protected] ~]# cd /us

16.1 Tomcat介绍;16.2 安装jdk;16.3 安装Tomcat

扩展: java容器比较 http://my.oschina.net/diedai/blog/271367 http://www.360doc.com/content/11/0618/21/16915_127901371.shtml j2ee.j2se.ejb.javabean.serverlet.jsp之间关系 http://blog.csdn.net/ququhu/article/details/73470 tomcat server.xml配置详解 http://blog.csdn.net

JDK安装与配置

JDK的全称是JavaSE Development Kit,即java开发工具包,是sun公司提供的一套用于开发java应用程序的开发包,它提供了编译.运行java程序所需的各种工具和资源,包括java编译器.java运行时环境,以及常用的java类库等. 这是又设计到一个概念:JRE,全称Java Runtime Environment ,java运行时环境.它是运行java程序的必须条件. 一般而言,如果只是运行java程序,可以只安装JRE,无需安装JDK. 1. JDK的下载 第一步:登

认识JDK、JRE、JVM

JDK.JRE.JVM之间的关系: 首先看看JDK与JRE的区别与联系,如下图所示: 由图可知: JDK = JRE + Tools&Tool APIs JDK的核心是Java SE API.JavaSE API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能.Java SE API包括一些重要的语言结构以及基本图形,网络和文件I/O.我们在自己的程序中,调用前辈们写好的这些Class,来作为我们自己开发的一个基础.当然,现在已经有越来越多的性能更好或者功能更强大的第三方类库供我

混合式app ionic2.x 手动搭建开发环境教程分享(nodejs,jdk,ant,androidsdk)

1.ionic简介 为什么选用ionic: 彻底开源且免费 性能优异 基于红的发紫的AngularJs 漂亮的UI 强大的命令行(基于更热门的nodejs) 开发团队非常活跃 ngCordova,将主流的Cordova API或者Cordova插件封装为AngularJS扩展,使用非常方便 开源免费的webfont icon库ionicons,基本满足你icon需求 2.相关下载: Node.js(npm安装工具) :  https://nodejs.org/en/ jdk (android编译