Concepts : Bean Java
Rubriques
Introduction
Les Java beans définissent un modèle de composant simple et puissant du langage Java. Le but des Java beans est de fournir des unités autonomes ré-utilisables qui pourront être manipulées dans les programmes des développeurs ou visuellement dans les outils de génération.
Les Java beans peuvent être des composants de l'interface graphique ; ils peuvent néanmoins être dépourvus de représentation visuelle.
Les composants de l'interface graphique du langage Java sont généralement sous la forme de Java beans pour être manipulés par les outils de génération. Dans la norme J2EE, les simples Java beans sont couramment utilisés pour les JSP, où ils sont utilisés pour réaliser une présentation séparée du code HTML et du code Java, contenu dans les Java beans.
Un Java bean correspond à une classe Java comportant trois fonctionnalités distinctes :
Propriétés des Java beans
Les propriétés d'un Java bean sont accessibles par d'autres composants. Habituellement, une propriété est une valeur privée accessible par les méthodes de définition et d'obtention ; elle peut par ailleurs être une valeur calculée. Les mises à jour des propriétés peuvent provoquer de multiples effets secondaires.
Les accesseurs sont les méthodes utilisées pour accéder aux propriétés. Les accesseurs peuvent être des méthodes d'obtention et de définition et ils respectent les conventions de dénomination :
void setPropertyName(PropertyType value); // setter
PropertyType getPropertyName() // getter
Pour une propriété booléenne, une méthode d'obtention peut être :
booléen est PropertyName()
// la méthode d'obtention pour la propriété booléenne
Exemple: bean client
L'exemple suivant décrit un simple Java bean (Customer) comportant deux propriétés de base : nom et e-mail. Notez la manière de définir les propriétés, en utilisant les méthodes set/get.

public class Customer {
private String name;
private String email;
public String getName() {
return name;
}
public void setName(String aName) {
name = aName;
}
public String getEmail() {
return email;
}
public void setEmail(String aEmail) {
email = aEmail;
}
}
De tels Java beans de base sont souvent utilisés dans les JSP, où ils permettent d'acheminer les valeurs des feuilles de travail vers les pages web.
Propriétés indexées
Outre les propriétés simples qui n'ont qu'une seule valeur, une propriété peut représenter un ensemble de valeurs contenues dans un tableau.
Les propriétés indexées peuvent renvoyer une valeur ou le tableau intégral des valeurs à l'index spécifié.
Les propriétés indexées présentent les signatures suivantes:
void setPropertyName(int
index, PropertyType value); // indexed setter
PropertyType getter(int index); // indexed getter
void setPropertyName(PropertyType values[]); // array setter
PropertyType[]getPropertyName(); // array getter
Propriétés liées
Le mécanisme des propriétés liées prévoit le service de notification, lorsque la propriété change.
Les objets demandant une notification du changement s'enregistrent à l'avance ; ils reçoivent la notification lorsque le changement de propriété intervient. La notification se constitue habituellement au moment où un événement est mis en application par le composant et la propriété liée, une fois que la propriété a été définie.
Un bean java associé à une propriété liée révèle les méthodes d'enregistrement et de désenregistrement des objets, appelés programmes d'écoute. Les développeurs peuvent définir leur propre mécanisme de notification, mais les bibliothèques Java offrent un nombre de classes de support couramment utilisées dans le package des beans java.
Imposer des contraintes
L'action d'imposer des contraintes aux propriétés est similaire aux propriétés liées ; en revanche, la notification se produit avant que la propriété ne soit réellement définie. Cela permet aux parties intéressées de rejeter les changements de propriété en activant l'option PropertyVetoException.
Evénements et notification
Les événements représentent la fonctionnalité des Java beans permettant aux composants développés indépendamment de communiquer les uns avec autres, en diffusant les informations relatives au changement d'état. Dans ce modèle, certains composants mettent en application les événements qui sont manipulés par d'autres composants, comme les programmes d'écoute d'événements.
Pour supporter ce modèle de communication, le modèle de composant des Java beans fournit :
- les propriétés pouvant mettre en application les propriétés d'événements (liées et imposées),
- les méthodes d'enregistrement, de sorte que les programmes d'écoute puissent s'enregistrer,
- les événements qui véhiculent les informations relatives au changement et
- les programmes d'écoute susceptibles de réagir par rapport à un événement.
Le diagramme de classe suivant illustre ces concepts relativement au Java bean désigné par le terme
EventSource possédant la simple propriété int.

Pendant la phase de configuration, les programmes d'écoute s'enregistrent avec les Java beans. Plus tard, un autre objet appellera la méthode intitulée setProperty qui activera le processus de notification, en créant l'objet événement. Le Java bean appellera la méthode intitulée propertychange sur l'ensemble des programmes d'écoute enregistrés.
Les programmes d'écoute d'événements recevront l'événement, liront ses valeurs et réagiront à cet événement.
Le diagramme de séquence suivant illustre l'ordre des appels :

La notification des programmes d'écoute est synchrone, relativement à l'instance du Java bean qui représente la source d'événement ; le programme d'écoute d'événement traite les événements dans un autre unité d'exécution.
Introspection
L'introspection est un mécanisme d'exécution qui permet de détecter les propriétés, d'événements et méthodes d'un Java bean. L'introspection est utilisée par les outils de développement et par les programmes n'utilisant pas les dépendances figées dans le code, relatives aux autres composants. L'introspection est réalisée par réflexion et par un ensemble de conventions de dénomination des méthodes et des
interfaces. Les fonctionnalités supplémentaires de l'introspection sont supportées par la classe BeanInfo. Les conventions de dénomination des Java beans utilisées pour l'introspection sont parfois désignées par le terme "schémas de conception" ; elles ne doivent pas être confondues avec la notion de schéma du conception du principe de conception orientée objet.
Persistance
Un Java bean peut être maintenu par un mécanisme de sérialisation. La sérialisation
peut se faire de manière automatique ou personnalisée, selon que le Java bean implémente les interfaces sérialisables
ou Externalisables. JDK 1.4 présente les classes XMLEncoder et
XMLDecoder qui prévoient le stockage des instances des Java beans dans le format XML.
Personnalisation
L'apparence et le comportement d'un Java bean peuvent être personnalisés au moment de la conception. Cela est particulièrement important pour les Java beans visuels qui sont utilisés dans les interfaces graphiques. La personnalisation s'opère par l'intermédiaire d'un éditeur de propriétés ou en utilisant des fonctions de personnalisation.
Les fonctions de personnalisation offrent une interface utilisateur personnalisée, permettant de configurer une instance du Java bean, au moment de la conception.
Contexte des beans
Le contexte des beans définit une hiérarchie des conteneurs qui permet aux Java beans d'interroger leur environnement en termes de fonctions et de services. Les mécanismes liés au contexte des beans fournissent un support pour la hiérarchie logique des conteneurs des Java beans et ils recherchent dans la hiérarchie, les services offerts par les Java beans.
Le canevas d'activation Java est une extension standard du langage Java, permettant de définir le type d'élément de données, d'englober son contenu, de découvrir ses opérations disponibles et d'instancier un composant logiciel correspondant à l'opération désirée, effectuée sur l'élément de données.
Plus d'informations
Pour plus d'informations sur les Java beans, voir la spécification relative à l'interface de programmation d'application des Java beans, Version
1.01 à l'adresse http://java.sun.com/. Suivez les liens Docs & Formation > Plate-forme Java 2, Edition standard >
documentation Java 2 SDK, SE v1.3 > Beans Java > Spécification des Java beans.
|