与使用Win32 API函数LoadLibrary,GetProcAddress的动态加载本机库相比,我试图弄清楚大型多模块项目中Java类加载器的优点是什么。
使用这两种技术对API更改的部署,版本控制和敏感性有何影响?实际上,整体维护成本。
我也想知道一些相关的问题: - 类加载器有助于防止DLL地狱吗? - 如何实现几个模块的“并排”模式?
这是一个悬而未决的问题。即使您没有完整的答案,也请随意提出您的意见。
谢谢!
答案 0 :(得分:1)
嗯,这是针对同一目标的两种机制。动态库加载是在JVM或.NET构思之前设计和实现的,并且(这是我特别喜欢的问题)后者中的任何一个都能更顺利地完成这一任务。
应该通过在DLL的名称中包含版本号来防止DLL地狱,但是如果你不小心放入类路径中的内容,你可以在java中获得类似的效果。
由于您可以完全控制应用程序的类路径,因此Windows DLL开发的并行思想在java中完全可行 - 与往常一样,完全确定您在类路径中拥有的内容。如果您想研究maven / gradle(构建自动化和依赖关系管理)和nexus(java的依赖项存储库)等工具,它们将帮助您以非常精确和轻松的方式管理依赖项。
我希望你找到这个有用的