我没有使用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)应用程序的影响。