-1

我从人们那里听到了一些争论,最好避免在java项目中添加大量依赖项(额外的库,如番石榴等)。

他们的论点是基于这样一个事实,即添加太多库python会减慢速度。

我反对重新实现已经内置到库中的功能,我还认为 java 的编译性质和工具中可用的压缩功能proguard实际上使pythonbloat 的论点无效。

我对吗 ?还是我应该尽量减少添加到java构建中的依赖项数量?

4

2 回答 2

1

当然,反对库的主要论据不是导入类的性能,而是更多地与代码库的可维护性有关——例如,如果你乐意让你的团队混合搭配GuavaApache Commons,那么你很可能最终会从两个库中导入不同的内容以在不同的类中实现相同的目标(例如 Guava Strings 与 Apache StringUtils)。

稍后,如果您决定可以将跨两个类的一些相似代码重构到其自己的类中,则您必须处理两个库以不同方式处理事物的任何差异。

我会说你是对的,但我当然还要说你应该尽量减少构建中的依赖关系——如果有必要,你应该引入库以避免重复,但只有在适当考虑之后。

于 2013-03-12T00:23:23.917 回答
1

Java 中的类加载应仅限于您最终实际使用的类。JIT 编译器还将减少任何膨胀的影响。因此,在大多数情况下,您不应该因为大量依赖项而遭受性能损失。

在以不同方式实现相同功能的意义上,您可能会在依赖项之间存在重叠。这意味着您将拥有更大的安装大小(JAR 的总数大于它所必须的),并且由于加载了多个不同的类而可能会消耗更多的内存,这些类有效地执行相同的操作。

除非您正在处理非常严格的限制,例如部署到小型嵌入式设备,否则我不认为这会比不重新发明轮子所获得的收益更接近危害。您不仅可以节省开发工作量,还可以从一开始就获得更稳定的代码。

Java 世界中的另一件大事是 Maven,它使管理依赖项和创建模块化软件比以前容易得多。它确实在模块化设置中大放异彩(不要在大型​​的单体构建中尝试它)。

于 2013-03-12T00:25:28.987 回答