没几个人需要了解的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的差不多,默认编译出来的不是差别太大。首先是带了许多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的命令,好吧!

 

 
From:https://www.cnblogs.com/mazhimazhi/p/18842145
鸠摩(马智)
100+评论
captcha