I. Présentation générale

David Syer, pouvez-vous vous présenter et nous expliquer un peu votre parcours chez SpringSource ?

  • Je vis à Londres. Je travaille pour SpringSource depuis le début, quand la société s'appelait d'abord Interface21. Puis elle a été renommée SpringSource en 2007. J'ai rejoint la société en 2006. Je pense que j'étais le numéro 24 dans la société, ou quelque chose comme ça.
  • À cette époque c'était une petite entreprise, tout le monde faisait tout. Un peu de développement, un peu de consulting, un peu de formation et le plus gros de nos revenus provenait des services, de la formation et du consulting. Et puis nous avons beaucoup grossi entre 2006 et 2009. Puis nous avons été rachetés par VMware l'année dernière donc nous sommes maintenant une entreprise beaucoup plus grande.
  • Et depuis ce temps, je suppose, mon rôle a changé un peu parce que je fais moins de services et je fais plus de développements open-source. Donc vraiment ma principale responsabilité maintenant est la communauté open-source Spring : Spring Batch, Spring Integration, les projets sur lesquels je travaille. Je pense que je travaille de manière égale sur Spring Batch, Spring Integration, Spring AMQP. Et il y a un autre projet qui s'appelle Spring Batch Admin. Ce sont en gros mes quatre principaux projets.
  • Je travaille aussi pour le framework Spring Core. Je pense que cela représente 80 % de ce que je fais. Uniquement des activités de développeur et pour la communauté. Et j'aime faire un peu de consulting. Donc j'aime travailler pour des clients parce qu'on peut ainsi connaître les problèmes réels et cela permet en fait d'améliorer le produit.

II. Spring Batch

Comment vous est venue l'idée de créer Spring Batch ?

  • Essentiellement des clients. Vous savez, quand on est en clientèle, on voit beaucoup de personnes qui écrivent des frameworks de batch en Java parce qu'il n'y en avait pas vraiment sur le marché de l'open-source. Et aujourd'hui il en existe encore très peu. Dans tous les cas, il y avait peu d'applications en 2006 qui permettaient d'aider dans la conception d'applications batchs. Donc vraiment elle est venue des clients.

Quelles sont les fonctionnalités apportées par la dernière version et quelles sont les évolutions futures ?

  • La version actuelle est la 2.1. Il y avait un gros changement entre la 1.0 et la 2.0. Il y a un changement moins important entre la 2.0 et la 2.1.
  • La 2.1 a ajouté de nouvelles facilités pour la configuration. Elle améliore aussi la scalabilité et la parallélisation. Donc les caractéristiques de base étaient déjà présentes en 2.0, nous les avons beaucoup améliorées dans la 2.1.
  • Une petite partie du futur développement va aller dans le projet Spring Batch Admin. C'est une sorte de runtime. En effet Spring Batch est un framework de programmation dans lequel vous écrivez une application pour un traitement de batch. Si vous avez ensuite besoin de la déployer dans un runtime, de la manager et la monitorer, des choses comme ça, alors Spring Batch Admin est l'outil fait pour ça. Vous pouvez imaginer ça comme un service ou une interface utilisateur graphique et extensible.
  • Donc il y une interface graphique Web et un ensemble d'API et services qui peuvent être utilisés pour composer ses propres services ou ses propres interfaces utilisateurs. C'est là où vous avez des choses comme l'historique de l'exécution des jobs, l'arrêt, le démarrage, la vue de la progression (50 %, 60 %, 100 % terminés). C'est donc pour le management et le monitoring de l'exécution de batchs, en cours et passés. En gros comme la console d'une application. C'est écrit pour être extensible et embarqué. Le design est très léger et on peut l'étendre de plusieurs façons.
  • C'est donc un domaine pour lequel il y aura probablement une version 3.0 de Spring Batch à un certain point mais je n'ai pas encore commencé à y travailler. Ce sera probablement l'année prochaine. La raison pour laquelle je veux passer en 3.0 est que certaines des API ont été soigneusement conçues mais elles ne sont pas très bien adaptées à un déploiement plus orienté services. Donc nous allons peut-être jeter un coup d'œil à certaines APIs de bas niveau et les réorganiser.

Est-il prévu un support de Spring Batch dans Spring Roo ?

  • Oui, définitivement. Et le shell de Spring Roo est très intéressant. C'est un très bon environnement pour exécuter des choses de façon interactive. On pourra exécuter un job depuis un shell Spring Roo et ce sera très intéressant. J'ai juste besoin de temps ou de quelqu'un pour travailler dessus. Si quelqu'un veut contribuer.
  • Je pense que Roo a une belle architecture pour créer des add-ons et les publier dans la communauté ces jours-ci. C'était une nouveauté de Spring Roo 1.1 et il y a en fait un framework pour écrire un plug-in et le publier sur Internet de sorte que n'importe qui peut l'utiliser. Je pense que ce sera une grande contribution à la communauté en vérité : un plug-in Spring Roo pour Spring Batch.

