jeudi, décembre 31, 2009

Meilleurs voeux pour 2010 ... les perspectives 2010

Je profite de ce dernier billet de 2009 pour vous souhaitez mes meilleurs vœux pour l'année 2010. J'espère que cette nouvelle année sera riche en actualités autour des technologies Java et spécialement Eclipse. N'oublions pas que l'année 2010 devrait voir apparaître la nouvelle version d'Eclipse : e4.

Concernant mes résolutions pour l'année 2010, j'espère de nouveaux supports de cours et de nombreux billets techniques.

Je dresse ci-dessous ma feuille de route de mes prochains travaux.
  • Finaliser les ateliers sur la construction de plug-in avec la plateforme Eclipse
  • Workbench Editor
  • Workbench Forms (pratiquement terminé, il me reste une partie sur les Editors)
  • Introduction à Eclipse RCP
  • Introduction à EMF (indispensable pour e4)
  • Web Service (WSDL, SOAP, UDDI, JAX-WS, RESTful et BPEL)
  • Concernant mon blog, je me fixe au moins autant de billets que l'année 2009.

lundi, décembre 28, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées pendant ces vacances de noël.

Eclipse
  • Une présentation filmée d'EclipseCon 2009 qui s'intéresse à effectuer une comparaison entre RAP et GWT pour le développement Java côté Web.
  • Les soumissions à EclipseCon 2010 sont très nombreuses, pour preuve regardez ici.
  • Un article qui présente comment définir des breakpoints avec des contraintes.
  • Angelo Zerr profite des fêtes de fin d'année pour publier des billets sur la conception d'un client Eclipse RCP et serveur OSGi avec Spring (billet 12).
Java
  • Un guide qui explique comment utiliser Glassfish 3 en mode embarqué. Ainsi vous apprendrez à utiliser Glassfish comme une librairie.

samedi, décembre 26, 2009

J'ai besoin d'... installer l'outil de gestion de projets Redmine sous Windows

Redmine est un outil de gestion de projets à la Trac ou Mantis. Il fournit une interface graphique Web très agréable. Je l'utilise depuis plus d'un an pour la gestion des projets au travail et j'en suis très satisfait. Depuis peu, j'ai réalisé une installation sur un nouveau serveur et je profite de ce billet pour décrire les étapes de cette installation.

Redmine est développé en Ruby et je présente un manuel d'installation pour Windows et le SGBD PostgreSQL.

Le plan de cette installation est le suivant
  • Téléchargement
  • Pré-requis logiciels
  • Pré-installation
    • Ruby
    • RubyGems
    • Ruby modules
    • Préparation de la base de données

  • Installation
  • Utilisation Apache 2.2 comme Proxy
