最近在搭建android N的编译环境,android N需要用jdk8,于是从oracle网站上下了最新的jdk8的压缩包,如下图所示,我的系统是ubuntu11.04 x64,所以下的是jdk-8u101-linux-x64.tar.gz,然而解压配置之后编译时出错,中检查运行环境的时候就出错了,后来又装了openjdk8编译时没有出错。
oracle的jdk和openjdk有什么区别呢?在这里补充一下相关的知识。
OpenJDK是JDK的开放原始码版本,以GPL(General Public License)协议的形式放出(题主提到的open就是指的开源)。Sun JDK能用于商业用途的license是SCSL(Sun Community Source License)。
从代码完整性来说,Sun JDK > SCSL > JRL > OpenJDK。Sun JDK有少量代码是完全不开发的,即便在SCSL版里也没有。但这种代码非常非常少。但从Oracle JDK7 / OpenJDK7开始,闭源和开源版的实质差异实在是非常非常小。
openJDK和oracle JDK最大的差别是openJDK是开源的,而oracle JDK是商用不开源的。从功能上来说面前的版本两者差别很小。为什么android N只能用openJDK呢,这是因为谷歌从Android N开始不再使用oracle专属的java开发套件,而是全面依靠开源的openJDK,”作为一个开源的平台,Android应该建立在开源社区的协作之上。“
看来谷歌中android N编译时会检查系统采用的JDK是否是openJDK,如果不是就会报错。