samedi, mars 06, 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 3.5.2 est sortie (page de téléchargement)
  • Deux chapitres du livre OSGi and Equinox sont disponibles au téléchargement. Le premier concerne une introduction à OSGi chapitre 1 et le second discute de la partie service dynamique chapitre 6.
Java
  • Un article qui présente les hébergeurs gratuits pour disposer d'un entrepôt SVN sur le net.

lundi, mars 01, 2010

GTUG Poitou-Charentes

Après le JUG Poitou-Charentes, voici venir le GTUG Poitou-Charentes qui est un groupe d'utilisateurs pour les technologies Google. Le GTUG a pour objectif de discuter autour des produits Google comme ces platformes (Android, App Engine) ces APIs (Youtube, GMail, Buzz, Wave, ...) ou encore ces différentes initiatives.

La première, prévue pour le 20 mars 2010, propose le programme suivant
  • 16h00-17h00 : Présentation d'Android et Utilisation d'OpenGL avec le SDK 2.0 - par Lenn Angel, le leader de ce GTUG.
  • 17h00-19h00 : Ateliers codage sur Android (sujet discuté sur place selon le nombre d'inscrits)
  • 19h00 : Dialogues autour d'un buffet
Pour vous inscrire à cet atelier, visitez cette page. Dépêchez-vous le nombre de places est réduit.

mercredi, février 24, 2010

J'ai besoin ... de connaître les différences entre une vue et un éditeur d'une application Eclipse

Actuellement je suis en train de rédiger un support de cours sur le sujet des éditeurs. Je profite de ma série des J'ai besoin ... pour m'intéresser dans ce billet à lister les différences entre une vue et un éditeur tous deux utilisés dans la plateforme Eclipse.
  • Un éditeur est commun à toutes les perspectives d'une fenêtre. Si l'éditeur est fermé à partir d'une perspective il est fermé pour toutes les perspectives de la fenêtre.
  • Il n'est pas possible d'empiler une vue avec un éditeur
  • Un éditeur n'est pas détachable
  • Un éditeur a obligatoirement une barre de titre
  • Un éditeur n'a pas de barre de menus et de barre d'outils localisées, il partage avec les barres de la fenêtre. Toutefois, un éditeur peut avoir son propre menu contextuel.
  • Un éditeur peut être instancié plusieurs fois pour un type d'éditeur donné. Une vue ne possède qu'une seule instance (cas particulier avec l'identifiant secondaire)
  • Un éditeur apparaît à un seul endroit de la page alors qu'une vue peut être déplacée
  • Un éditeur peut être dans un état "modifié", son contenu peut ainsi être sauvegardé
  • Un éditeur peut être associé à un nom de fichier ou à une extension et cette association peut être modifiée par l'utilisateur
La question importante à se poser est Quand utiliser un éditeur ?
  • Quand le contenu est considéré comme l'élément central de la fenêtre. Toutes les vues sont utilisées comme support (outline, explorer, ...).
  • Quand il est nécessaire de fournir des actions spécifiques pour l'édition (sauvegarde, menu contextuel, ...)
Je ne suis pas exhaustif de cette présentation. Ces informations sont tirées de la FAQ d'Eclipse (lien) et du livre Eclipse Rich Client Platform - Designing, Coding, and Packaging Java Applications (lien). Si vous pensez que d'autres éléments doivent figurer, n'hésitez pas.

Vous pourrez trouver prochainement ces informations dans le support de cours que je suis en train de rédiger sur le sujet des éditeurs, patience ...

samedi, février 20, 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
  • Il ne vous reste que quelques jours pour voter pour les contributeurs Eclipse (date limite le 26 février 2010). Voici la page pour apporter votre vote.
  • Un site de la fondation Eclipse qui permet de lister un ensemble d'applications Eclipse RCP.
  • A la recherche du nouveau logo d'Eclipse, voici la page où vous pouvez trouver les premières propositions (source DZone).
  • Angelo Zerr est de retour avec trois nouveaux billets (billet 15, 16 et 17).
Java
  • Le framework Play fait parler de lui. Voici un article intéressant sur le sujet.

lundi, février 15, 2010

Introduction aux Architectures Orientées Services (SOA) : Web Services

Une nouvelle série de support de cours concernant les Web Services via la plateforme Java débute. Comme vous le constatez, je peux faire autre chose que de la plateforme Eclipse.

Ce premier support de cours vise à montrer l'importance des Web Services dans une architecture orientée services (SOA).

J'introduis les notions qui seront étudiées dans les prochains supports de cours.
  • La technologie des Web Services étendus (WSDL, SOAP, UDDI) comme solution de mise en œuvre.
  • La plateforme Java (JAX-WS, OpenESB) employée comme plateforme de développement.
Si vous avez des commentaires, des souhaits, n'hésitez pas, profitez de ce billet.

Le lien du support de cours est disponible ici.

dimanche, février 07, 2010

J'ai besoin d'... exposer mes services OSGi en Web Service via JAX-WS et Java 6

Depuis quelques temps je suis en train de découvrir le framework Web Service JAX-WS et j'essaye de voir s'il peut être utilisé dans différentes situations non conventionnelles.

A cette occasion, je montre dans ce billet comment il est possible d'utiliser JAX-WS dans un bundle OSGi qui expose des services. Plus précisément, j'utilise les fonctionnalités offertes par Java 6 pour le déploiement de Web Services JAX-WS sans utiliser de serveur d'application. Un serveur intégré à Java 6 est automatiquement créé pour l'occasion.

Une fois créé le bundle (appelé JAXWSWithOSGI), une interface Java doit être définie décrivant le contrat du service OSGI.
@WebService
public interface IHelloWorldService {
String makeHelloWorld();
}
A noter que l'annotation @WebService est utilisée pour exposer cette interface comme un Web Service.

Ci-dessous, la classe l'implémentation du service HelloWorldImpl décrit le traitement du Web Service.
@WebService(endpointInterface="jaxwswithosgi.IHelloWorldService")
public class HelloWorldImpl implements IHelloWorldService {
public String makeHelloWorld() {
return "Hello World";
}
}
Au niveau de la classe Activator (classe utilisée pour la gestion du cycle de vie du bundle), nous définissons au niveau du démarrage du bundle (méthode start) l'instance de l'implémentation du service et l'enregistrement auprès du registre de services du conteneur OSGI. Par la suite, nous utilisons la classe Endpoint pour exposer le service OSGI comme Web Service. A noter que le premier paramètre de la méthode publish permet d'indiquer l'URL de déploiement. De ce fait, cette instruction lancera un serveur Web très léger permettant d'exposer ce Web Service.
public class Activator implements BundleActivator {
public void start(BundleContext context) throws Exception {
IHelloWorldService ref = new HelloWorldImpl();
context.registerService(IHelloWorldService.class.getName(), ref, new Hashtable());

publish = Endpoint.publish("http://localhost:8080/IHelloWorldService", ref);
System.out.println("Bundle started.");
}

public void stop(BundleContext context) throws Exception {
publish.stop();

System.out.println("Bundle stopped.");
}
}
Dans la méthode stop de la classe Activator, nous indiquons que l'exposition du Web Service doit se terminer.

Pour utiliser JAX-WS, il faut ajouter les bibliothèques (Jar) de l'implémentation de référence qui est Metro dans le classpath du bundle. La liste des fichiers est donnée ci-dessous :
  • webservices-api.jar
  • webservices-extra.jar
  • webservices-extra-api.jar
  • webservices-rt.jar
  • webservices-tools.jar
Démarrer une configuration d'exécution pour effectuer le test. Vous remarquerez qu'au démarrage du bundle que le Web Service est publié à l'adresse http://localhost:8080/IHelloWorldService. De même l'accès au document WSDL se fait via cette adresse http://localhost:8080/IHelloWorldService?wsdl.

Il ne reste plus qu'à développer un client JAX-WS en partant de la description WSDL.

Leçon 3 : Interaction entre Plug-ins / Vues sur Developpez.com

La troisième leçon concernant l'interaction entre plug-ins et les vues est désormais disponible sous le format d'un article Developpez.com.

Pour rappel les deux précédentes leçons sont également disponible (billet).

dimanche, janvier 31, 2010

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

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

Vous trouverez donc dans ce billet, les supports de la leçon 3.
La dernière leçon devrait être disponible prochainement.

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
  • Deux billets synthétiques sur la présentation d'Hibernate Search (billet 1 et billet 2).
  • Un article sur l'intégration d'OpenID dans le développement d'applications Web en Java.

dimanche, janvier 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
  • Un billet qui propose une vidéo d'un splash screen animé pour e4.
  • Des exemples d'amélioration autour de l'API SWT.
  • Un billet qui décrit comment construire un plugin pour Nexus à partir du plugin m2eclipse
  • Spring DM le serveur d'application JEE de Spring Source architecturé autour d'OSGi est maintenant un projet Eclipse.
Java
  • Une leçon de langage autour de Java
  • Le projet Lombok génère des méthodes utiles (toString(), equals(), get et set) à partir d'annotation (source d'une discussion Developpez.com). Un article sur developerWorks est disponible.
Divers
  • Le site bitnami permet de simplifier les installations de la plupart des outils Web du monde libre (Joomla, Wordpress, Redmine). Merci à ph.charriere pour le tuyau.

vendredi, janvier 08, 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
  • Deux tutoriels qui présentent comment créer une application RCP en utilisant e4 (partie 1 et partie 2)
  • Ce billet présente comment slf4j s'invite dans l'OSGi d'Eclipse
  • Angelo Zerr revient avec deux billets (billet 13 et 14). Vous trouverez sur cette page un récapitulatif des différents billets.
Divers
  • Un article très intéressant sur la description d'un pattern nommé Specification pour la gestion des règles métier
  • Ninite est un service qui permet de regrouper l'installation de logiciels (Java, Notepad++, Firefox, ...). Très pratique quand il faut réinstaller sa machine (merci à Stéphane pour l'information)

