dimanche, avril 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 exemple de code qui montre comment fournir un outil de changement de perspectives pour vos applications Eclipse RCP.
  • Un article sur comment utiliser le projet RIENA (rien à voir avec la chanteuse). Voir précédent billet.
  • Second millestone pour e4, voir ici pour les nouveautés et ici pour le téléchargement.
  • Un support de cours sur le sujet les WebTools pour mettre en œuvre les standards du W3C (source EclipseTotale).
  • Une nouvelle version du composant graphique Nebula Gallery.

vendredi, mars 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
  • EclipseCon 2009 est maintenant terminé. Je prépare un billet pour regrouper les ressources des différentes sessions. J'en profite également pour féliciter Benjamin Cabé qui a été élus TOP Contributors.
  • Amazon fournit une suite logicielle sous Eclipse, appelée AWS pour développer, déployer et débugguer des applications Java qui utilisent les Web Services Amazon.
Divers

samedi, mars 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
  • Eclipse 3.5 M6 est sortie (page pour son téléchargement et page pour examiner la liste des nouveautés). Un mini résumé des importantes modifications peut être trouvé ici.
  • Angelo Zerr continue sa lancée (billet 1, billet 2, billet 3 et billet 4) et s'ouvre à l'international en proposant maintenant des billets sur le wiki de la fondation d'Eclipse (SSE et Rhino [avec la participation de Jawher Moussa un des responsables de la rubrique Eclipse chez Developpez.com]).
  • Un moteur de recherche (en incubation) dédié à la base Bugzilla d'Eclipse.
  • Un exemple de code source mettant en oeuvre une barre de progression pour chaque vue d'une application Eclipse RCP. L'auteur a simulé un glasspane à la Swing pour son exemple. L'idée est assez similaire à ce que j'avais présenté ici. Toutefois à l'époque l'API de la Shell SWT ne permettait pas de modifier la valeur alpha de la fenêtre. Je passais par un appel JNI, ça c'était du sport ;-).
Divers
  • Un excellent article qui parle de prolétarisation dans les sociétés de services (source Didier Girard).

dimanche, mars 15, 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

vendredi, février 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
Java
  • La version Maven 2.0.10 est sortie (billet sur blog de Sonatype). Un excellent outil de Build qui malheureusement est très mal supporté pour le développement de plugins Eclipse.
Divers
  • Un article sur le TDD (Test Driven Design)
  • Un billet qui présente l'évolution des ventes de livre de programmation des éditions O'Reilly. Au travers de cette présentation, on peut constater l'intérêt des lecteurs pour tel ou tel langage. Un point à constater : Java diminue ...

lundi, février 16, 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
  • Angelo Zerr a proposé un nouveau billet sur le sujet SSE. C'est assez technique mais Angelo ose parlé de sujet très peu documenté
  • Un billet qui propose de customiser les boîtes "A Propos ..." via les nouveautés apportées par Eclipse 3.5
  • Un article qui tente de lister le Pourquoi et le Comment d'OSGi

vendredi, février 13, 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 premier milestone pour la version e4 est sorti (nouveautés et page de téléchargement). Un détail en français est disponible sur le blog de Benjamin Cabé
  • Connaissiez-vous le Local History ? Il s'agit d'un historique en local (emplacement physique) de l'ensemble de vos modifications. En d'autres mots, il s'agit d'un outil qui viendra en complément de votre outils de gestion de source (billet 1).
  • Un article qui explique comment déployer une application Eclipse RCP via Java Web Start
  • Un billet qui détaille la façon d'utiliser le composant Barre de Progression.
  • Angelo Zerr revient et propose un nouveau billet sur l'utilisation de SSE (Structured Source Editing) un sous projet de WTP.