Téléchargement
La distribution officielle de Redmine est disponible à cette adresse (http://rubyforge.org/frs/?group_id=1850)

Pré-requis logiciels
Vous devez installer et configurer les outils suivant avant d'installer Redmine
  • Ruby (procédure d'installation est décrite dans ce billet)
  • Apache 2.2 HTTP
  • PostgreSQL 8.2
Pré-installation / Ruby
Ruby est un langage open-source dynamique qui met l'accent sur la simplicité et la productivité. Sa syntaxe élégante en facilite la lecture et l'écriture [Citation : http://www.ruby-lang.org/fr/].

Pour l'installation, la version 1.8.6 a été utilisée.
Pré-installation / RubyGems
RubyGems est l'outil de gestion de package de Ruby.
  • Télécharger le package RubyGems (http://rubyforge.org/frs/?group_id=126)
  • Extraire l'archive dans un répertoire temporaire
  • Ouvrir un invite de commande, se placer dans le répertoire créé précédemment et exécuter l'instruction suivante
ruby setup.rb
Pré-installation / Ruby Modules
Certains modules pour le langage Ruby doivent être installés (prise en compte de PostgreSQL par exemple), exécuter l'instruction suivante
gem install rails mongrel mongrel_cluster postgres-pr mongrel_service
Pré-installation / Préparation de la base de données
Les instructions suivantes concernent le SGBD PostgreSQL.
  • Créer un utilisateur Redmine
createuser redmine --no-superuser --no-createdb --no-createrole --login --pwprompt --encrypted -U postgres
  • Créer un nouveau schéma de base de données
createdb --owner=redmine --encoding=utf-8 redmine -U postgres
Installation
  • Décompresser l'archive de Redmine dans un répertoire d'installation (exemple : d:\tools\redmine)
  • Créer une copie du fichier database.yml.example en le renommant database.yml
  • Modifier le contenu du fichier database.yml file de façon à paramétrer les informations de connexion à la base de données.
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: redmine
encoding: utf8
  • Ouvrir un invite de commande Windows, se placer dans le répertoire de Redmine et suivre les instructions suivantes
  • Pour initialiser la session
rake config/initializers/session_store.rb
  • Pour utiliser la configuration de production
rake db:migrate RAILS_ENV="production"
  • Pour paramétrer la configuration de production
rake redmine:load_default_data RAILS_ENV="production"
  • A la question relative au langage, choisir l'option fr
  • Créer une copie du fichier email.yml.example en le renommant email.yml
  • Modifier le contenu du fichier email.yml file de façon à paramétrer les informations d'envoi d'emails.
production:
delivery_method: :smtp
smtp_settings:
address: "monserveur.email.fr"
port: 25
domain: "monserveur.email.fr"
authentication: :plain

development:
delivery_method: :smtp
smtp_settings:
address: "monserveur.email.fr"
port: 25
domain: "monserveur.email.fr"
authentication: :plain
  • Démarrer le serveur Ruby via la commande suivante :
mongrel_rails start --environment=production
  • Pour tester l'application Redmine, ouvrir un navigateur et saisir l'URL suivante :
http://localhost:3000
Utiliser Apache 2.2 comme Proxy
  • Créer ou mettre à jour le fichier http-proxy.conf situé dans le répertoire apache/conf
  • Saisir le contenu suivant en l'adaptant à votre configuration
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ProxyRequests Off
<proxy>
Order deny,allow
Allow from all
</proxy>

Alias /redmine "D:/tools/redmine/public"
<directory>
Options Indexes FollowSymLinks
AllowOverride none
Order allow,deny
Allow from all
</directory>

ProxyPass /redmine/images !
ProxyPass /redmine/stylesheets !
ProxyPass /redmine/javascripts !
ProxyPass /redmine/ http://127.0.0.1:4000/
ProxyPass /redmine http://127.0.0.1:4000/
ProxyPassReverse /redmine/ http://127.0.0.1:4000/
  • Ajouter à la fin du fichier httpd.conf d'Apache 2.2, l'instruction suivante
Include conf/http-proxy.conf
  • S'assurer que l'instruction suivante est dé-commentée dans le fichier httpd.conf
LoadModule alias_module modules/mod_alias.so
  • Démarrer le serveur Ruby via l'instruction suivante
mongrel_rails start --environment=production -p 4000
  • Vérifier que l'URL http://localhost/redmine fonctionne. Seule la première page s'affiche. Par ailleurs, les images ne s'affichent pas correctement.
  • Arrêter le serveur Ruby
  • Se déplacer à la racine du répertoire Redmine et exécuter la ligne de commande suivante.
ruby script/plugin install http://svn.napcsweb.com/public/reverse_proxy_fix
  • A la question de l'URL, saisir l'URL complète (exemple : http://monserveur/redmine)
  • A la question de la version de Rails, sélectionner la valeur 2.0, 2.1, 2.2
  • Pour installer Redmine comme un service Windows, exécuter l'instruction suivante à partir du répertoire Redmine
mongrel_rails service::install -N Redmine -p 4000 -e production
  • A partir du panneau d'administration de Windows, activer le démarrage automatique du service Redmine de telle sorte que l'application Redmine se lance au démarrage de Windows.

lundi, décembre 21, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
Java
  • Une présentation filmée au JUG Paris sur le sujet des Servlet 3.

dimanche, décembre 06, 2009

J'ai besoin d' ... ajouter dynamiquement des éléments à un menu Eclipse

Lars Vogel propose sur son blog un billet qui explique comment créer et afficher une commande à l'exécution d'une application Eclipse.

Sur le support de cours des commandes que je propose depuis peu, je vais un peu plus loin dans la démonstration. Je montre comment créer et afficher une commande dans un menu en ajoutant une restriction visibleWhen. Je vous propose dans ce billet une explication de cet exemple.

Une vue est utilisée pour ajouter la commande dans le menu principal. Il est ensuite possible d'afficher ou de cacher la commande du menu. Pour cela la vue fournit trois boutons (Create, Hide et Show). Vous trouverez ci-dessous des captures d'écran de l'exemple.




Au niveau des pré-requis, je suppose qu'une commande et un handler sont définis. L'identifiant de la commande est ...helloworldcommandid

Au niveau du code de l'action du bouton Create, présenté ci-dessous, il est codé que la commande doit s'afficher dans la barre de menu principal (menu:org.eclipse.ui.main.menu), que l'identifiant de la commande est ...helloworldcommandid et enfin que la restriction visibleWhen est contrainte par l'expression définie par currentExpression.
public void createParControl(Composite parent) {
...
final Button myButton = new Button(parent, SWT.NONE);
myButton.setText("Create");
myButton.setLayoutData(myData);
myButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
IMenuService service = (IMenuService)PlatformUI.getWorkbench().getService(IMenuService.class);
AbstractContributionFactory ref = new AbstractContributionFactory("menu:org.eclipse.ui.main.menu", null) {
public void createContributionItems(IServiceLocator serviceLocator, IContributionRoot additions) {
CommandContributionItemParameter commandParameter = new CommandContributionItemParameter(serviceLocator, "contributionitem",
"eclipse.workbench.commandsprogrammaticvisiblewhenexamples.helloworldcommandid" CommandContributionItem.STYLE_PUSH);
currentExpression = new Expression() {
public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
if (isVisible) {
return EvaluationResult.TRUE;
} else {
return EvaluationResult.FALSE;
}
}
};
item = new CommandContributionItem(commandParameter);
additions.addContributionItem(item, currentExpression);
}
};
service.addContributionFactory(ref);
myButton.setEnabled(false);
}
});
...
}
Dans la méthode evaluate, vous noterez que l'attribut isVisible est utilisé pour aiguiller si la commande doit être affichée ou pas. Toute la difficulté est de notifier l'expression lorsque l'attribut isVisible est modifié. Pour cela, j'ai examiné le code source de la plateforme Eclipse (merci l'Open Source) et j'ai remarqué que les expressions utilisées pour les restrictions visibleWhen étaient notifiées lorsque la Shell de la WorkbenchWindow recevait un événement Activate.

Ci-dessous est présenté le code utilisé pour mettre à jour l'expression définie par currentExpression.
private void updateExpression() {
WorkbenchWindow current = (WorkbenchWindow)PlatformUI.getWorkbench().getActiveWorkbenchWindow();
final Set<evaluationreference> menuRestrictions = current.getMenuRestrictions();
if (menuRestrictions == null) {
return;
}
IEvaluationService es = (IEvaluationService)PlatformUI.getWorkbench().getService(IEvaluationService.class);
IEvaluationContext currentState = es.getCurrentState();
EvaluationReference[] refs = (EvaluationReference[]) menuRestrictions.toArray(new EvaluationReference[menuRestrictions.size()]);
boolean changeDetected = false;
for (EvaluationReference evalRef : refs) {
final Expression expression =evalRef.getExpression();

if (expression == currentExpression) {
evalRef.setPostingChanges(true);
boolean os = evalRef.evaluate(currentState);
evalRef.clearResult();
boolean ns = evalRef.evaluate(currentState);
if (os != ns) {
changeDetected = true;
evalRef.getListener().propertyChange(new PropertyChangeEvent(evalRef, evalRef.getProperty(), valueOf(os), valueOf(ns)));
}
}
}

if (changeDetected) {
IMenuService ms = (IMenuService) PlatformUI.getWorkbench().getService(IMenuService.class);
if (ms instanceof WorkbenchMenuService) {
((WorkbenchMenuService) ms).updateManagers();
}
}
}
Si vous examinez la méthode liftRestrictions de la classe WorkbenchWindow, vous noterez que cela est très similaire. De manière à éviter de rafraichir l'intégralité des expressions des restrictions visibleWhen, j'ai placé un filtre sur l'expression définie précédemment.

Enfin, sur le code des actions des boutons hide et show, l'attribut isVisible est modifié et la méthode updateExpression est appelée. Ci-dessous est présenté le code de l'action show.
public void createPartControl(Composite parent) {
...
Button hideMenuContribution = new Button(parent, SWT.NONE);
hideMenuContribution.setText("Hide");
hideMenuContribution.setLayoutData(myData);
hideMenuContribution.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
isVisible = false;
updateExpression();
}
});
}
Les codes sources de l'exemple sont disponibles à cette adresse.

