Déployer avec Equinox p2Equinox p2: Large Scale Deployment

2009 / 3 février
par Benjamin Cabé

La dernière version d’Eclipse annoncée l’année dernière s’est accompagnée de l’émergence d’une nouvelle plateforme de provisioning baptisée p2.

Pendant des années, Eclipse a été livré avec un composant appelé Update Manager, qui permettait aux utilisateurs de mettre à jour leur environnement Eclipse -presque- sans effort. Cependant, au fil des évolutions successives, et en particulier avec l’arrivée de sa version 3.0, Eclipse est devenu bien plus qu’un simple environnement de développement : c’est désormais une véritable plateforme logicielle, basée sur Equinox (l’implémentation Eclipse du standard OSGi). Les besoins en terme de déploiement ne sont donc plus limités à l’installation et la mise à jour de simples plug-ins… Les concepteurs de logiciels basés sur Eclipse doivent pouvoir proposer un installeur de leur produit, qui nécessitera peut-être un gestionnaire de licences qu’il faudra également installer, … et p2 est la plupart du temps la solution à ce type de problématique.

p2: une plateforme de provisioning…

Pour être en mesure de provisionner tout type d’application, l’atout principal de p2 est de ne pas être exclusivement centré sur les environnements Eclipse, ni même sur  les applications Java. Il s’agit d’un simple framework permettant de décrire des éléments à installer, ainsi que leurs dépendances. Ce framework vient avec des implémentations-type permettant d’installer des modules OSGi ou des produits RCP, mais guère plus. Il appartient ensuite aux vendeurs de logiciels qui souhaiteraient, par exemple, installer un exécutable Windows en même temps que leur application Eclipse RCP, d’écrire du code spécifique (en fait, un plug-in p2 !), pour réaliser cette installation correctement.

….en mesure de devenir le prochain standard de déploiement ?

Bien entendu, p2 est encore un jeune projet et peut ne pas sembler assez mature pour être utilisé dans une logique industrielle (pas toujours totalement fiable, outils parfois manquants, …), mais la qualité de cette première version est particulièrement prometteuse. Depuis sa sortie, p2 a su fédérer une communauté d’utilisateurs qui commence à le mettre à profit dans d’autres contextes que des projets purement Eclipse. Des entreprises comme Cloudsmith, EclipseSource, ou Anyware Technologies développent d’ores et déjà des outils basés sur p2 et IBM, entre autres, travaille activement à l’amélioration du noyau p2, ainsi qu’à la définition d’une véritable API.

L’adoption massive d’OSGi dans de nombreux environnements (technologies de runtime telles qu’Equinox ou RAP, serveurs d’applications comme Websphere ou Glassfish…) positionne p2 comme la solution la plus pertinente pour déployer des applications basées sur Eclipse, mais également toutes sortes d’applications scalables. En effet, dès qu’il s’agit de garantir une disponibilité importante des applications, il est indispensable de pouvoir installer ou mettre à jour des modules (parfois à distance) sans avoir à arrêter le système en cours d’utilisation.

Parce qu’il n’y a aucune alternative réelle pour des déploiements industriels —avez-vous déjà essayé d’utiliser Java Web Start pour installer autre chose qu’une application RCP basique? ;-) —, p2 s’imposera vraisemblablement comme la technologie standard de déploiement pour des systèmes hétérogènes.

Last year’s Eclipse release (Ganymede) came with a new provisioning platform called p2. For years, Eclipse has been shipped along with a component called the « Update Manager », which allowed users to easily update their Eclipse installations. Nevertheless, year after year, and especially when Eclipse 3.0 came out, it has become much more than just an IDE: it is now a software platform, built on top of Equinox (the reference implementation of the OSGi specification).

Thus, deployment needs are not limited to installing and updating only plug-ins anymore. People building software on top of Eclipse need to be able to deliver an installer for their product, which may come with a license manager which needs provisioning too, they need to have their own UI for the updating process, … and p2 answers to virtually all these needs.

p2: a provisioning platform…

To be able to provision virtually everything, the main strength of p2 is to have no a priori knowledge of the way Eclipse plug-ins or even Java applications must be handled. It’s indeed a very light framework to describe the parts that are to be installed (the Installable Units), and how they depend on each other. p2 comes with some basic instructions about how an OSGi bundle or an Eclipse product should be installed, but nothing else.

It’s up to the software vendor who wants to deliver, let’s say, a Windows executable program (which may require adding keys to the registry, or icons on the desktop, for instance) together with its Eclipse RCP application, to write the code (in fact, a p2 plug-in!) to explain p2 how this particular Installable Unit should be handled when provisioned in a given system.

… and, the next deployment standard?

Of course, although p2 is still a very young project, and may not seem mature enough for industrial usage. It is still not 100% reliable yet and lacks tooling, but the quality of this very first release is still pretty high. Since it was released, p2 has started gathering a community which is leveraging p2 in other domains than just the Eclipse project itself. Software companies like Cloudsmith, EclipseSource and Anyware Technologies are already developing tools on top of p2 ; and IBM, among others, is working hard to improve the p2 core and design a clear API.