vendredi, février 06, 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 explique comment modifier l'apparence d'une WorkbenchWindow. Le billet n'est pas très jeune mais très intéressant.
  • Angelo Zerr propose deux billets sur le sujet d'EMF, GEF et WST (billet 1 et billet 2). A noter également qu'Angelo participe au projet E4 (la suite d'Eclipse).
  • Nouvelle version pour Eclipse 3.5 Galileo Milestone 5 (page pour son téléchargement et page pour examiner la liste des nouveautés). Si vous désirez discuter de ces nouveautés, un forum est disponible sur le site de Developpez.com.

vendredi, janvier 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
  • Une fiche de référence sur OSGi sur le site de DZone (source Benjamin Cabé)
  • Un article sur l'activation des Actions suivant l'état d'une perspective
  • 10 erreurs à éviter pour le développement d'application Eclipse RCP
Divers

dimanche, janvier 11, 2009

Modification du support de cours sur les Extensions et les Points d'extensions

Le support de cours concernant les Extensions et Points d'extensions a été réduit. En effet, la partie concernant l'explication sur le Schema XML a été supprimée. J'ai considéré que cette partie n'avait pas sa place.

Cette partie sur le Schema XML sera transférée prochainement dans un nouveau support de cours.

samedi, janvier 10, 2009

Licence d'utilisation ... Creative Commons

Je viens d'effectuer une mise à jour sur l'intégralité de mes supports de cours qui intègre dés à présent une licence d'utilisation de type Creative Commons imposant les contrats suivants :
  • Paternité : vous devez citer le nom de l'auteur original par conséquent Mickael BARON
  • Partage des Conditions Initiales à l'Identique : Si vous modifiez, transformez ou adaptez les supports de cours, vous n'avez le droit de distribuer la création qui en résulte que sous un contrat identique à celui-ci.
Sous ces conditions, cette licence vous donne le droit de :
  • de reproduire, distribuer et communiquer cette création au public.
  • de modifier cette création.
Pourquoi une licence ? Je reçois de nombreuses demandes pour l'utilisation des supports de cours et je vous propose maintenant un contrat d'utilisation.

mercredi, janvier 07, 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 explique comment créer des templates pour faciliter la création des plugins.
  • Un billet qui décrit l'utilisation de JFace DataBinding sur un exemple simple.
  • La troisième édition de livre Eclipse Plug-ins est disponible.
  • Une série de billets sur l'utilisation de l'outil de debug d'Eclipse (partie 1, partie 2 et partie 3).
  • Dans la série des mises à jour de livre, la nouvelle version du livre consacré à EMF est disponible.

jeudi, janvier 01, 2009

Bonne année ... les perspectives 2009

A partir de ce premier billet 2009, je vous souhaite une excellente année 2009 et je tiens à vous remercier de l'intérêt grandissant que vous portez à ce blog.

Mes souhaits 2009 seraient de finir la partie conception de plug-ins en espérant fournir au moins trois supports de cours : un sur le Workbench, le deuxième sur Eclipse RCP et le troisième concernant un recueil d'astuces et d'exemples de type Eclipse in Actions.

Je profite également de ce billet pour faire un bilan de l'état actuel de mes rédactions :
  • Le support de cours sur la partie Workbench d'Eclipse continue doucement. Pour rappel voici le plan proposé : architecture du Workbench (comprendre enfin les relations entre Part, Page, Site et WorkbenchWindow); les Perspectives (création via des extensions et création dynamique); les Views (StickyViews, registre de vues, communication entre vues); les Editors; les UI Forms, les actions et la personnalisation de l'apparence d'une application Eclipse (Activity, hacking du WorkbenchWindow).
  • Le support de cours sur une introduction de Flex n'a pas avancé ... suis-je toujours intéressé ?

lundi, décembre 22, 2008

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 les avantages et inconvénients de l'agencement d'une perspective réalisé de manière programmatique ou déclarative.
  • Eclipse 3.5 M4 est sortie (liens pour le téléchargement et pour les nouveautés apportées).

dimanche, décembre 14, 2008

Résult du sondage : concevoir des plug-ins sous Eclipse, c'est ....

Le sondage concernant le sujet "concevoir des plug-ins sous Eclipse, c'est ...." est maintenant terminé. Voici le résultat :
  • Très simple, APIs structurées et outils adaptés -> 0 %
  • Pour les amoureux du code, APIs soignées mais ils manquent des outils -> 13 %
  • Click and run, APIs difficiles heureusement qu'il y a les outils pour coder -> 21 %
  • La jungle, on se perd dans les APIs et il faut tout faire à la main -> 65 %
Je m'attendais à ce que la proposition "La jungle, on se perd dans les APIs et il faut tout faire à la main" arrive en tête.

Voici mon avis (très rapide) sur les résultats :

Aspect outillage. Même si la plateforme Eclipse fournit des tonnes de plugins, j'ai quand même l'impression que parfois il manque l'essentiel ou bien que les projets ne vont pas jusqu'au bout des choses. Je prendrai le projet Visual Editor pour exemple. S'il y a bien un projet qui devrait évoluer il s'agit bien de celui-ci. Les interfaces graphiques sont généralement coûteuses à réaliser et pour rendre le développement d'applications basé sur Eclipse plus accessible (dans le cadre d'un prototypage par exemple), il faudrait posséder un GUI-Builder digne de ce que propose Visual Studio .NET ou Matisse dans Netbeans.

