我确信我会理解差异,因为我开始做更多与OSGi相关的事情,但我认为这是一个很好的问题,因为我不清楚几次快速谷歌搜索。如果有人有一个清晰,简洁的答案......
答案 0 :(得分:25)
一个不精确的类比:Equinox是引擎,Virgo是汽车。
Equinox是Eclipse项目的运行时(替代实现包括Felix(来自Apache)和Knopflerfish)。
Virgo在其核心使用Equinox,但提供了许多在生产中使用它时所需要的东西。 Virgo基本上是捐赠给Eclipse Foundation的SpringSource dm Server项目,所以它显然对Spring的所有东西都有很强的支持。存在许多类似的产品(Karaf(ServiceMix)以及众多Java EE应用服务器)。
OSGi运行时通常是一个非常小的(运行时)环境,足以启动/提供OSGi框架。 Virgo等产品以一致,经过测试的方式提供通用的生产/企业功能,通常包括远程shell访问,Web应用程序支持,安全性等。
您可以直接使用运行时,根据需要添加每个功能,但虽然这对资源受限的系统很有用,但通常需要付出很多努力才能得到很少的奖励(当然除了教育之外)。
答案 1 :(得分:8)
从技术上讲,Equinox是OSGi框架,Virgo是容器。容器位于框架之上并添加功能。竞争技术是Felix和Karaf,它们是Apache Software Foundation OSGi框架(Felix)和容器(Karaf)。 ASF产品和Eclipse基础之间的区别主要是Eclipse产品是OSGI 4.2规范的参考实现。
处女座“子系统”参考实施确实是协调部署捆绑包的主要改进。在Karaf,他们使用“功能”部署机制。 “子系统”和“功能”部署机制之间的主要区别在于,在子系统中,您可以隔离特定的库集,并使其不会在已定义的子系统之外使用。通过功能,所有可供其他库使用的包都可以在容器范围内使用。