javabeans notes
javabeans notes
javabeans notes
JAVA BEANS
INTRODUCTION TO JAVA BEANS
Software components are self-contained software units developed according to the motto “Developed
them once, run and reused them everywhere”. Or in other words, reusability is the main concern behind
the component model.
A software component is a reusable object that can be plugged into any target software application. You
can develop software components using various programming languages, such as C, C++, Java, and
Visual Basic.
A “Bean” is a reusable software component model based on sun’s java bean specification that
can be
manipulated visually in a builder tool.
The term software component model describe how to create and use reusable software
components to
build an application
Builder tool is nothing but an application development tool which lets you both to create new
beans or use
existing beans to create an application.
To enrich the software systems by adopting component technology JAVA came up with the
concept
called Java Beans.
Java provides the facility of creating some user defined components by means of Bean
programming.
We create simple components using java beans.
We can directly embed these beans into the software.
The java beans possess the property of “Write once and run anywhere”.
Beans can work in different local platforms.
Beans have the capability of capturing the events sent by other objects and vice
versa enabling object communication.
The properties, events and methods of the bean can be controlled by the
application developer.(ex. Add new properties)
Beans can be configured with the help of auxiliary software during design time.(no hassle at
runtime)
The configuration setting can be made persistent.(reused)
Configuration setting of a bean can be saved in persistent storage and restored later.
What can we do/create by using JavaBean:
There is no restriction on the capability of a Bean.
Software to generate a pie chart from a set of data points is an example of a Bean that
can execute locally.
Bean that provides real-time price information from a stock or commodities exchange.
Builder tools allow a developer to work with JavaBeans in a convenient way. By examining a
JavaBean by a process known as Introspection, a builder tool exposes the discovered features of
the JavaBean for visual manipulation. A builder tool maintains a list of all JavaBeans available.
It allows you to compose the Bean into applets, application, servlets and composite components
(e.g. a JFrame), customize its behavior and appearance by modifying its properties and connect
other components to the event of the Bean or vice versa.
Some Examples of Application Builder tools:
TOOL VENDOR DESCRIPTION
Java
Java Workshop2.0 Sun Micro Systems., Inc., Complete IDE that support
applet, application and bean
development
Visual age for java IBM Bean Oriented visual
development toolset.
Jbuilder Borland Inc. Suit of bean oriented java
development tool
Beans Development Kit Sun Micro Systems., Inc., Supports only Beans
development
A JavaBean should:
be public
implement the Serializable interface
have a no-arg constructor
be derived from javax.swing.JComponent or java.awt.Component if it is visual
The classes and interfaces defined in the java.beans package enable you to create JavaBeans. The
Java Bean components can exist in one of the following three phases of development
Construction phase
Build phase
Execution phase
Elements of a JavaBean:
Properties
Similar to instance variables. A bean property is a named attribute of a bean that
can affect its behavior or appearance. Examples of bean properties include color,
label, font, font size, and display size.
Methods
Same as normal Java methods.
Every property should have accessor (get) and mutator (set)
method.
All Public methods can be identified by the introspection
mechanism.
There is no specific naming standard for these methods
Events
Similar to Swing/AWT event handling.
Features of a JavaBean
Support for “introspection” so that a builder tool can analyze how a bean works.
Support for “customization” to allow the customisation of the appearance and behaviour
of a bean.
Support for “events” as a simple communication metaphor than can be used to connect up
beans.
Support for “properties”, both for customization and for programmatic use.
Support for “persistence”, so that a bean can save and restore its customized state.
Beans Development Kit
Is a development environment to create, configure, and test JavaBeans.
The features of BDK environment are:
Provides a GUI to create, configure, and test JavaBeans.
Enables you to modify JavaBean properties and link multiple JavaBeans in an
application using BDK.
Provides a set of sample JavaBeans.
Enables you to associate pre-defined events with sample JavaBeans.
Properties window: Displays all the exposed properties of a JavaBean. You can modify
JavaBean properties in the properties window. The following figure shows the Properties
window
Method Tracer window: Displays the debugging messages and method calls for a JavaBean
application. The following figure shows the Method Tracer window:
For example, the entry for the MyBean JavaBean in the manifest file is as shown:
Note: write that 2 lines code in the notepad and save that file as MANIFEST.MF in
META-INF directory
The rules to create a manifest file are:
• Press the Enter key after typing each line in the manifest file.
• Leave a space after the colon.
• Type a hyphen between Java and Bean.
• No blank line between the Name and the Java-Bean entry.
The various options that you can specify while creating a JAR file are:
f: Indicates that the first file in the file_names list is the name of the JAR file.
m: Indicates that the second file in the file_names list is the name of the manifest file.
t: Indicates that all the files and resources in the JAR file are to be displayed in a tabular
format.
Select the MyBean from the ToolBox when we select that bean one + simple appear then drag
that Bean in to the Beanbox. If you want to apply events for that bean, now we apply the events
for that Bean.
Introspection:
There are two ways in which the developer of a Bean can indicate which of its properties,
events, and methods should be exposed by an builder tool.
The first method, simple naming conventions are used. These allow the introspection
mechanisms to infer information about a Bean.
In the second way, an additional class is provided that explicitly supplies this
information.
SimpleBean.java
//introspection
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.*;
import java.beans.PropertyDescriptor;
public class SimpleBean
{
private String name="CMRCET";
private int Size;
public String getName()
{
return this.name;
}
public int getSize()
{
return this.Size;
}
public void setSize(int size)
{
this.Size=size;
}
public void setName(String name)
{
this.name=name;
}
public static void main(String args[])throws IntrospectionException
{
BeanInfo info=Introspector.getBeanInfo(SimpleBean.class);
for(PropertyDescriptor pd:info.getPropertyDescriptors())
{
System.out.println("BeanInfo:="+pd.getName());
}
EventSetDescriptor[] eventSets =
info.getEventSetDescriptors(); for (EventSetDescriptor e :
eventSets)
System.out.println(" Event: " + e.getName());
}}
Output:
A property is a subset of a Bean’s state. A bean property is a named attribute of a bean that can
affect its behavior or appearance. Examples of bean properties include color, label, font, font
size, and display size. Properties are the private data members of the JavaBean classes.
Properties are used to accept input from an end user in order to customize a JavaBean.
Properties can retrieve and specify the values of various attributes, which determine the behavior
of a JavaBean.
Simple Properties:
Simple properties refer to the private variables of a JavaBean that can have only a single value.
Simple properties are retrieved and specified using the get and set methods respectively.
1. A read/write property has both of these methods to access its values. The get method
used to read the value of the property .The set method that sets the value of the
property.
2. The setXXX() and getXXX() methods are the heart of the java beans properties
mechanism. This is also called getters and setters. These accessor methods are used to
set the property .
Ex:
public double getDepth()
{
return depth;
}
Read only property has only a get method.
The syntax of set method is:
Ex:
Boolean Properties:
A Boolean property is a property which is used to represent the values True or False.Have either
of the two values, TRUE or FALSE. It can identified by the following methods:
Syntax:
Let N be the name of the property and T be the type of the value
then publicbooleanisN();
public void setN(boolean parameter);
public Boolean getN();
publicboolean is<PropertyName>()
publicboolean get<PropertyName>()
Indexed Properties:
Indexed Properties are consists of multiple values. If a simple property can hold an array of
value they are no longer called simple but instead indexed properties. The method’s signature
has to be adapted accordingly. An indexed property may expose set/get methods to read/write
one element in the array (so-called ’index getter/setter’) and/or so-called ’array getter/setter’
which read/write the entire array.
Indexed Properties enable you to set or retrieve the values from an array of property values.
Indexed Properties are retrieved using the following get methods: Syntax:publicint[]
get<PropertyName>()
Example:
private double data[];
public double getData(int index)
{
return data[index];
}
Syntax:public property_datatype get<PropertyName>(int index)
Example:
public void setData(intindex,double value)
{
Data[index]=value;
}
Indexed Properties are specified using the following set methods:
Syntax:
public void set<PropertyName>(int index, property_datatype value)
Example:
public double[] getData()
{
return data;
}
Syntax : public void set<PropertyName>(property_datatype[] property_array)
Example:
Bound Properties:
A bean that has a bound property generates an event when the property is changed. Bound
Properties are the properties of a JavaBean that inform its listeners about changes in its values.
Bound Properties are implemented using the PropertyChangeSupport class and its methods.
Bound Properties are always registered with an external event listener. The event is of type
PropertyChangeEvent and is sent to objects that previously egistered an interest in receiving
such notifications bean with bound property - Event source Bean implementing listener -- event
target.
In order to provide this notification service a JavaBean needs to have the following two
methods: public void addPropertyChangeListener(PropertyChangeListener p)
{
changes.addPropertyChangeListener(p);
}
public void removePropertyChangeListener(PropertyChangeListener p)
{
changes.removePropertyChangeListener(p);
}
PropertyChangeListener is an interface declared in the java.beans package. Observers which
want to be notified of property changes have to implement this interface, which consists of only
one method:
public interface PropertyChangeListener extends EventListener
{
public void propertyChange(PropertyChangeEvent e );
}
Implementing Bound Properties:
The following steps are required to develop Bound Properties in a Java Bean
}
public void setString(String newString)
{
//Step3
String oldString=original;
original=newString;
pcs.firePropertyChange("String","oldString","newString");
}
public String getString()
{
return original;
}
public Dimension getMinimumSize()
{
return new Dimension(50,50);
}
//Step4
}
}
E:\IIICSEA\CSABoundPropertiesEx>javac -d . *.java
E:\IIICSEA\CSABoundPropertiesEx>tree/f
Folder PATH listing
Volume serial number is 3643-98F2
E:.
│ MyBoundPropertiesEx.jar
│ MyBoundPropertiesEx.java
│
├───com
│ └───cmrcet
│ └───yellaswamy
│ └───boundproperties
│ MyBoundPropertiesEx.class
│
└───META-INF
MANIFEST.MF
• Start BDK
• Checkout when MyBoundPropertiesEx Bean available in ToolBox or not.
• Instantiate a MyBoundPropertiesEx and any other Bean in the Beanbox.here I am selecting
Molecule bean.
• Select MyBoundPropertiesEx bean and click on
EditEventspropertyChangepropertyChange
• After click on propertyChange method,connect MyBoundPropertiesEx bean with
Molecule bean and select event to be generared on molecule bean when
MyBoundPropertiesEx bean property is changed,here I am selecting “hide” event that is
on changing MyBoundPropertiesEx bean property,molecule bean will be hide.
• On change MyBoundPropertiesEx bean property “Welcome” initial value to “Test” to
any method.
Constrained Properties:
It generates an event when an attempt is made to change it value Constrained Properties are
implemented using the PropertyChangeEvent class. The event is sent to objects that previously
registered an interest in receiving an such notification Those other objects have the ability to veto
the proposed change This allows a bean to operate differently according to the runtime
environment
A bean property for which a change to the property results in validation by another bean. The
other bean may reject the change if it is not appropriate. Constrained Properties are the
properties that are protected from being changed by other JavaBeans. Constrained Properties are
registered with an external event listener that has the ability to either accept or reject the change
in the value of a constrained property. Constrained Properties can be retrieved using the get
method. The prototype of the get method is:
Syntax:public string get<ConstrainedPropertyName>() Can be specified using the set
method.
The prototype of the set method is:
Syntax :public string set<ConstrainedPropertyName>(String str)throws
PropertyVetoException
//step1
import java.awt.*;
import java.beans.*;
public class ConstrainedEx extends Canvas
{
//Step2
String price="100";
VetoableChangeSupport vcs=new VetoableChangeSupport(this);
private PropertyChangeSupport pcs=new PropertyChangeSupport(this);
//constructor
public ConstrainedEx()
{
setBackground(Color.red);
setForeground(Color.blue);
}
String oldprice=price;
price=newprice;
pcs.firePropertyChange("price","oldprice","newprice");
//step4
public void addVetoableChangeListener(VetoableChangeListener vcl)
{
vcs.addVetoableChangeListener(vcl);
}
public void removeVetoableChangeListener(VetoableChangeListener vcl)
{
vcs.removeVetoableChangeListener(vcl);
}
User-defined JavaBeans interact with the help of user-defined events, which are also called
custom events. You can use the Java event delegation model to handle these custom events.
The components of the event delegation model are:
Event Source: Generates the event and informs all the event listeners that are registered with it
Event Listener: Receives the notification, when an event source generates an event
Event Object: Represents the various types of events that can be generated by the event
sources.
Creating Custom Events:
The classes and interfaces that you need to define to create the custom JavaBean events are:
• An event class to define a custom JavaBean event.
• An event listener interface for the custom JavaBean event.
• An event handler to process the custom JavaBean event.
• A target Java application that implements the custom event.
The target application that uses the custom event implements the custom listener.
For example,
public interface NumberEnteredListener extends EventListener
{
public void arithmeticPerformed(NumberEventmec);
}
Creating Event Handler
Custom event handlers should define the following methods:
• addXXListener(): Registers listeners of a JavaBean event.
• fireXX(): Notifies the listeners of the occurrence of a JavaBean event.
• removeXXListener(): Removes a listener from the list of registered listeners of a JavaBean.
The code snippet to define an event handler for the custom event NumberEvent is:
public class NumberBean extends JPanel implements ActionListener
{
publicNumberBean()
{}
NumberEnteredListenermel;
public void addNumberListener(NumberEnteredListenermel)
{
this.mel = mel;
}
}
Persistence :
Persistence means an ability to save properties and events of our beans to non-volatile storage
and retrieve later. It has the ability to save a bean to storage and retrieve it at a later time
Configuration settings are saved It is implemented by Java serialization. If a bean inherits
directly or indirectly from Component class it is automatically Serializable. Transient keyword
can be used to designate data members of a Bean that should not be serialized.
a. Automatic persistence
b. External persistence
1. Juggle Bean.
2. Building an applet
Customizers:
The Properties window of the BDK allows a developer to modify the several properties of the
Bean. Property sheet may not be the best user interface for a complex component It can provide
step-by-step wizard guide to use component It can provide a GUI frame with image which
visually tells what is changed such as radio button, check box, ... It can customize the appearance
and behavior of the properties Online documentation can also be provided. A Bean developer has
great flexibility to develop a customizer that can differentiate his or her product in the
marketplace. To make it easy to configure a java beans component Enables a developer to use
an application builder tool to customize the appearance and behavior of a bean
Edit Menu
Cut Removes the Bean selected in the BeanBox. The cut Bean is serialized, and can then be
pasted.
Copy Copies the Bean selected in the BeanBox. The copied Bean is serialized, and can then be
pasted.
Paste Drops the last cut or copied Bean into the BeanBox.
Report... Generates an introspection report on the selected Bean.
EventsLists the event−firing methods, grouped by interface.
Bind property... Lists all the bound property methods of the selected Bean.
View Menu
Disable Design Mode
Removes the ToolBox and the Properties sheet from the screen. Eliminates all 14 beanBox
design and test behavior (selected Bean, etc.), and makes the BeanBox behave like an
application.
Hide Invisible Beans
Hides invisible Beans
1. Remote Interface:
This should be a subtype of
javax.ejb.EJBObject. Declares all the business
logic methods.
2. Home Interface:
This should be a subtype of javax.ejb.EJBHome.
Declares lifecycle methods,includes method such as create() that returns our remote
interface type of object.
NOTE:
The javax.ejb.EJBObject and javax.ejb.EJBHome interfaces are subtypes of
java.rmi.Remote
3. Bean class( or ejb class):
This class should not implement either the remote or even home interfaces.
This should implement one of the subtype of javax.ejb.EnterpriseBean interface,which is not
related tojava.rmi.Remote.
This class object is not a network enabled object.
All the methods declared in our remote interface should be implemented in bean class
4. EJB object:
It is a term used to refer an instance of Remote interface implementation class.
This is implemented by the container provider.
5. Home Object:
It is a term used to refer an instance of Home interface implementation class.
This implementation is also provided by container provider.
Types of EJB:
1. Session Beans:
a)StatelessSessionBean(SLSB)
b)StatefulSessionBean(SFSB)
2. Entity Beans:
a)BeanManagedPersistance(BMP)
b)ContainerManagedPersistance(CMP)