Aspect API. Concernant les APIs, il y en a beaucoup et il est assez difficile de s'y retrouver. En fait, il y a de choses assez mystérieuses qui demandent un investissement important pour en comprendre le fonctionnement (par exemple les activities). A mon avis, il faudrait plus de ressources sur la plateforme (tutoriaux ou des exemples).

Extensions et Points d'extension avec la plateforme Eclipse

Un support de cours concernant les principes d'extensions et de points d'extensions est disponible sur le site de Developpez.com. Ce mécanisme propre à la plateforme Eclipse permet la connexion entre différents plugins.

Au menu de ce cours, vous découvrirez les aspects suivants :
  • Définition du mécanisme d'extensions
  • Création d'extensions (View et Preference) via l'outil PDE
  • Mini cours sur le Schema XML
  • Description détaillée du mécanisme de points d'extensions
  • Création de nouveaux points d'extensions (exemple d'une calculatrice où les opérateurs sont des plugins)
  • Interrogation des extensions et points d'extensions via le registre d'extensions
  • Création dynamique d'extensions et de points d'extensions via l'API Eclipse
Le lien du support de cours et les exemples peuvent être trouvés ici.

jeudi, décembre 11, 2008

Nouveau travail ... retour à la case Recherche

Depuis quelques temps les billets se font rares. La raison est que je viens de changer de travail. Comme indiqué dans le titre, je reviens vers le monde du public et de la recherche. Après un concours de la fonction publique, je retourne dans le laboratoire du LISI où j'ai effectué ma thèse. J'ai commencé lundi dernier comme ingénieur de recherche.

Je profite également de ce billet pour remercier toutes les personnes qui ont travaillées avec moi pendant ces deux dernières années riches en expérience. Au cours des deux ans, j'ai eu deux missions de très bonnes qualités avec des problématiques différentes me permettant de monter rapidement en compétences.

Un grand merci à la société SERLI, mon ancien employeur, et à tout son personnel pour son professionnalisme. Un remerciement spécial pour Jérome, mon ancien commercial dont la culture technique est impressionnante, pour avoir cru en moi il y a deux ans.

Tout ça pour dire qu'à partir de maintenant je suis fonctionnaire ... et que ce blog va continuer ...

PS : un grand merci à l'agence tout risque. Ses membres se reconnaîtront.

mercredi, décembre 10, 2008

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
  • Jetty pourrait bientôt être un projet de la fondation Eclipse (source).
  • Un article qui explique comment débugguer du code distant à partir d'Eclipse.
Java
  • JavaFX 1.0 est sorti. Rendez-vous sur le site officiel pour profiter des différentes démonstrations. Pour l'occasion, je vous propose un lien pour jouer à PacMan.
  • Un article qui présente l'utilisation de la bibliothèque XStream.
Divers
  • La conférence Devoxx a commencé depuis lundi. Vous pouvez suivre l'événement via le blog de Developpez.com. Préparez-vous également, si vous n'avez pas eu la chance de vous y rendre, à suivre les événements via la plateforme vidéo Parleys.
  • Êtes-vous intéressé par un téléphone Google G1. Une version pour développeur Android est disponible. Il semblerait que des fonctionnalités soient libérées (pas de SIM-lock et flashageage à volonté du firmware).
  • Un article qui présente l'injection de dépendance avec GUICE 2.0.

dimanche, novembre 16, 2008

J'ai besoin de ... sauvegarder et charger la description XML d'une perspective

Dans la série des J'ai besoin de ... je m'intéresse aujourd'hui à montrer au travers d'un prototype dit "proof of concep" comment sauvegarder et charger la description XML d'une perspective dans le cadre d'une application Eclipse. Tout l'intérêt de manipuler la description d'une perspective est de pouvoir la stocker autre part que dans le répertoire d'exécution d'une application Eclipse.

