如何处理两个版本的API

时间:2012-07-03 12:47:45

标签: java api

我的问题:处理两个不同版本的API的好方法是什么? (子问题:如果包含两个具有相同类名的库,有没有办法避免类路径引用问题?)

问题描述:我有一个使用API​​的项目。我花了最近几个月开发旧版本,我即将为新版本添加功能。据我所知,只有一个关键的区别。但是,我还没有API(等着有人拿我的罐子)所以我不能确定是否有更多的差异。

子问题描述:我担心两个API之间可能存在类引用不一致(就像我说的,我还没有确定jar)。

我意识到您可能需要查看一些代码,但这是一个设计问题,而不是编码问题。我希望得到一些最佳实践。谢谢!

不重复:looked处于few个问题,可能看似重复,但它们并没有真正解决我的问题:)

2 个答案:

答案 0 :(得分:3)

避免或遮挡。

如果您完全控制了类路径,则可以使用排序:这很脆弱且不直观。

如果你不这样做,你就会受到任何影响,因此阴影和相关的头痛。

答案 1 :(得分:2)

您还可以使用类加载器隔离策略。例如,如果您处于容器环境(Java EE,OSGi)中,则可以将不同版本的库放在不同的类加载器上下文中(即,不同的EJB jar或不同的Web应用程序),它们不会干扰每个其他

OSGi可以做同样的事情;将库A.1和A.2部署到OSGi容器中,并将project.uno(使用A.1)和project.dos(使用A.2)部署到同一个JVM中,OSGi容器处理类路径。