Quel livre sur Spring Batch pouvez-vous nous conseiller de lire ?

  • À ma connaissance il n'existe qu'un seul livre, "Spring Batch in Action" et il n'a pas encore été publié.

Il est cependant disponible en preview (MEAP): http://manning.com/templier/. Apparemment il marche bien en preview et comblera un trou sur le marché. Je ne fais pas partie des auteurs même si j'ai été en relation avec l'un d'entre eux, Arnaud Cogoluègnes.

III. Autres projets

Travaillez-vous sur d'autres projets pour SpringSource ? Je sais que vous travaillez pour Activiti.

  • Activiti n'est pas un projet SpringSource mais je suis un committer. Je travaille principalement sur Spring Integration et Spring AMQP (Advanced Message Queueing Protocol). Spring AMQP est un graphique de haut niveau que nous sommes en train de mettre en place sur AMQP.
  • En fait c'est un protocole de messagerie que nous sommes en train de wrapper, principalement basé sur Rabbit (un produit d'un projet SpringSource).
  • En principe, Spring AMQP peut être utilisé avec d'autres brokers AMQP mais Rabbit est celui sur lequel nous sommes en train de nous concentrer pour la draft release.

Quel est votre rôle dans Activiti ?

  • Mon rôle dans Activiti est en gros de veiller à ce qu'Activiti satisfasse les utilisateurs et les besoins de la communauté Spring. En effet les développeurs de la communauté open-source Spring sont très intéressés par le workflow et ils aiment faire les choses d'une certaine façon : injection de dépendance, annotations avec peut-être un peu de configuration XML.
  • Donc en gros j'aide l'équipe Activiti à écrire leur code d'une façon qui soit utilisable, consommable par Spring.

IV. SpringSource

Vous qui avez connu Interface21 ainsi que SpringSource, est-ce que l'acquisition de cette dernière par VMware a intrinsèquement changé la philosophie de la société ? Est-elle toujours aussi indépendante ou est-ce que VMware a pris le contrôle ?

  • Nous faisons partie de VMware, nous prenons définitivement ceci en compte dans nos buts et nos objectifs sont conformes à ceux de la grande entreprise VMware. C'est une période très intéressante en vérité. En ce qui concerne les opérations de tous les jours, je pense que les ingénieurs SpringSource, les gens comme moi, n'ont pas été très affectés par ça. VMware nous a achetés parce qu'il voulait la communauté SpringSource de façon à être capable de garder l'ingénierie SpringSource en place.
  • Et donc les choses qui ont changé sont l'administration, les ventes, le marketing. Ces choses ont été très fortement affectées, ainsi que les ressources humaines. Et la grande entreprise nous influence sur la façon stratégique dont nous pensons nos nouveaux produits et planifions où nous mettons nos ressources parce que le cloud est très important pour VMware et la virtualisation évidemment. Et ces choses-là sont très intéressantes pour nous tous à SpringSource parce qu'elles sont aussi nouvelles et donc elles nous influencent et, espérons-le, nous les influençons aussi.
  • Nous faisons partie d'une plus grande entreprise. Mais nous sommes une division avec sa propre marque donc la marque SpringSource est encore active et je ne pense pas qu'elle disparaîtra parce qu'elle est très forte. Et donc la communauté open-source ne changera pas.

Donc vous êtes optimiste ?

  • Oui, ça a été une chose très positive en vérité.

V. Conclusion

Quel est votre ressenti sur l'avenir du langage Java ?

  • Je pense que c'est plutôt un vaste sujet. Premièrement je ne pense pas qu'il va disparaître parce qu'il existe un écosystème très riche et une grosse remontée d'expérience.
  • Les JVM modernes ont été tellement améliorées que personne ne peut dire que Java n'est pas efficace. Et la récente montée en popularité d'autres langages de JVM tels que Groovy et Scala est très significative.
  • Mais il y a également une énorme montée en popularité et utilisation d'autres plateformes et langages (Ruby, Python, JavaScript) et nous devons en être conscients.
  • Peut-être que nous devrions tous prendre la résolution de Nouvel An d'apprendre et d'utiliser un autre langage et essayer d'évaluer quand il est plus adapté ?

Vous avez donné une présentation intéressante sur la programmation concurrente et les applications distribuées avec Spring, dans les bureaux de Zenika à Paris. Allez-vous revenir en France en 2011 pour donner d'autres présentations et formations ?

  • Je serai de nouveau à Paris en mars pour co-animer une formation sur Enterprise Integration, chez Zenika, avec Arnaud Cogoluègnes, co-auteur de "Spring Batch in Action".
  • Il est également prévu que je fasse quelques interventions en clientèle dans et autour de Paris, même si souvent ces interventions peuvent être traitées par nos consultants déjà sur place.

VI. Liens

VII. Remerciements

Nous tenons à remercier Claude LELOUP pour ses conseils, remarques, relectures ainsi que pour sa correction orthographique.

Nous remercions également la société Zenika pour son accueil et pour nous avoir permis de réaliser cette interview.