Lorsqu'un utilisateur modifie l'agencement des vues et des éditeurs d'une perspective, les modifications sont sauvegardées à l'arrêt de l'application Eclipse dans le répertoire d'exécution. De même, un utilisateur peut créer une nouvelle perspective basée sur une perspective existante en sauvegardant sa description. Au chargement d'une application Eclipse, les descriptions des perspectives sauvegardées (celles modifiées et les nouvelles) sont chargées. Malheureusement, ce chargement ne s'effectue qu'au démarrage de l'application Eclipse.

Le prototype présenté dans ce billet offre la possibilité de charger à tout moment une description et de visualiser le résultat dans le Workbench. Si la description est modifiée (pour l'instant nous modifions un fichier XML d'une perspective) et le chargement demandé, la perspective dans l'application Eclipse sera mise à jour. En allant plus loin dans l'utilité de la mécanique portée par ce prototype, il est de ce fait envisageable de sauvegarder à distance pour un compte utilisateur (base de données, LDAP, ...) ses perspectives. A tout moment, la description des perspectives est modifiable et un mécanisme de mise à jour peut être utilisé pour prendre en compte les modifications de manière transparente. Mais ce dernier point fait parti des ouvertures du prototype, attachons-nous maintenant à décrire sa mécanique.

Mais avant de commencer, je tiens à préciser que le prototype utilise des APIs internes. La version de ce prototype fonctionne pour Eclipse 3.4 Ganymede et je ne garantis en rien son fonctionnement et sa mécanique pour les versions antérieures et futures. Ce prototype entre dans le cadre du cours sur le Workbench d'Eclipse que je suis en train de préparer au moment de l'écriture de ce billet.

Un exemple de description de perspective est donné ci-dessous. Cette description est stockée dans le fichier perspectivePerso.xml.
<?xml version="1.0" encoding="UTF-8"?>
<perspective editorAreaTrimState="2" editorAreaVisible="1" fixed="0" version="0.016">
<descriptor descriptor="eclipse.workbench.SaveLoadPerspectiveExample.perspective1" id="UnTest" label="UnTest" />
<window height="742" width="1024" x="0" y="22" />
<alwaysOnActionSet id="eclipse.workbench.SaveLoadPerspectiveExample.actionSet" />
<alwaysOnActionSet id="org.eclipse.ui.actionSet.keyBindings" />
<alwaysOnActionSet id="org.eclipse.ui.actionSet.openFiles" />
<view id="org.eclipse.ui.views.ResourceNavigator" />
<fastViewBars />
<viewLayoutRec id="org.eclipse.ui.views.ResourceNavigator" showTitle="true" standalone="true" />
<layout>
<mainWindow>
<info folder="true" part="org.eclipse.ui.internal.ViewStack@c8b6ee">
<folder activePageID="org.eclipse.ui.views.ResourceNavigator" appearance="3" expanded="2">
<page content="org.eclipse.ui.views.ResourceNavigator" label="Navigator" />
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
<part id="0" />
</presentation>
</folder>
</info>
<info folder="true" part="stickyFolderRight" ratio="0.75" ratioLeft="762" ratioRight="254" relationship="2" relative="org.eclipse.ui.internal.ViewStack@c8b6ee">
<folder appearance="2" expanded="2">
<page content="org.eclipse.help.ui.HelpView" label="LabelNotFound" />
<page content="org.eclipse.ui.internal.introview" label="LabelNotFound" />
<page content="org.eclipse.ui.cheatsheets.views.CheatSheetView" label="LabelNotFound" />
</folder>
</info>
<info part="org.eclipse.ui.editorss" ratio="0.3149062" ratioLeft="500" ratioRight="694" relationship="2" relative="org.eclipse.ui.internal.ViewStack@c8b6ee" />
</mainWindow>
</layout>
</perspective>