samedi, décembre 05, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Un billet de Lars Vogel qui propose une liste gratuite d'icônes pour vos applications Eclipse RCP (ou autre).
  • Le nouveau projet Gemini hébergé par la fondation Eclipse se veut être un conteneur de différentes spécifications Entreprise Java EE pour le monde OSGi (JPA, JMX, ...). Pour information, la fondation Apache se lance également dans ce créneau via le projet Apache Aries.
  • Lars Vogel propose un nouveau tutoriel sur le sujet du Drag & Drop.
  • Si vous souhaitez comprendre ce qu'est un nature dans la plateforme Eclipse, lisez ce tutoriel proposé par Lars.
  • Le projet OpenSocial Gadgets regroupe un ensemble de composants comme ceux que l'on peut trouver sur la page iGoogle (billet de l'annonce).
  • Un article qui présente les techniques de refactoring avec l'environnement de développement Java (JDT) d'Eclipse.
Java
  • Un billet qui explique comment rediriger le port 8080 de Tomcat vers le port 80 d'Apache 2
  • Java 7 se prépare voici la milestone 5. Sur cette page vous trouverez les exécutables à télécharger.
  • Simple est une bibliothèque qui permet de sérialiser et de-sérialiser en XML. L'aspect intéressant de cette bibliothèque est la définition de la structure du schema XML par annotation de classe Java (tutoriel).
  • Un article qui présente les closures qui seront disponibles dans la prochaine version de Java.
Divers
  • Pour le fun, un site qui permet de générer des nuages de mots clés.

mercredi, novembre 25, 2009

Introduction à la construction de Commandes avec la plateforme Eclipse

Un support de cours concernant la construction de commandes est disponible sur le site de Developpez.com. Il fait partie de la série des supports de cours liée au Workbench et il fait suite au support de cours relatif aux vues.

Les aspects suivants sont étudiés :
  • Avant les commandes il y avait les actions
  • Construction par déclaration et programmation des commandes
  • Elément menuContribution par déclaration
  • Raccourcis clavier
  • Restrictions (visibleWhen, enabledWhen et activeWhen)
  • Paramétrer les commandes
  • Restrictions par programmation
  • Réutilisation (Plugin Spy et activation des traces)
Le lien du support de cours et les exemples peuvent être trouvés ici.

samedi, novembre 14, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • De retour de Eclipse Summit Europe, Tom Schindl fournit les transparents de ces sessions. Les travaux présentés sont centrés sur le futur Eclipse e4.
  • Même si e4 se prépare pour une sortie en 2010, il ne faut pas oublier que Eclipse 3.6 se prépare également. Eclipse 3.6 M3 est disponible (page de nouveautés et page de téléchargement).
Java
  • Tomcat a 10 ans, un grand bravo pour un serveur d'application léger très pratique pour mes développements et la préparation de mes supports de cours.
  • Subversion devient un projet de la fondation Apache. De mon point de vue il s'agit d'une très bonne nouvelle (annonce).
  • Le projet Atmosphere permet de faire du push serveur sur n'importe quel type de serveur d'application. A noter que la fonctionnalité de faire du push serveur sera intégrée dans la prochaine version de Servlet 3.0
Divers
  • Un billet très pratique qui présente tout un tas d'expressions régulières pour faire par exemple un tri sur une adresse email correctement formée ...

vendredi, novembre 13, 2009

Google Wave, mon invitation est arrivée

Un petit billet pour vous annoncer que je viens enfin de recevoir une invitation pour Google Wave. Je vous ferai un retour très prochainement.

Cette invitation est accompagnée d'autres invitations. Les plus motivés qui me laissent un commentaire auront droit à des invitations.

mercredi, novembre 04, 2009

Introduction à FLEX : supports de cours non finalisé

Comme indiqué dans un précédent billet, j'ai abandonné les supports de cours concernant la partie FLEX. Je mets donc à disposition en libre utilisation (source powerpoint) les premières ébauches relatives à ce sujet.

J'ai dans l'espoir que des personnes motivées continuent ce travail.

Un document au format powerpoint est disponible ici. Il correspond à la partie introduction.

Bonne lecture sur les choses présentes.

vendredi, octobre 30, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Eclipse e4 1.0 Millestone 1 est sortie. La grande nouveauté est l'introduction d'un débugger JavaScript via l'utilisation de Mozilla Rhino. Page des nouveautés et page de téléchargement.
  • Un exemple de Lars Vogel qui montre comment utiliser l'API d'accès aux dépendances de plugin.
  • Angelo Zerr continue ses articles sur la création d'une application Eclipse RCP qui communique avec un serveur OSGi basé sur Spring DM. Quatre nouveaux billets sont disponibles billet 3, billet 4, billet 5 et billet 6. Merci à Angelo pour ces ressources de très bonnes qualités.
Java
  • La société Jetbrains fournit en Open Source son environnement de développement IntelliJ IDEA. J'ai testé cette version et malheureusement les choses qui m'intéressent ne sont pas incluses dans la version Open Source, il faut passer par la version payante ...

J'ai besoin de ... cacher ou afficher des commandes en fonction de la perspective courante

Actuellement je suis en train de rédiger un support de cours autour de la nouvelle API Commands et le moins que l'on puisse dire : enfin ...

Avant, pour enrichir un menu, une barre d'outils ou un menu contextuel, il fallait passer par l'API Actions. C'était assez galère et la plupart du temps tout se faisait de manière "programmatique". L'API Commands permet d'étendre les menus et les barres d'outils de manière déclarative en se focalisant principalement sur la déclaration via la construction d'extensions. Il se peut qu'il y ait encore des classes à créer mais cela s'est sensiblement réduit.

Ce billet présente un exemple d'utilisation de cette nouvelle API. L'exemple consiste à cacher des commandes selon la perspective active. Les points pédagogiques de ce billet sont
  • Réutiliser des commandes définies par la plateforme Eclipse
  • Utiliser des Command Core Expressions
  • Ajouter une commande au menu d'une application Eclipse de manière déclarative
  • Ajouter une commande au menu et à la barre d'outils d'une vue de manière déclarative
Réutilisation de commandes prédéfinis

