对于企业Web应用程序,Spring与Jboss的优缺点是什么?
mrphzbgm1#
这是一个很好的问题。有些人在这里错误地说这是一个苹果到桔子的比较,即JBoss是一个容器,而Spring只是一个框架,就像Struts一样。然而,这有点令人困惑的原因是,JBoss和Spring都从它们最初的简单起源扩展了相当多,理解JBoss的一个简单的方法是,它最初的名字是“EJBoss,”它的本意是作为一个开源的J2EE应用服务器,因此它比tomcat更具有作为EJB容器的优势,因此可以与WebSphere和其他专有应用服务器竞争。Spring是一个IoC框架(现在被称为“依赖注入”),本质上是一个对象工厂,这样你就可以遵循一个更“松散耦合”的设计。然而,随着它们的流行,这两个产品都扩展了。例如,JBoss现在有了自己的IoC容器:JBoss IoCJBoss提供了自己的轻量级IoC容器,称为:JBoss Microcontainer是一个轻量级的控制/依赖注入反转容器,在概念上类似于Spring、皮科容器和Plexus。虽然Spring可以运行得很好,与JBoss(大部分)很好地共存,但它不需要一个成熟的EJB容器,它可以很容易地在tomcat中运行。Spring的整个设计目标是基于轻量级设计的思想,使用POJO,并且不需要一个重量级容器,这与EJB是非常相反的,因此看起来与JBoss不一致。Rod Johnson已经指出,没有理由不能在JBoss中运行Spring:Spring被设计成可以在任何应用服务器中(或在应用服务器之外)工作;使用Spring并不意味着忽略服务器可能提供的东西。2它只是在很多情况下提供了更多的选择。因此,您需要决定使用这两个系统中的哪些部分,以及遵循哪些Java标准。根据本文,在JBoss and Spring上,讨论了它们对标准的遵循程度,看起来,根据您选择的技术,您确实在选择一方,因为这似乎是一场相当有争议的战斗。接下来的事情绝不是缓和,因为JBoss和SpringSource在从XML到集成到工具,再到最终的虚拟化,本身的一切上都在争斗......这是一场健康的竞争,[剪]只有时间才能证明一切,但我认为这场战斗只会让开发人员的情况变得更好,比.Net有更多的选择,围绕Java有更多的创新,这对JBoss来说将是一个坚韧的考验,但如果执行是完美的,他们可以处理,否则,寻找Spring Source来推动JEE 6的感知优势和真实的优势之间的裂痕...越早越好,而不是越晚越好,应用程序的可移植性将不得不被证明,以便对抗专有模型,要了解如何遵守各种Java标准,请查看request for feedback on Spring 5。您可以了解Spring设计人员所面临的约束,同时还可以强调这样一个事实:对于Spring市场,确保Spring支持各种EE服务器是非常重要的:我们还打算对EE基准进行软升级。现在,这有点棘手,因为我们实际上有单独的需求--并且 * 我们需要考虑生产环境中的企业采用级别 *:我们肯定会升级到Servlet 3.0+(从我们目前的Servlet2.5运行时兼容性来看),但不能更高,因为我们仍然希望Spring 5应用程序在EE 6基线服务器上运行。考虑到JavaEE 7的市场情况和仍然基于Servlet3.0API的众多服务器。遗憾的是,我们必须继续支持2002年时代的JMS 1.1 API...我们希望升级到JPA 2.1+和Bean Validation 1.1+,但我们的手似乎被束缚住了:TomEE 1.7和JBoss EAP 6.4中包含硬JPA 2.0和Bean验证1.0 API,而WebLogic 12.1.3中包含JPA 2.1,但没有Bean验证1.1 API(尽管它们是相关的)。
0md85ypi2#
JBoss是一个应用服务器,一些Java应用服务器包括
Spring是一个框架。一个相当大的框架,提供了相当多的功能,但对我来说,主要的功能之一是MVC。MVC是一种设计模式,你可以将你的模型从视图中分离出来。模型是数据的表示。这可以由数据库或XML文件支持。视图是用来查看模型的。这可以是Web前端或Windows应用程序。用户将与视图交互。用户将表达他们对模型更新的愿望。这就是控制器的作用。我们使用控制器来告诉模型更新。因为视图是基于模型的,所以视图也会更新。这是过于简化了,但简言之。您可以查看的其他MVC框架是Struts。就像我之前说的,Spring还提供了其他一些特性,比如
bejyjqdl3#
我的看法是:Spring代表了Java EE中所有的优点,而JBoss代表了所有的缺点。嗯......那可不怎么顺利(不是我认为它会)。我只是说我永远不会选择JBoss来托管任何应用程序。它只是太笨重和重量级了,做什么都不特别好。我喜欢Spring,因为它感觉不那么单一和笨重。当然,Spring不是一个应用程序容器,但它可以用于构建托管应用程序所需的大部分基础结构--您只需要将其插入容器中,Spring将处理其余的工作。
af7jpaap4#
JBoss是一个容器,Spring是在容器内运行的东西。你是在拿苹果和桔子做比较。
ss2ws0br5#
应用程序在JBoss上作为整体运行(一个JVM进程做所有事情),其中您将需要一个垂直/水平集群来扩展,其中可以调整Spring的使用,以实现微服务架构。
mbjcgjjk6#
自从java 6和CDI(看看@inject)以来,你的观点是错误的,Spring不再是唯一的一个。15年前的EJB 2(甚至EJB 3)是正确的,但今天CDI代码在websphere、weblogic、jboss、glassfish......任何你想要的应用服务器中管理。
2vuwiymt7#
JBoss或任何应用服务器都是JEE规范的实现,因此应用服务器不仅是服务器,而且还提供了构建企业应用的多种功能。Spring框架不是JEE规范的实现,但提供了与JBoss、WebLogic等JEE规范的实现类似的功能。或者我们可以说它是如here所述的JEE规范的替代解决方案。Spring是最流行的或者我可以说是唯一一个开发Java企业应用程序的框架。无论如何,很少有组织仍然使用应用服务器(JEE规范)。您可以使用JBoss或Spring开发类似的应用程序,因此,这完全取决于您或您的组织的选择标准。
7条答案
按热度按时间mrphzbgm1#
这是一个很好的问题。有些人在这里错误地说这是一个苹果到桔子的比较,即JBoss是一个容器,而Spring只是一个框架,就像Struts一样。然而,这有点令人困惑的原因是,JBoss和Spring都从它们最初的简单起源扩展了相当多,理解JBoss的一个简单的方法是,它最初的名字是“EJBoss,”它的本意是作为一个开源的J2EE应用服务器,因此它比tomcat更具有作为EJB容器的优势,因此可以与WebSphere和其他专有应用服务器竞争。
Spring是一个IoC框架(现在被称为“依赖注入”),本质上是一个对象工厂,这样你就可以遵循一个更“松散耦合”的设计。
然而,随着它们的流行,这两个产品都扩展了。例如,JBoss现在有了自己的IoC容器:JBoss IoC
JBoss提供了自己的轻量级IoC容器,称为:JBoss Microcontainer是一个轻量级的控制/依赖注入反转容器,在概念上类似于Spring、皮科容器和Plexus。
虽然Spring可以运行得很好,与JBoss(大部分)很好地共存,但它不需要一个成熟的EJB容器,它可以很容易地在tomcat中运行。Spring的整个设计目标是基于轻量级设计的思想,使用POJO,并且不需要一个重量级容器,这与EJB是非常相反的,因此看起来与JBoss不一致。
Rod Johnson已经指出,没有理由不能在JBoss中运行Spring:
Spring被设计成可以在任何应用服务器中(或在应用服务器之外)工作;使用Spring并不意味着忽略服务器可能提供的东西。2它只是在很多情况下提供了更多的选择。
因此,您需要决定使用这两个系统中的哪些部分,以及遵循哪些Java标准。根据本文,在JBoss and Spring上,讨论了它们对标准的遵循程度,看起来,根据您选择的技术,您确实在选择一方,因为这似乎是一场相当有争议的战斗。
接下来的事情绝不是缓和,因为JBoss和SpringSource在从XML到集成到工具,再到最终的虚拟化,本身的一切上都在争斗......这是一场健康的竞争,
[剪]
只有时间才能证明一切,但我认为这场战斗只会让开发人员的情况变得更好,比.Net有更多的选择,围绕Java有更多的创新,这对JBoss来说将是一个坚韧的考验,但如果执行是完美的,他们可以处理,否则,寻找Spring Source来推动JEE 6的感知优势和真实的优势之间的裂痕...越早越好,而不是越晚越好,应用程序的可移植性将不得不被证明,以便对抗专有模型,
要了解如何遵守各种Java标准,请查看request for feedback on Spring 5。您可以了解Spring设计人员所面临的约束,同时还可以强调这样一个事实:对于Spring市场,确保Spring支持各种EE服务器是非常重要的:
我们还打算对EE基准进行软升级。现在,这有点棘手,因为我们实际上有单独的需求--并且 * 我们需要考虑生产环境中的企业采用级别 *:
我们肯定会升级到Servlet 3.0+(从我们目前的Servlet2.5运行时兼容性来看),但不能更高,因为我们仍然希望Spring 5应用程序在EE 6基线服务器上运行。考虑到JavaEE 7的市场情况和仍然基于Servlet3.0API的众多服务器。遗憾的是,我们必须继续支持2002年时代的JMS 1.1 API...我们希望升级到JPA 2.1+和Bean Validation 1.1+,但我们的手似乎被束缚住了:TomEE 1.7和JBoss EAP 6.4中包含硬JPA 2.0和Bean验证1.0 API,而WebLogic 12.1.3中包含JPA 2.1,但没有Bean验证1.1 API(尽管它们是相关的)。
0md85ypi2#
JBoss是一个应用服务器,一些Java应用服务器包括
Spring是一个框架。一个相当大的框架,提供了相当多的功能,但对我来说,主要的功能之一是MVC。MVC是一种设计模式,你可以将你的模型从视图中分离出来。模型是数据的表示。这可以由数据库或XML文件支持。视图是用来查看模型的。这可以是Web前端或Windows应用程序。用户将与视图交互。用户将表达他们对模型更新的愿望。这就是控制器的作用。我们使用控制器来告诉模型更新。因为视图是基于模型的,所以视图也会更新。这是过于简化了,但简言之。您可以查看的其他MVC框架是Struts。
就像我之前说的,Spring还提供了其他一些特性,比如
bejyjqdl3#
我的看法是:
Spring代表了Java EE中所有的优点,而JBoss代表了所有的缺点。
嗯......那可不怎么顺利(不是我认为它会)。我只是说我永远不会选择JBoss来托管任何应用程序。它只是太笨重和重量级了,做什么都不特别好。我喜欢Spring,因为它感觉不那么单一和笨重。当然,Spring不是一个应用程序容器,但它可以用于构建托管应用程序所需的大部分基础结构--您只需要将其插入容器中,Spring将处理其余的工作。
af7jpaap4#
JBoss是一个容器,Spring是在容器内运行的东西。你是在拿苹果和桔子做比较。
ss2ws0br5#
应用程序在JBoss上作为整体运行(一个JVM进程做所有事情),其中您将需要一个垂直/水平集群来扩展,其中可以调整Spring的使用,以实现微服务架构。
mbjcgjjk6#
自从java 6和CDI(看看@inject)以来,你的观点是错误的,Spring不再是唯一的一个。15年前的EJB 2(甚至EJB 3)是正确的,但今天CDI代码在websphere、weblogic、jboss、glassfish......任何你想要的应用服务器中管理。
2vuwiymt7#
JBoss或任何应用服务器都是JEE规范的实现,因此应用服务器不仅是服务器,而且还提供了构建企业应用的多种功能。
Spring框架不是JEE规范的实现,但提供了与JBoss、WebLogic等JEE规范的实现类似的功能。或者我们可以说它是如here所述的JEE规范的替代解决方案。
Spring是最流行的或者我可以说是唯一一个开发Java企业应用程序的框架。无论如何,很少有组织仍然使用应用服务器(JEE规范)。
您可以使用JBoss或Spring开发类似的应用程序,因此,这完全取决于您或您的组织的选择标准。