近日,Eclipse Virgo项目在最后一刻得到了特赦,因为有些人联名阻止了在Eclipse中对Virgo的归档处理(archived)。Eclipse Virgo项目来源于SpringSource的dm Server,在Eclipse中,它的社区贡献和生命周期曾由Glyn Normington来管理。InfoQ在8月份曾经报道过,Glyn已经从该项目上辞职,一段时间以来,Eclipse Virgo看起来会被进行归档处理。幸好,有很多人都表示了继续该项目的兴趣,会有人帮助维护核心的组件并保持项目运转。
InfoQ联系到了Glyn,请他谈论一下Eclipse Virgo,我们的对话是从这个项目的来源以及在Eclipse中的发展开始的:
Normington:作为SpringSource的应用平台,Virgo项目最初开始于2007年底。稍后,它被改名为SpringSource dm Server。这个项目的目标在于提供一个更好的OSGi平台,这个平台应该是模块化以及可扩展的,它用于简化Java EE应用到OSGi的迁移。Version 1.0发布于2008年,version 2.0发布于2009年。
我们决定将这个项目移交给Eclipse以提高它的采用情况,同时鼓励与其他厂商的协作,尤其是在基于Eclipse的工具方面。我们在2010的1月份声明了这个移交。在当年,dm Server赢得了Eclipse社区奖(Eclipse Community Award),成为了最好的RT应用。从那时候开始,我们与众多的厂商和个人协作,并吸纳了众多有经验的提交者(committer),它们为项目做出了主要的贡献。
InfoQ:目前,业内都有谁在使用Virgo?
Normington:
- 在SAP HANA Cloud PaaS平台之中,SAP使用Virgo作为Java服务器,它已经得到了Java EE 6 Web Profile TCK认证。SAP的提交者为Virgo运行时环境以及基于Eclipse Libra的工具都做出了重要的贡献。
- VMware在vSphere中使用Virgo作为Web服务器。
- 芝加哥商业交易所集团(CME Group)有三个应用运行在Virgo之上,而第四个马上就会出现。
- 克罗地亚电信(Croatian Telecom)在Virgo上运行了多个终端用户以及内部用户使用的应用程序。
- Infor基于Virgo kernel发布了其ION集成产品。
- 针对Web应用开发的Konekti平台使用Virgo作为其Web服务器。
- Virgo甚至用于TINOS的研究项目,作为单个JVM中实现实验性的网络栈(experimental network stack)彼此隔离的方式。
InfoQ:Virgo的不同发布包之间的区别是什么,它们的目标用户/应用/人群是什么?
Normington:Virgo基于一个很小的OSGi微内核构建,也就是Virgo Nano。它的目标在于成为一个DIY的商店,这样的话需要一个更为全面的OSGi容器而不是直接使用Eclipse Equinox(Nano的基础)。Nano提供了可扩展的诊断(diagnostics)功能以及全功能的Web管理控制台,以及JMX界面和ssh/telnet控制台。Nano支持热部署,只要将bundle丢到“pickup”目录下即可,同时还支持Declarative Service,从而允许bundle通过"microservices"进行交流。
Virgo Kernel包为Nano添加了多个基于bundle格式的模块化结构,它将用户应用隔离在“user region”之中,从而与kernel本身实现了分离,而且它添加了OSGi Blueprint Service以及Sprirng编程模型。
另外还有三个Web服务器的发布包。Virgo Nano Web为Nano添加了基于Apache Tomcat的Web服务器。Virgo Server for Apache Tomcat为kernel添加了相同的Apache Tomcat作为Web服务器。针对那些更喜欢Jetty而不是Apache Tomcat的人,还有基于kernel的Virgo Jetty Server。
针对使用Virgo Server for Apache Tomcat的用户,Virgo还有一个"Snaps"框架。Snaps可以让Web应用进行模块化,这样的话bundle可以为应用程序URL空间的不同部分提供内容。
总而言之,Virgo是一个成熟且全功能的产品,因此它作为模块化的Web服务器或运行时kernel,可以应用于很广泛种类的应用之中。
InfoQ:使用Virgo时,必须要使用Spring吗?
Normington并不是这样的。Virgo Nano以及Virgo Nano Web是与Spring独立的。基于kernel的Virgo发布包所开发的应用也不需要使用Spring。比如说,它们可能更愿意使用OSGi Blueprint Service作为"microservice"编程模型。
InfoQ:Virgo如何与其他的产品进行对比,像Apache Karaf?
Normington:大致来讲,Virgo Kernel与Apache Karaf有着类似的功能。它们甚至共享着一些组件如Gogo shell。
InfoQ:你已经卸任了Virgo领导者的职务。在它的商业用户中,有没有人对继任这个位置感兴趣?
Normington:有一些用户已经表示希望Virgo能够继续下去。我想在过去的几个月中,我每周都会花半天的时间以保持这个项目的运转,来响应用户的问询等等。对于继任者,我愿意提供帮助,使他在这个角色上能够更为舒服。因为这个项目有经验丰富的提交者,这个工作并不那么繁重。
InfoQ:你为什么辞职呢?
Normington:我现在为Pivotal工作,它正在开发一个PaaS。尽管也可以在PaaS中运行Virgo,但是细粒度模块化的OSGi应用与PaaS模型之间并不是那么自然匹配的,OSGi应用能够动态地启动和停止bundle,而PaaS需要一个简单的“推动”(push)操作就能运行应用。Pivotal的运作方式有些像创业公司(startup),所以我没有时间来保证在Virgo方面的工作。
InfoQ:你正在做些什么样的工作?
Normington:我正在为Cloud Foundry开源PaaS工作,为运行时的Java应用开发一个“buildpacks”。它们是由Ruby编写的,很有意思。
InfoQ:Oracle已经授权TCK来测试Virgo和EclipseLink,会有人进行推进以获取认证还是继续等待直到新的领导者上任?
Normington:会一直等到有新的领导者。对于新的领导者及其公司来说,还会有一点法律相关的工作。但是技术工作会是很简单的,因为SAP的HANA Cloud平台已经获得了认证。
InfoQ:SpringSource Enterprise Bundle Repository的现状如何?
Normington:我们协助搭建了Eclipse Bundle Recipes项目,目前它由IBM领导。它的目标在于提供基于社区的高质量的OSGi bundle源。我们从SpringSource的Enterprise Bundle Repository中获得了manifest模板,这样就能对任何想使用它们的人开放了。我们已经冻结了SpringSource Enterprise Bundle Repository的内容,但是至少一年之内它还是可用的。
原文英文链接:Eclipse Virgo Gets New Lead