Linux下的JDK和linux 卸载openjdkK有什么具体的区别

3557人阅读
使用Linux系统的人都清楚,Linux自带有JDK,因此,对于用JAVA编写程序的人来说,使用Linux操作系统是一个不错的选择,因为,我们省去了不少在Windows系统下安装JDK并设置相应环境变量的工作,更何况这些工作中,稍有不注意,就不知什么地方出现错误,编程就出现问题。
但是,我们也在网上看到许多关于在Linux下下载和安装JDK的说明文档,这不是很奇怪吗?Linux自带有JDK,而我们却还要另外下载和安装JDK。事实上,我们在终端输入“java -version”命令时,我们看到显示的是OpenJDK,原来,Linux自带的JDK是OpenJDK,那么,OpenJDK与平时所说的JDK是什么关系呢,顺藤摸瓜,我们找到相应的参考说明如下:
使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,那么到底什么是openjdk,它与sun jdk有什么关系和区别呢?
历史上的原因是,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社区所希望的。
转自:/2012/04/the-realationship-and-difference-between-jdk-and-openjdk/
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:278494次
积分:2689
积分:2689
排名:第9632名
原创:40篇
转载:62篇
评论:21条
(2)(2)(1)(3)(1)(5)(4)(1)(2)(1)(7)(12)(4)(3)(7)(2)(8)(13)(5)(11)(2)(3)(1)(1)(1)
小可总是自觉太菜,不知不觉分享太少,希望以后努力表达清自己的思路与与探索,期待更多探讨,本男宅址:xiaoyao_Linux CENTOS下编译openjdk7Linux centos下编译OpenJDK7-详细指南openjdk 编译时出现jaxp145_01.zip moved to 错误之前一直想编译一次jdk看看的,前几天成功编译,在这里做个笔记,备忘。编译环境:操作系统:64位centos 5.3jdk版本:openjdk-7u2.zip其他依赖库需要仔细的分析。准备工作:1.首先要安装一个jdk。yum install java-1.6.0-openjdk.x86_64yum install java-1.6.0-openjdk-devel.x86_642.依赖库:alsa:声卡有关,安装方法:yum install alsa*X11:应该是跟桌面有关,安装方法:yum install libX11.x86_64 libX11-devel.x86_64注意:如果这样之后还报X**什么错误的话,你就直接 yum install X11**freeType:字体相关,安装方法:&yum install freetype.x86_64 freetype-devel.x86_64注意:如果还出现版本低的错误那就只能手动安装了。下载地址:http://sourceforge.net/projects/freetype/files/freetype2/cups:打印机相关,安装方法:&yum install cups.x86_64 &cups-libs.x86_64ant:编译时会用到,把ant的bin目录配置到path里吧。还有一些library,如zlib等,如果这些基础library报错的话就yum search一下,然后找到相应的版本install就可以。3.openjdk要编译jdk,当然就不能少了jdk源码。到http://download.java.net/openjdk/jdk7/&下载一个想要编译的jdk。wget http://www.java.net/download/openjdk/jdk7/promoted/b147/openjdk-7-fcs-src-b147-27_jun_2011.zipunzip openjdk*.zipcd openjdk环境变量:需要设置一些环境变量,有些则需要unset掉。export LANG=C &export ALT_BOOTDIR=/usr/local/jdk1.6.0_33
export ANT_HOME=/usr/local/apache-ant-1.7.1 export ALT_FREETYPE_HEADERS_PATH=/usr/local/include/freetype2
export ALT_FREETYPE_LIB_PATH=/usr/local/lib
export ALLOW_DOWNLOADS=true export ALT_MOTIF_DIR=/usr/X11R6/ unset CLASSPATH &
unset JAVA_HOME&开始编译:这个是个漫长的过程,首先把要执行的命令都给你写上。jdk/make/jdk_generic_profile.sh
make sanity
make ALLOW_DOWNLOADS=true如果中途出现各种错误,依赖库缺失等问题,依赖库补上之后还编译不通过就可以make clean一下,再重新编译。编译成功后会出现下面的提示:#漫长编译后,你终于能看到编译成功的提示:-- Build times ----------Target all_product_buildStart 2013-07-24 22:18:35End & 2013-07-24 22:27:1800:00:06 corba00:00:07 hotspot00:00:05 jaxp00:00:06 jaxws00:08:14 jdk00:00:05 langtools00:08:43 TOTAL-------------------------到build目录下面看bin目录#lsappletviewer extcheck jar java javadoc javap jconsole jhat jmap jrunscript jstack jstatd native2ascii pack200 rmic rmiregistry serialver Test.class tnameserv wsgen xjcapt idlj jarsigner javac javah java-rmi.cgi jdb jinfo jps jsadebugd jstat keytool orbd policytool rmid schemagen servertool Test.java unpack200 wsimport&./java -version
openjdk version &1.7.0-internal&OpenJDK Runtime Environment (build 1.7.0-internal-root__17_27-b00)OpenJDK 64-Bit Server VM (build 22.0-b10, mixed mode)剩下的命令你都知道怎么玩的,以后就慢慢研究jdk的源码吧,看看垃圾回收算法什么的。Apache技术笔记(apachenote) 
 文章为作者独立观点,不代表微头条立场
