2013-03-12 3 views
-1

에서 추가 라이브러리 나는 java 프로젝트에 의존성이 많이 (구아바 등과 같은 추가 라이브러리)를 추가 피하기 위해 더 나은 것을 사람들로부터 몇 가지 인수를 들었습니다.소프트웨어 블로 - 자바 및 성능

그들의 인수는 python에 너무 많은 라이브러리를 추가하는 것은 그것을 느려지는 사실에 근거한다.

라이브러리에 이미 내장 된 기능을 다시 구현하는 것에 대해 논쟁을 벌였지 만, proguard과 같은 도구에서 사용할 수있는 압축 기능과 Java의 컴파일 된 특성은 실질적으로 python bloat 인수를 무효화한다고 주장했습니다.

맞습니까? 또는 java 빌드에 추가 된 종속성을 최소화해야합니까? 당신이 행복하게 팀이 & 경기를 예를 들어 구아바 & 아파치 코 몬즈을 혼합 할 수있는 경우 -

+0

@Charles : Ok 그렇다면'software-bloat' 태그는 없습니다. 태그 시스템에서이를 어떻게 표현할 수 있습니까? – Gautam

답변

1

은 확실히 라이브러리에 대한 주요 인수는 코드베이스의 유지 보수와 함께 할 더, 수입 클래스의 성능 아니다 (예 : Guava Strings 대 Apache StringUtils) 동일한 목표를 달성하기 위해 두 라이브러리에서 다른 수입을 얻게 될 가능성이 높습니다. 당신이 두 개의 클래스에서 일부 유사한 코드가 자신의 클래스로 리팩토링 될 수 있음을 결정하는 경우

나중에, 당신은이 라이브러리는 다르게 일을 처리하는 방식에 어떤 차이를 다루는했습니다.

나는 당신이 옳다고 말할 것입니다,하지만 난 또한 당신이 빌드에 의존성을 최소화하기 위해 시도해야 물론 말할 것입니다 - 당신은 중복을 피하기 위해 필요한 경우 라이브러리를 도입,하지만 충분히 고려 후해야한다.

1

Java에서 클래스 로딩은 실제로 사용하는 클래스로 제한되어야합니다. JIT 컴파일러는 또한 모든 부풀림의 영향을 줄입니다. 따라서 대부분의 경우에 많은 수의 종속성으로 인해 성능 손실이 발생하지 않아야합니다.

같은 기능이 다른 방식으로 구현된다는 의미에서 종속성간에 겹치는 부분이있을 가능성이 있습니다. 이는 설치 크기가 더 커짐을 의미합니다 (JAR의 합계가 JAR의 크기보다 큽니다). 그리고 실제로는 여러 개의 다른 클래스가로드되어 효율적으로 동일하게 수행되므로 더 많은 메모리가 소비됩니다.

작은 임베디드 장치로 배포하는 것과 같이 매우 엄격한 제한 조건으로 작업하는 경우가 아니면 휠을 다시 발명하지 않아도 얻은 이득보다 훨씬 더 가까이에 도달 할 것으로 기대하지는 않습니다. 개발 노력을 줄일뿐만 아니라 시작하기에 더 안정적인 코드를 얻을 수 있습니다.

자바 세계에서 또 다른 큰 업적은 종속성을 관리하고 이전보다 훨씬 쉽게 모듈 형 소프트웨어를 만드는 Maven입니다. 모듈러 설치에서 정말 빛을 발합니다. (크고 모 놀리 식 빌드에서는 시도하지 마십시오.)

+0

우리는 gradle :-)을 사용합니다. – Gautam

관련 문제