http://openjdk.java.net/jeps/256 をテキトーに訳した
JEP 256: BeanInfo Annotations
Author Sergey Malenkov Owner Sergey Bylokhov Created 2014/06/04 16:07 Updated 2015/07/23 13:28 Type Feature Status Targeted Component client-libs/java.beans Scope JDK Discussion beans dash dev at openjdk dot java dot net Effort S Duration S Priority 3 Reviewed by Kevin Rushforth, Richard Bair Endorsed by Kevin Rushforth Release 9 Issue 8044826
Summary
@beaninfo
javadocタグを適切なアノテーションに置き換え、実行時に動的にBeanInfo
クラスを生成するように、このアノテーションを処理します。
Motivation
カスタムBeanInfo
クラス作成を簡易化し、クライアントライブラリのモジュール化を可能にします。
Description
BeanInfo
クラスはおおむね実行時に自動生成されますが、Swingクラスの大半は依然としてコンパイル時に@beaninfo
javadocタグからBeanInfor
クラスを生成します。我々の提案では@beaninfo
タグを以下のアノテーションで置き換え、インタープリターを行う既存のイントロスペクションアルゴリズムを拡張します。
package java.beans; public @interface JavaBean { String description() default ""; String defaultProperty() default ""; String defaultEventSet() default ""; } package java.beans; public @interface BeanProperty { boolean bound() default true; boolean expert() default false; boolean hidden() default false; boolean preferred() default false; boolean visualUpdate() default false; String description() default ""; String[] enumerationValues() default {}; } package javax.swing; public @interface SwingContainer { boolean value() default true; String delegate() default ""; }
詳細については、JavaBean, BeanProperty, SwingContainerのjavadocを参照してください。
これらのアノテーションは実行時のBeanInfor
生成中に対応する機能属性(feature attributes)を設定します。Beanクラスごとに別々のBeanInfo
クラスを作成するより、Beanクラスに直接属性を指定するほうが、開発者にとっては便利です。また、自動生成クラスの削除も可能となり、これによりクライアントライブラリのモジュール化が容易になります。
Testing
新しいイントロスペクションアルゴリズムが想定通りの効果を生むかどうかの検証が必要です。また、新しいイントロスペクションアルゴリズムが後方互換性を壊していないか、もしくは、壊される互換性が一定水準内に収まっているか、どちらかであることの検証が必要です。
Risks and Assumptions
- 新しいイントロスペクションアルゴリズムが依然とは若干異なる振る舞いをするかもしれないが、深刻な後方互換性については考慮しない*1。
- パフォーマンス低下については考慮しない。イントロスペクションアルゴリズムのリファクタリングによってパフォーマンス向上の可能性がある。
*1:we do not expectは「考慮しない」と訳したが、どの程度の深刻さなのか、ちょっとわからん