Java Beans & Serialization - Computer Science

Download Report

Transcript Java Beans & Serialization - Computer Science

Java Beans & Serialization
CS-328
Dick Steflik
Java Beans
• Java based component technology
– originally developed to provide java with a
component technology like vbx/ocx of VB
– originally used for user interface widgets
– currently used for server side componets
• Requirements
– Bean naming conventions
– must be serializable, to support persistence
Bean Naming Conventions
• “setters”
– set or modify a bean property value
– must start with “set”
• “getters”
– retrieve property values from a bean
– must start with “get”
Bean Properties
• Simple
– represents a single property and can be defined with a pair of get/set
methods
• Indexed
– represents an array of properties
• Bound
– a bound property notifies other objects when its value changes
– generates a PropertyChange event with property name, old value and new
value
• Constrained
– an object with constrained properties allows other objects to veto a
constrained property value change
– Constrained property listeners can veto a change by throwing a
PropertyVetoException
Interaction Levels
Methods
Bean
Properties
Event
Bean Framework
Bean
Bean
Bean
Bean
Network
Bean
Container Bean
Network
Introspection
• the processby which a builder tool finds out
which properties, methods, and events a
bean supports.
– searching for classes and methods that follow
certain naming conventions
– by querying the BeanInfo of a class
• BeanInfo is an interface whose methods allow the
interrogation of a beans properties, methods and
events
Introspection
Methods
Properties
Events
Introspector
Reflection
• The core APIs used by the JavaBeans
Introspector class
• java.lang.reflect
a simple GasTank Bean
Class Gastank implements Serializable{
private double capacity;
private int percent_full;
public void setCapacity(double pounds){
capacity = pounds; }
public double getCapacity() {
return Capacity; }
public void setPercent_full( int p) {
percent_full = p; }
public int getPercent_full() {
return percent_full; }
}
Jarring the Bean
• Beans are packaged in a java archive (jar)
file
• the jar utility comes with the JDK
• the jar file must be explicitly in your class
path
• in JDK 1.2.x all AWT and Swing classes are
beans
GUI Builders
• Because of a bean’s naming convention the
GUIs introspector can build a property sheet
for each bean automatically
• The GUI builder allows you to configure
the bean as your app. Needs
• Because the bean is serializable the
configured properties can be saves by the
GUI Builder
Beans Development Kit
• Download the latest BDK from SUN
• Comes with the Beanbox
– allows building of bean applications
– provides the jar utility
– allows saving of configured beans
Persistance
• for persistance a bean must implement the
Serializable interface
• java.io.Serializable
• saving of the bean’s fields is automatic, you
need do nothing, everything is done by the
JavaBean API
• the same applies to retrieving the bean’s
persistent values
Loading and Saving an Object
Saving an Object
public void SaveState(){
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try{
fos = new
FileOutputStream(State.ser);
oos = new
ObjectOutputStream(fos);
oos.writeObject(currentState);
}
catch(IOException e){
System.out.println(e.toString;}
}
Restoring an Object
public void loadState(){
FileInputStream fis = null;
ObjectInputStream ois = null
try{
fis = new
FileInputStream(State.ser);
ois = new ObjectInputStream(fis);
State currentState =
(State)ois.readObject();
}
catch(ClassNotFoundException e){
Systen.out.println(e.toString);
}
}
public void SaveState(){
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try{
fos = new
FileOutputStream(State.ser);
oos = new
ObjectOutputStream(fos);
oos.writeObject(currentState);
}
catch(IOException e){
System.out.println(e.toString;}
}
For more on JavaBeans
• JavaBeans Home Page http://java.sun.com/beans/