1、封面页(此页面将由下图全覆盖,此为编辑稿中的示意,将在终稿 PDF 版中做更新)(待分享)卷首语 速度与效率与激情 什么是速度?速度就是快,快有很多种。有小李飞刀的快,也有闪电侠的快,当然还有周星星的快:(船家)我是出了名够快。(周星星)“这船好像在下沉?”(船家)“是呀!沉得快嘛”。并不是任何事情越快越好,而是那些有价值有意义的事才越快越好。对于这些越快越好的事来说,快的表现是速度,而实质上是提效。今天我们要讲的 Java 应用的研发效率,即如何加快我们的 Java 研发速度,提高我们的研发效率。提效的方式也有很多种,但可以分成二大类。我们使用一些工具与平台进行应用研发与交付。这些工具与平台
2、的用户很多,而且一般对于大部分应用来说,效率不错,否则也不会有这些工具与平台的存在了。但对于一小部分应用来说,效率低的要命。所以当这小部分应用的用户找工具与平台负责人时,负责人建议提效的方案是:你看看其他应用都这么快,说明我们平台没问题。可能是你们的应用架构的问题,也可能是你们的应用中祖传代码太多了,要自己好好重构下。这是大家最常见的一类提效方式。而今天我们要讲的是第二类,是从工具与平台方面进行升级。即通过基础研发设施与工具的微创新改进,实现研发提效,而用户要做的可能就是换个工具的版本号。有了速度后一定会有激情吗?我们先来看看电影中一个小插曲。有一次故事讲到范老大来到了古巴,与当地的大哥赛车。
3、相比与大哥的豪车,范老大的车就是一辆拖拉机。但他用双手好象对拖拉机的发动机施了一个“魔法”,然后在最后一公里时,发动机着火了,但车的速度却达到火箭一样的速度,冲向了终点。这里没有哈利波特的人设,这世界没有魔法。范老大也没有。但这世界上几乎没有人能比范老大更懂发动机。所以也几乎没有人能比他更能改造发动机。而发动机就是一辆车的灵魂。买了一辆再好的车,带来的只是速度。而自己不断研究与改造发动机,让车子越来越快,在带来不断突破的“速度”的同时还带来了“激情”。因为这是一个不断用自己双手创造奇迹的过程。所以我们今天要讲的不是买一辆好车,而是讲如何改造“发动机”。在阿里集团,有上万多个应用,大部分应用都是
4、 Java 应用,95%应用的构建编译时间是 5 分钟以上,镜像构建时间是 2 分钟以上,启动时间是 8 分钟以上,这样意味着研发同学的一次改动,大部分需要等待 15 分钟左右,才能进行业务验证。而且随着业务迭代和时间的推移,应用的整体编译构建、启动速度也越来越慢,发布、扩容、混部拉起等等一系列动作都被拖慢,极大的影响了研发和运维整体效能,应用提速刻不容缓。我们将阐述通过基础设施与工具的改进,实现从构建到启动全方面大幅提速的实践和理论,相信能帮助大家。目录 一、maven 构建提速.6 二、本地 IDEA 环境提速.20 三、docker 构建提速.25 四、JDK 提速.30 五、Class
5、Loader 提速.37 六、阿里中间件提速.42 七、其他提速.50 卷尾语:持续地.激情.56 作者:阿里巴巴 CTO 技术 联合作者:道延 微波 沈陵 梁希 大熊 断岭 北纬 未宇 岱泽 浮图 一、maven 构建提速 6 一、maven 构建提速 1.现状 maven 其实并不是拖拉机。相对于 ant 时代来说,maven 是一辆大奔。但随着业务越来越复杂,我们为业务提供服务的软件也越来越复杂。虽然我们在提倡要降低软件复杂度,但对于复杂的业务来说,降低了复杂度的软件还是复杂的。在这些年,随着业务竞争越来越激励,业务越来越复杂,软件也越来越复杂。而maven 却还是几年的版本。在 201
6、2 年推出 maven3.0.0 以来,直到现在的 2022年,正好十年,但 maven 最新版本还是 3 系列 3.8.6。所以在十年后的今天,站在复杂软件面前,maven 变成了一辆拖拉机。编码也是一种艺术,对于我们一线研发同学来说,每个人都期望变成一名艺术家,而不是一个码农。但如一次构建大于 3 分钟,会将我们从一名高雅的艺术家沦为一名焦虑的码农,因为项目的 deadline 是放的那么地显眼。我们可能有过这样体验,编码几分钟,代码提交后,CI/CD 中的构建却要 10 多分钟。特别是在项目联调阶段,代码修改会越频率,但一天解决不了几个 BUG,因为时间都花在等待构建阶段上了。我们曾经错