2013-03-12 73 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