jeudi, décembre 31, 2009

Meilleurs voeux pour 2010 ... les perspectives 2010

Je profite de ce dernier billet de 2009 pour vous souhaitez mes meilleurs vœux pour l'année 2010. J'espère que cette nouvelle année sera riche en actualités autour des technologies Java et spécialement Eclipse. N'oublions pas que l'année 2010 devrait voir apparaître la nouvelle version d'Eclipse : e4.

Concernant mes résolutions pour l'année 2010, j'espère de nouveaux supports de cours et de nombreux billets techniques.

Je dresse ci-dessous ma feuille de route de mes prochains travaux.
  • Finaliser les ateliers sur la construction de plug-in avec la plateforme Eclipse
  • Workbench Editor
  • Workbench Forms (pratiquement terminé, il me reste une partie sur les Editors)
  • Introduction à Eclipse RCP
  • Introduction à EMF (indispensable pour e4)
  • Web Service (WSDL, SOAP, UDDI, JAX-WS, RESTful et BPEL)
  • Concernant mon blog, je me fixe au moins autant de billets que l'année 2009.

lundi, décembre 28, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées pendant ces vacances de noël.

Eclipse
  • Une présentation filmée d'EclipseCon 2009 qui s'intéresse à effectuer une comparaison entre RAP et GWT pour le développement Java côté Web.
  • Les soumissions à EclipseCon 2010 sont très nombreuses, pour preuve regardez ici.
  • Un article qui présente comment définir des breakpoints avec des contraintes.
  • Angelo Zerr profite des fêtes de fin d'année pour publier des billets sur la conception d'un client Eclipse RCP et serveur OSGi avec Spring (billet 12).
