目前国内发布自己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的命令,好吧!