Java EE 6 与 Spring 3 堆栈 [已关闭]

2022-08-31 11:13:42

我现在正在开始一个新项目。我必须选择技术。我需要一些轻的东西,所以没有EJB或Seam。另一方面,我需要JPA(Hibernate或替代)和JSF与IceFaces。

你认为在Tomcat上部署的Spring 3上的这样一个堆栈是一个不错的选择吗?或者Java EE 6 Web应用程序可以更好吗?恐怕Java EE 6是一项新技术,还没有很好的文档记录。Tomcat似乎比Glassfish 3更容易维护。

你怎么看?你有什么经验吗?


答案 1

我需要一些轻的东西,所以没有EJB或Seam。

您是否愿意解释一下自EJB3以来使EJB变得沉重的原因?你是否意识到我们不再是2004年了?我真的很想读一读你对光的定义和你的论点(我会很高兴地更新我的答案,因为我非常确定我会有一些坚实的东西要说)。

另一方面,我需要JPA(Hibernate或替代)和JSF与IceFaces。

Java EE 6 Web Profile,包括 JSF 2.0、JPA 2.0、Bean Validation、EJB 3.1 Lite、CDI,...这将是完美的,您可以使用GlassFish v3 Web Profile来运行使用Java EE 6 Web Profile构建的应用程序。

你认为在Tomcat上部署的Spring 3上的这种堆栈是一个不错的选择吗?或者Java EE 6 Web应用程序可以更好吗?

好吧,我喜欢非专有平台(Java EE)上运行代码的想法,而不是在专有容器(Spring)上运行代码。我认为Java EE 6已经足够好了(这是一个委婉的说法,EJB 3.1(精简版),JPA 2.0,JSF 2.0,CDI踢屁股)。请注意,我是一个JSF怀疑论者,但我又看了一眼,JSF 2.0与CDI是如此不同,以至于我甚至无法比较。如果你没有看过CDI,让我告诉你它很震撼。

恐怕Java EE 6是一项新技术,还没有很好的文档记录。

Java EE在我看来已经很好地记录了。这听起来像是免费索赔。而且,信不信由你,我开始发现Spring变得越来越复杂,而Java EE变得越来越容易。

Tomcat似乎比Glassfish 3更容易维护。

你试过什么吗?您是否遇到过任何特别的问题?同样,这听起来像是免费索赔。


答案 2

我没有使用JavaEE6。

然而,我被所有以前版本的JavaEE和EJB严重殴打,以至于我不会相信它,直到它将自己确立为事实上的标准,而不仅仅是法律上的标准。现在,春天仍然是事实上的标准。

愚弄我一次,羞辱你。愚弄我两次,让我感到羞耻。愚弄我三次,EJB。

有些人会声称Spring是专有的。我认为JavaEE规范的供应商实现同样是专有的,如果不是更专有的话。

我最近经历了一次重大的转换,将一堆Java应用程序从JBoss迁移到Weblogic。所有Spring/Hibernate应用程序都以零修改进行移植,因为它们内置了所需的所有库。所有使用 JPA、EJB 和 JSF 的应用程序都是移植的灾难。应用程序服务器之间对 JPA、EJB 和 JSF 的解释的细微差异导致了各种令人讨厌的错误,这些错误需要永远修复。即使是像JNDI命名这样简单的事情,在应用程序服务器之间也是完全不同的。

春天是一种实现。JavaEE是一个规范。这是一个巨大的差异。如果规范是100%气密的,并且供应商实现该规范的方式绝对没有回旋余地,我宁愿使用规范。但JavaEE规范从来都不是这样。也许JavaEE6更气密?我不知道。您在 WAR 中打包的越多,对 AppServer 库的依赖程度越低,您的应用程序就越具有可移植性,毕竟,这就是我使用 Java 而不是 Dot-NET 的原因。

即使规范是气密的,如果能够升级应用程序服务器,而不必升级我所有应用程序中的所有技术堆栈,那就太好了。如果我想从 JBoss 4.2 升级到 JBoss 7.0,我必须考虑较新版本的 JSF 对我的所有应用程序的影响。我不必考虑对我的Spring-MVC(或Struts)应用程序的影响。


推荐