J'utiliserai des commandes et des handlers prédéfinis par la plateforme Eclipse. Ces commandes se focalisent essentiellement sur la manipulation de perspectives. Vous trouverez ci-dessous les commandes que je souhaite employer et leurs identifiants respectifs :
  • org.eclipse.ui.window.closeAllPerspectives : ferme toutes les perspectives
  • org.eclipse.ui.window.closePerspective : ferme la perspective courante
  • org.eclipse.ui.window.nextPerspective : active la perspective suivante
  • org.eclipse.ui.window.previousPerspective : active la perspective précédente
  • org.eclipse.ui.window.savePerspective : sauvegarder la perspective courante
  • org.eclipse.ui.window.customizePerspective : modifier la perspective courante
  • org.eclipse.ui.perspectives.showPerspective : affiche une perspective
Création d'éléments menuContribution

La création d'un élément menuContribution va nous permettre d'enrichir une barre de menu, une barre d'outils, une barre de menu d'une vue, une barre d'outils d'une vue ou d'un menu contextuel.

Dans ce billet, j'ai m'attarder à enrichir une barre de menu principale et celle d'une vue puis une barre d'outils d'une vue.

Il faut créer une extension basée sur le point d'extension org.eclipse.ui.menus comme indiqué sur la figure ci-dessous.


Ajoutez ensuite un élément menuContribution et créez un sous élément de type menu. Puis, au niveau de l'élément menuContribution modifiez l'attribut locationURI avec la valeur menu:org.eclipse.ui.main.menu, ceci permettra d'enrichir le menu principal de l'application Eclipse.


Au niveau de l'attribut de l'élément menu, modifiez l'attribut label qui est le nom du menu affiché dans la barre de menu principal par la valeur Perspective Commands.


J'ajoute ensuite à l'élément menu plusieurs sous éléments de type command. De cette façon, je regroupe dans le menu Perspective Commands cinq commandes prédéfinies par la plateforme Eclipse. Pour chaque élément command, je modifie l'attribut commandId qui désigne l'identifiant de la commande. Pour éviter toutes erreurs, j'utilise le bouton Browse et je recherche l'identifiant de la commande qui m'intéresse. Sur la capture d'écran ci-dessous, je présente l'élément command (sous élément de menu) associé à la commande org.eclipse.ui.window.closeAllPerspectives.


Concernant l'enrichissement de la barre d'outils d'une vue le procédé reste le même. Ajoutez un élément menuContribution puis un sous élément command. Dans l'attribut locationURI indiquez cette fois toolbar:eclipse.workbench.commandsperspectiveexample.commandsviewsampleid dont le suffixe désigne l'identifiant de la vue cible.


Pour l'élément command, je renseigne l'attribut commandId par la valeur org.eclipse.ui.window.customizePerspective qui permet d'appeler la commande en charge de modifier le contenu d'une perspective.

Finalement pour l'enrichissement de la barre de menu de la vue, procédez de la même façon. Par contre la valeur de l'attribut locationURI est menu:eclipse.workbench.commandsperspectiveexample.commandsviewsampleid et la valeur de l'attribut commandId est org.eclipse.ui.perspectives.showPerspective.

Avant de continuer, testons le résultat attendu. Vous devriez obtenir ceci :


Création d'une restriction visibleWhen

