Improve Foudations Improve Technologies Improve Community Improve Institute

Un framework pour la description d’applications RCP en XML

Il s’agit de pouvoir décrire l’essentiel d’une application RCP en XML et de coder les cas particuliers en utilisant l’API RCP classique (SWT). A terme, j’imagine la plateforme RCP avec un plugin capable d’interpréter du flux XML reçu d’un serveur d’application. A ce moment là, on fera du vrai client riche.


Cela revient à créer l’équivalent de Struts-Layout pour Eclipse RCP afin de simplifier et d’augmenter la productivité du développement.

Démarche

  1. étude des besoins ergonomiques (de quoi sont constituées les applis de gestion du point de vue IHM)
  2. étude des solutions existantes (voir comment on répond à ces besoins en Swing, SWT, HTML, Struts-Layout, XUL, XAML...)
  3. définition du langage de description d’IHM “idéal” (en s’inspirant du résultat des 2 activités précédentes et en visant la productivité des développements)
  4. implémentation de ce langage avec SWT (pour créer des applis RCP)

Le choix d'XML

Je suis toujours méfiant par rapport à l’utilisation d’XML pour développer mais je suis en même temps convaincu que c’est la façon la plus productive pour décrire des IHM.

Aujourd’hui, il existe des moyens de faire du SWT en XML (ex : XSWT) mais ces solutions ne s’affranchissent pas des caractéristiques et des contraintes de SWT. Je souhaiterais qu’on prenne le problème dans l’autre sens, en repartant des besoins pour aboutir à un langage “hautement productif” et accessible à des développeurs fonctionnels.

Une attention particulière doit être apportée à la simplicité. Le code XML doit être facilement compréhensible et rester proche d’une description de l’écran. Pour illustrer cette idée, voici le genre de code que j’imagine pour la description d’une application :

<window>
	<perspective id="perspective1" name="...">
		<view position="left">
			<table model="MyTableModel">
				<column title="..." width="100"/>
				<column title="..." width="30"/>
			</table>
		</view>
		<view position="center">
			<form title="..." model="MyBean" controller="MyControler">
				<column>
					<field property="..."/>
					<field property="..." onValueChanged="javaMethod"/>
				</column>
				<column>
					...
				</column>
				<buttonZone position="bottom">
					<button action="cancel" title="..."/>
					<button action="save" title="..."/>
				</buttonZone>
			</form>
		</view>
	</perspective>
</window>

Pour l’instant, ce n’est évidemment qu’une vue de l’esprit...


Discussion

Jean-François Paquerot Jean-François Paquerot, 2006/01/18 15:47:

Ce que tu décris me fait penser au travail que fait l’équipe Swing chez Sun actuellement autour de SwingML, SwixML, JDNCML, JDIC.

Une approche consistant à utiliser une sémantique XML proche voire identique et implémenté ensuite soit pour Swing soit pour Eclipse RCP.


Frédéric ESNAULT Frédéric ESNAULT, 2006/01/18 18:59:

Oui, ces 2 projets rejoignent bien l’idée. C’est vrai que dans l’idéal, si le langage de description est bien pensé, il devrait pouvoir être décliné en Swing, SWT ou autres. C’est ce que je reproche justement à XSWT : ce n’est qu’une traduction “mot à mot” du code Java en XML alors qu’on a besoin de plus de recul pour gagner en productivité et en indépendance vis-à-vis d’une solution technique.


Sébastien Letélié Sébastien Letélié, 2006/02/12 11:07:

Je regarde depuis un moment les technologies qui cherchent à décrire une UI en XML. Aujourd’hui aucun langage ne ressort et aucun fait l’objet de standardisation (sauf peut être XMLForms). En 2004 XUL à lancé un défi où l’on retrouve toutes les technos existantes (sauf XSWT). UIML reste le langage phare du monde universitaire, XAML va s’imposer dans le monde Microsoft, coté Java le choix est difficile et tout dépend de la plate-forme (Eclipse, Swing, Mozilla). Cependant rien ne nous empêche de travailler sur des XSLT capables de passer d’un langage à l’autre. Je travaille actuellement sur XSWT car il à l’avantage de se concentrer uniquement sur les composants, les évènements et le binding sont traités à part. Ce qui est sur c’est qu’un des éléments fondamentaux du client riche est la description de son UI en XML. Le principe du web à ammené cette approche et elle est trés pratique en terme de séparation entre le modèle et la vue, et aussi en terme de maintenance. A suicre donc...


 
moni/idees/frameworkxml.txt · Last modified: 2006/01/13 17:22 by fesnault