最新的jdk和openjdkjdk有什么区别

使用过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社区所希望的。
前期准备:了解下Open JDK与Oracle JDK的区别
区别与联系
参考的资料
OpenJDK和JDK区别
OpenJDK和Sun/OracleJDK 区别 与联系
OpenJDK和SunJDK有啥区别?
OpenJDK与JDK的区别及Ubuntu下的安装方法
OpenJDK与JDK的区别:
OpenJDK是JDK的开放原始码版本,以GPL协议的形式放出。两者的授权协议的不同,且在采用GPL协议的OpenJDK中,SUNJDK的一部分源代码因为产权的问...
OpenJDK和Sun/OracleJDK 区别 与联系
首先要先明确之间,以及OpenJDK 6、OpenJDK
7、OpenJDK 7u和OpenJDK 8等项目之间是什么关系,这有助于确定接下来编译要使用的JDK版本和源码分支。
从前面介绍的Ja...
OpenJDK与JDK的区别
OpenJDK是JDK的开放源码版本,以GPL协议的形式发布。在JDK7的时候,OpenJDK已经成为JDK7的主干开发版,SUN JDK7是在OpenJDK7的基础上发布的,其大部分源码都相同,只有...
openjdk和jdk的区别
使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,那么到底什么是openjdk,它与sun jdk有什么关系和区别呢? 历史上的...
CentOS安装jdk SE 1.8 JDK与OpenJDK的区别
使用CentOS 安装jdk SE1.8
openjdk和jdk区别
使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,那么到底什么是openjdk,它与sun jdk有什么关系和区别呢?
openjdk和jdk的区别与联系
使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,那么到底什么是openjdk,它与sun jdk有什么关系和区别呢?
Oracle/Sun JDK与OpenJDK的区别和联系
1.Oracle/Sun JDK与OpenJDK的区别和联系
OpenJDK原是SunMicrosystems公司为Java平台构建的Java开发环境(JDK)的开源版本,完全自...
OpenJDK 和 JDK区别
使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,那么到底什么是openjdk,它与sun jdk有什么关系和区别呢?历史上的原...
没有更多推荐了,链接地址:https://gist.github.com/925323
由于某些原因,我贴在这里,供自己参考。
Correspondence between Sun/Oracle JDK, OpenJDK and HotSpot VM versions
build date
Sun/Oracle JDK Version
OpenJDK Version
HotSpot VM Version
1.6.0-b105
1.6.0-b105
1.6.0_01-b06
1.6.0_01-b06
1.6.0_02-b05
1.6.0_02-b05
1.6.0_03-b05
1.6.0_03-b05
1.6.0_04-b12
1.6.0_05-b13
1.6.0_06-b02
1.6.0_07-b11
1.6.0_10-b33
1.6.0_11-b03
1.6.0_12-b04
1.6.0_13-b03
1.6.0_14-b08
1.6.0_15-b03
1.6.0_16-b01
1.6.0_17-b04
1.6.0_18-b07
1.6.0_19-b04
1.6.0_20-b02
1.6.0_21-b07
1.6.0_22-b04
1.6.0_23-b05
2011-??-??
1.6.0_24-b07
2011-04-??
1.6.0_25-b06
Oracle/Sun JDK与OpenJDK的区别和联系
1.Oracle/Sun JDK与OpenJDK的区别和联系
OpenJDK原是SunMicrosystems公司为Java平台构建的Java开发环境(JDK)的开源版本,完全自...
HotSpot和OpenJDK入门
在本文中,我们将会介绍如何开始使用HotSpot Java虚拟机以及它在OpenJDK开源项目中的实现——我们将会从两个方面进行介绍,分别是虚拟机和虚拟机与Java类库的交互。
HotSpot源...
Linux 下编译自己的 OpenJDK7 包括JVM和JDK API
1.首先去 这里 http://download.java.net/openjdk/jdk7/ 下载OpenJDK7的源码zip包
2. 简要介绍下OpenJDK7中的目录
hotspot:...
编译openjdk8
在Ubuntu14下构建Hotspot并使用Eclipse调试
德胜 发布于 8个月前,共有 2 条评论
偶尔会看一点点JVM代码,所以尝试构建了一把最新的OpenJDK8
使用Netbeans开发调试OpenJDK中的HotSpot
编译OpenJDK请看我上一篇文章RedHat/CentOS linux 6 环境编译openJDK7一、下载并安装Netbeans 7.0.1 (c/c++)
http://share.weiyu...
Java程序员必学的Hotspot JVM选项
本文将介绍Hotspot JVM的常用选项。
选项的分类
Hotspot JVM提供以下三大类选项:
1. 标准选项:这类选项的功能是很稳定的,在后续版本中也不太会发生变化。运行java或者java...
openJdk和sun Jdk区别和安装
openJdk和sun jdk的区别使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK,那么到底什么是OpenJDK,它与SUN ...
OpenJDK和Sun/OracleJDK 区别 与联系
首先要先明确之间,以及OpenJDK 6、OpenJDK
7、OpenJDK 7u和OpenJDK 8等项目之间是什么关系,这有助于确定接下来编译要使用的JDK版本和源码分支。
从前面介绍的Ja...
转载地址:https://www.cnblogs.com/dennyzhangdd/p/6734933.html
开启正文之前,先说一下源码剖析这一系列,就以“死磕到底”的精神贯彻始终,JDK--》...
没有更多推荐了,经过核实后将会做出处理,感谢您为社区和谐做出贡献。
请选择删除原因
确定推荐该回答?
openjdk和oraclejdk有什么不同吗
方法1:修改/etc/profile 文件所有用户的 shell都有权使用这些环境变量&1&在 shell终端执行命令:vi /etc/profile&2&在 profile文件末尾加入:JAVA_HOME=/usr/jdk1.6.0_38PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar: $JAVA_HOME/lib/tools.jar export JAVA_HOME,PATH,CLASSPATH&3&重启系统方法2:修改.bashrc文件如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc就可以了,而不像第一种方法给所有用户权限。&1&在 shell终端执行命令:vi ~/.bashrc &2&在.bashrc文件末尾加入: set JAVA_HOME=/usr/jdk1.6.0_38export JAVA_HOME set PATH=$JAVA_HOME/bin:$PATH export PATH set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export CLASSPATH &3&重新登录在Windows中构建OpenJDK8u已经很简单了 - 讨论 - 高级语言虚拟机 - ITeye群组
& 上一页 1
这里以32位Windows7为例
1. 下载和安装一些需要用到的软件
1.1 TortoiseHg
TortoiseHg用来下载OpenJDK8u的源代码,
TortoiseHg下载页面是:
选择32位版本:
编译OpenJDK8u的源代码需要先安装JDK7,
JDK7下载页面是:
安装好后记得配置JAVA_HOME环境变量。
1.3 Cygwin
运行setup-x86.exe之后经过几个步骤,在选择安装包时下面这些是必需的:
Binary Name
Description
================================================================
The GNU assembler, linker and binary utilities
The GNU version of the 'make' utility built for CYGWIN
Interpreters
GNU implementation of the traditional Unix macro processor
A program to manage archives of files
Pattern-directed scanning and processing language
Determines file type using 'magic' numbers
Package and compress (archive) files
Extract compressed files in a ZIP archive
Display amount of free and used memory in the system
================================================================
(注: 此表来自OpenJDK8u的源代码根目录中的README-builds.html)
1.4 freetype
会得到一个freetype-2.3.5-1-bin.zip文件,这里假设解压到C:\freetype-2.3.5目录
1.5 Visual Studio 2010 和 Visual Studio 2010 SP1
Visual Studio 2010下载地址:
Visual Studio 2010 SP1下载地址:
都是英文版,先装Visual Studio 2010再装Visual Studio 2010 SP1
2. 下载和编译OpenJDK8u的源代码
2.1 下载源代码
可以先建个目录,比如E:\openjdk,然后在命令行提示符下进入此目录,
接着顺序执行下面的命令:
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u-dev
cd jdk8u-dev
sh get_source.sh
2.2 编译源代码
执行完2.1后再顺序执行下面的命令:
bash ./configure --with-freetype=/cygdrive/c/freetype-2.3.5 --with-target-bits=32 --enable-debug --with-jvm-variants=client
make images
其中/cygdrive/c/freetype-2.3.5就是在上面1.3小节中提到的C:\freetype-2.3.5目录,
--with-target-bits=32表示构建32位的JDK,
--enable-debug表示构建一个可以调试的JDK(fastdebug),
--with-jvm-variants=client表示只构建client版的JVM,不加这个参数默认构建server版的,
如果使用--with-jvm-variants=client,server则同时构建client和server版的JVM。
make images会生成j2sdk-image
构建后的文件都在E:\openjdk\jdk8u-dev\build\windows-x86-normal-client-fastdebug目录中,
执行此目录下的
images\j2re-image\bin\java.exe -version
images\j2sdk-image\bin\java.exe -version
jdk\bin\java.exe -version
都有如下输出
openjdk version "1.8.0-internal-fastdebug"
OpenJDK Runtime Environment (build 1.8.0-internal-fastdebug-__13_35-b00)
OpenJDK Client VM (build 25.40-b11-fastdebug, mixed mode)
更多有关编译构建OpenJDK8u源代码的细节可以参考源代码根目录中的README-builds.html
如何在Visual Studio 2010调试HotSpot VM以及一些不属于HotSpot VM的代码?
1. 生成Visual Studio项目
假设在前面把Visual Studio 2010和Cygwin安装到如下目录:
D:\VS2010
然后修改E:\openjdk\jdk8u-dev\hotspot\make\windows\makefiles\projectcreator.make文件,
在ProjectCreatorIncludesPRIVATE那一项追加一个"-ignorePath aix"(这是官方遗漏了)
--------------------------------------
&&& -ignorePath zero \
&&& -ignorePath aix \
--------------------------------------
否则在Visual Studio 2010中有编译错误.
接着在命令行提示符下进入E:\openjdk\jdk8u-dev\hotspot\make\windows目录,
顺序执行如下命令:
D:\VS2010\Common7\Tools\vsvars32.bat
set HOTSPOTMKSHOME=D:\Cygwin\bin
create E:\openjdk\jdk8u-dev\build\windows-x86-normal-client-fastdebug\images\j2sdk-image
(注: create对应当前目录下的create.bat文件)
生成的项目文件在E:\openjdk\jdk8u-dev\hotspot\build\vs-i486目录中。
2. 导入项目
运行Microsoft Visual Studio 2010, 按Ctrl + Shift + O,
打开E:\openjdk\jdk8u-dev\hotspot\build\vs-i486\jvm.vcxproj,
然后右击左边的jvm项目名,选择Build就可以构建jvm了。
3. 调试HotSpot VM
在Visual Studio 2010中打开jvm\share\vm\runtime\thread.cpp文件,
在create_vm方法中(比如对应"if (!is_supported_jni_version(args-&version))"这行)打个断点,
然后按F5就可以了,会先进入e:\openjdk\jdk8u-dev\jdk\src\share\bin\main.c,这个文件不属于HotSpot,
实际上对应java.exe。
最后点Debug-&Continue就会转到create_vm方法中。
执行bash ./configure --with-freetype=/cygdrive/c/freetype-2.3.5 --with-target-bits=32 --enable-debug --with-jvm-variants=client&& 报错,权限都有了configure: error: Bad file permissions on src files. This is usually caused by cloning the repositories with a non cygwin hg in a directory not created in cygwin.configure exiting with result code 1
wingwing1987 写道执行
bash ./configure --with-freetype=/cygdrive/c/freetype-2.3.5 --with-target-bits=32 --enable-debug --with-jvm-variants=client&&
报错,权限都有了
configure: error: Bad file permissions on src files. This is usually caused by cloning the repositories with a non cygwin hg in a directory not created in cygwin.
configure exiting with result code 1
突然又可以,完全无解,搞了两日。。。。删除一下,编译一下。。
还是多谢楼主分享。
cygwin和hg在Windows下我有时也会碰到一些很奇怪的问题,比如下载源代码时有时cpu占用率超高,甚至看上去像死机了一样,特别是到clone jdk那个提示时,1个小时过去了都没响应,目录中也没看到有更新,杀掉进程后然后又看到目录中有更新了,sh get_source.sh那条命令要执行多次才勉强下完代码。构建过程中也会很耗时间,总之若出现想不到的错误,删除build目录,重来一次。我在这两个过程中出现问题最多的是在下载源代码那,构建过程倒是很顺利。
ZHH2009 写道cygwin和hg在Windows下我有时也会碰到一些很奇怪的问题,
比如下载源代码时有时cpu占用率超高,甚至看上去像死机了一样,
特别是到clone jdk那个提示时,1个小时过去了都没响应,目录中也没看到有更新,
杀掉进程后然后又看到目录中有更新了,sh get_source.sh那条命令要执行多次才勉强下完代码。
构建过程中也会很耗时间,总之若出现想不到的错误,删除build目录,重来一次。
我在这两个过程中出现问题最多的是在下载源代码那,构建过程倒是很顺利。
cygwin 想问问你,你安装几个包?按照官方几个组件还是全安装?
我试一下,又有问题,我make的版本是4.0,
编译没什么错,make iamges就报错,是make版本太高?
====================================================
A new configuration has been successfully created in
/cygdrive/d/openjdk/jdk8u-dev/build/windows-x86-normal-client-fastdebug
using configure arguments '--with-freetype=/cygdrive/d/freetype-2.3.5 --with-target-bits=32 --enable-debug --with-jvm-variants=client'.
Configuration summary:
* Debug level:
* JDK variant:
* JVM variants:
* OpenJDK target: OS: windows, CPU architecture: x86, address length: 32
Tools summary:
* Environment:
cygwin version 1.7.32(0.274/5/3) (root at /cygdrive/d/cygwin)
* Boot JDK:
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) Client VM (build 24.65-b04, mixed mode)
(at /cygdrive/c/jdk)
* C Compiler:
Microsoft CL.EXE version 16.00.40219.01 (at /cygdrive/c/VS/VC/BIN/cl)
* C++ Compiler:
Microsoft CL.EXE version 16.00.40219.01 (at /cygdrive/c/VS/VC/BIN/cl)
Build performance summary:
* Cores to use:
* Memory limit:
* ccache status:
installed and in use
WARNING: The result of this configuration has overridden an older
configuration. You *should* run 'make clean' to make sure you get a
proper build. Failure to do so might result in strange build problems.
$ make images
Building OpenJDK for target 'images' in configuration 'windows-x86-normal-client-fastdebug'
## Starting langtools
Compiling 2 files for BUILD_TOOLS
d:\openjdk\jdk8u-dev\langtools\src\share\classes\com\sun\tools\javac\parser\JavacParser.java:310: error: cannot find symbol
return tk.accepts(S.token(lookahead + 1).kind);
variable kind
location: class Token
d:\openjdk\jdk8u-dev\langtools\src\share\classes\com\sun\tools\javac\parser\JavacParser.java:318: error: cannot find symbol
return tk1.accepts(S.token(lookahead + 1).kind) &&
variable kind
location: class Token
d:\openjdk\jdk8u-dev\langtools\src\share\classes\com\sun\tools\javac\parser\JavacParser.java:319: error: cannot find symbol
tk2.accepts(S.token(lookahead + 2).kind);
variable kind
location: class Token
d:\openjdk\jdk8u-dev\langtools\src\share\classes\com\sun\tools\javac\parser\JavacParser.java:327: error: cannot find symbol
return tk1.accepts(S.token(lookahead + 1).kind) &&
variable kind
location: class Token
d:\openjdk\jdk8u-dev\langtools\src\share\classes\com\sun\tools\javac\parser\JavacParser.java:328: error: cannot find symbol
tk2.accepts(S.token(lookahead + 2).kind) &&
variable kind
location: class Token
d:\openjdk\jdk8u-dev\langtools\src\share\classes\com\sun\tools\javac\parser\JavacParser.java:329: error: cannot find symbol
tk3.accepts(S.token(lookahead + 3).kind);
cygwin都装了什么,记不清了,反正装了几年了,make版本也是4.0。
能执行make和bash了,说明cygwin该装的组件都装了。
make clean不一定奏效的,直接把build目录删除。
错误提示明显就跟cygwin无关,那个明显就是javac编译器发出的错误,
按照它给出的错误看看JavacParser.java文件用到的Token类为什么没有kind字段?
出现错误自己试着按错误提示找找原因吧。
我在mac 下编译一直提示FreeType version& 2.3.0& or higher is required这个错误已经装了freetype 了, 命令行下freetype-config --ftversion 看到的就是2.5.3,请求大神帮忙
谢谢你这个文档。我的机器是64位win7,磕磕碰碰走到最后一步,然后出了问题:调试HotSpot VM。
问题是,按F5之后一个窗口闪过,vs2010的Output窗口有如下信息:
'java.exe': Loaded 'C:\downloads\myBooks\Java\OpenJDK\openjdk8u-dev\build\windows-x86_64-normal-server-fastdebug\images\j2sdk-image\bin\java.exe', Symbols loaded.
'java.exe': Loaded 'C:\Windows\System32\ntdll.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\kernel32.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\KernelBase.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\advapi32.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\msvcrt.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\sechost.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\rpcrt4.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\user32.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\gdi32.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\lpk.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\usp10.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\winsxs\amd64_microsoft.windows.common-controls_ccf1df_6.0._none_faac9ac\comctl32.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\shlwapi.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\imm32.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\Windows\System32\msctf.dll', Cannot find or open the PDB file
'java.exe': Loaded 'C:\downloads\myBooks\Java\OpenJDK\openjdk8u-dev\build\windows-x86_64-normal-server-fastdebug\images\j2sdk-image\jre\bin\msvcr100.dll', Symbols loaded.
The program '[7472] java.exe: Native' has exited with code 6 (0x6).
从出错信息上看,大概是说包含调试信息的pdb文件没有找到。
不过我编译整个opendjk8用的参数是--enable-debug,所以应该pdb都产生了。只是没有指定路径。
Did I miss anything important ?
提示信息只是说windows相关的dll的pdb没找到,这个很正常的,除非你的windows也是可调试的。openjdk的明显提示Symbols loaded了呀。
你可以把错误输出到一个日志文件的
怎么输出:
引用
在Visual Studio左边的Solution Explorer窗口中右击jvm项目,
在弹出菜单中选择Properties,紧接着出来"jvm Property Pages"窗口,
点Configuration Properties -& Debugging
在Command 最后加上 &E:\log.txt 2&&1
就可以重定向了
另外,你构建的是server版的jdk,
引用windows-x86_64-normal-server-fastdebug
在“1. 生成Visual Studio项目 ”那里生成的是client版的jvm还是server?
& 上一页 1
相关资源推荐517 条评论分享收藏感谢收起赞同 6添加评论分享收藏感谢收起

我要回帖

更多关于 openjdkjdk 的文章

 

随机推荐