JSR 295规范参考实现Beans Binding推出1.0版

Sun公司的Shannon Hickey最近刚刚宣布了Beans Binding框架的1.0版本。该框架是JSR 295规范的参考实现,它试图:

[……]定义一套API,使得一对Java Beans属性之间的连接得到大幅度的简化,并保持属性的同步。属性的连接是可配置的:在更新属性之前,可以进行类型转换和值校验操作。

Shannon表示,针对该JSR的工作仍将继续进行,而且可能导致API发生变化。不过,框架的1.0版确实通过以下的显著特性代表了对Beans Binding API架构的一个主要的重新实现:

  • 属性的概念已经被抽取出来,成为一个抽象的Property类,并且提供了两个有趣的具体实现:BeanPropertyELProperty
  • Binding目前已经成为一个表示两个Property实例之间绑定关系的抽象类(通常关联着两个对象)。
  • 使用自动同步的绑定则通过一个新的AutoBinding子类实现出来。
  • 对复杂Swing组件(例如JTableJListJComboBox)的绑定现在由定制的Binding子类处理。
  • 提供多种可能行为的合成型(synthetic)Swing属性现在是通过属性的多个版本的方式来向外暴露。例如:用于JTextField的“text”、“text_ON_FOCUS_LOST”和“text_ON_ACTION_OR_FOCUS_LOST”;用于JListJTable的“selectedElement”和“selectedElement_IGNORE_ADJUSTING”。
  • 所有的代码都被重新打包,放到org.jdesktop之下。

用于该框架的基本API如下所示:

// Bind Duke's first name to the text property of a Swing JTextField
BeanProperty textP = BeanProperty.create("text");
Binding binding =
Bindings.createAutoBinding(READ_WRITE, duke, firstP, textfield, textP);
binding.bind();

// Bind Duke's mother's first name to the text property of a Swing JTextField,
// specifying that the JTextField's text property only reports change
// (thereby updating the source of the READ_WRITE binding) on focus lost
BeanProperty textP = BeanProperty.create("text_ON_FOCUS_LOST");
Binding binding =
Bindings.createAutoBinding(READ_WRITE, duke, motherFirstP, textfield, textP);
binding.bind();

Beans Binding所面向的是Swing的领域,在过去Swing领域曾经用过类似于JGoodies Binding这样的项目。另外的一个项目则是来自于Eclipse Foundation的JFace Data Binding,它为SWT、JFace和JavaBeans提供了核心的实现。不过这个框架早就为Swing和EMF这样的API留好了未来的扩展余地。

查看英文原文:JSR 295 Beans Binding Hits 1.0

你可能感兴趣的:(JSR 295规范参考实现Beans Binding推出1.0版)