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