对于企业Web应用程序,Spring vs. Jboss有哪些优缺点.
这是一个很好的问题.有些人在这里错误地声明这是一个苹果与橘子的比较,即Jboss是一个容器,而Spring只是一个框架,就像Struts一样.然而,这有点令人困惑的原因是JBoss和Spring都从它们原始的,简单的起源大大扩展,因此彼此接近.理解JBoss的一个简单方法是名称是原始的"EJBoss",它的目的是成为一个开源的J2EE应用程序服务器,因此它优于tomcat而不是作为EJB容器,因此可以与WebSphere竞争和其他专有应用服务器.
Spring是一个IoC框架(现在称为"依赖注入"),本质上是一个对象工厂,因此您可以遵循更"松散耦合"的设计.
然而,随着它们的普及,两种产品都扩大了.例如,JBoss现在拥有自己的IoC容器: JBoss IoC
JBoss提供了自己的轻量级IoC容器,名为:JBoss Microcontainer.JBoss Microcontainer是一个轻量级的Inversion of Control/Dependency Injection容器,其概念类似于Spring,Pico Container和Plexus.
虽然Spring可以很好地运行,并且(大部分)与JBoss共存,但它不需要一个完整的EJB容器,它可以在tomcat中轻松运行.Spring的整个设计目标是基于轻量级设计的思想,POJO的使用,以及对重量级容器的需求,这与EJB非常相反,因此与JBoss似乎不一致.
Rod Johnson指出,没有理由不能在JBoss中运行Spring:
Spring旨在用于任何应用程序服务器(或应用程序服务器之外); 使用Spring并不意味着忽略服务器可能提供的内容.它在很多情况下提供了更多选择.
因此,您必须决定要使用的两个系统的哪些部分,以及您希望遵守的Java标准.根据这篇文章,在JBoss和Spring上,它们涵盖了它们如何很好地遵守标准,看起来,根据您选择的技术,您正在选择一方,因为这似乎是一场非常有争议的战斗.
接下来的事情就是缓和,因为JBoss和Spring Source争夺从XML到集成,工具到最终虚拟化的一切......本身就是一场健康的竞争,
[剪断]
只有时间会证明,但我认为这场战斗只会让开发人员更好,更多的选择而不是.Net,以及更多围绕Java的创新,对JBoss来说这将是一个艰难的考验,但如果执行完美无缺,他们可以处理否则,寻找Spring Source来推动JEE 6的感知和真正优势之间的楔子......更快,而不是更晚,为了对抗专有模型,必须展示应用程序的可移植性,而这种情况并未发生,
有关遵守各种Java标准的更新信息,请查看Spring 5上的反馈请求.您可以了解Spring设计人员面临的限制,同时也强调了这样一个事实:对于Spring市场,确保Spring支持各种EE服务器非常重要:
我们还打算轻柔地升级EE基线.现在,这有点棘手,因为我们在这里有效地提出了个性化要求 - 我们需要考虑生产环境中的企业采用水平:
我们肯定会提升到Servlet 3.0+(来自我们目前的Servlet 2.5运行时兼容性)但不高,因为我们仍然希望Spring 5应用程序能够在EE 6基线服务器上运行.鉴于Java EE 7的市场情况以及仍基于Servlet 3.0 API的众多服务器,请参阅我之前的博客文章,讨论为什么这是不可避免的.[snip]遗憾的是我们必须继续支持2002年代的JMS 1.1 API ...我们想提高到JPA 2.1+和Bean Validation 1.1+但是我们的手似乎是捆绑的:TomEE 1.7和JBoss EAP 6.4其中包含硬JPA 2.0和Bean Validation 1.0 API,WebLogic 12.1.3具有JPA 2.1但没有Bean Validation 1.1 API(尽管它们是相关的).
如前所述,但让我重申一下.JBoss是一个应用服务器.一些Java应用服务器包括
的Websphere
Glassfish的
JBoss的
Spring是一个框架.一个相当大的框架,提供了相当多的,但对我来说,MVC的主要功能之一.MVC是一种设计模式,您可以将模型与View从Contoller分离.该模型是数据的表示.这可以由数据库或XML文件之类的东西支持.视图是用于查看模型的视图.这可以是Web前端或Windows应用程序.用户将与视图交互.用户将表达他们希望更新模型的愿望.这是控制器的用武之地.我们使用控制器告诉模型更新.并且因为视图基于模型,所以视图也会更新.这简化了过程,但简而言之.您可以看到的其他MVC框架是Struts.
就像我之前说的那样,Spring提供了其他功能,例如
安全框架
控制反转
依赖注入
这是我的意见:
Spring代表了Java EE中的所有优点,而JBoss代表了所有糟糕的东西.
嗯......没有那么好(不是我想的那样).我只是说我永远不会选择JBoss来托管任何应用程序.它只是如此笨重和重量级,并没有做任何特别好的事情.我喜欢Spring,因为它感觉不那么单一而且笨重.当然,Spring不是一个应用程序容器,但它可用于构建托管应用程序所需的大部分基础结构 - 您只需将其插入容器中,Spring就可以处理其余的容器.