samedi, avril 24, 2010

Sondage autour d'Eclipse 4 : Pour ou Contre

Comme vous le savez, Eclipse 4 arrive très prochainement (il est question du mois du juillet). Comme vous le savez également de nouvelles APIs font faire leurs apparitions et la partie Workbench a été complètement revisitée. On parle de Modeled Workbench puisque le Workbench est cette fois modélisé en EMF.

Avant la sortie d'Eclipse 4, il y aura en juin la sortie d'Eclipse 3.6 Helios. Deux versions en parallèle vont cohabiter et pour combien de temps ?

Toute ça pour dire qu'Eclipse 4 va surement bousculer l'écosystème de la plateforme Eclipse. De même certains de mes supports de cours vont surement devenir obsolètes d'ici à quelques temps (je pense notamment à XWT face à SWT).

D'un côté je suis satisfait et impatients des évolutions d'Eclipse 4 (je l'avoue j'ai pas encore joué avec) et de l'autre inquiet pour la pérennité de certains développements. Pour rassurer les foules, la fondation Eclipse promet une rétrocompatibilité des développements.

Je vous propose le sondage (disponible sur la partie gauche). A vous de voter ...

vendredi, avril 23, 2010

Introduction à JAX-WS : Développez des Web Services étendus avec Java

Je continue la série de supports de cours concernant les Web Services (billets : introduction, wsdl et SOAP). Comme les concepts ont été introduits, je vous propose maintenant de développer des Web Services étendus via la plateforme Java.

Ce support de cours présente JAX-WS (JSR-224), une API pour développer des Web Services étendus (WSDL + SOAP) via la plateforme de développement Java.

Voici le découpage :
  • Une présentation générale de la spécification JAX-WS est donnée en première partie.
  • Le développement de web services côté serveur est ensuite abordé via deux points de vue (approche montante et approche descendante).
  • Il est suivi d'une partie expliquant comment utiliser JAX-WS dans un client pour appeler un web service étendu.
  • Les parties suivantes s'intéressent à décrire les annotations, le mécanisme d'intercepteur (handler) et l'utilisation de JAX-WS via Java SE 6 et via les EJBs.
  • Pour illustrer les concepts introduits dans le support de cours une partie pratique met en œuvre un client pour interroger les web services fournis par eBay.
  • Enfin, un tutoriel est donné en dernière partie pour présenter étape par étape le développement de web services étendus via Netbeans 6.8 et Glassfish 3.
Si vous avez des commentaires, des souhaits, n'hésitez pas, profitez de ce billet.

Le lien du support de cours est disponible ici.

mardi, avril 20, 2010

J'ai besoin ... d'utiliser Tycho - Partie 2 : Générer les poms Maven

Dans le billet précédent, nous avons présenté l'installation de Maven 3. Toutefois, pour l'instant nous n'avons pas encore exploité Tycho. Ce billet se propose de vous montrer comment générer à partir de n'importe quel projet OSGi (bundle et plugin) les descripteurs pom.xml utilisés par Maven.

Au niveau des logiciels utilisés en plus de Maven 3, nous trouvons Eclipse 3.5.2 avec le plugin m2eclipse pour faciliter l'édition des pom.xml. A noter que seul Maven 3 est obligatoire. Par ailleurs, l'expérimentation se fera sous Windows 7 64bits.

Pour commencer en douceur, nous allons utiliser un bundle OSGi dont l'objectif est d'afficher sur la console "HelloWorld Tycho". Dans la suite de cette série des J'ai besoin ..., nous développerons également une application RCP basée sur plusieurs plugins.

Construire un bundle OSGi
Une application à base OSGi est définie par un ensemble de bundles OSGi. Par conséquent nous définissons un répertoire parent contenant un ensemble de sous répertoires. Chaque sous répertoire est un bundle OSGi. Du point de vue Maven le répertoire parent va contenir un pom.xml qui listera des modules. Chaque module sera défini par un pom.xml localisé à la racine de chaque répertoire.

Dans la suite, nous montrons comment construire le répertoire parent et le répertoire du bundle OSGi.
  • Ouvrir l'assistant de création de bundle OSGI (File -> New -> Project ... et choisir Plug-in Project).
  • Dans le nom du projet choisir eclipse.tycho.osgifirstbundle
  • Pour l'emplacement de sauvegarde du contenu du bundle choisir un répertoire situé sous un répertoire parent. Exemple : D:\workspaceTycho\eclipse.tycho.osgifirstexample\eclipse.tycho.osgifirstbundle où eclipse.tycho.osgifirstexample désigne le nom du répertoire parent et où eclipse.tycho.osgifirstbundle désigne le répertoire du bundle.
  • Choisir Equinox comme plateforme cible et faire Next
  • Laisser les paramètres par défaut de cet écran puis faire Next
  • Choisir comme patron de développement le patron Hello OSGi Bundle puis faire Next
  • Modifier le message Hello World!! en Hello World Tycho!! puis faire Finish
