没几个人需要了解的JDK知识,我却花了3天时间研究

目前国内发布自己JDK版本的几家公司:

腾讯和阿里是因为有Java应用和云业务,所以在优化发布自己的版本

华为也是因为Java应用和云业务,不过因为还有服务器业务,所以还有Java课题的跑分需求,如SPECpower和SPECjbb跑分高代表自己服务器性能好

一些CPU厂,如龙芯,由于自己的指令集与x86这些不同,所以需要在JDK上适配自家的指令集架构,Java应用程序需要它们自己发布的JDK版本才能在龙芯CPU上跑

所以发布JDK版本的公司少,可能知道如何发布版本的人就更少了吧,应该也就是10多个人吧。

大家如果用过JDK,可能都执行这java -version吧,以bisheng jdk执行的信息为例,如下:

 

假设我们以如下命令编译JDK:

?
bash ./configure  --with-debug-level=release
make all

编译出来的信息如下:

领导要求格式与bisheng的差不多,默认编译出来的和bisheng jdk的差别太大。首先是带了许多internal字样,还有我的名称都需要去掉,另外要打上我们公司的名字。

使用 bash ./configure --help 命令看configure有啥配置选项, 如下:

?
--with-milestone        Set milestone value for build [ internal ]
--with-update-version   Set update version value for build [b00]
--with-user-release-suffix
                           Add a custom string to the version string if build
                           number isn't set .[username_builddateb00]
--with-build-number     Set build number value for build [b00]

 经过探索后,发现这几个编译选项指定的内容如下图所示。

我们想将1.8.0版本也替换为自己规划好的版本,不过没发现相关的参数。另外这个 internal 字符串总是没办法去掉,对--with-milestone字段给了如下值都不行:

?
--with-milestone=
--with-milestone= ""
--with-milestone= " "

后来偶尔一次指定 --with-update-version 和 --with-build-number 后,给 --with-milestone随便指定了一个值,居然就没有internal了,真是莫名其妙。

对于版本号和相关JDK的公司名称指定最后只能是脚本开发了,通过添加configure的配置参数来解决。这个脚本也是巨复杂,下了一些功夫才整好。

将图片上传到AI后,问了一下如何配置JDK8的configure参数,使得编译出来的JDK版本运行java -version命令后如图所示(上传BiSheng  JDK的版本信息图),给了一些命令,不过不能用,有些是JDK17的命令,好吧!

更多文章可访问: JDK源码剖析网

 

 

 

 

 
原创作者: mazhimazhi 转载于: https://www.cnblogs.com/mazhimazhi/p/18842145
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值