Attardons-nous maintenant à ajouter une restriction de type visibleWhen sur un élément du menu que nous avons créé (notamment nous désirons cacher l'élément Fermer toutes les perspectives).

La restriction visibleWhen appliquée à un élément menuContribution consiste à cacher un élément graphique (élément de menu ou de barre d'outils) lorsque l'expression associée à la restriction est évaluée comme fausse.

L'expression que nous allons exprimer consiste à afficher la-dite commande si la perspective active est égale à MyEmptyPerspective. Cette dernière est une perspective que nous allons créer.

Pour commencer, sélectionnez la commande Fermer toutes les perspectives.


Ajoutez un sous élément visibleWhen


Ajoutez un sous élément with et précisez dans l'attribut variable la valeur activeWorkbenchWindow.activePerspective. Ceci permet de récupérer le contenu de cette variable.


Enfin ajoutez un sous élément equals et précisez dans l'attribut value la valeur MyEmptyPerspective.


Lors du test, la commande Fermer toutes les perspectives localisée dans le menu PerspectiveCommands ne doit pas être affichée. Par contre, si vous créez une nouvelle perspective (en utilisant la commande Save Perspective As ...) et en l'appelant MyEmptyPerspective puis en l'activant cette commande devrait être disponible.

Le mot de la fin ...

L'API Commands facilite l'enrichissement de la barre de menu, barre d'outils, etc. Dans un prochain billet, je vous montrerai comment utiliser et créer un Property Tester.

Le code source de cet exemple est disponible ici.

lundi, octobre 12, 2009

Atelier Construction Plug-in avec la plateforme Eclipse sur Developpez.com

Les leçons tirées de l'atelier Construction Plug-in avec la plateforme Eclipse sont disponibles sous le format Developpez.com.

Pour l'instant, la première et la deuxième leçons sont uniquement disponibles. Les autres viendront quand j'aurai effectué le passage dans le format.

Leçon 1 : Construction d'un Plug-in
Leçon 2 : Perspectives

mercredi, octobre 07, 2009

Atelier Construction Plug-in avec la plateforme Eclipse : leçon 2 / Perspectives

Je continue la diffusion des supports concernant l'atelier Construction Plug-in avec la plateforme Eclipse (précédent billet).

Vous trouverez donc dans ce billet, les supports de la leçon 2.
Les autres leçons devraient être disponibles très prochainement.

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Angelo Zerr se lance dans une nouvelle série de billets consacrée à la création d'une application Eclipse RCP qui communique avec un serveur OSGi basé sur Spring DM. L'idée derrière le développement de cette application est de monter en compétence sur les technologies utilisées. A ce jour, deux billets sont disponibles : billet 1 et billet 2.
  • Eclipse 3.6 Helios M2 est sortie (page de téléchargement et page présentant les nouveautés).
  • Une nouvelle version pour Galileo est disponible 3.5.1. Elle apporte son lot de correctifs.
Java
  • Un projet Open Source a pour ambition de traduire l'intégralité du livre Maven: The Definitive Guide fournit par Sonatype. Vous pouvez participer à la traduction via le site du projet (source Xebia).
  • Deux tutoriels fournis par IBM consacrés à la construction de Web Services en limitant l'utilisation de Wizards, cela a comme avantage de pouvoir comprendre les étapes nécessaires au développement d'un Web Service (tutoriel 1 et tutoriel 2).

dimanche, septembre 27, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Le site de la fondation Eclipse dispose d'un nouveau forum qui regroupe toutes les discutions de l'ancien système.
  • Lars Vogel a proposé un bug pour enfin modifier les templates de construction des exemples RCP qui utilisent encore les Actions pour remplacer par les Commands. Effet boule de neige, le template de l'exemple du client de messagerie va également subir une mise à jour (bug).
  • Un billet de Lars Vogel qui explique en quelque lignes comment utiliser le projet Orbit. Ce projet consiste à fournir pour chaque bibliothèque externe (par exemple Log4J) une encaspulation dans un plug-in Eclipse. Les versions des bibliothèques est alors gérées par les branches du plug-in "enveloppe". A noter que ce principe est utilisé dans l'univers OSGi où SpringSource fournit un repository de Bundle.
Java
  • Google propose un nouveau langage "Noop" pour la plateforme Java dans le sens où il s'exécutera dans la JVM (Source Didier Girard qui propose un extrait de l'opinion de Alexis Moussine-Pouchkine à propos de ce nouveau langage).

vendredi, septembre 25, 2009

Atelier Construction Plug-in avec la plateforme Eclipse : leçon 1 / Construction d'un plug-in

L'atelier Construction Plug-in avec la plateforme Eclipse s'est correctement déroulé lors de la session atelier organisée par le JUG Poitou-Charentes. Toutes les leçons que j'avais prévu n'ont pas pu être réalisées par manque de temps. Je mets à disposition les documents utilisés pendant cet événement pour les personnes qui n'ont pu assister à l'atelier.

Vous trouverez dans ce billet, la présentation utilisée pour l'introduction à l'atelier et la première leçon.
Les autres leçons devraient être disponibles très prochainement.

samedi, septembre 19, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Eclipse 3.6 M2, nom de code Helios, est disponible (page de téléchargement et page qui liste l'ensemble des nouveautés).
  • Un article qui donne des définitions sur les concepts de la plateforme Eclipse : Display, Shell, Window, Dialog, ApplicationWindow, ...
  • Un article qui décrit comment gérer efficacement les paramètres d'une configuration d'exécution d'une application Eclipse RCP.
  • Un article, même auteur que précédemment, qui présente comment créer une configuration d'exécution pour une application Eclipse RCP.
  • Un article qui présente des astuces pour facilement naviguer dans le code Java de Galileo.

mardi, septembre 15, 2009

Atelier Construction Plug-in avec la plateforme Eclipse

Ce vendredi 18 septembre lors de la journée Atelier / Conférence du JUG Poitou-Charentes, j'animerai un atelier sur le thème de la Construction de Plug-in avec la plateforme Eclipse.

Il s'agit d'un atelier d'initiation, d'une durée d'environ deux heures, sur la manière de concevoir un plug-in Eclipse : découverte des outils proposés par l'environnement Eclipse, respect des bonnes pratiques de développement, choix des APIs à exploiter et celles qu'il faut oublier, ...

Au niveau des pré-requis, je demande juste un niveau correct en Java. Un niveau expert n'est pas requis puisque cet atelier se focalise principalement sur le développement déclaratif via l'outil PDE (Plugin Development Environment). Par conséquent, l'utilisation du langage Java sera limitée.

L'organisation sera la suivante :
  • Présentation rapide de l'univers Eclipse ~ 10 minutes
  • Présentation très rapide de l'application Eclipse utilisée comme support ~ 5 minutes
  • Leçon 1 : Construction d'un plug-in ~ 30 minutes
  • Leçon 2 : Perspectives ~ 20 minutes
  • Leçon 3 : Interaction entre plug-ins / vues ~ 25 minutes
  • Leçon 4 : Commandes ~ 30 minutes
Pour chaque leçon, un sujet et une solution. La version d'Eclipse utilisée sera Galileo.

N'hésitez pas à vous inscrire sur le site : Ateliers de développement et Conférences Java et peut être à vendredi.

mardi, septembre 08, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Une introduction au projet RIENA du point de vue interface utilisateur.
  • Un billet qui présente e4 sur la plateforme Eclipse RAP.
  • Un article qui décrit comment concevoir judicieusement un cache.
  • Lars Vogel décrit dans cet article comment manipuler l'arbre d'une interface graphique d'une application e4. Tout cela est rendu possible au travers de EMF.

vendredi, août 21, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
Divers
  • Un article très intéressant qui propose 10 conseils pour écrire en anglais sur son blog. Peut-être qu'un jour, il faudra que j'y passe ...
  • Un article qui présente les grandes lignes du langage Scala qui pourrait être l'avenir de Java.

jeudi, août 20, 2009

Supports de cours en chiffres ...

Juste pour la pause "fun", je me suis amusé à effectuer quelques relevés quantitatifs sur les supports de cours que j'ai diffusé depuis fin 2006.

Voici les résultats ...
  • Nombre de supports de cours : 22
  • Nombre total de transparents : 1786
  • Nombre total de transparents pour la partie Java EE : 554
  • Nombre total de transparents pour la partie Java SE : 424
  • Nombre total de transparents pour la partie Divers : 99
  • Nombre total de transparents pour la partie Eclipse : 709

Introduction à la construction de vues avec la plateforme Eclipse

Un support de cours concernant la construction de vues est disponible sur le site de Developpez.com. Il fait parti de la série des supports de cours liée au Workbench et il fait suite au support de cours relatif aux perspectives.

Les aspects suivants sont étudiés :
  • Construction déclarative de vues ;
  • Études des classes ViewPart, StickyView et Category ;
  • Vues multiples ;
  • Registre des vues ;
  • Cycle de vie ;
  • Communication entre vues (en direct, le service de sélection et via IAdaptable).
Le lien du support de cours et les exemples peuvent être trouvés ici.

samedi, août 08, 2009

Eclipse 3.6 M1 est disponible

La version Eclipse 3.5 Galileo est sortie au mois de juin dernier, la nouvelle version Eclipse 3.6 est déjà en préparation et elle s'appellera Helios. Une page wiki a été créée (pour l'instant peu d'information).

A cet instant la version Eclipse 3.6 M1 est disponible. Vous trouverez ici la page de téléchargement et ici la page qui liste les nouveautés introduites.

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Le site Pushing Pixels présente une manière élégante pour fermer avec style des fenêtres Swing et SWT.
  • Toujours proposée par le site Pushing Pixels, une présentation du projet Granite project dont le but est de fournir de jolies animations pour SWT.
  • Un excellent tutoriel qui décrit la manière de faire des appels distants de services OSGi. Ceci est obtenu via la spécification OSGi 4.2 et l'implémentation de RFC 419 via l'implémentation Eclipse Communication Framework (ECF).
  • En fouillant un peu sur le site communautaire Eclipse.org, j'ai trouvé une vieille présentation autour d'Eclipse. Vous trouverez des éléments sur les origines d'Eclipse et de nombreuses définitions.
  • Un white paper qui présente en détail le nouveau Eclipse : e4.
Divers
  • JUnit 4.7 ajoute une nouvelle fonctionnalité les Rules.

dimanche, août 02, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Un article qui décrit une solution pour transmettre des informations entre plug-ins. L'auteur s'intéresse à montrer comment réaliser une communication synchrone et asynchrone.
  • Un article pour comprendre "Pourquoi redémarrer Eclipse alors qu'il est basé sur un système de chargement à chaud de nouveaux plug-ins".
  • Une astuce de Benjamin Cabé pour ajouter dans l'aide d'Eclipse le forum de la fondation Eclipse.

dimanche, juillet 19, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Eclipse e4 M5 est disponible (page de téléchargement)
  • Lars vogel propose un excellent billet sur le sujet des Activities. Pour information, les Activities permettent d'afficher ou masquer des éléments graphiques d'une application Eclipse. A noter que les Activities seront discuttées prochainement dans un nouveau support de cours lié à la customisation d'une application Eclipse.
  • Un billet qui présente comment créer un popup de notification semblable à ce qui est utilisé dans les clients de messagerie pour avertir qu'il y a de nouveaux messages.
  • Une page du Wiki du site d'Eclipse qui énumère les outils de tests pour la plateforme Eclipse.
Java
  • Les membres du JUG Poitou-Charentes ont mis à disposition les vidéos des différentes sessions passées, de nombreuses ressources très riches.
  • Le site lescastcodeurs regroupe des podcasts Java animés par des acteurs français.

mardi, juillet 14, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Un article qui décrit comment réussir son internationalisation pour son application Eclipse RCP.
  • Dix astuces pour installer et configurer Eclipse Galileo.
  • Lars Vogel est un contributeur d'articles autour des technologies Eclipse. Il propose de nombreux supports de cours, d'articles et de billets sur son blog. Notamment, une série de billets pour améliorer son quotidien avec Eclipse Galileo.
  • Tom Schindl est un contributeur de la fondation Eclipse. C'est actuellement un des acteurs pour la nouvelle version d'Eclipse : e4. Dans cette présentation, il présente les évolutions majeures d'e4 en faisant un parallèle avec l'actuelle version d'Eclipse. Cela est très bien présenté. Juste pour me rappeler également qu'il faut que je termine au plus vite la partie Workbench.
  • Un bon billet qui présente une introduction à EMF.
Java
  • Un article qui décrit les bonnes pratiques pour développer avec JNI. Cela faisait bien longtemps que je n'avais pas lu d'article sur le sujet.

vendredi, juillet 10, 2009

Introduction à la construction de perspectives avec la plateforme Eclipse

Un support de cours concernant la construction de perspectives est disponible sur le site de Developpez.com. Il fait partie de la série des supports de cours liée au Workbench. D'autres supports de cours devraient arriver prochainement.

Au menu de ce nouveau support de cours :
  • Construction déclarative de perspectives;
  • Ajout de vues (view, fastview, standaloneview, placeholder, createfolder, placeholderfolder)
  • Paramétrage d'une perspective
  • Extension une perspective existante via Perspective Extensions
  • Registre des perspectives
  • Abonnement sur les changements d'une perspective
  • Principales opérations du Workbench liées aux perspectives
Le lien du support de cours et les exemples peuvent être trouvés ici.

mercredi, juillet 08, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • SWTLayeredGraph est une API pour SWT qui facilite la construction de graphe.
  • Les membres d'EclipseSource viennent de soumettre un nouveau projet concernant Eclipse RAP : RAP Incubator. L'idée est de proposer un ensemble de composants supplémentaires pour le projet Eclipse RAP (GCCanvas pour dessiner, de nouveaux thèmes graphiques et des supports pour les composants de visualisation de Google).
Java

vendredi, juin 26, 2009

J'ai besoin d'... installer le client SVN Subversive sous Eclipse Galileo

Dans la série des J'ai besoin de ... je m'intéresse aujourd'hui à l'installation du client SVN (Subversive) sous Eclipse Galileo. A la sortie d'Eclipse Ganymede, un billet sur Developpez.com détaillait la procédure d'installation de Subversive sous cette version. La procédure présentée ici reste assez similaire.

Pré-requis : installer une version Eclipse Galileo (page de téléchargement). Je suis parti d'une distribution pour le développement de plugins Eclipse. Il s'agit d'une version anglaise.
  • Démarrer Eclipse Galileo
  • Ouvrir l'outil de mise à jour. Help -> Install New Software ... Vous êtes dans l'outil de mise à jour (voir capture d'écran ci-dessous)
  • Choisir l'update site officiel Galileo (Galileo - http://download.eclipse.org/releases/galileo) comme indiqué ci-dessous.

  • Dans la zone de recherche, saisir le mot clé SVN, ceci a pour effet de filtrer les éléments proposés par l'update site. Les éléments SVN de la catégorie Collaboration sont disponibles. Sélectionner Subversive SVN Team Provider (Incubation) comme indiqué ci-dessous.

  • Il reste à installer le connecteur SVN fourni par la société Polarion. Ouvrir de nouveau l'outil de mise à jour (Help -> Install New Software ...) puis ajouter (via le bouton add) l'adresse suivante : Polarion - http://community.polarion.com/projects/subversive/download/eclipse/2.0/galileo-site/. Ceci a pour effet de lister les éléments qui peuvent être installés.
  • Choisir les éléments suivants : Subversive SVN Connectors et SVNKit 1.2.2 Implementation (Optional) comme indiqué sur la figure ci-dessous.

  • A noter que la version du SVNKit vous permet de choisir la version de SVN. SVNKit 1.2.2 correspond à SVN 1.5.x et SVNKit 1.3.0 correspond à SVN 1.6.x.
  • Une fois les éléments installés, redémarrer votre Eclipse.
  • Après le redémarrage, ouvrir l'outil de préférence de SVN (Window -> Preferences -> Team -> SVN). Dans l'onglet SVN Connector, choisir dans la liste SVN Connector la valeur SVNKit 1.2.2 comme montré sur la figure ci-dessous.


Normalement le client SVN Subversive pour Eclipse doit être correctement installé. Récupérerz un ancien Workspace avec des projets connectés avec SVN et tout fonctionnera comme avant.

jeudi, juin 25, 2009

Support de cours Workbench : découpage en plusieurs fichiers

Depuis quelques temps je vous annonce que je suis en train de préparer un support de cours sur le thème du Workbench. Il y a tellement de choses à découvrir et vous faire partager que je suis dans l'obligation de créer autant de fichiers qu'il y a de thèmes abordés, et cela dans le but de rendre plus accessible ces futurs supports de cours. Par ailleurs, je reçois de nombreux emails me demandant de fournir des supports moins gros et plus souvent.

Par conséquent la date de sortie est avancée et c'est le thème des perspectives qui sortira en premier.

N'est-ce pas une bonne idée pour les vacances qui arrivent que d'apprendre à construire de belles perspectives Eclipse ;-)

JUG Poitou-Charentes : soirée Java EE 6

Le 1 juillet à Niort aura lieu une soirée Java EE 6 organisée par le JUG Poitou-Charentes. Les invités de cette soirée seront Antonio Goncalves et Alexis Moussine-Pouchkine. Antonio nous présentera les nouveautés Java EE 6 et Alexis nous fera une démonstration de GlassFish 3, à noter également la présence de certains membres du JUG Tours.

Une très bonne soirée s'annonce donc. Je prépare déjà ma liste de questions sur les aspects embarqués de Glashfish.

Encore merci à l'équipe du JUG Poitou-Charentes pour toutes ces soirées très riches en veille technologique.

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • SWTChart est une bibliothèque pour la boîte à outils SWT permettant de gérer des graphiques. Un peu à la manière de JFreeChart.
  • Eclipse 3.5 Galileo est sorti (page de téléchargement). Pour avoir un résumé des nouveautés, visitez cette page. Concernant les nouveautés pour les WebTools, visitez cette page. Pour habiller votre système d'exploitation et fêter comme il se doit la sortie de Galileo, des fonds d'écran sont disponibles sur cette page.
  • Sur l'excellent site EclipseSource, Ian Bull présente les 10 meilleurs avancées pour Galileo.


Interaction avec le Java et SWTBrowser

jeudi, juin 11, 2009

Extrait du support de cours Workbench (suite)

Le résultat du sondage a donné gagnante la partie Communication entre vues. Par conséquent vous trouverez sur le lien suivant, cette partie. Au menu de cet extrait de support de cours, vous trouverez différents exemples pour communiquer entre des vues. En détail voici les points abordés :
  • Communication directe entre des ViewParts
  • Communication à partir des écouteurs de vues
  • Service de sélection
  • Patron Adaptateur via IAdapatable
La version fournie ne sera pas la version finale. Il faut s'attendre à des modifications. Par ailleurs, je fournirai les exemples à la sortie du support de cours complet.

J'espère que cette partie vous aidera dans vos développements et n'hésitez pas à poster des commentaires pour améliorer ce document encore en travaux.

jeudi, juin 04, 2009

Extrait du support de cours Workbench

Comme vous le savez (billet Support de cours en préparation) , je suis en train de préparer un nouveau support de cours concernant le Workbench. Cette partie d'Eclipse est très riche et je prends un réel plaisir à découvrir des APIs qui sont faites pour aider le développement d'applications autour d'Eclipse.

Toutefois, comme je suis curieux et assez pointu, je prends mon temps. Conclusion, j'ai dépassé les délais ...

Je vous propose par le biais de ce billet un sondage qui vous permettra de choisir un extrait de ce support de cours que vous souhaitez avoir immédiatement. Ce sondage est valable jusqu'au 10 juin au soir (environ une semaine). Suite au résultat, je mettrai à disposition la partie qui aura obtenu le plus grand nombre de voix.

Les parties proposées sont les suivantes :
  • Perspectives Part 1 (construction d'une extension Perspective, addView, addFastView, addStandaloneView, addPlaceHolder, createFolder, createPlaceholderFolder)
  • Perspectives Part 2 (raccourcis, paramétrages, Perspective Extensions, registre des perspectives, écouteurs)
  • Vues (construction d'une extension View, ViewPart, IViewSite, StickyView, Category, vues multiples, registres des vues, cycle de vie)
  • Communication entre vues (communication directe entre des ViewParts, communication à partir des écouteurs de vues, service de sélection, patron Adaptateur via IAdaptable)
  • Eclipse Forms (FormToolkit, Form et ScrolledForm, agents de placement, ExpandableComposite, Section, PageBook, FormText, MasterDetailsBlock, Multi-page FormEditor)

dimanche, mai 31, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Mise à jour : Angelo Zerr propose de nouveaux billets concernant sa série Conception d'un Editeur Eclipse de Workflow XML (billet 1, billet 2, billet 3, billet 4 et billet 5).
  • Les sources du projet Ribbon avaient été donnés à la fondation Eclipse, mais pas sur que cela soit intégré au projet Nebula à cause de clauses Microsoft.
  • Une discussion en cours pour changer le nom d'Eclipse RCP pour les prochaines versions d'Eclipse.

lundi, mai 25, 2009

J'ai besoin de ... connecter plusieurs Viewers d'une même vue au service de sélection

Dans la série des J'ai besoin de ... je m'intéresse dans ce billet à la manière de connecter plusieurs SelectionProvider d'une même vue au service de sélection. Les SelectionProvider désignent tous les objets de type Viewer (TableViewer, TreeViewer, ListViewer, ...).

La connexion au service du sélection est obtenue par l'intermédiaire du site de la vue (le site peut être vue comme un pont entre la vue et le Workbench). Le code suivant se trouve généralement dans la méthode createPartControl de la ViewPart de la vue :
getSite().setSelectionProvider(tableViewer)
Comme vous pouvez le constater, la méthode qui consiste à "connecter" le composant TableViewer ne permet pas d'ajouter plusieurs composants de type SelectionProvider. Par ailleurs, la plateforme Eclipse n'autorise pas la modification dynamique du SelectionProvider d'une vue au service de sélection. Je me suis trouvé dans le cas où j'avais plusieurs composants TableViewer dans une même vue : cette vue contient deux composants de type TableViewer.

Une solution est proposée dans cet article qui décrit l'utilisation du service de sélection. L'auteur propose notamment d'utiliser la classe SelectionProviderIntermediate pour gérer plusieurs composants de type SelectionProvider dans une même vue. Cet objet est connecté au service de sélection puisqu'il est de type SelectionProvider. En fait, cette classe joue le rôle de classe de délégation. Associé à un viewer, l'objet SelectionProviderIntermediate délègue les modifications de sélection du viewer au service de sélection. L'intérêt est de fixer l'objet de type SelectionProviderIntermediate et de lui associer dynamiquement les composants SelectionProvider (ici des composants de type TableViewer).

Dans la suite, je vous montre comment utiliser cette classe à partir de deux composants TableViewer. Tout ce qui va être présenté se trouve dans la méthode createPartControl.

Ci-dessous, le code utilisé pour ajouter les deux composants TableViewer à la vue :
public void createPartControl(Composite parent) {
viewer1 = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
viewer1.setContentProvider(new ViewContentProvider());
viewer1.setLabelProvider(new ViewLabelProvider());
viewer1.setInput(getViewSite());
viewer2 = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
viewer2.setContentProvider(new ViewContentProvider());
viewer2.setLabelProvider(new ViewLabelProvider());
viewer2.setInput(getViewSite());
Ci-dessous, le code utilisé pour instancier le SelectionProvider qui délègue les modifications de sélection d'un viewer au service de sélection.
 final SelectionProviderIntermediate selectionProviderIntermediate = new SelectionProviderIntermediate();
this.getSite().setSelectionProvider(selectionProviderIntermediate);
Enfin, la notification du changement de la sélection locale de chaque composant TableViewer est utilisée pour modifier le SelectionProvider actif dans l'objet SelectionProviderIntermediate.
 viewer1.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
selectionProviderIntermediate.setSelectionProviderDelegate(viewer1);
}
});
viewer1.addPostSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
selectionProviderIntermediate.setSelectionProviderDelegate(viewer1);
}
});

