Grains de café.
Définir un modèle de composants Java.
Un JavaBean est un élément Java pouvant :
- être paramétré via des propriétés en lecture et/ou écriture.
- recevoir des ordres via des appels de ses méthodes
- émettre des événements (et non pas appeler les méthodes d'autres objets ou composants avec qui il créerait ainsi des dépendances nuisant à sa réutilisabilité)
L'ensemble de ces éléments est implicitement identifié par introspection (motifs de nommage des accesseurs aux propriétés ou des événements typiquement). Cependant il est également possible de les spécifier explicitement, via une classe d'information annexe (BeanInfo).
Un JavaBean est une classe Java :
- publique (
public
)
- sérializable (implémentant
java.io.Serializable)
- donc un constructeur par défaut permettant de l'instancier avant de le paramétrer ou le charger
- des accesseurs respectant les conventions de nommage (naming patterns)
getProprieté
/setPropriété
La classe BeanInfo de MaClasse
doit être nommée MaClasseBeanInfo
.
Exemples
Un exemple de JavaBean très simple est :
public class Voiture implements java.io.Serializable {
public Voiture () {
}
}
Un autre exemple est :
public class Voiture implements java.io.Serializable {
public Voiture () {
}
public String getMarque() {
return marque;
}
public java.awt.Color getColor() {
return color;
}
public void setColor (java.awt.Color someColor) {
color = someColor;
}
private String marque;
private java.awt.Color color;
}
Notes
- Adapté aux composants visuels
- Supporté par les EDI visuels
- Voir InfoBus
- Diverses solutions de persistance existent
pour les JavaBeans :
- sérialisation : une instance de JavaBean peut être enregistrée
vers un flux (fichier, socket réseau)
- XML via
- JAXB
- Bean Markup Language. (BML) defines an DTD that allow to
define JavaBeans structure. As interpreting a BML script generates
JavaBeans and as BML language include commands to create and use new
beans, such a BML script can be run as an application.
- JDO, qui peut abstraire divers types de persistance
(SGBDR, XML, etc.)
Limitations
- Non transactionnel
- Non distribuable