变化速度

发布者:    |       Java EE

向后兼容性问题一直是所有框架开发者面临的挑战。这个术语对不同的人意味着不同的事情

  • 对一些人来说,这意味着 JAbstractFactoryBeans 2.0 允许在 JAbstractFactoryBeans 1.0 中添加新功能,但不应该改变我们执行 1.0 已经执行的事情的方式。
  • 对另一些人来说,这意味着 JAbstractFactoryBeans 2.0 应该继续支持 JAbstractFactoryBeans 1.0 所支持的所有 API 和元数据格式,但它可以提供对旧问题的新的、改进的方法。

我常常认为这两者都要求太多;只要从 JAbstractFactoryBeans 1.0 到 JAbstractFactoryBeans 2.0 存在合理的迁移策略,再加上两个框架版本之间可能存在的某种互操作性,那么通过“鼓励”用户将代码迁移到新的、更好的方法,你就是在为用户提供便利。

但这种思维方式在 JCP 中肯定是不行的。在 JCP 中,红帽代表了其中一种极端。我们总是推动变革,用更好的东西替换旧的东西。然而,在另一个极端,有些人认为缓慢地发展事物本身就是一种非常好的目标,几乎所有会干扰现有用户的事情都应该受到极端怀疑,也许承认错误会使我们看起来很糟糕。(是的,当然,你是对的,我想这多少有点不公平的描述。)

EE 6 真正有趣的地方在于,太阳找到了一种新的技巧来平衡相互竞争的利益。与其取消对一大堆破烂东西(实体豆、Web 服务以及一些其他尴尬的东西)的支持,太阳提出了“配置文件”的概念。所有好的、有用的东西都被称为“Web 配置文件”。其他所有东西仍然得到支持,但只有在“完整配置文件”中才是必需的。(“充满...?”,你问道。)

我略微夸张了。在完整配置文件中,有一些有用的东西(例如:JMS、计时器、异步方法)不在 Web 配置文件中。但供应商可以提供这些东西,如果他们喜欢的话。

如果你一直躲在岩石下,以下是需要的东西

以下技术是 Web 配置文件的必要组件
  • Servlet 3.0
  • JavaServer Pages (JSP) 2.2
  • 表达式语言(EL)2.2
  • 其他语言调试支持(JSR-45)1.0
  • JavaServer Pages(JSP)标准标签库(JSTL)1.2
  • JavaServer Faces(JSF)2.0
  • Java平台通用注释(JSR-250)1.1
  • 企业JavaBeans(EJB)3.1 Lite
  • Java事务API(JTA)1.1
  • Java持久化API(JPA)2.0
  • Bean验证1.0
  • 托管Bean 1.0
  • 拦截器1.1
  • JSR-299 1.0
  • JSR-330 1.0

实际上,在EE EG中有些人非常坚决地认为,Web配置应该比这还要小。他们认为(现在也认为)EE Web配置基本上应该是servlet、JSP以及任何能引起你兴趣的专用框架。我们非常强烈地认为这是走得太远了一步,Web配置应该包含构建Web应用所需的一切。该平台应该是生态系统的基础,而不是完全专用堆栈的祝福。

这个新Web配置的具体好处包括

  • 对于发现《全面》EE令人不知所措(以及像我这样的人,发现其中一些令人感到不太令人鼓舞)的人来说,技术集合更小
  • 对于实施者的门槛更低(注意像Caucho这样的人,他们应该能够将Resin构建成一个符合Web配置的堆栈)

实际上,平台的变革速度是最难把握的事情之一。走得过快,用户将浪费时间不断适应半任意的变化。我见过一些框架就是这样疏远了他们的社区。走得太慢,你就会落后于曲线,鼓励竞争替代品的发展,并分裂生态系统。

使Java EE现代化是一场漫长而艰难的斗争。我相信大多数用户认为我们犯了《太慢》的错误。但我觉得新的Web配置是第一个做对的事情的EE发布。


回到顶部