Java
  • Un guide qui explique comment utiliser Glassfish 3 en mode embarqué. Ainsi vous apprendrez à utiliser Glassfish comme une librairie.

samedi, décembre 26, 2009

J'ai besoin d'... installer l'outil de gestion de projets Redmine sous Windows

Redmine est un outil de gestion de projets à la Trac ou Mantis. Il fournit une interface graphique Web très agréable. Je l'utilise depuis plus d'un an pour la gestion des projets au travail et j'en suis très satisfait. Depuis peu, j'ai réalisé une installation sur un nouveau serveur et je profite de ce billet pour décrire les étapes de cette installation.

Redmine est développé en Ruby et je présente un manuel d'installation pour Windows et le SGBD PostgreSQL.

Le plan de cette installation est le suivant
  • Téléchargement
  • Pré-requis logiciels
  • Pré-installation
    • Ruby
    • RubyGems
    • Ruby modules
    • Préparation de la base de données

  • Installation
  • Utilisation Apache 2.2 comme Proxy
Téléchargement
La distribution officielle de Redmine est disponible à cette adresse (http://rubyforge.org/frs/?group_id=1850)

Pré-requis logiciels
Vous devez installer et configurer les outils suivant avant d'installer Redmine
  • Ruby (procédure d'installation est décrite dans ce billet)
  • Apache 2.2 HTTP
  • PostgreSQL 8.2
Pré-installation / Ruby
Ruby est un langage open-source dynamique qui met l'accent sur la simplicité et la productivité. Sa syntaxe élégante en facilite la lecture et l'écriture [Citation : http://www.ruby-lang.org/fr/].

Pour l'installation, la version 1.8.6 a été utilisée.
Pré-installation / RubyGems
RubyGems est l'outil de gestion de package de Ruby.
  • Télécharger le package RubyGems (http://rubyforge.org/frs/?group_id=126)
  • Extraire l'archive dans un répertoire temporaire
  • Ouvrir un invite de commande, se placer dans le répertoire créé précédemment et exécuter l'instruction suivante
ruby setup.rb
Pré-installation / Ruby Modules
Certains modules pour le langage Ruby doivent être installés (prise en compte de PostgreSQL par exemple), exécuter l'instruction suivante
gem install rails mongrel mongrel_cluster postgres-pr mongrel_service
Pré-installation / Préparation de la base de données
Les instructions suivantes concernent le SGBD PostgreSQL.
  • Créer un utilisateur Redmine
createuser redmine --no-superuser --no-createdb --no-createrole --login --pwprompt --encrypted -U postgres
  • Créer un nouveau schéma de base de données
createdb --owner=redmine --encoding=utf-8 redmine -U postgres
Installation
  • Décompresser l'archive de Redmine dans un répertoire d'installation (exemple : d:\tools\redmine)
  • Créer une copie du fichier database.yml.example en le renommant database.yml
  • Modifier le contenu du fichier database.yml file de façon à paramétrer les informations de connexion à la base de données.
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: redmine
encoding: utf8
  • Ouvrir un invite de commande Windows, se placer dans le répertoire de Redmine et suivre les instructions suivantes
  • Pour initialiser la session
rake config/initializers/session_store.rb
  • Pour utiliser la configuration de production
rake db:migrate RAILS_ENV="production"
  • Pour paramétrer la configuration de production
rake redmine:load_default_data RAILS_ENV="production"
  • A la question relative au langage, choisir l'option fr
  • Créer une copie du fichier email.yml.example en le renommant email.yml
  • Modifier le contenu du fichier email.yml file de façon à paramétrer les informations d'envoi d'emails.
production:
delivery_method: :smtp
smtp_settings:
address: "monserveur.email.fr"
port: 25
domain: "monserveur.email.fr"
authentication: :plain

development:
delivery_method: :smtp
smtp_settings:
address: "monserveur.email.fr"
port: 25
domain: "monserveur.email.fr"
authentication: :plain
  • Démarrer le serveur Ruby via la commande suivante :
mongrel_rails start --environment=production
  • Pour tester l'application Redmine, ouvrir un navigateur et saisir l'URL suivante :
http://localhost:3000
Utiliser Apache 2.2 comme Proxy
  • Créer ou mettre à jour le fichier http-proxy.conf situé dans le répertoire apache/conf
  • Saisir le contenu suivant en l'adaptant à votre configuration
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ProxyRequests Off
<proxy>
Order deny,allow
Allow from all
</proxy>

Alias /redmine "D:/tools/redmine/public"
<directory>
Options Indexes FollowSymLinks
AllowOverride none
Order allow,deny
Allow from all
</directory>

ProxyPass /redmine/images !
ProxyPass /redmine/stylesheets !
ProxyPass /redmine/javascripts !
ProxyPass /redmine/ http://127.0.0.1:4000/
ProxyPass /redmine http://127.0.0.1:4000/
ProxyPassReverse /redmine/ http://127.0.0.1:4000/
  • Ajouter à la fin du fichier httpd.conf d'Apache 2.2, l'instruction suivante
Include conf/http-proxy.conf
  • S'assurer que l'instruction suivante est dé-commentée dans le fichier httpd.conf
LoadModule alias_module modules/mod_alias.so
  • Démarrer le serveur Ruby via l'instruction suivante
mongrel_rails start --environment=production -p 4000
  • Vérifier que l'URL http://localhost/redmine fonctionne. Seule la première page s'affiche. Par ailleurs, les images ne s'affichent pas correctement.
  • Arrêter le serveur Ruby
  • Se déplacer à la racine du répertoire Redmine et exécuter la ligne de commande suivante.
ruby script/plugin install http://svn.napcsweb.com/public/reverse_proxy_fix
  • A la question de l'URL, saisir l'URL complète (exemple : http://monserveur/redmine)
  • A la question de la version de Rails, sélectionner la valeur 2.0, 2.1, 2.2
  • Pour installer Redmine comme un service Windows, exécuter l'instruction suivante à partir du répertoire Redmine
mongrel_rails service::install -N Redmine -p 4000 -e production
  • A partir du panneau d'administration de Windows, activer le démarrage automatique du service Redmine de telle sorte que l'application Redmine se lance au démarrage de Windows.

lundi, décembre 21, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
Java
  • Une présentation filmée au JUG Paris sur le sujet des Servlet 3.

dimanche, décembre 06, 2009

J'ai besoin d' ... ajouter dynamiquement des éléments à un menu Eclipse

Lars Vogel propose sur son blog un billet qui explique comment créer et afficher une commande à l'exécution d'une application Eclipse.

Sur le support de cours des commandes que je propose depuis peu, je vais un peu plus loin dans la démonstration. Je montre comment créer et afficher une commande dans un menu en ajoutant une restriction visibleWhen. Je vous propose dans ce billet une explication de cet exemple.

Une vue est utilisée pour ajouter la commande dans le menu principal. Il est ensuite possible d'afficher ou de cacher la commande du menu. Pour cela la vue fournit trois boutons (Create, Hide et Show). Vous trouverez ci-dessous des captures d'écran de l'exemple.




Au niveau des pré-requis, je suppose qu'une commande et un handler sont définis. L'identifiant de la commande est ...helloworldcommandid

Au niveau du code de l'action du bouton Create, présenté ci-dessous, il est codé que la commande doit s'afficher dans la barre de menu principal (menu:org.eclipse.ui.main.menu), que l'identifiant de la commande est ...helloworldcommandid et enfin que la restriction visibleWhen est contrainte par l'expression définie par currentExpression.
public void createParControl(Composite parent) {
...
final Button myButton = new Button(parent, SWT.NONE);
myButton.setText("Create");
myButton.setLayoutData(myData);
myButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
IMenuService service = (IMenuService)PlatformUI.getWorkbench().getService(IMenuService.class);
AbstractContributionFactory ref = new AbstractContributionFactory("menu:org.eclipse.ui.main.menu", null) {
public void createContributionItems(IServiceLocator serviceLocator, IContributionRoot additions) {
CommandContributionItemParameter commandParameter = new CommandContributionItemParameter(serviceLocator, "contributionitem",
"eclipse.workbench.commandsprogrammaticvisiblewhenexamples.helloworldcommandid" CommandContributionItem.STYLE_PUSH);
currentExpression = new Expression() {
public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
if (isVisible) {
return EvaluationResult.TRUE;
} else {
return EvaluationResult.FALSE;
}
}
};
item = new CommandContributionItem(commandParameter);
additions.addContributionItem(item, currentExpression);
}
};
service.addContributionFactory(ref);
myButton.setEnabled(false);
}
});
...
}
Dans la méthode evaluate, vous noterez que l'attribut isVisible est utilisé pour aiguiller si la commande doit être affichée ou pas. Toute la difficulté est de notifier l'expression lorsque l'attribut isVisible est modifié. Pour cela, j'ai examiné le code source de la plateforme Eclipse (merci l'Open Source) et j'ai remarqué que les expressions utilisées pour les restrictions visibleWhen étaient notifiées lorsque la Shell de la WorkbenchWindow recevait un événement Activate.

Ci-dessous est présenté le code utilisé pour mettre à jour l'expression définie par currentExpression.
private void updateExpression() {
WorkbenchWindow current = (WorkbenchWindow)PlatformUI.getWorkbench().getActiveWorkbenchWindow();
final Set<evaluationreference> menuRestrictions = current.getMenuRestrictions();
if (menuRestrictions == null) {
return;
}
IEvaluationService es = (IEvaluationService)PlatformUI.getWorkbench().getService(IEvaluationService.class);
IEvaluationContext currentState = es.getCurrentState();
EvaluationReference[] refs = (EvaluationReference[]) menuRestrictions.toArray(new EvaluationReference[menuRestrictions.size()]);
boolean changeDetected = false;
for (EvaluationReference evalRef : refs) {
final Expression expression =evalRef.getExpression();

if (expression == currentExpression) {
evalRef.setPostingChanges(true);
boolean os = evalRef.evaluate(currentState);
evalRef.clearResult();
boolean ns = evalRef.evaluate(currentState);
if (os != ns) {
changeDetected = true;
evalRef.getListener().propertyChange(new PropertyChangeEvent(evalRef, evalRef.getProperty(), valueOf(os), valueOf(ns)));
}
}
}

if (changeDetected) {
IMenuService ms = (IMenuService) PlatformUI.getWorkbench().getService(IMenuService.class);
if (ms instanceof WorkbenchMenuService) {
((WorkbenchMenuService) ms).updateManagers();
}
}
}
Si vous examinez la méthode liftRestrictions de la classe WorkbenchWindow, vous noterez que cela est très similaire. De manière à éviter de rafraichir l'intégralité des expressions des restrictions visibleWhen, j'ai placé un filtre sur l'expression définie précédemment.

Enfin, sur le code des actions des boutons hide et show, l'attribut isVisible est modifié et la méthode updateExpression est appelée. Ci-dessous est présenté le code de l'action show.
public void createPartControl(Composite parent) {
...
Button hideMenuContribution = new Button(parent, SWT.NONE);
hideMenuContribution.setText("Hide");
hideMenuContribution.setLayoutData(myData);
hideMenuContribution.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
isVisible = false;
updateExpression();
}
});
}
Les codes sources de l'exemple sont disponibles à cette adresse.

