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.

mardi, novembre 04, 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
  • Eclipse 3.5 M3 est sortie. Vous trouverez une explication détaillée en français sur le site de Benjamin. La page de téléchargement et la liste des nouveautés se trouvent ici et ici.
  • Un tutoriel qui présente une introduction à OSGi avec Equinox.

mardi, octobre 28, 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 article qui traite du sujet du Workbench Eclipse. Il s'agit d'une première partie où sont expliquées les différences entre Project et Workspace et les personnalisations des menus, des barres d'outils et des raccourcis claviers.
  • Un site léger qui répertorie des plugins d'Eclipse.
  • SWT Extension est une API qui permet de fournir les fonctionnalités de base des systèmes Win32 sans avoir à toucher à JNI (décoration de fenêtres, accès à la base de registre, manipulation des Hooks, ...).
Divers
  • Le code source d'Android est maintenant disponible. Un gros bébé qui pèse quand même 2.1 GO.

vendredi, octobre 24, 2008

Un sondage sur la plateforme Eclipse

Vous trouverez sur le bandeau gauche de ce blog un sondage permettant de vous exprimer sur la difficulté de conception de plug-ins sous Eclipse.

Voici les choix proposés :
  • Très simple, APIs structurées et outils adaptés
  • Pour les amoureux du code, APIs soignées mais ils manquent des outils
  • Click and run, APIs difficiles heureusement qu'il y a les outils pour coder
  • La jungle, on se perd dans les APIs et il faut tout faire à la main
Si vous souhaitez laisser des commentaires profitez de ce billet.

lundi, octobre 20, 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.

Java
Divers
  • Google App supportera le langage Java. Une très bonne chose. A voir maintenant comment cela va être réalisé.

dimanche, octobre 19, 2008

J'ai besoin de ... créer de nouvelles extensions dynamiquement

Dans la série des J'ai besoin de ..., je m'intéresse ici à toutes les solutions officielles et officieuses apportées par la plateforme Eclipse pour créer de nouvelles extensions de manière dynamique. En d'autres termes, il s'agit de construire des extensions de façon programmative et non déclarative comme cela est obtenue avec l'outil PDE lors de la construction du fichier plugin.xml. Toutefois, les APIs de la plateforme Eclipse manquent de finition et malheureusement on se retrouve à devoir manipuler des implémentations internes pour réussir à créer programmatiquement les extensions. Dans les exemples qui vont suivre, nous allons nous intéresser à créer dynamiquement des vues via le point d'extension org.eclipse.ui.views.

La première solution repose essentiellement sur l'utilisation d'API Internes via la classe ExtensionRegistry et sa méthode addExtension. Je l'accorde, ce n'est pas la meilleure des solutions puisque l'implémentation interne peut changer à tout moment, mais elle mérite d'être présentée pour comprendre les rouages du fonctionnement de l'ajout d'extension dans le registre d'extension.

Ci-dessous est présenté un exemple permettant de créer une extension de type View.
Bundle bundle = Activator.getDefault().getBundle();
IContributor contributor = ContributorFactoryOSGi.createContributor(bundle);

ConfigurationElementAttribute[] conf = new ConfigurationElementAttribute[6];
conf[0] = new ConfigurationElementAttribute("id", "genericViewId" +sequenceId);
conf[1] = new ConfigurationElementAttribute("name", "GenericView" + sequenceId);
conf[2] = new ConfigurationElementAttribute("class", "eclipse.extension.dynamicextensionexamples.views.GenericView");
conf[3] = new ConfigurationElementAttribute("category", "eclipse.extension.DynamicExtensionExamples");
conf[4] = new ConfigurationElementAttribute("restorable", "true");
conf[5] = new ConfigurationElementAttribute("allowMultiple", "true");

String extensionPointId = "org.eclipse.ui.views";
ConfigurationElementDescription configurationElements = newConfigurationElementDescription("view", conf, null, null);

Object token = reg.getTemporaryUserToken();

ExtensionRegistry reg = (ExtensionRegistry)Platform.getExtensionRegistry();
reg.addExtension("", contributor, false, "", extensionPointId, configurationElements, token);

sequenceId++;
La méthode addExtension(String id, IContributor contributor, boolean persist, String label, String extensionId, ConfigurationElementDescription configuration, Object token) requiert plusieurs paramètres dont la configuration utilisée est la suivante : l'identifiant (id) et le nom de l'extension (label) sont généralement vide (attention ne pas mettre null), contributor désigne le plug-in en charge de la création de l'extension, persist précise si les informations seront stockées à l'arrêt d'Eclipse et rechargées au démarrage, extensionId indique l'identifiant du point d'extension, configuration désigne les informations de l'extension généralement saisies à partir de PDE, finalement token est un clé utilisée pour contrôler les permissions. La séquence sequenceId permet d'obtenir un identifiant différent à chaque création.

