文档章节

openJdk和sun jdk的区别

jason_kiss
 jason_kiss
发布于 06/18 12:44
字数 718
阅读 36
收藏 4
点赞 0
评论 0

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK,

那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢?

历史上的原因是,OpenJDK是JDK的开放原始码版本,以GPL(General Public License)协议的形式放出(题主提到的open就是指的开源)。在JDK7的时候,OpenJDK已经作为JDK7的主干开发,SUN JDK7是在OpenJDK7的基础上发布的,其大部分原始码都相同,只有少部分原始码被替换掉。使用JRL(JavaResearch License,Java研究授权协议)发布。至于OpenJDK6则更是有其复杂的一面,首先是OpenJDK6是JDK7的一个分支,并且尽量去除Java SE7的新特性,使其尽量的符合Java6的标准。关于JDK和OpenJDK的区别,可以归纳为以下几点:

1.授权协议的不同:

OpenJDK采用GPL V2协议放出,而SUN JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。 
OpenJDK不包含Deployment(部署)功能:部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在OpenJDK中是找不到的。

2.OpenJDK源代码不完整:

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

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

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

4.OpenIDK只包含最精简的JDK:

OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。 
不能使用Java商标:这个很容易理解,在安装OpenJDK的机器上,输入“java -version”显示的是OpenJDK,但是如果是使用Icedtea补丁的OpenJDK,显示的是java。

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

本文转载自:https://www.cnblogs.com/ainimei/p/6450974.html

共有 人打赏支持
jason_kiss
粉丝 9
博文 87
码字总数 49671
作品 0
浦东
程序员
Linux下的JDK和OpenJDK有什么具体的区别

大多数Linux发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk. openjdk是jdk的开放原始码版本,以GPL协议的形式放出。 openjdk只包含最精简的JDK 在安装openjdk的机器上,输入...

帅帅甩锅
2017/10/29
0
0
centos 安装JAVA 三种方法

由于各Linux开发厂商的不同,因此不同开发厂商的Linux版本操作细节也不一样,今天就来说一下CentOS下JDK的安装: 方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创建java目录 ...

微笑出品
2017/10/19
0
0
ubuntu中找到open-jdk的src.zip

在我们使用sun出的jdk时,根目录有一个src.zip可以查看系统类库的源代码 。 在使用open-jdk这个时候目录结构变了,一时间没有找到。但是我不相信找不到。 下面:首先是找到安装的openjdk软件...

李海珍
2012/11/02
0
2
centos卸载openjdk,安装sun的jdk

先找出来 root@demo soft]# rpm -qa | grep jdk java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x8664 java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x8664 [root@demo soft]# rpm -qa | grep gcj ......

熊二哈
2014/11/20
0
0
转 CentOS卸载OpenJDK并安装Sun JDK

CentOS卸载OpenJDK并安装Sun JDK 分类: linux2012-07-23 06:40 7153人阅读 评论(1) 收藏 举报 centosjdksunjava终端build 第一步:查看Linux自带的JDK是否已安装 (卸载centOS已安装的1.4)...

grail
2014/06/30
0
0
Centos7 JDK7安装配置

一、准备工作卸载OpenJDK 1.查找需要卸载的OpenJDK[xsdbc@localhost ~]$ rpm -qa | grep openjdk | grep -v grepjava-1.7.0-openjdk-1.7.0.75-2.5.4.2.el70.x8664java-1.6.0-openjdk-devel-1......

Cennac
2015/01/31
0
0
ubuntu系统jdk安装和环境变量设置

学习java的第一步就是安装jdk了(ubuntu系统下安装openjdk): 第一步:sudo apt-get install openjdk-7-jdk 第二步:安装完毕后就需设置环境变量: (1)vim ~/.bashrc (2)添加: export...

zhengDavid
2012/06/11
0
0
Centos6.5 安装JDK

安装JDK分为两种方式 一种是解压tar.gz配置安装, 一种是rpm安装。 一、tar.gz包安装方式 1.先看看OpenJDK的安装包 $ rpm -qa |grep java tzdata-java-2013b-1.el6.noarch java-1.6.0-openj...

Cennac
2014/04/02
0
1
编译windows版的openJDK攻略

声明: 本文来自于《深入理解Java虚拟机:JVM高级特性与最佳实践》第一章,转载请注明出处。 作者推荐大家对本文“看过就算”,真正要编译JDK的话,请不要选择在Windows平台编译,难度……嗯,...

小小明童鞋
2017/11/07
0
0
Ubuntu12.04安装配置Nginx Tomcat环境

1、安装Nginx apt-get install nginx 然后访问http://localhost 显示 2、安装Tomcat 1)安装jdk 下载jdk1.8.0 在usr/lib目录下创建jvm文件夹 在里面解压jdk sudo vim /etc/environment 在env...

奮鬥
2015/06/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

崛起于Springboot2.X之集成MongoDb使用mongoTemplate CRUD(27)

1、pom依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version></dependency><dependency> <groupId>log4j</......

木九天
14分钟前
0
0
切分log日志

新建logback.xml放到resource里面 <?xml version="1.0" encoding="utf-8"?><configuration> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <......

talen
19分钟前
0
0
spring @Resource 和 @Autowired 的使用区别

这两个 注解 @Resource 和 @Autowired , 常识都知道 @Resource 是 JAVAEE 自带的,@Autowired 是 spring 的自定义注解。 一般情况下, 使用 bean的时候, 这两个注解 随便使用一个即可。 但...

之渊
24分钟前
0
0
springboot集成elasticsearch客户端问题记录

1背景说明 服务端ES版本为5.5.2,springboot版本为1.5.6。 工程中添加如下依赖 2问题记录 2.1 NetworkPlugin类找不到 报错java.lang.ClassNotFoundException: org.elasticsearch.plugins.Net...

zjg23
26分钟前
1
0
快速构建ceph可视化监控系统

前言 ceph的可视化方案很多,本篇介绍的是比较简单的一种方式,并且对包都进行了二次封装,所以能够在极短的时间内构建出一个可视化的监控系统 本系统组件如下: ceph-jewel版本 ceph_expor...

万建宁
26分钟前
0
0
Java构造器使用注意

public class 父类A {int age = 10;protected void say() {System.out.println("父类A");}public 父类A() {override();}public void override() {Syst...

咸鱼AI
26分钟前
0
0
TensorFlow 线性分类

构造直线 z = 2 * x - 3 * y + 4 x0*w0+x1*w1+b=0 x1=-x0* w0/w1-b/w1 斜率 k= -w0/w1 截距 -b/w1 随机生成数据,加入一定的偏差,用直线将二维平面分为两部分 使用线性模型拟合参数 损失函数...

阿豪boy
29分钟前
0
0
翻译冒泡排序测试

翻译一个冒泡排序: var a = [1,3,2,4,6,5];var f = 0;var n = a.length ;for( var i =1; i<= n; i++) { for( var j = n-1 ; j >= i; j --) { if(a[j] < a[j+1]) { ......

钟元OSS
31分钟前
0
0
maven父、子级版本号同时修改

命令: mvn versions:set -DnewVersion=0.0.2-SNAPSHOT

沉默的懒猫
32分钟前
1
0
Spring boot中的异常处理之注解响应

Controller层 return patientRepository.findById(id) .orElseThrow(() -> new NotFoundException(String.format("Patient %d not found", id))); Exception类 @ResponseS......

亚林瓜子
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部