Java 有什么理由不在Equinox框架中使用Felix捆绑包吗?

Java 有什么理由不在Equinox框架中使用Felix捆绑包吗?,java,osgi,apache-felix,equinox,Java,Osgi,Apache Felix,Equinox,我正在开发一个嵌入式系统,以前使用ApacheFelix作为OSGi框架。我的任务是删除Felix并将其替换为Equinox,因为Equinox目前支持更新版本的OSGi规范。 设备上的软件拥有大量的专有代码,这些代码直接与Felix附带的某些捆绑包(比如eventadmin和log捆绑包)绑定。这些捆绑包的Equinox版本差异很大,重新编写代码需要大量工作 即使在将底层框架从Felix切换到Equinox之后,是否有任何理由不继续使用这些Felix捆绑包 我想澄清的是,我仍在努力思考OSGi

我正在开发一个嵌入式系统,以前使用ApacheFelix作为OSGi框架。我的任务是删除Felix并将其替换为Equinox,因为Equinox目前支持更新版本的OSGi规范。
设备上的软件拥有大量的专有代码,这些代码直接与Felix附带的某些捆绑包(比如eventadmin和log捆绑包)绑定。这些捆绑包的Equinox版本差异很大,重新编写代码需要大量工作

即使在将底层框架从Felix切换到Equinox之后,是否有任何理由不继续使用这些Felix捆绑包


我想澄清的是,我仍在努力思考OSGi到底做什么。我担心的是,如果不使用Equinox捆绑包,我们将失去切换到Equinox的优势(我担心提供最新规范的所有额外代码都来自捆绑包,专门为Equinox设计的应用程序将期望使用这些捆绑包).

ApacheFelix框架实现了OSGi核心规范,而不是更多。Equinox还实现了OSGi核心规范

您正在询问ApacheFelix的子项目(EventAdmin、SCR等)是否可以在Equinox中使用。答案是肯定的。您可以在Equinox中使用许多子项目(如果不是全部的话),因为它们只依赖于核心规范

他们被称为“Felix…”可能令人困惑。它们可以被称为其他任何东西,因为它们与容器实现无关,只与Felix和Equinox实现的规范有关


顺便说一句:一些子项目实现了OSGi概要规范中的章节。如果其他人完全实现了相同的章节,那么它们应该可以毫无问题地切换。

ApacheFelix框架实现了OSGi核心规范,而不是更多。Equinox还实现了OSGi核心规范

您正在询问ApacheFelix的子项目(EventAdmin、SCR等)是否可以在Equinox中使用。答案是肯定的。您可以在Equinox中使用许多子项目(如果不是全部的话),因为它们只依赖于核心规范

他们被称为“Felix…”可能令人困惑。它们可以被称为其他任何东西,因为它们与容器实现无关,只与Felix和Equinox实现的规范有关


顺便说一句:一些子项目实现了OSGi概要规范中的章节。如果其他人完全实现了相同的章节,那么它们应该可以毫无问题地进行切换。

我想澄清的是,我仍在努力了解OSGi到底做了什么。我担心的是,如果不使用Equinox捆绑包,我们将失去切换到Equinox的优势(我担心提供最新规范的所有额外代码都来自捆绑包,专门为Equinox设计的应用程序将期望使用这些捆绑包)。我建议你将此评论作为问题的一部分。我想澄清的是,我仍在试图了解OSGi到底做了什么。我担心的是,如果不使用Equinox捆绑包,我们将失去切换到Equinox的优势(我担心提供最新规范的所有额外代码都来自捆绑包,专门为Equinox设计的应用程序将期望使用这些捆绑包)。我建议您将此评论作为问题的一部分。谢谢您的回答。如果某个OSGi应用程序是为Equinox构建的,但在Felix上存在问题(我知道这不应该发生,但这似乎是我们所面临的),那么这是否可能来自不同子项目的实现差异(例如,
org.apache.felix.http.jetty
org.eclipse.equinox.http.jetty
之间的差异),或核心框架中的某些内容?Apache Felix仅实现OSGi core。遗憾的是,Equinox core具有一些可以使用的附加功能。如果您编写的内容在Felix上工作,它也将在Equinox上工作。如果您为Equinox编写的内容使用Equinox特定的功能,它可能无法在Felix上工作。我建议您应该这样做尽可能多地使用基于felix的东西,并在必要时只使用Equinox相关的项目。Equinox已经支持OSGi 6.0.0,所以我猜您必须使用Equinox OSGi容器。在您的代码中只使用容器中的org.OSGi.*包之前,您不会有问题。谢谢。这对我的理解有很大帮助。请记录,Apache Felix项目发布的所有工件都必须以其名称命名。尽管Balazs是正确的,但没有任何东西将这些捆绑包与任何特定的框架实现联系起来。感谢您的回答。如果某个OSGi应用程序是为Equinox构建的,但在Felix上存在已知问题(我知道这不应该发生,但这似乎是我们所面临的),这是否可能来自不同子项目的实现差异(例如,
org.apache.felix.http.jetty
org.eclipse.equinox.http.jetty
),或核心框架中的某些内容?Apache Felix仅实现OSGi core。遗憾的是,Equinox core具有一些可以使用的附加功能。如果您编写的内容在Felix上工作,它也将在Equinox上工作。如果您为Equinox编写的内容使用Equinox特定的功能,它可能无法在Felix上工作。我建议您应该这样做尽可能多地使用基于felix的东西,并在必要时只使用Equinox相关的项目。Equinox已经支持OSGi 6.0.0,所以我猜您必须使用Equinox OSGi容器。直到您只使用org.OSGi.*packag