深入理解JVM原理之编译openjdk7

        Java虚拟机种类很多例如:HotSpot 丶 JRockit 丶 J9等

我们一般用的就是HotSpot,如果我们电脑上装了JDK,可以运行java -version查看相关信息

java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)

之前想着编译openjdk7,但是试过windows系统,linux系统,各种不如意,尤其是windows系统操作起来比linux更复杂,最后不得不放弃,centos试过,redhat也试过,各种不行 ,简直要吐血,

不过苍天不负有心人,经过一周的不断尝试,终于使用Ubuntu16.04.3搞定.

准备阶段:

①.需要安装的:使用 apt-get install 命令


build-essential 
gawk 
libasound2-dev 
libcups-dev 
libxrender-dev
xorg-dev 
ant(1.7以上)
libxtst-dev
libxi-dev
libxt-dev

②.openjdk7 , jdk6

我使用的jdk6为:jdk-6u45,

③.将CurrencyData.properties文件中的日期一定要改成10年内,

否则在编译过程中会报错从而导致编译失败:

Error: time is more than 10 years from present: 1136059200000

文件位置: 

/usr/openjdk/jdk/src/share/classes/java/util/CurrencyData.properties

开始编译:

①.进入openjdk目录下执行make sanity命令若出现如下提示表示检查通过:

sanity check passed.

②.

执行如下命令:

export LANG=C
export ALT_BOOTDIR="/usr/local/jdk6"
export ALT_JDK_IMPORT_PATH="/usr/local/jdk6"
export BUILD_LANGTOOLS=true
export BUILD_HOTSPOT=true
export BUILD_JDK=true
export SKIP_COMPARE_IMAGES=true
export SKIP_DEBUG_BUILD=false 
export SKIP_FASTDEBUG_BUILD=true 
export DEBUG_NAME=debug
export USE_PRECOMPILED_HEADER=true
export ARCH_DATA_MODEL=64
export HOTSPOT_BUILD_JOB=4
export ALT_PARALLEL_COMPILE_JOBS=4
BUILD_DEPLOY=false
BUILD_INSTALL=false
export ALT_OUTPUTDIR=/usr/local/openjdk/build
export ALLOW_DOWNLOADS=true
unset JAVA_HOME
unset CLASSPATH
make DISABLE_HOTSPOT_OS_VERSION_CHECK=OK

如上命令建议放入到一个可执行文件中

③.静静的等待即可(时间有点漫长,大概三四十分钟左右,你可以选择喝杯咖啡,听首音乐放松一下)

④.可以看到编译开始及结束的时间,恭喜编译通过.

>>>Finished making images @ Tue Dec 12 22:16:37 CST 2017 ...
make[2]: Leaving directory '/usr/local/openjdk/jdk/make'
########################################################################
##### Leaving jdk for target(s) sanity all docs images             #####
########################################################################
##### Build time 00:34:22 jdk for target(s) sanity all docs images #####
########################################################################

#-- Build times ----------
Target debug_build
Start 2017-12-12 21:22:34
End   2017-12-12 22:16:37
00:04:43 corba
00:11:40 hotspot
00:00:49 jaxp
00:01:05 jaxws
00:34:22 jdk
00:01:23 langtools
00:54:03 TOTAL

 

转载于:https://my.oschina.net/u/2486137/blog/1588865

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
http://www.cnblogs.com/zengkefu/p/5633342.html OpenJDK和Sun/OracleJDK 区别 与联系 首先要先明确之间,以及OpenJDK 6、OpenJDK 7、OpenJDK 7u和OpenJDK 8等项目之间是什么关系,这有助于确定接下来编译要使用的JDK版本和源码分支。 从前面介绍的Java发展史中我们了解到OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复用的,例如IcedTea、UltraViolet都是从OpenJDK源码衍生出的发行版。但如果仅从“开源”字面意义(开放可阅读的源码)上看,其实Sun自JDK 1.5之后就开始以Java Research License(JRL)的形式公布过Java源码,主要用于研究人员阅读(JRL许可证的开放源码至JDK 1.6 Update 23为止)。把这些JRL许可证形式的Sun/OracleJDK源码和对应版本的OpenJDK源码进行比较,发现除了文件头的版权注释之外,其余代码基本上都是相同的,只有字体渲染部分存在一点差异,Oracle JDK采用了商业实现,而OpenJDK使用的是开源的FreeType。当然,“相同”是建立在两者共有的组件基础上的,Oracle JDK中还会存在一些Open JDK没有的、商用闭源的功能,例如从JRockit移植改造而来的Java Flight Recorder。预计以后JRockit的MissionControl移植到HotSpot之后,也会以Oracle JDK专有、闭源的形式提供。 Oracle的项目发布经理Joe Darcy在OSCON 2011上对两者关系的介绍也证实了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,两者共用了大量相同的代码(如下图,注意图中提示了两者共同代码的占比要远高于图形上看到的比例),所以我们编译OpenJDK,基本上可以认为性能、功能和执行逻辑上都和官方的Oracle JDK是一致的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值