gpt4 book ai didi

java - 我应该将源文件和类文件捆绑在同一个 JAR 中吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:45:00 24 4
gpt4 key购买 nike

单独的 jar

在创建 JAR 文件时,我总是将源代码分开并将其作为可选的附加项提供。

例如:

  • Foo.jar
  • Foo-source.jar

这似乎是显而易见的做事方式,而且很常见。优点是:

  1. 保持二进制 jar 较小
  2. 来源可能未公开/公开
  3. 类加载器更快? (我不知道,只是猜测)

单 jar

我开始怀疑这些优势是否总是值得的。我正在开发一个开源的微型组件。无论如何,我上面列出的优点在这个项目中都不是问题:

  1. 类 + 源代码仍然很小(并且会保持这种状态)
  2. 来源是开放的
  3. 这个 jar 的类加载速度无关紧要

不过,将源代码与类一起保存确实会带来新的优势:

  1. 单一依赖
  2. 没有源和类之间版本不匹配的问题
  3. 使用此 jar 的开发人员将始终手头有源代码(用于调试或检查)

那些新的优势真的很吸引我。是的,我可以只是将源代码、类甚至 javadoc 压缩到一个 zip 文件中,让我的组件的客户决定他们想要使用哪个(就像谷歌对 guava 库所做的那样)但它真的是值得吗?

我知道这有点违背传统的软件工程逻辑,但我认为单个 jar 文件的优势胜过其他选择。

我错了吗?有没有更好的办法?

最佳答案

Yes, I could just zip source, classes and even javadoc into a zip file and let clients of my component decide which they want to use (like Google do with the guava libraries) but is it really worth it?

当然值得!完成它大约需要 2 秒,或者只需几分钟来更改您的构建脚本。

这是大多数分发源代码和二进制文件的人处理此问题的方式。

编辑

您需要考虑的不是您的观点。您必须从部署/使用您的软件的人员的角度来考虑这一点。

  • 他们不会在部署平台上使用源代码。
  • 因此,将源代码放在二进制 JAR 中会浪费磁盘空间、减慢部署速度并减慢应用程序启动速度。
  • 如果他们想对此做点什么,他们就有问题了。他们如何重建 JAR 文件以摆脱源代码?他们怎么知道什么是安全的?

从部署者/用户的角度来看,没有积极因素,只有消极因素。

最后,您关于人们无法跟踪源代码与二进制版本的观点并不成立。大多数对源代码感兴趣的人都完全有能力做到这一点。此外,您可以采取一些简单的措施来解决该问题,例如使用包含软件版本号的 JAR 文件名,或者将版本号放入 list 中。

关于java - 我应该将源文件和类文件捆绑在同一个 JAR 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3557838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com