作为开发人员,我经常对可以使您的生活更轻松的新语言功能感兴趣。例如,Java 5 为该语言带来了泛型和注释,这些特性绝对可以提高您的工作效率。
然而,当我回顾近十年在 java 平台上的工作时,我发现版本控制相关的问题是导致效率低下和不必要的努力的最大罪魁祸首。寻找正确版本的 jar,尝试调和一些版本冲突,升级依赖库等数小时和数小时。当我开始使用 java 时,事情并没有那么困难,你会有一些 3rd 方库,仅此而已. 今天,您的典型 Web 应用程序可能很容易使用:Spring Framework、Hibernate、Struts,应有尽有。所有这些都带有许多相关的第 3 方库。今天,我的耳朵档案通常包括大约 40 个或更多的 3rd 方库。一个真正的罐子地狱!
例如,使用注释,我不必管理 Hibernate 的配置文件。一个不错的功能,但我没有看到由于我将描述符保存在单独的文件中而引起的许多问题。使用泛型,我不必编写强制转换语句,但在我的整个编程载体中,我不记得使用类型安全容器可以防止的单个错误。版本控制问题的解决方案不是更有价值吗?
所有这些问题都导致了许多工具,如Maven、ivy、One Jar、Jar Jar Links(不是在开玩笑!),甚至恰当地命名为Jar Hell等。即使您使用其中一些工具,您也远不能对问题。我使用 Maven 2,它帮助很大。尽管如此,它本身就是一个世界。新手程序员可能需要一段时间来学习它。将遗留项目迁移到 Maven 结构也很痛苦。
似乎在 .Net 中,他们已经吸取了 dll 地狱的教训,并且 .Net 程序集的管理要简单得多。
似乎有计划为 java 平台和 OSGI 等替代品解决这个问题。我认为急需一些基本的和平台强制的版本控制机制