Le bundle est maintenant créé et vous devriez obtenir l'arborescence suivante sur votre disque.
d: \-
workspaceTycho \-
eclipse.tycho.osgifirstexample \-
eclipse.tycho.osgifirstbundle \-
META-INF \-
MANIFEST.MF
src \-
eclipse \-
tycho \-
osgifirstbundle \-
Activator.java
.classpath
.project
Générer les pom.xml
Nous allons compléter cette arborescence en ajoutant deux fichiers pom.xml localisés respectivement dans le répertoire parent et le répertoire du bundle.

Deux solutions disponibles : soit vous les ajoutez manuellement soit vous les générez via un plugin Maven fourni par Tycho : maven-tycho-plugin:generate-poms. Nous choisirons la seconde solution pour créer les fichiers pom.xml.

Pour ce faire, ouvrir l'invite de commande de Windows puis se placer dans le répertoire parent eclipse.tycho.osgifirstexample
mvn3 org.sonatype.tycho:maven-tycho-plugin:generate-poms -DgroupId=eclipse.tycho
Cette ligne de commande va tout d'abord télécharger toutes les dépendances nécessaire à l'exécution du plugin Tycho sous Maven. Examiner le répertoire repoMaven3 (défini lors de l'installation de Maven 3) pour remarquer toutes les dépendances téléchargées.

Une fois ces dépendances téléchargées, les deux fichiers pom.xml sont générés.

Ci-dessous le fichier de description Maven du répertoire parent.
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 ...>
<modelVersion>4.0.0</modelVersion>
<groupId>eclipse.tycho</groupId>
<artifactId>eclipse.tycho.osgifirstexample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>eclipse.tycho.osgifirstbundle</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.sonatype.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>0.8.0</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
Vous remarquerez que le descripteur du répertoire parent défini le type de packaging (dans quel but le projet doit être construit) comme étant pom. Il liste également l'ensemble des modules qu'il assemble. Par ailleurs, il est précisé que le plugin Tycho est à utiliser.

Ci-dessous le fichier de description pom.xml du bundle eclipse.tycho.osgifirstbundle (défini comme un module Maven).
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 ... >
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>eclipse.tycho.osgifirstexample</artifactId>
<groupId<eclipse.tycho</groupId>
<version<0.0.1-SNAPSHOT</version>
</parent>
<groupId>eclipse.tycho</groupId>
<artifactId>eclipse.tycho.osgifirstbundle</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
Ce descripteur pom.xml définit le type de packaging comme étant un eclipse-plugin.

Comme vous pouvez constater les fichiers de description sont réduits au minimum. Aucune information concernant des dépendances n'a été donnée. En fait le descripteur du bundle eclipse.tycho.osgifirstbundle s'appuie sur le descripteur OSGi MANIFEST.MF pour établir les dépendances nécessaires.

A suivre ...
Dans le prochain billet, nous montrerons comment construire le bundle eclipse.tycho.osgifirstbundle à partir d'une plateforme cible localisée physiquement sur le disque.

samedi, avril 17, 2010

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 4 en milestone 5 est disponible (page de téléchargement et page des nouveautés apportées par cette version)
  • Lars Vogel dispense une présentation autour de la plateforme Eclipse 4.
  • Un article qui présente l'API Eclipse DataBinding portée sur la boite à outils GWT.
  • Un billet qui montre comment utilisé l'outil de Build Tycho pour construire XUL Runner.
Java
  • Scub, une SSII localisée à Angoulème, vient de mettre à la disposition de la communauté OpenSource leur socle technique Java. Cette page propose une présentation de ce socle. Elle fournit également de nombreuses ressources sur la plupart des outils du monde de l'Open Source (Spring, EclEmma, Eclipse, Maven, ...).

mardi, avril 13, 2010

J'ai besoin ... d'exporter les préférences d'un Workspace

Dans la série des J'ai besoin ... je vous propose dans ce billet de détailler la manière d'exporter les préférences d'un Workspace (SVN Preferences, paramètres M2Eclipse, ...) vers un autre Workspace. L'objectif visé est d'éviter de reconfigurer son Eclipse quand un nouveau Workspace est créé. Dans mon cas, cela arrive souvent puisque j'essaye de tester les nouvelles versions d'Eclipse et je ne souhaite pas "polluer" certains Workspace vitaux.

Exporter les préférences
Ouvrir à partir du menu File, l'outil Export (File -> Export) et choisir dans la catégorie General, l'élément Preferences (General -> Preferences).

Vous devriez obtenir un résultat identique à la capture d'écran ci-dessous.

Choisir Export All (ou à l'unité) et sélectionner le fichier où sera stocké les préférences, enfin valider tout simplement.

Un fichier a été créé. En y regardant de plus près, vous remarquerez que tout a été enregistré.

Importer les préférences

Relancer Eclipse et choisir un nouveau Workspace.

Cette fois, ouvrir à partir du menu File, l'outil Import (File -> Import) et choisir dans la catégorie General, l'élément Preferences (General -> Preferences).

Vous devriez obtenir un résultat identique à la capture d'écran ci-dessous.

Sélectionner le fichier de préférences qui a été précédemment enregistré et valider l'importation (vous pouvez également affiner les préférences qui peuvent être importées).

Après un léger chargement, assurez-vous que vos préférences ont été chargées. Dans mon cas, ce qui m'importe c'est mes entrepôts SVN, mes préférences pour m2eclipse et mes perspectives personnalisées. C'est bon tout est là ...

dimanche, avril 11, 2010

J'ai besoin ... d'utiliser Tycho - Partie 1 : Installation

Dans un précédent billet, je me suis essayé à Tycho. Déjà à l'époque j'étais très satisfait du résultat. Depuis un certains temps de nombreux projets utilisent Tycho et il semble que les dernières versions de Tycho soient très encourageantes.

Je pense qu'il est de temps de s'y attarder plus profondément. Je vous propose donc une série de billets autour de Tycho. L'idée est de pouvoir construire automatiquement un plugin, un product de déployer dans un référentiel commun, etc.

Ce premier billet s'intéresse à installer et configurer Maven 3 puisque Tycho est un plugin Maven. Tycho s'installera automatiquement s'il est utilisé dans une configuration pom.xml. La manipulation a été réalisée sous Windows 7 64 bits mais doit fonctionner sur tous les autres systèmes où Maven est supporté. Par ailleurs, je ne souhaite pas réaliser un changement trop brutal et je vais faire cohabiter Maven 2 et Maven 3.

Téléchargement
  • Se rendre sur le site de Maven (http://maven.apache.org/download.html) et télécharger la version Maven 3 Alpha 7.
  • Décompresser l'archive dans un répertoire (exemple : C:\Program Files\apache-maven-3.0)
Configuration
  • En examinant le répertoire bin de Maven 3, vous remarquerez la fameuse commande mvn.bat. Renommer cette commande en mvn3.bat pour éviter le conflit avec mvn.bat de Maven 2.
  • Compléter la variable d'environnement PATH de manière à ajouter le chemin bin de Maven 3 (exemple : C:\Program Files\apache-maven-3.0\bin)
  • Ajouter une variable d'environnement M3_HOME dont la valeur à donner est le chemin de Maven 3 (exemple : C:\Program Files\apache-maven-3.0)
  • Ouvrir le fichier mvn3.bat et remplacer tous les M2_HOME en M3_HOME
  • Ouvrir le fichier %M3_HOME%\conf\settings.xml et modifier la balise localRepository qui permet à Maven d'indiquer son répertoire où entreposer les dépendances construites et téléchargées. Choisir un répertoire différent du répertoire utilisé par Maven 2 (exemple : d:\config\repoMaven3)
Tester
  • Pour tester, rien de plus simple. Ouvrir une invite de commande et saisir la commande mvn3 -version. Si vous voyez apparaître le numéro de Maven (dans mon cas 3.0-alpha 7) c'est bon ça fonctionne. Par la suite ne pas oublier que pour utiliser Maven 3 utiliser la commande mvn3 et non pas mvn
A cette étape, Tycho n'est pas encore installé. Toutefois son environnement d'exécution est prêt.

Dans le prochain billet, nous montrerons comment transformer un simple projet OSGi (un bundle) en projet supporté par Tycho (génération des pom.xml) et comment construire ce projet via Tycho.

Finalement, je profite de ce billet introductif pour lister les ressources sur Tycho
  • Billet de Pascal Leclerc introduisant Tycho
  • Deux billets techniques (1 et 2) sur l'utilisation de Tycho
  • Le site de Tycho
  • La proposition de projet à la communauté Eclipse
  • Un billet de Sonatype présentant les débuts de Tycho
  • Le GIT de Tycho pour construire Tycho et pour dénicher de nombreux exemples
  • Le forum de Tycho
  • Une liste de projets utilisant actuellement Tycho
Si vous avez d'autres ressources, n'hésitez pas.

vendredi, avril 09, 2010

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 n'arrête pas. Il propose un projet (au stade expérimental) sur JFace DataBinding où comment associer un POJO (la partie modèle) à la couche graphique sans avoir à coder les écouteurs de changement de modèle.
  • Tycho est proposé comme un projet de la fondation Eclipse. C'est une très bonne nouvelle pour ceux qui espèrent utiliser Maven pour le développement de plug-ins. A noter que Pascal Leclercq, à qui l'on doit des billets sur Tycho, fait parti des membres intéressés par ce projet.
  • Deux billets qui expliquent comment utiliser Tycho pour du développement pur OSGi (billet 1) et du développement Eclipse RCP (billet 2).
  • Un billet qui décrit comment installer le DeltaPack correctement avec Eclipse 3.5.
  • Un sondage pour donner son avis sur le nom de la version qui suivra Eclipse Helios 3.6.

Java
  • Un billet qui présente une expérience sur le problème des fuites de mémoire en Java. Si vous abusez sur la reflection en Java, ça pourrait vous aider.
  • Depuis quelques temps, beaucoup de bruits autour du portage de Quake 2 sur HTML 5. Précisons que ce portage a été rendu possible grâce à GWT.
  • Un excellent article sur la stratégie de Spring face à Java EE.

mardi, mars 30, 2010

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
  • Un article qui décrit comment développer avec Comet en Java.

vendredi, mars 26, 2010

EclipseCON 2010 - Les ressources des présentations du jeudi ...

Après le lundi, le mardi et le mercredi, voici une liste de présentations qui ont eu lieu jeudi 25 mars, dernière journée, à l'EclipseCON 2010 et dont les orateurs ont fourni les supports (transparents, démonstrations, ...).
Il s'agissait donc de la dernière journée de l'EclipseCON 2010. Je vais essayer de maintenir ces listes dés qu'une présentation est diffusée.

Maintenant je vais en profiter pour visualiser ces présentations. J'ai un seul regret, la majorité des présentations est diffusée sur une plateforme de vidéo en ligne. Pas pratique quand il n'y a pas de connexion internent.

Pour finir, EclipseCON 2011 se tiendra du 21 au 24 mars 2011 (lien 1 et lien 2).

EclipseCON 2010 - Les ressources des présentations du mercredi ...

Après le lundi et le mardi, voici une liste de présentations qui ont eu lieu mercredi 24 mars à l'EclipseCON 2010 et dont les orateurs ont fourni les supports (transparents, démonstrations, ...).
Rendez-vous dans le prochain billet pour la même chose mais pour la dernière journée du jeudi.

mercredi, mars 24, 2010

EclipseCON 2010 - Les ressources des présentations du mardi ...

Après le lundi, voici une liste de présentations qui ont eu lieu hier mardi 23 mars à l'EclipseCON 2010 et dont les orateurs ont fourni les supports (transparents, démonstrations, ...). A noter que généralement les présentations qui fournissent des supports sont complétées au fur et à mesure après la conférence. J'essaierai alors de maintenir ces billets.
Mise à jour
Rendez-vous demain pour la même chose mais pour la journée du mercredi.

mardi, mars 23, 2010

Introduction à SOAP : Communiquer avec un Web Service étendu

Je continue la série de supports de cours concernant les Web Services (billet introduction SOA et billet WSDL) via la plateforme Java.

Ce troisième support de cours est une introduction au protocole de communication SOAP utilisé pour communiquer avec un Web Service étendu.

Ce support de cours débute par une présentation de la structure d'un message SOAP. Il est suivi d'une description de l'en-tête et du corps d'un message SOAP.

Si vous avez des commentaires, des souhaits, n'hésitez pas, profitez de ce billet.

Le lien du support de cours est disponible ici.


EclipseCON 2010 - Les ressources des présentations du lundi ...

Voici une liste de présentations qui ont eu lieu hier lundi 22 mars et dont les orateurs ont fourni les supports (transparents, démonstrations, ...). J'ai filtré par rapport à mes préférences.

Pour l'intégralité vous pouvez aller voir le programme ou scruter le blog de Planet Eclipse.
Rendez-vous demain pour la même chose mais pour la journée du mardi.

Mise à jour ...

lundi, mars 22, 2010

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
  • EMF fait un tour du côté de l'environnement de développement Netbeans. Deux articles traitent du sujet (article 1 et article 2).
  • EclipseCon 2010 vient de commencer, faites un tour sur le programme pour visualiser les premières présentations mise en ligne.
  • Angelo Zerr diffuse un nouveau billet sur Spring et OSGi (billet 18).
Java
  • Une vidéo qui montre comment faire de la revue de code avec un plugin Sonar.
  • L'application BuildWall permet d'afficher les informations d'un build issu de Hudson de manière très explicite.

vendredi, mars 19, 2010

Leçon 4 : Les Commandes sur Developpez.com

La quatrième leçon concernant les commandes est disponible sous le format d'un article Developpez.com (leçon 4).

Pour rappel les trois précédentes leçons sont également disponibles sous le format article Developpez.com (leçon 3 et leçons 2 et 1).

J'ai besoin ... de comprendre l'utilité d'un éditeur épinglé (isPinned)

Comme je suis en train de préparer le support de cours sur les éditeurs, j'étudie en détail les APIs sur le sujet. Durant cette exploration, j'ai découvert dans l'interface IEditorReference la méthode boolean isPinned(). Malheureusement la documentation sur le sujet de ce que représente un éditeur "épinglé" n'est pas très explicite. Toutefois, en cherchant dans les préférences utilisateurs, je suis tombé sur une option assez sympathique.

Ouvrir le menu des préférences (Window -> Preferences) puis dans les options générales (General) sélectionner le sous menu Editors (voir capture ci-dessous).

L'option Close editors automatically permet de fermer automatiquement des éditeurs si le nombre d'éditeurs ouvert dépasse la valeur indiquée dans le champ de texte Number of opened... Très pratique si vous avez l'habitude d'ouvrir toutes les classes Java d'un projet dans des éditeurs, puis de devoir les fermer explicitement puisqu'il y en a trop à gérer.

Par contre il se peut que pour certaines classes vous ne souhaitiez pas que des éditeurs soient fermés automatiquement, d'où l'utilité de l'option épinglée (pinned).

Si l'option Close editors automatically est activée, vous remarquerez dans la barre d'outils, une nouvelle option (voir repère 1 sur la figure ci-dessous).

Pour épingler un éditeur, sélectionnez en un puis épinglez le avec l'option de la barre d'outils. Vous remarquerez alors que l'icône de l'éditeur est modifié (voir repère 2 sur la figure ci-dessus).

Ainsi tous les éditeurs épinglés ne seront pas fermés. Vous pourrez alors ouvrir autant d'éditeur que vous souhaitez sans avoir à gérer leur fermeture.

jeudi, mars 18, 2010

Atelier Construction Plug-in avec la plateforme Eclipse : leçon 4 / Interaction entre plug-ins / vues

Je continue la diffusion des supports concernant l'atelier Construction Plug-in avec la plateforme Eclipse (leçon 1, leçon 2 et leçon 3).

Vous trouverez donc dans ce billet, les supports de la leçon 4.
Je vais mettre en pause cette série, le temps de finaliser certains supports de cours qui ont pris un peu de retard

lundi, mars 15, 2010

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
  • Swing Explorer est un outil qui permet d'analyser l'arborescence des composants graphiques des applications de type SWING.
  • FEST-Swing est un outil pour réaliser des tests fonctionnels pour les applications de type SWING.

mercredi, mars 10, 2010

OSGI and Equinox - Creating Highly Modular Java Systems

Je viens juste de recevoir un exemplaire du livre OSGi and Equinox : Creating Highly Modular Java Systems issu de la série the eclipse series.

Je vais en profiter pour approfondir certains aspects concernant OSGi et son orientation Web, le système de déploiement p2, la construction de livrable, le déploiement à chaud, ... En espérant avoir du temps pour enrichir mes supports de cours existants et ceux qui vont arriver.

mardi, mars 09, 2010

Introduction à WSDL : Décrire et Configurer

Je continue la série de supports de cours concernant les Web Services (billet précédent) via la plateforme Java.

Ce deuxième support de cours vise à présenter le langage de description WSDL. Il permet de décrire le contrat d'un service Web.

Cette présentation est très syntaxique. J'essaye d'éviter d'entrer dans les détails. J'insiste sur la séparation de la partie description (abstraite) de la partie configuration (concrète).

Si vous avez des commentaires, des souhaits, n'hésitez pas, profitez de ce billet.

Le lien du support de cours est disponible ici.