Une évolution à cette première solution consiste à ne pas récupérer le Token via la méthode getTemporaryUserToken(). Un échappatoire est présenté dans cet article et dans ce billet. L'idée est de placer à null la valeur du paramètre token de la méthode addExtension. Il faut cependant ajouter ce paramètre système (-Declipse.registry.nulltoken=true) au démarrage de l'application Eclipse. Une évolution du code précédent est donné ci-dessous :
...
String extensionPointId = "org.eclipse.ui.views";
ConfigurationElementDescription configurationElements = newConfigurationElementDescription("view", conf, null, null);

ExtensionRegistry reg = (ExtensionRegistry)Platform.getExtensionRegistry();
reg.addExtension("",contributor,false,"",extensionPointId,configurationElements, null);
sequenceId++;
Une seconde solution consiste à se refuser d'utiliser des APIs internes et d'utiliser les méthodes fournies par IExtensionRegistry. Il s'agit en fait de la solution qui doit être normalement retenue.
Bundle bundle = Activator.getDefault().getBundle();
IContributor contributor = ContributorFactoryOSGi.createContributor(bundle);

String extension = "<plugin><extension point=\"org.eclipse.ui.views\">" +
"<view category=\"eclipse.extension.DynamicExtensionExamples\"" +
"class=\"eclipse.extension.dynamicextensionexamples.views.GenericView\"" +
"icon=\"icons/sample.gif\"" +
"id=\"genericViewId" + sequenceId + "\"" +
"name=\"GenericView" + sequenceId + "\">" +
"</view></extension></plugin>";

InputStream is = new ByteArrayInputStream(extension.getBytes());

IExtensionRegistry registry = RegistryFactory.getRegistry( );
registry.addContribution(is, contributor, false, null, null, null);
sequenceId++;
Aucune implémentation interne n'a été utilisée dans cette seconde solution. La méthode addContribution( InputStream is, IContributor contributor, boolean persist, String name, ResourceBundle translationBundle, Object token) requiert plusieurs paramètres dont la configuration utilisée est la suivante : is est le flux qui contient la description de l'extension; contributor, persist et token même utilisation que pour la méthode addExtension, translationBundle désigne le resource bundle pour d'éventuels besoins de traduction. A noter également que le paramètre token est null et pour rappel il faudra ajouter le paramètre système (-Declipse.registry.nulltoken=true) au démarrage de l'application Eclipse.

Il est possible par ailleurs de construire dynamiquement des points d'extensions à partir de cette seconde solution.

Les sources de ces solutions sont disponibles ici.

Nouvelle série de billets

Une nouvelle série de billets fait son apparition intitulée J'ai besoin de ... Cette série a pour but de fournir des exemples sur des problèmes de base non traités sur la toile Eclipse.

Il s'agit avant tout de décrire plus précisément certains exemples disponibles dans mes supports de cours de la plateforme Eclipse. Le format transparent des supports de cours n'étant pas propice à la discutions, j'utiliserai le format blog pour étoffer les exemples et répondre à d'éventuelles questions.

samedi, octobre 11, 2008

Supports de cours en préparation ...