samedi, décembre 05, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Un billet de Lars Vogel qui propose une liste gratuite d'icônes pour vos applications Eclipse RCP (ou autre).
  • Le nouveau projet Gemini hébergé par la fondation Eclipse se veut être un conteneur de différentes spécifications Entreprise Java EE pour le monde OSGi (JPA, JMX, ...). Pour information, la fondation Apache se lance également dans ce créneau via le projet Apache Aries.
  • Lars Vogel propose un nouveau tutoriel sur le sujet du Drag & Drop.
  • Si vous souhaitez comprendre ce qu'est un nature dans la plateforme Eclipse, lisez ce tutoriel proposé par Lars.
  • Le projet OpenSocial Gadgets regroupe un ensemble de composants comme ceux que l'on peut trouver sur la page iGoogle (billet de l'annonce).
  • Un article qui présente les techniques de refactoring avec l'environnement de développement Java (JDT) d'Eclipse.
Java
  • Un billet qui explique comment rediriger le port 8080 de Tomcat vers le port 80 d'Apache 2
  • Java 7 se prépare voici la milestone 5. Sur cette page vous trouverez les exécutables à télécharger.
  • Simple est une bibliothèque qui permet de sérialiser et de-sérialiser en XML. L'aspect intéressant de cette bibliothèque est la définition de la structure du schema XML par annotation de classe Java (tutoriel).
  • Un article qui présente les closures qui seront disponibles dans la prochaine version de Java.
