Java Beans
Java Beans
Definitions
A reusable software component that can be manipulated visually in a ‘builder tool’. (from JavaBean Specification)The JavaBeans API provides a framework for defining reusable, embeddable, modular software components.
Intro to JavaBeans
What are JavaBeans? Software components written in Java Connect and Configure Components Builder Tools allow connection and
configuration of Beans Begins ‘Age of Component Developer’ Bringing Engineering methods to
Software Engineering (e.g. electronics…)
The JavaBeans API
Features implemented as extensions to standard Java Class LibraryMain Component Services GUI merging Persistence Event Handling Introspection Application Builder Support
User Interface Merging
Containers usually have Menus and/or toolbarsAllows components to add features to the menus and/or toolbarsDefine mechanism for interface layout between components and containers
Persistence
Components can be stored and retrievedDefault – inherit serializationCan define more complex solutions based on needs of the components
Event Handling
Defines how components interactJava AWT event model serves as basis for the event handling API’sProvides a consistent way for components to interact with each other
Introspection
Defines techniques so components can expose internal structure at design timeAllows development tools to query a component to determine member variables, methods, and interfacesStandard naming patterns usedBased on java.lang.reflect
Application Builder Support
Provides support for manipulating and editing components at design timeUsed by tools to provide layout and customizing during designShould be separate from componentNot needed at run time
Creating a JavaBean
Requirements for a simple BeanPackaging Bean in a JAR fileAdditional Information – BeanInfoDefining property editorsDefining Bean customizersNaming Conventions
Bean NON Requirements
No Bean SuperclassVisible interface not required ‘Invisible’ Beans (timer, random
number generator, complex calculation)
Bean RequirementsIntrospection Exports: properties, methods, events
Properties Subset of components internal state
Methods Invoked to execute component code
Events (If any needed) Notification of a change in state User activities (typing, mouse actions,
…)
Bean Requirements
Customization Developer can change appearance
Persistence Save current state so it can be
reloaded
Other properties
Indexed properties Array value with get and set elements
Bound properties Triggers event when value changed
Constrained properties Triggers event when value changes
and allows listeners to ‘veto’ the change
BeanInfo class
Provides more information using FeatureDescripter objectsSubclasses: BeanDescripter, PropertyDescripter,
IndexedPropertyDescripter, EventSetDescripter, MethodDescripter, ParameterDescripter
BeanInfo class
ICON to represent BeanCustomizer Class (wizard for set up)Property Editor referencesList of properties with descriptionsList of methods with descriptionsMethod to reset properties to defaults
The beanbox
Primary task is setting property valuesProperty editors for common types Set Font Set background/foreground colors Set numeric values Set string values
Creating a Bean
Usually extends Canvas (New window)Can extend Component (‘lightweight’)Needs constructor with no argumentsPaint() method used to displaygetPreferredSize(), getMinimumSize() For layout manager defaults
get and set methods for each property
Packaging the Bean
Create a JAR file (JavaARchive) Patterned after tar utility
Create ‘stub’ manifest Name:
smith/proj/beans/BeanName.class Java-Bean: True (forward slashes even under
Windows!)
Installing the Bean
Beanbox: copy jar file to /jars directory within the BDK directory
Different depending on tool used
Some Naming Conventions
Beans Class name: any Constructor: no argument or
serialized template file Packaging: jar file with Java-Bean:
True
More Naming Conventions
Properties Get and set using property name Property name: message
public String getMessage() Public void setMessage(String s)
More Naming Conventions
Events Event name: Answer
Class name: AnswerEvent Listener name: AnswerListener Listener methods:
public void methodname(AnswerEvent e) public void addAnswerListener(AnswerListener
l) public void removeAnswerListener(… l)
Demo of IBM’s VisualAge Tool
VisualAge for Java Version 1.0