Voilà pas mal de temps que je n'ai pas écrit un billet sur les supports de cours en préparation, voici donc un bilan de l'état actuel de mes rédactions.
  • Le support de cours sur les extensions et les points d'extensions est terminé, il est en phase de relecture. Je suis assez content du résultat puisque le cours traite d'aspects importants de la plateforme Eclipse qui sont malheureusement peu abordés sur la toile ou dans des livres.
  • Un nouveau support de cours concernant le Workbench de la plateforme Eclipse débute. Les concepts abordés : l'architecture du Workbench (Part, Page, Site, WorkbenchWindow); les Perspectives (création via des extensions et création dynamique); les Views (StickyViews, registre de vues, communication entre vues); les Editors; les actions et la personnalisation de l'apparence d'une application Eclipse (Activity, hacking du WorkbenchWindow).
  • Comme j'avais débuté une nouvelle série sur la plateforme Flex il y a quelques temps, j'essaye de terminer une introduction sur le sujet. Le reste de cette série prendra un peu plus de temps.

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
  • J'étais présent à la présentation de Maven 2 au JUG Tours le 8 octobre 2008 dernier. Une très bonne présentation qui m'a permis d'apprendre entre autre qu'un livre complet et gratuit sur Maven 2 était disponible.
  • Vous souhaitez en savoir plus sur les Generics de Java et aller plus loin que la simple utilisation des collections, je vous recommande ce site (merci à Boris pour l'information).
Divers
  • Friand sur les aspects liés à l'interaction homme-machine, j'ai découvert un site (www.red-issue.com) assez surprenant sur la manière de naviguer.

mardi, octobre 07, 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 Wiki qui traite des améliorations du registre d'extension. Dans le prochain cours que je vais mettre prochainement à disposition, je m'intéresserai notamment à la manipulation du registre d'extension. Je mettrai en lumière certaines limites de la plateforme Eclipse concernant le registre d'extension.
  • Un article qui couvre la création de templates via Eclipse Ganymede.
Java
  • Un recueil d'articles sur le sujet de GWT (Google Web Toolkit).

vendredi, septembre 26, 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
  • Une billet qui présente une réflexion sur l'utilisation des composants viewers de JFace dans Swing.
  • Eclipse Ganymede 3.4.1 est sorti, voici la page de téléchargement.
  • Un blog très intéressant qui se focalise sur GEF avec pleins d'exemples.

vendredi, septembre 19, 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
  • Excelsior JET est un outil qui permet de compiler en code natif des programmes Java. N'étant pas friand de ce genre de manipulation puisque je doute du gain en performance gagnée lors de la transformation, il est intéressant de signaler que la dernière version Excelsior JET 6.5 Beta 2 vient de compiler entièrement l'environnement Eclipse 3.4 Ganymede. Les avantages annoncés sont les accès aux archives ZIP/JAR plus rapides et la durée réduite vers les appels aux méthodes natives JNI.
  • Eclipse 3.5 M2 est sorti, la description des légères modifications est donnée ici.
  • Un troisième article (billet précédent pour les deux premiers articles) concernant le développement d'applications de bureau, web et mobiles au travers de la version Eclipse Ganymede est disponible. Il traite du développement des applications mobiles avec eRCP.
Divers
  • Une comparaison assez complète des différents outils d'intégration continue du marché (nombreux outils et critères importants).

jeudi, septembre 11, 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
  • Deux articles concernant le développement d'applications de bureau, web et mobiles au travers de la version Eclipse Ganymede (partie 1 et partie 2).
Java
  • GWT 1.5 est sorti depuis le ... 29 août.

mercredi, août 27, 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
  • Wickedshell est un projet OpenSource qui fournit dans une vue un accès direct à l'invite de commande du système.
Divers
  • De la sortie de Firefox 3.1 il faudra retenir le moteur JIT SpiderMonkey permettant de traiter plus rapidement du JavaScript. Les applications Google vont prendre de la vitesse (benchmarks et démo). Si vous installez la version Firefox 3.1a2pre, n'oubliez pas d'activer le moteur JIT via l'option javascript.options.jit.content=true à partir de la page config (saisir about:config dans la barre d'adresse pour atteindre la page).
  • Une excellente vidéo qui présente de manière ironique les huit erreurs à éviter lors d'une présentation powerpoint (trop de texte, trop de fautes d'orthographes, trop de puces, trop de couleurs, discours trop long qui dure, transparent trop chargé, trop d'animation et police de mauvais gout).

samedi, août 16, 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 (vacances obliges, les billets se font encore rares ...)

Eclipse
  • La version Eclipse 3.5M1 Galileo est sortie. Vous trouverez sur cette page les nouveautés introduites par cette nouvelle version. Pour la télécharger, veuillez vous rendre sur cette page.
Divers
  • Protobuf (Protocol Buffers) est un format de données qui permet de transmettre des informations de manière efficace (réduction de taille, rapidité, ...). Il faut voir cette API comme une alternative au XML utilisé pour les services Web. Cette API existe pour les langages C++ et Java. A noter que Google utilise massivement cette technologie pour l'ensemble de ses services. Sur le blog de 5 Fresh Minutes IT, vous trouverez une mini présentation et un ensemble de liens sur des retours d'expérience concernant cette API.

vendredi, août 08, 2008

Supports de cours en préparation ...

Concernant les supports de cours en préparation, voici un bilan de l'état actuel de mes rédactions
  • le support de cours sur les extensions et les points d'extension sous Eclipse avance doucement. J'espère en tout cas combler le vide concernant ce sujet très intéressant en terme d'architecture.
  • les supports de cours sur la plateforme Flex sont en attente. Il y a beaucoup trop de flous et j'ai besoin d'un peu plus de temps pour jouer avec avant de raconter n'importe quoi.
