개발자로서, 나는 종종 당신의 삶을 편하게 할 수있는 새로운 언어 기능에 관심이 있습니다. 예를 들어, java 5는 제네릭과 주석을 언어로 가져 왔으며, 생산성을 확실히 높일 수 있습니다.플랫폼 강제적 인 버전 관리 메커니즘이 Java의 가장 중요한 기능입니까?
그러나 Java 플랫폼에서 10 년 가까이 작업 한 것을 되돌아 보면, 버전 관련 문제가 비생산적이며 불필요하게 낭비되는 노력의 가장 큰 원인입니다. 올바른 버전의 jar 파일을 찾고, 일부 버전 충돌을 조정하고, 종속 라이브러리를 업그레이드하는 데 몇 시간이 걸렸습니다. Java에서 작업을 시작했을 때 그다지 어렵지 않았습니다. 몇 가지 타사 라이브러리가있을 것입니다. . 오늘날 전형적인 웹 애플리케이션은 Spring Framework, Hibernate, Struts 등을 쉽게 사용할 수 있습니다. 이들 모두는 많은 수의 제 3 자 라이브러리를 가지고 있습니다. 현재 귀에 보관 된 파일에는 일반적으로 약 40 개 이상의 제 3 자 라이브러리가 포함됩니다. 진짜 병동이야!
주석을 사용하면 Hibernate의 설정 파일을 관리 할 필요가 없습니다. 좋은 기능이지만, 필자는 설명자를 별도의 파일에 보관한다는 사실로 인해 많은 문제가 발생하는 것을 보지 못했습니다. 제네릭을 사용하면 캐스트 문을 쓰지 않아도되지만 프로그래밍 캐리어 전체에서는 형식이 안전한 컨테이너를 사용하여 예방할 수있는 버그 하나를 기억할 수 없습니다. 버전 문제에 대한 해결책이 훨씬 더 가치가 있었습니까?
이러한 모든 문제
는 이러한 도구 중 일부를 사용하더라도에도 적절히 등 Jar Hell 이름, Maven 같은 도구의 수, ivy, One Jar, Jar Jar Links (농담하지!)시킬 수도, 당신은에 면역되는 거리가 멀다 문제. 나는 Maven 2를 사용하며 큰 도움이되었습니다. 아직도, 그것은 그 자체로 세계입니다. 초보 프로그래머는 그것을 배우기까지 시간이 걸릴 수 있습니다. 레거시 프로젝트를 Maven 구조로 옮기는 것도 쉽지 않습니다..Net에서 그들은 dll 지옥으로 교훈을 얻었으며 닷넷 어셈블리 관리가 훨씬 간단하다고 생각합니다.
Java 플랫폼 및 OSGI와 같은 대안에 대해이 문제를 해결할 계획이있는 것으로 보입니다. 기본 및 플랫폼에 따른 강제적 인 버전 관리 메커니즘이 절실히 필요하다고 생각합니다.
이것은 해설보다 더 많이 읽습니다. – cletus
나는 둘 다 (해설과 호언 장담)의 조금다는 것을 나는 짐작한다. 저는 다른 사람들이 I와 같은 고통을 겪고 있는지를 기본적으로보고 싶었습니다. 수년 동안 지금은 팀 구성원들에게 가장 절실히 필요했습니다. 나는이 문제에 대한 효율적인 해결책이 없다는 사실에 좌절감을 느낍니다. – Dan
Rant 또는 not, 그것은 여전히 합법적 인 질문입니다. 게시물의 본문에서 질문이 반복되지 않아도 적어도 제목은 있습니다. – tvanfosson