Cet exemple décrit une nouvelle perspective qui a été créée (via l'action Save Perspective As ... du menu Window) appelée UnTest (attribut label) à partir d'une perspective (attribut descriptor) définie via un point d'extension (identifiant de la perspective eclipse.workbench.SaveLoadPerspectiveExample.perspective1). Une fois la perspective sauvegardée, la plateforme Eclipse place la description de la nouvelle perspective dans le fichier org.eclipse.ui.workbench.prefs du répertoire .metadata/.plugins/org.eclipse.core.runtime/.settings. Pour ma part, j'ai récupérée cette description et je l'ai placée dans le fichier perspectivePerso.xml disponible à la racine du prototype. Dans la suite, ce fichier sera chargé et son contenu intégré dans l'application Eclipse. Nous effectuerons des modifications directement sur le contenu de ce fichier et le prototype l'intégrera dans l'application Eclipse.

Vous trouverez ci-dessous le code de l'action Load Perspective de la méthode void run(IAction action) (voir classe LoadPerspectiveAction).
// Récupération de la description de la perspective.
String xmlString = this.extractPerspectiveDescriptionFromFile("perspectivePerso.xml");
Reader reader = null;

if (xmlString != null && xmlString.length() != 0) {
reader = new StringReader(xmlString.toString());
} else {
return;
}

// Transforme la description de String à XMLMemento
XMLMemento memento = null;
try {
memento = XMLMemento.createReadRoot(reader);
} catch (WorkbenchException e) {
e.printStackTrace();
return;
}

// Création d'un descripteur de perspective vide.
PerspectiveDescriptor newPersp = new PerspectiveDescriptor(null, null, null);
// From a perspective descriptor, restore the state of the perspective.
newPersp.restoreState(memento);

// Récupération de l'implémentation du registre d'extension.
PerspectiveRegistry perspectiveRegistry = (PerspectiveRegistry) PlatformUI.getWorkbench().getPerspectiveRegistry();

String id = newPersp.getId();

// Récupère s'il existe déjà une perspective ayant le même id.
IPerspectiveDescriptor oldPersp = perspectiveRegistry.findPerspectiveWithId(id);

if (oldPersp != null) {
System.out.println("Remove old perspective in order to replace it.");
// Si existe, on la supprime
perspectiveRegistry.deletePerspective(oldPersp);
}

// Récupère la référence du PreferenceStore associé à org.eclipse.ui.workbench.
// Ceci permettra de stocker dans le fichier org.eclipse.ui.workbench.prefs
IPreferenceStore workbenchStore = getWorkbenchPreferenceStore();

// Stock la nouvelle description de la perspective.
workbenchStore.putValue(newPersp.getLabel() + PERSP, xmlString.toString());
// Stock le nom de la perspective.
workbenchStore.putValue("perspectives", newPersp.getLabel());

// Modifie la perspective de la page active.
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().setPerspective(newPersp);

// Réinitialise la perspective de la page active.
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().resetPerspective();
La mécanique est très simple. Ci-dessous les principaux points :
  • La description de la perspective est récupérée du fichier perspectivePerso.xml qui est transformée en XMLMemento (API pour les manipulations de contenus XML de la plateforme Eclipse).
  • Un descripteur de perspective vide (IPerspectiveDescriptor) est créé dont le contenu est restauré au travers de l'XMLMemento.
  • Il est ensite vérifié qu'il n'existe pas de perspective ayant le même identifiant. Dans le cas contraire la perspective est retirée du registre d'extension.
  • La description de la perspective chargée est stockée dans les préférences org.eclipse.ui.workbench de manière à ré-utiliser le mécanisme de chargement de perspectives de la plateforme Eclipse.
  • Enfin pour valider les modifications, la perspective est affectée à la page active et une ré-initialisation est provoquée pour forcer la mise à jour.
Pour vérifier le fonctionnement, téléchargez le code source du prototype (projet SaveLoadPerspectiveExample), démarrez une application Eclipse en incluant le plugin du projet et réalisez les actions suivantes :
  • Sélectionner l'action Load Perspective Action disponible dans la barre de menu et dans la barre d'outils. La perspective UnTest apparaîtra.
  • Modifier le contenu du fichier perspectivePerso.xml.

jeudi, novembre 13, 2008

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
  • Dans la série des comparaisons des technologies Eclipse RCP et Netbeans RCP, voici un autre billet.
  • Un article qui traite du sujet de JDT (Java Development Tools). Il fait suite à l'article sur le Workbench annoncé dans un précédent billet.
Java
  • Une nouvelle API pour les dates en Java est en cours de préparation. La JSR 310 est la requête de spécification qui décrit cette nouvelle API. En espérant que cette fois cela soit la bonne.