目的是什么:api.jar + impl.jar + bundle.jar?

时间:2012-03-22 09:32:46

标签: java jar

我看到很多Java包都有api,impl和bundle jars(name-api.jar,name-impl.jar,name-bundle.jar)。有人可以解释一下这些意思吗?这三个应用程序都需要吗?

4 个答案:

答案 0 :(得分:6)

经常:

  • name-api.jar仅包含API的界面。
  • name-impl.jar提供name-api.jar
  • 中所有接口的实现
  • name-bundle.jar将所有必需的类捆绑在一起以运行Java应用程序。

答案 1 :(得分:6)

这个想法是你可以分离应用程序的依赖关系;试图使应用程序更便携。我们的想法是,您可以在编译时使应用程序依赖于api.jar。然后,当您想要运行该程序时,您可以切换相应的实现jar(impl.jar)和相应的资源包jar(bundle.jar)。

作为一个例子,假设库进行了一些数据库交互。您编写代码以便引用api.jar。现在假设你需要它来使用特定类型的数据库,例如MySQL - 然后你可以将特定于MySQL数据库的impl.jar添加到类路径中以使其工作(如果以后需要一个不同的数据库 - 你只需要在类路径中切换该jar)。

bundle.jar更加模糊,并不常见。这可用于为库提供配置设置。例如,它可用于提供特定于语言的设置,或某些更具体的配置。对于数据库库,可能是实现是针对所有MySQL版本设计的,资源包jar提供的配置文件允许它适用于特定的MySQL版本。

答案 2 :(得分:1)

api.jar包含API接口。这些接口是API实现应遵循的合同。

impl.jarapi.jar的实现。如果没有impl.jar,您就不能拥有api.jar

bundle.jar是资源(如果我没弄错的话)。这些是运行所需的实现代码所需的资源。

答案 3 :(得分:-1)

我从未见过这样的安排。

如果设计师将应用程序打包成三个JAR,那么我会说这三个都是必需的。

但你应该认识到这只是设计师的选择。他/她可能刚刚创建了一个包含其中所有内容的JAR,而你却不会更聪明。

我现在在猜,但是如果你要打开那些JAR,你只会看到API JAR中的接口,impl JAR中的那些接口的实现,以及bundle JAR中的资源包和其他.properties文件。试试看吧。你会学到一些东西。