的最新文章
apache配置大全,常用配置,tomcat整合,expire的配置。git地址:https://githuapache 与 tomcat 服务器的三种连接配置方式首先,apache和tomcat都是实现了http协抓取请求sudo /usr/sbin/tcpdump \( dst port 8080 or 80 \) -Linux CENTOS下编译openjdk7Linux centos下编译OpenJDK7-详细指南Q. How do I log POST data submitted by our user regist一. 使用 rewrite 技术实现 apache 防盗链Apache 防盗链的第一种实现方法,可以用 re我找过的资料中没有见到过能统计每个ip每秒的访问量,但是可以通过以下方法可以统计。
为了照顾像我这样性急的朋友,先把命令奉上。在检测某段时间内某个ip的访问量时使用下面方式即可。通过替换cat命令为 tail -n 10000,表示在最近的10000个访问中哪个ip的访问量较高,并最终确定某个ip是否在攻击,并用下面的命令把这个ip拉到黑名单。系统很多TIME_WAIT状态的连接,不能及时回收。访问量大的时候时常出现连接超时。
解决办法是调整内核参数,加快TIME_WAIT状态连接的回收和启用重用。
关注apache:apachenote用 curl 验证 http2 http/2
curl 从7.43.0 开始支持http2,需要加参数 –http2。Linux CENTOS下编译openjdk7Linux centos下编译OpenJDK7-详细指南apachenoteapache、tomcat 技术笔记热门文章最新文章apachenoteapache、tomcat 技术笔记Linux下的JDK和OpenJDK有什么具体的区别_百度知道openjdk和java apis有什么区别_百度知道OpenJDK是基于SunJDK7的,openjdk6故意去掉了jdk7的特性。这又是何苦呢?还有它所谓的open到底open了什么?
一个是官方的一个是开源的。
谢谢 &a class=&member_mention& href=&///people/a06cfb38e37dacdf4d7f032& data-hash=&a06cfb38e37dacdf4d7f032& data-hovercard=&p$b$a06cfb38e37dacdf4d7f032&&@RednaxelaFX&/a& 指出此回答中的不足,大家可以去看一下评论。&br&&br&~~~~~~~~~~~~~~~~~~~原回答~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&br&使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK,那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢?
&br&&br&&br&历史上的原因是,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的区别,可以归纳为以下几点:&br&&br&&p&&b&授权协议的不同:&/b&OpenJDK采用GPL V2协议放出,而SUN JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。&/p&&p&OpenJDK不包含Deployment(部署)功能:部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在OpenJDK中是找不到的。&/p&&br&&p&&b&OpenJDK源代码不完整:&/b&这个很容易想到,在采用GPL协议的OpenJDK中,SUN JDK的一部分源代码因为产权的问题无法开放给OpenJDK使用,其中最主要的部份就是JMX中的可选元件SNMP部份的代码。因此这些不能开放的源代码 将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。而Icedtea则为这些不完整的部分开发了相同功能的源代码 (OpenJDK6),促使OpenJDK更加完整。&/p&&br&&br&&p&&b&部分源代码用开源代码替换:&/b&由于产权的问题,很多产权不是SUN的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。&/p&&br&&br&&p&&b&OpenIDK只包含最精简的JDK:&/b&OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。&/p&&p&不能使用Java商标:这个很容易理解,在安装OpenJDK的机器上,输入“java
-version”显示的是OpenJDK,但是如果是使用Icedtea补丁的OpenJDK,显示的是java。&/p&&br&&br&&p&总之,在Java体系中,还是有很多不自由的成分,源代码的开发不够彻底,希望Oracle能够让JCP更自由开放一些,这也是所有Java社区所希望的。&/p&&br&&br&&b&参考文章:&/b&&br&&b&&a href=&///?target=http%3A///questions//what-is-the-difference-between-jvm-jdk-jre-openjdk& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&java - What is the difference between JVM, JDK, JRE & OpenJDK?&i class=&icon-external&&&/i&&/a&&/b&&br&&a href=&///?target=http%3A///2012/04/the-realationship-and-difference-between-jdk-and-openjdk/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/2012/&/span&&span class=&invisible&&04/the-realationship-and-difference-between-jdk-and-openjdk/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
指出此回答中的不足,大家可以去看一下评论。 ~~~~~~~~~~~~~~~~~~~原回答~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK,那么到底什么是Op…
今天刚看到消息 google&br& android以后要放弃sunJDK 而采用开源的openJdk
今天刚看到消息 google android以后要放弃sunJDK 而采用开源的openJdk
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 linux openjdk jstack 的文章

 

随机推荐