
Présentation de la technologie JavaBeans
2
1. Approche
Il n’est pas facile de donner une définition précise et concise d’un bean Java (ou grain – sans doute de café…). On se
contente habituellement du point de départ suivant :
Un bean Java est un composant logiciel réutilisable qui peut être manipulé visuellement dans un outil de
construction de programmes.
Les beans sont souvent des composants visuels (par exemple, tous les objets
java.awt.Component
, c’est-à-dire tous
les composants AWT et Swing, sont des beans), mais cela n’est pas une obligation ; un bean peut assurer une tâche qui
ne requiert pas une interface avec l’utilisateur, et rester donc invisible.
Ce qui est essentiel est que les beans sont destinés à être assemblés pour constituer des applications. Cela se fait
souvent à l’aide d’outils visuels de construction de programmes, mais ce n’est pas la seule manière, les beans se prêtent
également très bien à être utilisés dans des programmes écrits de manière classique.
La technologie JavaBean est entièrement incluse dans les spécifications du langage et de la plate-forme Java : d’une
part, l’écriture d’un bean ne demande aucun concept ou élément syntaxique nouveau ; d’autre part, son utilisation ne
requiert aucune bibliothèque ni extension particulière. Il n’existe pas de classe
Bean1
, les beans ne forment pas une
hiérarchie de classes, ni même une API : tout objet conforme à certaines règles peut s’appeler un bean.
Trois notions fondamentales de la technologie JavaBean :
• Règles de dénomination. Un petit nombre de règles d’écriture et de « nommage » des méthodes doivent être
respectées lorsqu’on écrit un bean. Elles permettent, aussi bien à un lecteur humain qu’à un outil de dévelop-
pement, de reconnaître et de manipuler les caractéristiques d’un bean (c.-à-d. ses propriétés – sortes de variables
« très » publiques -, méthodes et événements), sans avoir à en connaître l’implémentation.
• Réflexion. Elément important de Java, le mécanisme de la réflexion (cf. section 4.1, page 6) permet à un outil de
développement d’inspecter les objets durant l’exécution, de connaître et analyser les noms de leurs membres,
d’accéder aux valeurs des variables et d’appeler les méthodes. La réflexion permet à des beans qui se rencontrent
durant l’exécution de faire presque tout ce qui aurait été possible s’ils avaient été assemblés durant la compilation.
• Persistance. Il est possible en Java de « geler » un objet existant, avec son état courant, et de le ranger dans un
fichier en vue de le réactiver ultérieurement. Par exemple, cela permet de fixer les propriétés d’un bean durant le
développement, de sorte que son initialisation au moment de l’exécution se réduira au rechargement du bean
sérialisé. De plus, cela offre un mécanisme original pour instancier (i.e. allouer et initialiser) un bean : cloner un
bean sérialisé.
Les principaux éléments de Java que les beans mettent en œuvre sont les suivants :
• Evénements. La communication entre beans (a priori développés indépendamment les uns des autres) est assurée
par le mécanisme des événements. Une manière d’attacher deux beans A et B consiste à enregistrer B comme
« auditeur » (listener) d’événements dont A est la source ; cela établit une voie de communication de A vers B.
• Propriétés. L’état d’un bean est défini par les valeurs de propriétés. En programmation « à la main », chaque
propriété se manifeste par un couple de méthodes get<Prop> et set<Prop>. Dans un outil de développement, elles
apparaissent sur des feuilles de propriétés qui en rendent graphiques la consultation et la modification.
Définir B comme valeur d’une propriété de A est une autre manière d’attacher deux beans A et B.
• Sérialisation. Autant que possible, l’état d’un bean peut être sauvegardé (on dit sérialisé) dans un fichier,
totalement ou partiellement, en vue de sa désérialisation ultérieure.
• Archivage. Un bean se compose généralement de plusieurs classes. L’utilitaire
jar
permet de réunir celles-ci en un
unique fichier, compressé, utilisable par la machine Java grâce à un « manifeste » qui en décrit le contenu.
1
Il y a bien une classe
java.beans.Beans
(notez le pluriel), mais elle n’est pas destinée à avoir des instances. C’est
plutôt une bibliothèque, entièrement faite de membres statiques. Le rôle de cette classe, comme des autres éléments des
paquets
java.beans
et
java.beans.beancontext
, est d’aider le programmeur dans la conception et l’utilisation
des beans.