19

对于企业 Web 应用程序,Spring 与 Jboss 的优缺点是什么。

4

7 回答 7

59

这是一个很好的问题。有些人在这里错误地说这是一个苹果与橘子的比较,即 Jboss 是一个容器,而 Spring 只是一个框架,就像 Struts 一样。然而,这有点令人困惑的原因是 JBoss 和 Spring 都从它们最初的简单起源大大扩展,因此彼此越来越接近。一个简单的理解JBoss的方式是原来的名字是“EJBoss”,它的目的是作为一个开源的J2EE应用服务器,所以它作为一个EJB容器比tomcat有优势,因此可以与WebSphere竞争和其他专有应用程序服务器。

Spring 是一个 IoC 框架(现在称为“依赖注入”),本质上是一个对象工厂,因此您可以遵循更“松散耦合”的设计。

然而,随着它们的流行,这两种产品都扩大了。例如,JBoss 现在拥有自己的 IoC 容器: JBoss IoC

JBoss 提供了自己的轻量级 IoC 容器,称为:JBoss Microcontainer。JBoss Microcontainer 是一个轻量级的控制反转/依赖注入容器,在概念上类似于 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(尽管它们是相关的)。

于 2010-10-28T16:57:05.813 回答
13

正如已经说过的,但让我重申一下这一点。JBoss 是一个应用服务器。一些 Java 应用服务器包括

  • 网络球
  • 玻璃鱼
  • 老板

Spring是一个框架。一个相当大的框架,它提供了相当多的功能,但对我来说,其中一个主要功能是 MVC。MVC 是一种设计模式,您可以在其中将模型与视图与控制器分开。模型是数据的表示。这可以由数据库或 XML 文件等支持。视图是用来查看模型的。这可以是 Web 前端或 Windows 应用程序。用户将与视图交互。用户将表达他们希望更新模型的愿望。这就是控制器的用武之地。我们使用控制器来告诉模型进行更新。而且因为视图是基于模型的,所以视图也会被更新。这是过度简化,但简而言之。您可以查看的其他 MVC 框架是 Struts。

就像我之前说的,Spring 还提供了其他功能,例如

  • 安全框架
  • 控制反转
  • 依赖注入
于 2009-03-09T20:39:22.290 回答
7

这是我的看法:

Spring 代表了 Java EE 中的所有优点,而 JBoss 代表了所有缺点。

嗯......这并没有那么好(不是我认为它会)。我只是说我永远不会选择 JBoss 来托管任何应用程序。它是如此笨重和重量级,并没有做任何特别好的事情。我喜欢 Spring,因为它感觉不那么单一和笨重。诚然,Spring 不是应用程序容器,但它可用于构建托管应用程序所需的大部分基础设施——您只需将其插入容器,其余的由 Spring 处理。

于 2009-03-09T20:18:46.287 回答
2

JBoss 是一个容器,spring 是在容器内部运行的。您正在将苹果与橙子进行比较。

于 2009-03-09T20:15:20.867 回答
1

应用程序在 JBoss 上作为单片机运行(一个 JVM 进程完成所有工作),其中您将需要一个垂直/水平集群来扩展,其中可以调整 Spring 的使用以实现微服务架构。

于 2016-02-12T17:47:33.903 回答
0

由于 java6 和 CDI(看@inject)你认为它是错误的,所以 spring 不再是唯一的了。15 年前使用 EJB2(甚至 EJB3)确实如此,但今天 CDI 代码在 websphere、weblogic、jboss、glassfish 中进行管理......无论您想要什么应用程序服务器。

于 2014-03-19T09:31:35.370 回答
0

JBoss 或任何应用服务器都是 JEE 规范的实现。因此,应用服务器不仅是服务器,它还提供多种功能来构建企业应用程序。

Spring 框架不是 JEE 规范的实现,但提供与 JBoss、WebLogic 等 JEE 规范的实现类似的功能。或者我们可以说它是这里提到的 JEE 规范的替代解决方案。

Spring 是最流行的或者我只能说是开发 Java 企业应用程序的一个框架。无论如何,很少有组织仍然使用应用程序服务器(JEE 规范)。

您可以使用 JBoss 或 Spring 开发类似的应用程序。因此,这完全取决于您或您所在组织的选择标准。

于 2021-02-26T00:23:19.263 回答