1 / 37

Introduction to Java Beans

Introduction to Java Beans. by Anders Børjesson. JavaBeans components. JavaBeans are the components in the Java environment Many classes in J2SE are JavaBeans Like the Java Swing classes. Characteristics. Visibility Some JavaBeans are visual Buttons, TextFields, etc.

gibson
Download Presentation

Introduction to Java Beans

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to Java Beans by Anders Børjesson

  2. JavaBeans components • JavaBeans are the components in the Java environment • Many classes in J2SE are JavaBeans • Like the Java Swing classes Introduction to JavaBeans

  3. Characteristics • Visibility • Some JavaBeans are visual • Buttons, TextFields, etc. • Some JavaBeans are “invisible” • Model components (worker classes) • Size (granularity) • Some JavaBeans are small (in terms of features) • Buttons, TextFields, etc. • Some JavaBeans are big (in terms of features) • SMTP bean, entire applications Introduction to JavaBeans

  4. Requirements for JavaBeans classes • Must have a no-arg (no parameters) constructor • More constructors are allowed • Remember: If you add a constructor with parameters then the default no-arg constructor is gone. • Must implements java.io.Serializable • Data should not be public • Data should be accesses via get and set methods • Should be thread safe • Use synchronized carefully Introduction to JavaBeans

  5. Non-requirements for JavaBeans • An applet must extend java.lang.Applet • A servlet must extend javax.servlet.Servlet • A thread must implement java.lang.Runnable • Beans does not need to extend or implement anything special • Except for java.io.Serializable • Which is only a marker interface Introduction to JavaBeans

  6. JavaBeans terms • Properties • To be read or set by other objects • Get and set methods • Methods • To be called by other objects • Ordinary Java methods • Events • Sent to other objects when something happens to the bean object • Like a property with a new value • This is the interesting part! Introduction to JavaBeans

  7. Access levels • 3 access levels • Read-only • Make only a get method • Write-only • Make only a set method • Quite rare • Read / write • Make get and set methods • Most common Introduction to JavaBeans

  8. Different kinds of properties • Different kinds of properties • Simple or indexed (array) properties • Bound properties • Event after a new value is set on the property • To update other components (e.g. visual components) • Constrained properties • Event before a new value is set on the property • To check if the new value is legal according to the current business rules Introduction to JavaBeans

  9. Simple properties • Represents a single value • A simple property has • 1 name • 1 type • Primitive data type or • Class based data type • Example: size • Name: size Type: int • public void setSize(int size) • public int getSize() • AccountSimple.java Introduction to JavaBeans

  10. Example bean: JButton • Some properties of javax.swing.JButton • Text: setText(String), getText() • Font: setFont(Font), getFont() • Icon: setIcon(Icon), getIcon() • Enabled: setEnabled(boolean), isEnabled() • Properties of type boolean has special naming conventions • setXx, isXx Introduction to JavaBeans

  11. Programming JavaBeans • JavaBeans can be programmed using • Ordinary text editors • TextPad, even Notepad • Builder tools • NetBeans, Eclipse, JBuilder, etc. • Builder tools often have special features that makes programming JavaBeans easier. Introduction to JavaBeans

  12. Exercise: Car bean • You are supposed to program parts of a system for car registration • Program a Car bean • Properties: Registration number, color, etc. • Methods: toString, equals • Constructors: No-arg constructor + maybe other constructors • Implement Serializable • Thread safety • Make a JUnit test to test the Car bean Introduction to JavaBeans

  13. Indexed properties • Represents an array of values • Example: Property: address Type: Address • Public void setAddress(int index, Address addr) • Public Address getAddress(int index) • Bulk operations: • Public void setAddresses(Address[] addr) • Public Address[] getAddresses() • AccountIndexedOwner.java Introduction to JavaBeans

  14. Exercise: Owner bean • Additional classes for the car registration system • Program a (car) owner bean • Simple properties: Name, address, etc. • Indexed property: Car • One owner may have several cars • The type of this property is Car (from the previous exercise), not String. • Make a JUnit test to test the Owner and Car beans. Introduction to JavaBeans

  15. Bound properties • Sends an event to another object after the property is assigned a new value. • The other object is sometimes called: Observer, listener, etc. • The other object may react on the event • Update its own state • Content of an event • propertyName, oldValue, newValue, source Introduction to JavaBeans

  16. Examples • AccountBound.java • ScreenLogListener.java • AccountBoundApp.java Introduction to JavaBeans

  17. Observer pattern Introduction to JavaBeans

  18. Sequence diagram: Firing a property change event Introduction to JavaBeans

  19. Sequence diagram: Adding a property change listener to a bean Introduction to JavaBeans

  20. Classes and interfaces • Package java.beans • Class PropertyChangeEvent • extends EventObject • Interface PropetyChangeListener • Extends EventListener • An empty (aka. Marker) interface • Like java.io.Serializable • Class PropertyChangeSupport • Helps you to make bound properties Introduction to JavaBeans

  21. PropertyChangeListener • Interface PropertyChangeListener extends EventListener • EventListener is a marker interface • No methods to implement • PropertyChangeListener methods • void propertyChange(PropertyChangeEvent evt) Introduction to JavaBeans

  22. PropertyChangeEvent • After changing the value of a property • firePropertyChange(propertyChangeName, oldValue, newValue) • Listener called • propertyChange(PropertyChangeEvent ev) • PropertyChangeEvent methods: • String getPropertyName() • Object getOldValue() • Object getNewValue() • Object getSource() Introduction to JavaBeans

  23. PropertyChangeSupport • Helps you to make bound properties • Constructor • PropertyChangeSupport(Object sourceBean) • Some methods • addPropertyChangeListener(PropertyChangeListener listener) • removePropertyChangeListener(PropertyChangeListener listener) • addPropertyChangeListener(String propertyName, PropertyChangeListener listener) • removePropertyChangeListener(String propertyName, PropertyChangeListener listener) • firePropertyChange(String propertyName, Object oldValue, Object newValue) • firePropertyChange(String propertyName, int oldValue, int newValue) Introduction to JavaBeans

  24. Exercises: Car bean with bound properties • Program a car bean with bound properties • Don’t try to change the Car from the previous exercise. Make a new class with a different name. • Program a PropertyChangeListener • LogListener implements PropertyChangeListener • Every time a property changes the listener writes to the screen the data in the propertyChangeEvent • Source, property name, old value, new value. • Make a Main to try the new Car bean with a propertyChangeListener. • Make a JUnit test to test the bound properties. • Take a look at the test in my BeanBank example before you try to make your own test. • Extra (if you have time): Make a more general log listener that writes to a general stream. Introduction to JavaBeans

  25. Event loops • Problem • 2 beans send propertyChangeEvents to each other • Example: User interface objects events a model object, and vice versa • The 2 beans might event each other forever. • Solution • Check if the new value is really a new value • i.e. newValue != oldValue • PropertyChangeSupport.firePropertyChange() does the checking Introduction to JavaBeans

  26. Example bean: JButton • Javax.swing.JButton is a bean • Does not use PropertyChangeListener, etc. • addActionListener(ActionListener l) • Listens for button presses • addChangeListener(ChangeListener l) • Listens for changes in the button’s state • Size, font, text, etc. Introduction to JavaBeans

  27. Constrained properties • A bean object asks one (or more) observers if an update of a property is legal • Observer may throw PropertyVetoException • Example: account.setBalance(-100) • A property is often bound and constrained • Used to implement pluggable business rules • Examples • AccountConstrained.java • MinimumBalanceChecker.java • MaximumWithdrawChecker.java • AccountConstrainedTest.java • AccountFrame.java + AccountGuiApp.java Introduction to JavaBeans

  28. Exercise: Car with constrained properties • Program a car bean with constrained properties • You may either change your “old” car bean or make a new car bean. • Program a few VetoableChangeListeners • ColorChecker • Checks if a color is illegal • Pink, orange, etc. are considered illegal colors of a car • RegistrationNumberChecker • Checks if the registration number is legal • A proper registration number must have the structure AB12345, i.e. 2 letter followed by 5 digits. • Make a JUnit test to test the Car bean with the new listeners. • Extra (if you have time) • Program a configurable ColorChecker as a bean + VetoableChangeListener • Illegal colors is an indexed property Introduction to JavaBeans

  29. Dynamic vs. static characteristics on properties • Static characteristic • Follows the object for its life time. • Dynamic characteristic • Changes over time during the objects life time • Characteristics may be (de)aggregated using constrained properties. • Example: AccountAdminFrame.java Introduction to JavaBeans

  30. Low coupling • The event mechanism in JavaBeans provides low coupling • The bean object doesn’t know much about the listeners • Except that listeners must implement PropertyChangeListener or PropertyVetoListener • The listeners doesn’t know much about the bean • It’s just an Object • Which we sometimes have to typecast to the Bean class (which is very bad) Introduction to JavaBeans

  31. Using JavaBeans in builder tools • JavaBeans can be used in a builder tool like • NetBeans • Eclipse • Borland JBuilder • etc. • The bean must be “installed” in the builder • The builder usually helps you to during installation Introduction to JavaBeans

  32. Packing JavaBeans in JAR files • JAR = Java Archive • The standard package format in Java • JAR = ZIP file with a manifest • A JAR file may contain • Class files • Icons, etc. • Manifest file describing the contents of the JAR file Introduction to JavaBeans

  33. Introspection • The builder tool unzip’s the JAR file to get the class files. • The builder tool “learns” about the beans’ properties, methods, and events using the introspection API • Package java.beans • Class Introspector • Interface BeanInfo • Class PropertyDescriptor • Class MethodDescriptor • Class EventSetDescriptor • Example: beanbank/introspection/IntrospectionApp.java Introduction to JavaBeans

  34. Using JavaBeans • JavaBeans can be used as ordinary classes in • Java applications, applets, servlets • JSF(JavaServer Faces) Introduction to JavaBeans

  35. JavaBeans vs. Enterprise JavaBeans • JavaBeans • Are relatively simple • Part of Java Standard Edition (J2SE) • Can be used in an ordinary Java application / applet • Enterprise JavaBeans • More advanced • Part of Java Enterprise Edition (J2EE) • Middle tier: Between (web)application and database. • Can only be used in an enterprise Java application • Requires an J2EE server to run the application Introduction to JavaBeans

  36. Job types using JavaBeansand other types of components • Designing components • Programming components • Documenting components • Technical writer • Design using components • Programming using components • Marketing / selling components • Testing components • Correctness, performance, security [Trojan horses, etc.] Introduction to JavaBeans

  37. References • Niemeyer & KnudsenLearning Java, 3rd edition, O’Reilly 2005 • 22. JavaBeans, page 751-786 Introduction to JavaBeans

More Related