Howto create a new project nature in Eclipse

This post is a translation of an older post of mine that I’ve originally written in French.

This post shall be the first of a series about Eclipse as a platform instead of an IDE.

The style will be minimalistic, in the sense that I’ll go directly into the how to do the things, with no (or few) explanations.

In this post, I’ll show how to create a new project nature that you can associate later with a new or an existing project.
Read more of this post

Préparation de l’environnement : configuration de Jetty

Dans ce triosième volet de la série parlant de l’utilisation d’OSGi côté serveur, je vais présenter comment on peut configurer jetty.

Par défaut, Jetty utilise le port 8080, ce qui peut poser problème quand on a un autre serveur sur ce port.

Pour résoudre celà, on va créer un fragment qui contient les fichiers de configuration de Jetty. J’avais présenté en détail comment céer un fragment dans le billet précédent : « Préparation de l’environnement : configuration de log4j »

Read more of this post

Comment créer une nouvelle nature de projet ?

Ce billet entame une série de billets de type howto que je compte rédiger autour d’Eclipse en tant que plateforme de développement et non plus comme IDE.

Disons que c’est une sorte d’aide mémoire, pour moi certainement, et pour vous aussi je l’espère.

Le style sera un peu minimaliste : je vais aller directement à l’essentiel et au pratique, sans détailler la théorie de la chose : je vais montrer comment faire telle chose, pas ce qu’elle est ou à quoi elle sert.

Commençons par un point simple : Comment créer une nouvelle nature de projet ?

Read more of this post

Update-site de Galileo

Juste pour info, voici l’update-site central de la future version d’Eclipse 3.5 Galileo :

=> http://download.eclipse.org/releases/galileo/

Je viens de tester rapidement avec un Eclipse RCP Galileo M6, et j’ai pu installer Subversive et le Web Page Editor à partir de cet update-site.

[edit]Bon, après que j’ai installé le connecteur SVNKit du site de polarion, ça a été la cata xD … voilà, vous êtes prévenus :p

—-

Préparation de l’environnement : configuration de log4j

Dans ce second volet de la série de l’utilisation d’OSGi côté serveur, je vais présenter comment on peut configurer log4j pour qu’on puisse voir les logs générés par les différents bundles dans la console d’Eclipse.

Dans un programme Java ordianire, log4j cherche un fichier log4j.properties (ou xml) dans le racine du classpath. Or, dans un conteneur OSGi, la notion de classpath est différente. On n’a plus de classpath unique par application, mais plutôt un classpath séparé par bundle.

Read more of this post

Il n’est plus possible d’utiliser Scala dans un dynamic web project (dans eclipse)

Qu’est ce que ça fait plaisir de voir que je ne suis pas seul au monde :

http://vikasrao.wordpress.com/2009/02/19/scala-nature-in-eclipse/