Divers
  • Pour le fun, un site qui permet de générer des nuages de mots clés.

mercredi, novembre 25, 2009

Introduction à la construction de Commandes avec la plateforme Eclipse

Un support de cours concernant la construction de commandes est disponible sur le site de Developpez.com. Il fait partie de la série des supports de cours liée au Workbench et il fait suite au support de cours relatif aux vues.

Les aspects suivants sont étudiés :
  • Avant les commandes il y avait les actions
  • Construction par déclaration et programmation des commandes
  • Elément menuContribution par déclaration
  • Raccourcis clavier
  • Restrictions (visibleWhen, enabledWhen et activeWhen)
  • Paramétrer les commandes
  • Restrictions par programmation
  • Réutilisation (Plugin Spy et activation des traces)
Le lien du support de cours et les exemples peuvent être trouvés ici.

samedi, novembre 14, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • De retour de Eclipse Summit Europe, Tom Schindl fournit les transparents de ces sessions. Les travaux présentés sont centrés sur le futur Eclipse e4.
  • Même si e4 se prépare pour une sortie en 2010, il ne faut pas oublier que Eclipse 3.6 se prépare également. Eclipse 3.6 M3 est disponible (page de nouveautés et page de téléchargement).
Java
  • Tomcat a 10 ans, un grand bravo pour un serveur d'application léger très pratique pour mes développements et la préparation de mes supports de cours.
  • Subversion devient un projet de la fondation Apache. De mon point de vue il s'agit d'une très bonne nouvelle (annonce).
  • Le projet Atmosphere permet de faire du push serveur sur n'importe quel type de serveur d'application. A noter que la fonctionnalité de faire du push serveur sera intégrée dans la prochaine version de Servlet 3.0
Divers
  • Un billet très pratique qui présente tout un tas d'expressions régulières pour faire par exemple un tri sur une adresse email correctement formée ...

vendredi, novembre 13, 2009

Google Wave, mon invitation est arrivée

Un petit billet pour vous annoncer que je viens enfin de recevoir une invitation pour Google Wave. Je vous ferai un retour très prochainement.

Cette invitation est accompagnée d'autres invitations. Les plus motivés qui me laissent un commentaire auront droit à des invitations.