第三方 Java 依赖的自动特化
软件工程
2023-10-16 v2
摘要
大规模代码复用显著降低了开发成本与时间。然而,第三方代码在软件项目中的巨大占比带来了新的挑战,尤其在维护与安全性方面。本文提出一种基于实际使用情况对 Java 项目依赖进行特化的新技术。给定一个项目及其依赖,我们系统地识别每个依赖中构建该项目所必需的子集,并移除其余部分。作为该过程的结果,我们将每个特化后的依赖打包为 JAR 文件。随后,我们生成特化依赖树,其中原始依赖被特化版本替换。这使得项目可用远少于原始的第三方代码进行构建。结果,特化依赖成为软件供应链中的一等概念,而非优化编译器工具链中的临时产物。我们在名为 DepTrim 的工具中实现了该技术,并使用 30 个知名开源 Java 项目对其进行评估。DepTrim 在这些项目中总计特化了 343 个(86.6%)依赖,并成功以特化依赖树重建每个项目。此外,通过此特化,DepTrim 从依赖中移除了总计 57,444 个(42.2%)类,将依赖类与项目类的比例从原始项目中的 8.7 倍降至特化后的 5.0 倍。这些新颖结果表明,依赖特化显著降低了 Java 项目中第三方代码的占比。
引用
@article{arxiv.2302.08370,
title = {Automatic Specialization of Third-Party Java Dependencies},
author = {César Soto-Valero and Deepika Tiwari and Tim Toady and Benoit Baudry},
journal= {arXiv preprint arXiv:2302.08370},
year = {2023}
}
备注
17 pages, 2 figures, 4 tables, 1 algorithm, 2 code listings, 3 equations