The massive adoption of OSGi in many different areas (Eclipse runtime technologies like Equinox itself or RAP, applications servers like Websphere or Glassfish, etc.) will definitely make p2 the smartest way to deploy not only Eclipse-based applications, but any sort of scalable application as well. Indeed, when high availability is an important requirement (in other words — almost always), then you need to be able to dynamically install new modules into the running system, update existing ones, sometimes even do this remotely.

Since there is currently no real sustainable alternative for industrial deployments – did you ever try to use Java Web Start for more than just a very simple Swing or RCP application? – p2 will probably come up as a de facto provisioning technology standard.

Eclipse Community Awards

2009 / 30 janvier
par Benjamin Cabé

C’est aujourd’hui le dernier jour pour nommer des candidats pour les Eclipse Community Awards !

Si le travail de certains contributeurs ou committers vous a particulièrement impressionnés, si des membres de la communauté font selon vous un travail d’évangélisation et de promotion d’Eclipse qui mérite d’être cité, alors n’hésitez pas à aller vous exprimez sur les bugs correspondants du bugzilla Eclipse!

Identifier le deadlock d’une application Java

2009 / 28 janvier
par Benjamin Cabé

lockLe wiki Eclipse détaille très clairement la procédure pour obtenir un dump de la JVM au moment précis où celle-ci semble soit complétement bloquée, soit tombée dans un mode dans lequel un thread s’est emballé et occupe 100% du CPU…

Pour faire court, si vous avez un JDK 1.6 ou supérieur, il ne vous faudra que quelques secondes pour obtenir un état de la pile, puisqu’il suffit d’exécuter :

  • jps, afin d’obtenir le PID de la JVM qui vous intéresse
  • jstack <pid>, pour obtenir le dump sur la sortie standard

Avec une version de JDK plus ancienne, il faut avoir lancé la JVM (de Sun…) avec l’option -Dcom.sun.management.jmxremote. Cela permet de s’y connecter par la suite avec l’outil jconsole. Bien qu’assez peu contraignante, cette pratique a tout de même l’inconvénient d’obliger à savoir à l’avance que l’application va tomber dans un deadlock, ce qui n’est pas toujours le cas… ;-)

Si vous êtes sous Linux, vous avez gagné puisque quelle que soit votre version de Java, un kill -3 <pid_JVM> fonctionnera à coup sûr !

Le wiki détaille d’autres procédures, et notamment comment s’y prendre si l’on veut obtenir le dump d’une application à distance.

Fiche de référence OSGi

2009 / 13 janvier
par Benjamin Cabé

Equinox & OSGiEn guise d’avant-goût au livre  »Equinox and OSGi: The Power Behind Eclipse« , une fiche de référence sur OSGi et son implémentation de référence Equinox a été concoctée par Jeff McAffer et mise à disposition sur le site DZone.

Attention, il faut un compte pour pouvoir télécharger le PDF —et je n’ai pas le droit de le mettre à disposition ici ;-) .

En 6 pages, Jeff fait le tour de tous les concepts de base d’OSGi/Equinox, et répond à des questions que tout développeur de bundles OSGi (et plus généralement de plug-ins Eclipse) s’est un jour posé :

  • Faut-il préférer l’en-tête Import-Package à Require-Bundle pour la gestion des dépendances?
  • Quelle sont les différences entre les services OSGi, les declarative services et les extensions Eclipse? 
  • Comment manipuler ses bundles depuis la console OSGi?
  • etc. ;-)

A lire absolument!

Update sites Eclipse

2008 / 14 novembre
par Benjamin Cabé

Parce que j’en ai marre de galérer à chaque fois que je veux retrouver les URLs des entrepôts p2 d’Eclipse 3.4, ou des builds d’intégration de la 3.5, les voici…

Update Site Update Site URL
Integration builds toward 3.5 http://download.eclipse.org/eclipse/updates/3.5-I-builds
Nightly builds toward 3.5 http://download.eclipse.org/eclipse/updates/3.5-N-builds
3.5 milestones http://download.eclipse.org/eclipse/updates/3.5milestones
Maintenance builds toward 3.4.x http://download.eclipse.org/eclipse/updates/3.4.x
3.4.x releases http://download.eclipse.org/eclipse/updates/3.4
3.5.x releases http://download.eclipse.org/eclipse/updates/3.5

Attention, ces entrepôts ne sont pas ceux de Ganymede et de Galileo, ils contiennent simplement le SDK Eclipse !

Eclipse 3.5M3 est disponible!

2008 / 1 novembre
par Benjamin Cabé

La milestone 3 de Galileo est sortie hier, et amène (comme d’habitude ?) plein de nouveautés très sympa, extraites du traditionnel « New & Noteworthy » :

Platform 

  • La sélection par bloc dans les éditeurs texte fait enfin son apparition (un bug était ouvert depuis… 2002 !), et c’est un grand soulagement pour tous les développeurs Cobol ! ;-)
    Plus sérieusement, cette fonctionnalité peut faire gagner énormément de temps quand on a besoin de bidouiller des fichiers CSV, par exemple…

 

  • On peut désormais associer des icônes à des entrées de la table des matières

