2013-03-12 31 views
-1

添加库我听说过一些争论从人们,这是更好地避免增加很大的依赖性(附加库,例如番石榴等)到java项目。软件膨胀 - 在Java和性能

他们的论点是基于这样的事实,在python加入过多的库减缓下来。我反对重新实现已经内置到库中的功能,我也认为java的编译本质和诸如proguard之类的工具中可用的压缩功能实际上无效的膨胀的参数python

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

+0

@Charles:好吧所以没有'软件膨胀'标记,那么我怎么在标记系统中表示呢? – Gautam 2013-03-12 00:29:26

回答

1

当然对图书馆的主要论点是不导入类的性能,它更与你的代码的可维护性做 - 如果你愉快地让你的团队混合&比赛番石榴 & 阿帕奇百科全书例如,您很可能最终会从两个库中导入不同的输入,以实现不同类中的相同目标(例如Guava Strings vs Apache StringUtils)。

以后,如果你决定在两个类中的某些相似的代码能够被重构到它自己的类,你要对付两个库处理不同的事情的方式任何差异。

我会说你是对的,但我也得说,当然,你应该尽量减少在构建依赖 - 如果有必要,以避免重复,你应该引入库,但只有经过适当考虑。

1

Java中的类加载应该仅限于实际最终使用的类。 JIT编译器也将减少任何膨胀的影响。所以在大多数情况下,由于大量的依赖关系,您不应该遇到性能损失。

有机会,你将有相同的功能以不同的方式来实现在这个意义上依赖之间的重叠。这意味着您将拥有更大的安装尺寸(JAR的总数大于其必须的数量),并且由于加载了多个不同的类,因此可能会消耗更多的内存,这些类的实际效果相同。

除非你是非常严格的限制的工作,如部署到小型嵌入式设备,我不希望任何这样来比你有没有重新发明轮子的涨幅甚至接近危害。您不仅可以节省开发工作,还可以获得更稳定的代码。

Java世界中的另一件大事是Maven,它使管理依赖和创建模块化软件比以前更容易。它确实闪耀在一个模块化设置中(不要试图用大的单片版本)。

+0

我们使用gradle :-) – Gautam 2013-03-12 00:26:29