viewer2.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
selectionProviderIntermediate.setSelectionProviderDelegate(viewer2);
}
});
viewer2.addPostSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
selectionProviderIntermediate.setSelectionProviderDelegate(viewer2);
}
});
}
Vous pouvez télécharger le code source de cet exemple ici. Cet exemple fait parti du cours sur le Workbench Eclipse que je suis en train de préparer.

dimanche, mai 24, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Un billet qui présente comment customiser les fenêtres sous Vista avec des composants SWT.
  • Eclipse 3.5 RC1 est sortie, page de téléchargement.
Java
  • Un App Store pour les applications Java est en train de se préparer (billet de Jonathan Schwartz). En attendant l'annonce officielle lors de Java One 2009.
Divers
  • Du côté Flex, il y aurait du changement pour la prochaine version. L'outil de développement s'appelerait Flash Builder au lien de Flex Builder.

samedi, mai 16, 2009

Bilan soirée RIA / RDA du JUG Poitou Charentes

Comme indiqué sur ce billet, j'étais présent à la soirée RIA / RDA (Rich Internet Application et Rich Desktop Application) organisée pour le JUG Poitou-Charentes. Pour cette session, le JUG s'était déplacé dans la ville de Niort.

Trois présentations d'une durée moyenne de quarante minutes ont été données autour de trois technologies : GWT (Google Web Toolkit), Flex et Eclipse RCP. Les orateurs (Antony Quinault, Jérome Creignou et Alexandre Borgoltz) sont du métier : du chef de projet à l'architecte technique. Ils travaillent principalement pour de grandes mutuelles niortaises. Le contexte est clair, ces présentations sont dispensées par des personnes ayant de forts retours d'expériences et surtout ce sont des technologies employées et déjà utilisées en production. Au niveau de la structure de ces présentations, elles ont pratiquement suivi la même trame : le contexte de l'entreprise, la justification du choix de cette technologie par rapport à d'autres (des comparatifs précis ont été donnés), une présentation rapide de la technologie et un retour d'expérience.