JDT

  • De même que l’on pouvait déjà coller le contenu d’une classe Java qu’on aurait copié dans son presse-papiers, on peut désormais directement appliquer un patch en le collant n’importe où dans son Package Explorer !

p2

  • L’IHM de p2 a été pas mal remaniée pour encore plus simplifier son utilisation. N’hésitez pas à faire des retours sur cette page du wiki Eclipse.

PDE

  • Le PDE/Build supporte désormais la compilation « multicore » introduite dans JDT avec Ganymede. Ainsi, PDE Build va détecter les grappes de plug-ins complétement indépendantes, et les compiler en parallèle.
    Allez donc jeter un oeil ici pour plus de détails sur la façon (ultra-simple !) d’activer cette fonctionnalité dans vos builds.
  • L’éditeur graphique de Declarative Services OSGi est encore et toujours amélioré (pour rappel, c’est un des principaux chantiers du PDE pour cette version 3.5)

 

  • Dans les assistants d’export de plug-ins et de features, on peut demander à directement installer les fonctionnalités exportées… dans son environnement de développement !
    C’est une fonctionnalité très intéressante, mais qui n’a malheureusement qu’un intérêt plus limité quand on n’est pas développeur d’Eclipse-même… :|
Pour le New&Noteworthy complet, c’est ici ; les téléchargements étant eux… là-bas ! :-)

Présentation p2 @ Eclipse Now You Can

2008 / 21 octobre
par Benjamin Cabé
Voici les transparents de la présentation de p2 que j’ai réalisée aujourd’hui lors de l’évènement Eclipse Now You Can, à Paris.
L’objectif était de présenter les défauts de l’ancien mécanisme de gestion des mises à jour d’Eclipse (l’Update Manager), et d’indiquer comment ils sont corrigés par son remplaçant : p2.
Il est important de comprendre que p2 est à la fois un outil « fini » utilisable par tout développeur voulant simplifier la gestion de ses installations Eclipse, mais aussi –et surtout– une plateforme tout à fait générique pour adresser les multiples problématiques liées au déploiement (et pas nécessairement dans un contexte pur Eclipse…)
Enfin, j’ai énuméré une (petite) partie des évolutions en cours de développement pour la prochaine version d’Eclipse (Galileo) : définition d’une véritable API p2, amélioration de l’utilisabilité, création d’outils pour gérer les entrepôts p2, etc.

NDR : il est possible que votre aggrégateur de flux RSS n’affiche pas correctement l’animation Flash contenant les slides de la présentation, auquel cas je vous invite à consulter ce post directement sur le blog !

Sortie de uDig 1.1.0

2008 / 18 octobre
par Benjamin Cabé

L’outil de cartographie Open Source (licence LGPL) vient de sortir sa version 1.1, et je vous encourage vivement à y jeter un coup d’oeil (bon, il faut télécharger 90 Mo…), car c’est un outil assez bluffant dans sa catégorie !

uDig propose une application Eclipse RCP permettant la visualisation et l’édition d’un grand nombre de formats de données géospatiales (fichiers shapefile, GeoTIFF, services web WFS et WMS, bases Oracle Spatial, PostGIS, etc.) par des utilisateurs pas nécessairement familiers de l’outil informatique. En effet, un gros effort est porté sur l’ergonomie de l’outil, ainsi que sur son internationalisation (italien, français, espagnol, coréen, … basque !, …).

Pour les curieux, un peu plus d’infos sur cette nouvelle release ici :

Pour télécharger (Windows, MacOSX & Linux), c’est par là-bas :

Vous me reconnaissez ?

2008 / 8 octobre
par Benjamin Cabé

Je suis Jean-Claude Trichet, président de la Banque Centrale Européenne, et j’ai un bout de salade coincé entre les dents, à moins que ..?

Une nouvelle série de formations Eclipse dans 31 villes

2008 / 24 septembre
par Benjamin Cabé

La fondation Eclipse, en partenariat avec 14 entreprises membres de la fondation Eclipse, propose une nouvelle série de formations Eclipse, qui sont organisées dans 31 villes à travers le monde.

Les sessions de formation sont organisées du 3 novembre au 13 décembre.

Les thématiques abordées durant ces classes sont Eclipse RCP (Basic et Advanced), Eclipse Equinox et les technologies de modélisation Eclipse.

Une description complète de toutes les sessions de formation (thèmes, dates, tarifications) est maintenant disponible. Les participants qui s’inscriront avant le 30 Septembre bénéficieront d’une remise de 5% sur le tarif de la formation.

Les compagnies membres de la fondation Eclipse qui participent aux Eclipse Training Series sont les suivantes : ANCIT Consulting, Anyware Technologies, AvanSoft (Eclipse University), Chris Aniszczyk, Gerhardt Informatics, Industrial TSI, Innoopract, itemis, Jeff McAffer, Obeo, The RCP Company, Scott Lewis, Soyatec et Weigle Wilczek.