vendredi, avril 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
  • La construction automatique de bundles/plugins est à la mode avec Tycho. Voici un billet qui détaille les différentes solutions pour faire du build sous la plateforme Eclipse.
  • Angelo Zerr diffuse l'étape 19 de sa série sur la Conception d’un client Eclipse RCP et serveur OSGI avec Spring.
  • Toujours du côté d'Angelo, il se lance dans une nouvelle série de billet (en anglais) sur le sujet EclipseLink, OSGi, Spring et l'orienté Aspect avec Equinox Aspects. Le projet s'appelle SpringWeaver (étape 1 et étape 2).
  • Le projet Orbit a pour objectif de fournir des bibliothèques classiques (third party) sous forme de bundle OSGi. Ces bundles sont accessibles via un repository p2. La nouveauté apparue dernièrement est le regroupement logique (catégorisation) des bundles.
Java
Divers
  • Un site assez sympa qui montre, via des démonstrations, les nouveautés apportées par HTML5. Veuillez disposer d'un navigateur très récent (voir en cours de développement) pour en profiter pleinement.

J'ai besoin ... d'utiliser Tycho - Partie 3 : Construction d'un bundle OSGi

Dans le précédent billet (J'ai besoin ... d'utiliser Tycho - Partie 2 : Générer les poms Maven) nous avons montré comment générer les fichiers descripteurs Maven (pom.xml) au niveau du répertoire parent et du répertoire du bundle OSGi.

Nous nous attardons dans ce billet à montrer comment construire un projet OSGi (composé généralement d'un ensemble de bundles, dans notre cas un seul a été défini) à partir de Maven et son plugin Tycho.

Comme nous sommes dans le monde Maven, nous utiliserons les commandes classiques pour le nettoyage du projet (clean) et la construction du bundle (package ou install). Le résultat attendu est un fichier au format jar localisé dans le répertoire target du répertoire du bundle.

Ouvrir l'invite de commandes de Windows et se placer à la racine du répertoire parent. Saisir la ligne de commande ci-dessous :
mvn3 clean package
Le résultat de cette ligne de commande est sans appel, une erreur est lancée (voir capture ci-dessous).

Il est question d'une contrainte qui n'est pas respectée. En fait, le package org.osgi.framework n'est pas disponible pour la construction du bundle. Cette dépendance n'est pas respectée.

Pour résoudre ce problème, il faut préciser au plugin Tycho où se trouve la plateforme cible (target platform). La plateforme cible est en quelque sorte un entrepôt Maven. Cette plateforme cible contient tous les plugins nécessaires au fonctionnement d'une application OSGi sous Equinox. Dans notre cas, il faut pouvoir fournir un ou plusieurs plugins exposant le package org.osgi.framework.

Ainsi, pour indiquer la plateforme cible, saisir la ligne de commande ci-dessous
mvn3 clean package -Dtycho.targetPlatform=C:\eclipse3.5.2
c:\eclipse3.5.2 est le répertoire contenant l'installation d'Eclipse 3.5.2.

Après quelques secondes de compilation (un peu plus s'il y a besoin de télécharger des dépendances pour Tycho et Maven 3), un fichier jar (eclipse.tycho.osgifirstbundle-1.0.0-SNAPSHOT.jar) est disponible dans le répertoire target du bundle eclipse.tycho.osgifirstbundle. Si vous utilisez la commande install en place de package, le jar sera en plus déployé dans l'entrepôt de Maven 3.

A suivre ...
Veuillez noter que pour construire ce bundle il est nécessaire de disposer d'une plateforme cible en local sur sa machine. Si vous souhaitez vérifier votre construction sur différentes plateformes (différentes versions OSGi par exemple), il sera nécessaire de disposer autant de plateformes cibles que de versions à construire.

Nous montrerons ainsi dans le prochain billet comment utiliser un entrepôt p2 pour construire le bundle afin d'éviter de fournir explicitement les plugins de dépendance.

dimanche, avril 25, 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
  • e4 devient Eclipse 4 (message officiel) (source EclipseTotale)
  • Eclipse RAP intègre maintenant le GC pour dessiner (lien). Une démonstration est disponible dans une archive WAR. A déposer dans un Tomcat et ça fonctionne !!!
  • Création du projet Eclipse SOA Platform (lien).
  • Indigo ou Isaac ? Deux noms pour la prochaine version d'Eclipse. Participer au sondage pour choisir parmi ces deux noms (lien).

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.osgifirstbundleeclipse.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.