Suite à ces présentations et aux questions que j'ai pu être amené à poser, je constate que, du moins pour GWT et Flex, ces technologies sont très puissantes mais malheureusement je regrette qu'il n'y ait pas assez d'outillage pour le développement de la couche graphique. Où sont ces environnements de construction d'IHMs (ces fameux GUI-Builders) qui facilitent grandement les développements des interfaces? C'est un fait dans le monde Java, l'habitude est de construire les interfaces graphiques de manière programmatique et ce besoin d'outils n'est pas une priorité. Pour nuancer, il y a tout de même des outils comme Netbeans avec le GUI-Builder Matisse, FlexBuilder pour le développement d'IHMs autour de Flex ou WindowBuilder pour le développement d'IHMs autour de GWT ou des technologies de la plateforme Eclipse (SWT, JFace, Eclipse Form, ...). Toutefois, soit ce sont des outils incomplets soit ils sont payants. Mais bon, face à un Microsoft Visual Studio .NET qui décrit les interfaces en XAML permettant ainsi de couvrir toutes sortes de technologies différentes, les outils cités précédemment ne font pas le poids. Certes ces outils ne sont pas indispensables mais si on souhaite que ces technologies dédiées aux interfaces homme-machine puissent s'imposer (facilité d'utilisation et gain de productivité) il faut pouvoir fournir aux développeurs qui le souhaitent ce type d'outils.

L'avenir est peut être à la modélisation de haut niveau des interfaces, comme l'a précisé Antony Quinault lors de la session GWT. Dans ce sens, je peux citer le framework eFace de la société Soyatec. eFace permet aux développeurs de décrire ces interfaces homme-machine en XAML. Le framework s'occupe alors de générer en SWT, Swing ou autre. Un des avantages pourrait être alors d'utiliser le GUI Builder de Visual Studio pour décrire les IHMs. A noter également que des membres de Soyatec sont contributeurs de la nouvelle version d'Eclipse e4 en cours de développement. Je vous laisse donc imaginer la suite ...

Pour revenir à la soirée du JUG Poitou Charentes, la société SERLI sponsor de l'événement et SUN France ont généreusement offert des présents et tout s'est terminé autour du buffet où de nombreux échanges d'expériences ont pu être réalisés.