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.

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