En gros, avec le nouveau plugin Scala, bien qu’il soit beacoup plus simple d’ajouter une nature Scala à un projet Java (clic droit, “Scala Tools> Add Scala Nature”, ceci ne marche pas avec un projet de type “Dynamic web project” … exit donc ça ou ça :(

=> https://lampsvn.epfl.ch/trac/scala/ticket/1744

—-

[Java] Sortie d’Eclipse Ganymede 3.4.2 (SR2)

Hier, une seconde version de maintenance d’Eclipse Ganymede 3.4 sorti en Juin dernier était rendu disponible. Il s’agit de la version 3.4.2 ou Service Release 2 (SR2) qui apporte principalement des correctifs aux bugs découverts depuis la sortie d’Eclipse 3.4.

A noter que tous les packages d’Eclipse Ganymede sont disponibles dans cette version.

La version SDK est téléchargeable par ici :

=> http://download.eclipse.org/eclipse/downloads/drops/R-3.4.2-200902111700/index.php

A noter aussi que les packages (rcp, jee, etc.) ne sont pas encore directement disponibles dans la nouvelle version, dans la mesure où la page http://www.eclipse.org/downloads/ pointe toujours vers les versions SR1.
Toutefois, j’ai pu récupérer la version RCP en SR2, moyennant la modification de l’url de la SR1 de :
http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR1/eclipse-rcp-ganymede-SR1-linux-gtk.tar.gz
à
http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR2/eclipse-rcp-ganymede-SR2-linux-gtk.tar.gz
:p

Et voici un rapport Bugzilla listant les points réglés pour la version 3.4.2 :

=> Rapport Bugzilla

—-

[Eclipse][Java][Mac] Sortie du cinquième Milestone du futur Eclipse Galileo (3.5)

Le cinquième Milestone de la prochaine version d’Eclipse 3.5 du nom de code Galileo (choisi après cette discussion) est disponible (depuis Hier) :

Pour ce qui est des nouveautés, en voici quelques unes (un lien vers la liste complète est fourni à la fin du billet) :

[Suite:]

  • Platform / Equinox
    • Les IHMs d’installation/mise à jour de plugins continuent d’être retravaillés pour maximiser leur utilisabilité :
      p2 install
    • Inclusion d’une implémentation de l’RFC 138 (Composite Bundles) du futur OSGi 4.2.
    • Toujours dans le cadre de l’implémentation du futur OSGi 4.2, quelques ajouts à l’API core d’OSGi, comme org.osgi.framework.Bundle#getVersion() par exemple
  • SWT
    • Le binding Cocoa de SWT n’est plus marqué comme “Early Access” et est désormais “Feature complete”
    • Le style SWT.SEARCH est désormais supporté sur toutes les plateformes
    • StyledText supporte les liens
  • Platform UI
    • Ajout des fonctionnalités “Go To” et “Go Into” au projct Explorer dans un effort de l’amener à pied d’égalité avec le Package Explorer
    • Le style SWT.SEARCH est désormais supporté sur toutes les plateformes
    • StyledText supporte les liens
  • JDT : Le tooling de développement Java
    • Possibilité de faire le rename refactor depuis le quick fix
    • Le JAr Exporter peut maintenant packager les dépendances sous forms de Jars dans le jar exporté ou à côté.
  • PDE : Le tooling de développement de plug-ins Eclipse
    • Les préférences des target platforms ont été retravaillés
    • Là c’est mon favori sans le moindre doute : possiblité de définir les Start level des plugins dans Eclipse application launch configuration, comme ça l’est déjà pour OSGi framework launch configuration
    • La vue “Plugin Registry” permet désormais de requêter les services OSGi

=> Liste complète des nouveautés Nouveautés
=> Télécharger (la version SDK)

=> Si vous sautez le pas et décidez de tester l’une ou l’autre des versions Galileo, vous êtes encouragés à parler de vos impressions dans cette discussion dans le forum Eclipse Java :

Vos impressions sur Galileo (Eclipse 3.5) ?

—-

Préparation de l’environnement : la target platform

Ce billet est le premier d’une série (que j’espère finir pour une fois) de billets à propos de l’utilisation d’OSGi du côté serveur.
L’utilisation la plus populaire d’OSGi est plus du côté client, avec Eclipse qui l’utilise comme noyeau et base de son architecture de plugins, ainsi que dans le monde de l’embarqué.

Dans ce premier billet, je vais présenter l’étape de préparation de l’environnement de développement,et plus particulièrement la notation de Target Platform.

[Suite:]

1. Présentation

Il s’agit ici de définir l’ensemble initial de plugins qui va constituer l’environnement d’exécution de notre serveur.

Il nous faut aussi configurer Eclipse pour qu’il reconnaisse et travaille sur cet ensemble de plugins.
Ca permettrait d’une part de limiter le nombre de choix présentés dans divers endroits (lors de sélection de plugins requis et des packages importés, des plugins à inclure dans une configuration d’exécution, etc.) mais aussi pour éviter une dépendance accidentelle à un plugin non désiré (je pense notamment aux plugins d’Eclipse par exemple)

2. Vue d’ensemble

La target platform sera constituée de :

  • Equinox : C’est le coeur du serveur. Il implémente les spécifications OSGi et servira comme conteneur qui charge et gère le cycle de vie des autres plugins
  • Spring Dynamic Modules : C’est une sorte de pont entre le monde OSGi (registre des services) et le monde de Spring (application context). De plus, Spring DM permet de faire tourner des applications Web Java ordinaires (Servlets, JSPs, etc.) dans un conteneur OSGi (OSGi offre un support basique pour le web à travers HttpService, mais c’est très limité)
  • Spring : Il est là car tout d’abord il est requis par Spring DM, mais aussi pour son moteur IoC ainsi que les abstractions qu’il offre au dessus de plusieurs technologies Java (JDBC et Remoting entre autres)
  • Jetty : Comme énoncé plus tôt, le HttpService d’OSGi est très limité parapport à la puissance dont on dispose dans une application web Java ordinaire. J’ai donc inclus Jetty dans la configuration de base de notre serveur pour avoir toute la puissance requise sous la main
  • Quelques autre dépendances, comme des librairies de logging

Notez qu’il est tout à fait possible (et très simple) d’utiliser Tomcat à la place de Jetty. Ceci revient juste à remplacer les jars de Jetty par ceux de Tomcat.

3. Récupération des fichiers nécessaires

Il va nous falloir télécharger plusieurs packages pour retrouver les jars nécessaires.

  • Spring DM : récupérable à cette adresse (pour cet article, j’ai utilisé Spring DM 1.2 M2)
  • Spring Framework : récupérable à cette adresse (pour cet article, j’ai utilisé Spring Framework 2.5.6)

Après avoir extrait les archives de Spring et de Spring DM, Créez quelque part sur votre disque un dossier qui servira à rassembler les jars de la target platform, par exemple ” server-springdm-1.2.0.m2-spring-2.5.6-jetty ” dans mon cas.

Généralement, je crée la target platform en tant que projet (simple) dans mon worksapce Eclipse, histoire de pouvoir le versionner sur SVN par exemple, mais ce n’est pas requis.

Copiez les fichiers suivants depuis le dossier où vous avez extrait Spring DM vers le dossier de la target platform:

  • spring-osgi-1.2.0-m2/dist/spring-osgi-core-1.2.0-m2.jar
  • spring-osgi-1.2.0-m2/dist/spring-osgi-extender-1.2.0-m2.jar
  • spring-osgi-1.2.0-m2/dist/spring-osgi-io-1.2.0-m2.jar
  • spring-osgi-1.2.0-m2/dist/spring-osgi-web-1.2.0-m2.jar
  • spring-osgi-1.2.0-m2/dist/spring-osgi-web-extender-1.2.0-m2.jar
  • spring-osgi-1.2.0-m2/lib/com.springsource.net.sf.cglib-2.1.3.jar
  • spring-osgi-1.2.0-m2/lib/com.springsource.org.aopalliance-1.0.0.jar
  • spring-osgi-1.2.0-m2/lib/com.springsource.slf4j.api-1.5.0.jar
  • spring-osgi-1.2.0-m2/lib/com.springsource.slf4j.log4j-1.5.0.jar
  • spring-osgi-1.2.0-m2/lib/com.springsource.slf4j.org.apache.commons.logging-1.5.0.jar
  • spring-osgi-1.2.0-m2/lib/jetty-6.1.9.jar
  • spring-osgi-1.2.0-m2/lib/jetty.start.osgi-1.0.0.jar
  • spring-osgi-1.2.0-m2/lib/jetty-util-6.1.9.jar
  • spring-osgi-1.2.0-m2/lib/jetty.web.extender.fragment.osgi-1.0.1.jar
  • spring-osgi-1.2.0-m2/lib/log4j.osgi-1.2.15-SNAPSHOT.jar
  • spring-osgi-1.2.0-m2/lib/org.eclipse.osgi-3.2.2.jar
  • spring-osgi-1.2.0-m2/lib/servlet-api.osgi-2.5-SNAPSHOT.jar
  • spring-framework-2.5.6/dist/modules/spring-aop.jar
  • spring-framework-2.5.6/dist/modules/spring-beans.jar
  • spring-framework-2.5.6/dist/modules/spring-context.jar
  • spring-framework-2.5.6/dist/modules/spring-core.jar
  • spring-framework-2.5.6/dist/modules/spring-jdbc.jar
  • spring-framework-2.5.6/dist/modules/spring-tx.jar
  • spring-framework-2.5.6/dist/modules/spring-web.jar
  • spring-framework-2.5.6/dist/modules/spring-webmvc.jar

Pour vous simplifier la tache, vous pouvez télécharger cet archive zip (5 Mo) qui contient la target platform décrite plus haut)

4. Configuration d’Eclipse

Dans Eclipse, allez au menu Window -> Preferences et localisez le noeud “Plug-in Development/Target Platform”

Target Platform Preferences

Cliquez sur “Browse”, localiser le dossier de la target platform et validez.

Il nous faut maintenant créer une configuration de lancement qui lance notre serveur.

Faites un clic sur le petit flêche orienté vers le bas du bouton Run et sélectionnez “Run configurations”

Run config 1

Sélectionnez le noeud “OSGi Framework”, puis clic droit et “New”

Run config 2

Saisissez un nom pour cette configuration, “serveur” par exemple.
Par défaut, tous les plugins de la target platform sont cochés. Faites le si ce n’est pas le cas.

Assurez vous aussi que “Default start level” est positionné à 4 et que “Default-Autostart” est à true

Il faut maintenant modifer le start level des deux extenders de Spring DM (org.springframework.osgi.extender et org.springframework.osgi.web.extender) pour les mettre à 5

extender-config-1

extender-config-2

Cliquez sur “Apply” pour valider.

5. Test

Cliquez sur le bouton “Run”. La console devrait afficher :

console

Et si vous tapez l’adresse “http://localhost:8080/” dans un navigateur, vous devriez avoir :

Browser

—-

[Eclipse][Java][OpenSource] Sortie du quatrième Milestone

Le quatrième Milestone de la prochaine version d’Eclipse 3.5 du nom de code Galileo (choisi après cette discussion) est disponible (depuis Vendredi dernier) :

Pour ce qui est des nouveautés, en voici quelques unes (un lien vers la liste complète est fourni à la fin du billet) :

[Suite:]

  • Platform
    • Cocoa a été porté sur 64bits
    • La boite de dialogue “customize perspective” permet désormais de configurer les éléments des menus
    • Le composant FilteredTree (utilisé dans les préférences par exemple) a été retravaillé visuellement
      filtered-tree
    • Jetty 6.1 remplace Jetty 5.1
  • SWT
    • Possiblité d’appeler du code Java à partir de JavaScript dans le widget Browser, et vice-versa
    • Le composant StyledText permet désormais la sélection par bloc
  • JDT : Le tooling de développement Java
    • Possibilité de supprimer/cacher les working sets via l’action “supprimer” à partir du Package Explorer
    • Nouvelle option lors du formatage pour garder les retours à la ligne
  • PDE : Le tooling de développement de plug-ins Eclipse
    • Amélioration de l’éditeur du produit, ce qui permet de spécifier les états de démarrage des plugins

=> Liste complète des nouveautés Nouveautés
=> Télécharger (la version SDK)

=> Si vous sautez le pas et décidez de tester l’une ou l’autre des versions Galileo, vous êtes encouragés à parler de vos impressions dans cette discussion dans le forum Eclipse Java :

Vos impressions sur Galileo (Eclipse 3.5) ?

—-