En fait, je profite de ce billet pour me motiver un peu plus. Arrggg, c'est difficile de se motiver après une longue journée de boulot.

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 (vacances obliges, les billets se font rares ...)

Eclipse
  • Un exemple qui montre comment modifier les icônes des noeuds d'un TreeViewer
  • SWTGraph est une librairie pour faire des graphes rapidement directement avec SWT
  • La nouvelle version d'Eclipse 3.5 s'appellera Galileo. Les discussions autour du choix du nom.
Java
  • JavaFX est disponible en version "preview". L'environnement de développement Netbeans 6.1 et le SDK de JavaFX sont disponible en téléchargement.
Autre
  • Ed Burnet prépare un livre sur Android (vous savez l'OS Google pour mobile qui se fait attendre)

vendredi, juillet 18, 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 cette semaine.

Eclipse
  • Ce billet n'est pas nouveau mais il m'a particulièrement intéressé. Il s'agit d'un retour d'utilisation de Guice avec Eclipse RCP. Pour info, Guice est un conteneur très léger pour faire de l'injection de dépendance. Le billet présente la mise en place d'une architecture MVC par vue.
  • Le projet Riena (blog) est une surcouche pour les applications Eclipse RCP permettant d'ajouter un look "entreprise" aux applications. J'entends pas apparence "entreprise" des applications qui proposent des composants formulaires et où la navigation suit une logique métier. Ce projet a donc pour objectif de faciliter la mise en oeuvre de ce type d'application.

mercredi, juillet 16, 2008

Sauvegarder la configuration d'exécution sous Eclipse ...

Quand vous utilisez un projet sous Eclipse et que vous souhaitez exécuter ce projet, vous passez généralement par une configuration d'exécution.

L'outil proposé par Eclipse vous facilite l'édition de nombreux paramètres. Prenons le cas d'une application Eclipse, les options généralement modifiées sont les paramètres d'exécution, les plug-ins du framework Eclipse employés et pleins d'autres choses ...

Si, comme moi, vous avez besoin de garder une trace de ces modifications (par exemple dans le cas d'une importation d'un projet) vous avez moyen de sauvegarder cette configuration d'exécution dans un fichier.

Pour cela, ouvrez l'outil d'édition des configurations d'exécution via le menu (Run -> Run Configurations... ) ou via le bouton de la barre d'outil d'Eclipse montré sur la capture d'écran ci-dessous.

Choisissez l'onglet Common puis sélectionnez l'option Shared file. Précisez un nom en sélectionnant comme répertoire celui du projet auquel la configuration appartient.

Ainsi, dés que vous importerez ce projet dans un autre workspace, la configuration d'exécution sera déjà prête. Elle sera automatiquement affichée dans la liste des configurations. Il ne vous restera qu'à exécuter.

J'ai pris comme exemple la configuration d'exécution d'une application Eclipse, mais ça fonctionne également pour tout projet qui utilise une configuration d'exécution (Java, JUnit, ...).

jeudi, juillet 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 cette semaine.

Eclipse
  • Le projet NatTable 1.5 fournit un composant graphique de type Table. A utiliser si vous sentez que le composant SWT ne fait pas l'affaire (annonce sur Eclipse Zone).
  • Le projet RCP Toolbox fournit des composants supplémentaires pour vos applications Eclipse. Malheureusement la release 1.0 est payante. Il reste quand même une version 0.4 à disposition en OpenSource sur Sourceforge (annonce sur Eclipse Zone).
  • Vous souhaitez utiliser Visual Editor sur Ganymede et vous êtes désespéré que ce projet ne soit pas compatible (et depuis la 3.3 !!!), voici un article qui explique comment résoudre ce problème. A quand un GUI Builder pour SWT aussi bon que Matisse ou Visual Studio. D'un autre côté, je ne suis pas contre d'utiliser un autre IDE, c'est simplement que pour faire du SWT sans Eclipse, les outils sont rares.
  • Annoncé la dernière fois, c'est bon, EclipseLink est estampillé 1.0 ; l'annonce sur le blog de l'équipe et le site du projet.
Divers
  • En fouillant sur DZone, j'ai remarqué que le site proposait en téléchargement libre (il faut s'inscrire pour ouvrir un compte), un ensemble d'articles très bien réalisé. Il y en a pour tous les sujets (IntelliJ IDEA, Design Patterns, jQuery Selectors, Spring Configuration, ...). Par ailleurs, il y a des annonces sur les prochains articles (GlassFish Application Server le 14 juillet, ...).