SlideShare una empresa de Scribd logo
1 de 62
Descargar para leer sin conexión
JUG Lausanne

Spring Batch
9 novembre 2010

Julien Jakubowski
Olivier Bazoud
1
Intervenants
➢

Olivier Bazoud, FullSIX, 12 ans d'expérience
●

●

Java EE / Spring, Spring Batch, Groovy, Grails

●

Co auteur de « Spring Batch in Action »

●

➢

Architecte technique de sites web à fort traffic

Spring User Group France

Julien Jakubowski, OCTO Technology
●

Architecte, 10 ans d'expérience

●

Spécialisé Java EE / Spring

●

Productivité et qualité des développements

●

Ch'ti JUG, Agile Tour Lille
2
De quoi va-t-on parler ce soir ?
➢

On va parler de batchs en Java ...

Spring Batch
➢

… et aussi de bière

http://www.flickr.com/photos/fromeyetopixel/2559391584/

3
Teaser
➢

Quand j'écris une application Web, il y a pléthore de
frameworks Web

JSF

4
Teaser
➢

Quand j'accède à une base de données, il y a moult
solutions de persistance

5
Teaser
➢

Quand je fais du batch, je suis ... à poil !

➢

Les batchs seraient-ils les parents pauvres de Java ?

http://www.flickr.com/photos/crystaljingsr/3914729343/sizes/o/in/set-72157622354789320/

6
Teaser
➢

Spring Batch offre pourtant une solution pour vous
guider lors de l'écriture de vos batchs

Spring Batch

7
Nos objectifs
➢

En sortant de la salle, vous :
●

Savez identifier certains problèmes récurrents avec les
batchs écrits en Java

●

Savez si Spring Batch est utile pour vous (ou pas)

●

Avez intégré les notions principales

●

Pouvez faire un batch « Spring Batch » demain

8
Batch : de quoi parle-t-on ?
➢

Batch processing = suite de traitements sur ensemble
de données...

http://www.flickr.com/photos/burnblue/308441464/

9
Batch : de quoi parle-t-on ?
➢

… potentiellement grands volumes...

http://www.flickr.com/photos/claudiasofia99/2878579560/

10
Batch : de quoi parle-t-on ?
➢

… sans intervention d'un utilisateur humain.
(pas d'interface graphique)

11
Batch : de quoi parle-t-on ?
➢

Exemples :
●

Import Flat/XML dans une base de données

●

Mise à jour de données de référentiels

●

Intégration de flux bancaire, financier dans un SI

12
Batch : de quoi parle-t-on ?
➢

Un batch n'est pas un scheduler
●

Cron, Quartz, $U...

●

Mais un scheduler peut le lancer

13
Ce qui vous attend
➢

Spring Batch en 1 slide

➢

Un batch « à poil »

➢

Le même en Spring Batch

➢

Introduction progressive des notions de Spring Batch

➢

Retours d'expérience

➢

Forces et faiblesses

➢

Questions / réponses

14
Spring Batch propose
✔ Un cadre
✔ Un vocabulaire (domain language)
✔ Traitement par lots (grands volumes de données)
✔ Gestion des transactions, commit régulier
✔ Spring dans ses batchs

Parallélisme
Partitionnement

Une infrastructure pour les batchs
Reprise sur erreurs
15
Beer batch
➢

Implémentation « naïve »

➢

Caractéristiques :
●

Lire le fichier XML de recettes, au format BeerXML

●

Filtrer certaines recettes et créer un fichier de rejets

●

Ecrire en base de données

16
Démo

Anti-patterns...

17
Problèmes récurrents
➢

Fiabilité

18
Problèmes récurrents
➢

Maintenabilité

19
Problèmes récurrents
➢

Réinvention de la roue

20
Le nouveau batch
➢

Ecrire la date de début du batch

➢

Lire le fichier XML de recettes de bières

➢

Filtrer et créer un fichier de rejets

➢

Ecrire en base de données

21
Schéma du batch
InitialStep
InitialTasklet

RecipeStep
Chunk Oriented Tasklet

ItemReader

ItemProcessor

ItemWriter

22
ItemReader
InitialStep
InitialTasklet

RecipeStep
Chunk Oriented Tasklet

ItemReader

ItemProcessor

ItemWriter

23
➢

Besoin
●

➢

ItemReader

Lire le XML des recettes

ItemReader
●

Fournir des items en entrée

<xml>

SELECT … FROM ...

123;AB;
456;CD;
24
Morceaux de code

25
ItemProcessor
InitialStep
InitialTasklet

RecipeStep
Chunk Oriented Tasklet

ItemReader

ItemProcessor

ItemWriter

26
ItemProcessor
➢

Besoin
●

➢

Transforme, valide ou/et filtre une recette

ItemProcessor
●

Transforme un item et en retourne un autre

●

Emplacement pour les « règles métier »

27
Morceaux de code

28
Morceaux de code

29
ItemWriter
InitialStep
InitialTasklet

RecipeStep
Chunk Oriented Tasklet

ItemReader

ItemProcessor

ItemWriter

30
Item Writer
➢

Besoin
●

➢

Décharger les bières dans une base SQL

ItemWriter
●

Ecrire les items

<xml>

INSERT INTO...

123;AB;
456;CD;
31
Morceaux de code

32
Chunk
InitialStep
InitialTasklet

RecipeStep
Chunk Oriented Tasklet

ItemReader

ItemProcessor

ItemWriter

33
Chunk
➢

Besoin
●

➢

Lire, transformer et écrire

Chunk
●

Lire et transformer les données successivement

●

Ecrire le lot de données

●

Le commit-interval définit la taille du lot (différent
de la taille du fichier)

●

Gestion de la transaction : Commit/Rollback

34
Chunk

35
Morceaux de code

36
Listener
InitialStep
InitialTasklet

RecipeStep
Chunk Oriented Tasklet

ItemReader

ItemProcessor

ItemWriter

37
Listener
➢

Besoin
●

➢

Création du fichier de rejet

Listener
●

Etre à l'écoute des événements du batch

38
Morceaux de code

39
Morceaux de code

40
Morceaux de code

41
Tasklet
InitialStep
InitialTasklet

RecipeStep
Chunk Oriented Tasklet

ItemReader

ItemProcessor

ItemWriter

42
Tasklet
➢

Besoin
●

➢

Effectuer une tâche unitaire

Exemples
●

Suppression de fichiers

●

Unzip d'un fichier

●

Appel d'une procédure stockée

●

Appel d'un web service

43
Morceaux de code

44
Step
InitialStep
InitialTasklet

RecipeStep
Chunk Oriented Tasklet

ItemReader

ItemProcessor

ItemWriter

45
Step
➢

Besoin
●

Etape dans le processus du batch

●

Contrôle le workflow

46
Job
InitialStep
InitialTasklet

RecipeStep
Chunk Oriented Tasklet

ItemReader

ItemProcessor

ItemWriter

47
Job
➢

Besoin
●

Décrire les étapes du batch

●

Composé d'une ou plusieurs steps

Spring Tool Suite

48
Morceaux de code

49
Traitement par lots

50
Lancer un job

51
Tests
➢

Tests unitaires facilités via le découpage Spring Batch
●

➢

writers, processors etc...

Tests d'intégration facilités par Spring
●

@RunWith

●

Step, Job

Sonar

52
Morceaux de code

53
Morceaux de code

54
Retours d'expérience FullSIX
➢

Framework de batch
●
●

➢

Moins de code produit, moins d'erreurs possibles
Plus de tests unitaires + intégrations

Mise en place par l'exemple
●
●

➢

J'ai fait le premier batch pour montrer la voie
Un même vocabulaire aide à se comprendre

Répond à nos besoins même si les batchs sont différents au niveau métier

55
Retours d'expérience FullSIX
➢

Nos batchs « Spring Batch » sont en SQL plutôt qu'en
Hibernate

➢

Spring Batch s'occupe de la gestion transactionnelle

➢

En moyenne
●
●

➢

15% - 50% de gain sur le temps de développement
15% - 50% de gain au « runtime »

Gains plus impressionnants sur certains cas
●

XML 100Mo + SQL; Gain : de 60 mn à 8mn

●

10 fichiers 4Mo + SQL; Gain : de 10mn à 1mn30s

56
Forces et faiblesses
✔ Fiabilité et bons patterns
✔ Tests, TDD
✔ Batchs complexes mieux maintenables
✔ Bénéficie de fonctions avancées à moindre coût
...the Spring way, Spring Intégration

✔ Productivité, à terme...
✗ … après avoir payé le ticket d'entrée

57
Notions avancées non-abordées
➢

Partionning, parallélisme, remoting

➢

Flow

➢

Reprise sur erreurs, Skipping

➢

Infrastructure pour les batchs

➢

Spring Batch Admin
A votre disposition...

58
Spring Batch in Action
➢

http://www.manning.com/templier

59
Liens
➢

Spring User Group Paris
●

➢

Le code de la présentation
●

➢

http://code.google.com/p/fr-sug-spring-batch

Spring Batch 2.1.x
●

➢

http://groups.google.fr/group/sugfr

http://static.springsource.org/spring-batch

Articles sur le web
●

http://www.theserverside.com/news/1363855/Spring-Batch-Overview

●

http://www.infoq.com/presentations/syer-introducing-spring-batch

●

http://blog.zenika.com/index.php?post/2010/03/05/To-batch-or-not-to-batch

●

http://blog.octo.com/spring-batch-par-quel-bout-le-prendre/

60
Questions ?

http://www.flickr.com/photos/crystaljingsr/3914729343/in/set-72157622354789320/

61
ROTI

http://www.flickr.com/photos/34943981@N00/202923614/

62

Más contenido relacionado

La actualidad más candente

Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
David Buros
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
LeTesteur
 

La actualidad más candente (20)

TDD for DevOps with Chef
TDD for DevOps with ChefTDD for DevOps with Chef
TDD for DevOps with Chef
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs
 
Node.js
Node.jsNode.js
Node.js
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - Puppet
 
JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003
 
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverte
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagner
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continu
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
JavaScript dans l'usine logicielle
JavaScript dans l'usine logicielleJavaScript dans l'usine logicielle
JavaScript dans l'usine logicielle
 
Du Docker dans notre workflow de dev
Du Docker dans notre workflow de devDu Docker dans notre workflow de dev
Du Docker dans notre workflow de dev
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
 
Release quotidienne
Release quotidienneRelease quotidienne
Release quotidienne
 

Destacado

Nuevas Generaciones
Nuevas GeneracionesNuevas Generaciones
Nuevas Generaciones
IraisOcampo
 
Educación en la sociedad del conocimiento
Educación en la sociedad del conocimientoEducación en la sociedad del conocimiento
Educación en la sociedad del conocimiento
nilzuhu
 
las tics en el aula
las tics en el aulalas tics en el aula
las tics en el aula
davidmagno
 
Dossier de production definitif
Dossier de production definitifDossier de production definitif
Dossier de production definitif
Johanna Lry
 
El homo videns_al_ser_digital
El homo videns_al_ser_digitalEl homo videns_al_ser_digital
El homo videns_al_ser_digital
IraisOcampo
 
Resolucion de problemas aditivos3
Resolucion de problemas aditivos3Resolucion de problemas aditivos3
Resolucion de problemas aditivos3
1986manuelhdz
 
Teorías de aprendizaje tic
Teorías de aprendizaje ticTeorías de aprendizaje tic
Teorías de aprendizaje tic
nilzuhu
 

Destacado (20)

Cigarette electronique - Cigego.fr
Cigarette electronique - Cigego.frCigarette electronique - Cigego.fr
Cigarette electronique - Cigego.fr
 
Proceso para la obtención de un programa ejecutable
Proceso para la obtención de un programa ejecutableProceso para la obtención de un programa ejecutable
Proceso para la obtención de un programa ejecutable
 
RHONE ENVIRONNEMENT
RHONE ENVIRONNEMENTRHONE ENVIRONNEMENT
RHONE ENVIRONNEMENT
 
Polimorfismo2015c1
Polimorfismo2015c1Polimorfismo2015c1
Polimorfismo2015c1
 
Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009
 
Pasos para crear una cuenta en facebook
Pasos para crear una cuenta en facebookPasos para crear una cuenta en facebook
Pasos para crear una cuenta en facebook
 
Clase 1 pensamiento estratégico - UNMSM, Pensamiento estratégico del trabajo ...
Clase 1 pensamiento estratégico - UNMSM, Pensamiento estratégico del trabajo ...Clase 1 pensamiento estratégico - UNMSM, Pensamiento estratégico del trabajo ...
Clase 1 pensamiento estratégico - UNMSM, Pensamiento estratégico del trabajo ...
 
Programacionorientada a objetos
Programacionorientada a objetosProgramacionorientada a objetos
Programacionorientada a objetos
 
Nuevas Generaciones
Nuevas GeneracionesNuevas Generaciones
Nuevas Generaciones
 
Identification de compatibilites sémantiques entre descripteurs de lieux
Identification de compatibilites sémantiques entre descripteurs de lieuxIdentification de compatibilites sémantiques entre descripteurs de lieux
Identification de compatibilites sémantiques entre descripteurs de lieux
 
Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012
 
Educación en la sociedad del conocimiento
Educación en la sociedad del conocimientoEducación en la sociedad del conocimiento
Educación en la sociedad del conocimiento
 
las tics en el aula
las tics en el aulalas tics en el aula
las tics en el aula
 
Dossier de production definitif
Dossier de production definitifDossier de production definitif
Dossier de production definitif
 
Cars 3
Cars 3Cars 3
Cars 3
 
Le recyclage électronique, ce n’est pas de l’exportation!
Le recyclage électronique, ce n’est pas de l’exportation!Le recyclage électronique, ce n’est pas de l’exportation!
Le recyclage électronique, ce n’est pas de l’exportation!
 
El homo videns_al_ser_digital
El homo videns_al_ser_digitalEl homo videns_al_ser_digital
El homo videns_al_ser_digital
 
Resolucion de problemas aditivos3
Resolucion de problemas aditivos3Resolucion de problemas aditivos3
Resolucion de problemas aditivos3
 
Réaliser son rêve avec Eric Domb (Pairi Daiza)
Réaliser son rêve avec Eric Domb (Pairi Daiza)Réaliser son rêve avec Eric Domb (Pairi Daiza)
Réaliser son rêve avec Eric Domb (Pairi Daiza)
 
Teorías de aprendizaje tic
Teorías de aprendizaje ticTeorías de aprendizaje tic
Teorías de aprendizaje tic
 

Similar a Spring Batch - Julien Jakubowski - November 2010

Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Horacio Gonzalez
 
Spring Batch Avance
Spring Batch AvanceSpring Batch Avance
Spring Batch Avance
Olivier BAZOUD
 

Similar a Spring Batch - Julien Jakubowski - November 2010 (20)

Spring Batch - concepts de base
Spring Batch - concepts de baseSpring Batch - concepts de base
Spring Batch - concepts de base
 
Sug spring batch
Sug spring batchSug spring batch
Sug spring batch
 
Chtijug springbatch 2011
Chtijug springbatch 2011Chtijug springbatch 2011
Chtijug springbatch 2011
 
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaWS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - Xebia
 
Paris JUG Spring Batch
Paris JUG Spring BatchParis JUG Spring Batch
Paris JUG Spring Batch
 
Spring Batch ParisJUG
Spring Batch ParisJUG Spring Batch ParisJUG
Spring Batch ParisJUG
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 
Tests de performances d'une application Java EE
Tests de performances d'une application Java EETests de performances d'une application Java EE
Tests de performances d'une application Java EE
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succès
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
Integration continue - Introduction
Integration continue - IntroductionIntegration continue - Introduction
Integration continue - Introduction
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
 
Le monitoring de la performance front
Le monitoring de la performance frontLe monitoring de la performance front
Le monitoring de la performance front
 
Retour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logRetour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de log
 
Spring Batch Avance
Spring Batch AvanceSpring Batch Avance
Spring Batch Avance
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
7 Suivre Les Developpements Et Recetter
7 Suivre Les Developpements Et Recetter7 Suivre Les Developpements Et Recetter
7 Suivre Les Developpements Et Recetter
 

Más de JUG Lausanne

Reverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp AndroidReverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
JUG Lausanne
 

Más de JUG Lausanne (20)

Introduction aux algorithmes génétiques
Introduction aux algorithmes génétiquesIntroduction aux algorithmes génétiques
Introduction aux algorithmes génétiques
 
Développer un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rienDévelopper un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rien
 
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp AndroidReverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
 
Exemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et SparkExemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et Spark
 
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
 
CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011
 
Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011
 
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
 
OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010
 
Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010
 
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
 
Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009
 
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
 
Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009
 
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
 
XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008
 
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
 
Scripting with Java FX - Cédric Tabin - December 2007
Scripting with Java FX - Cédric Tabin - December 2007Scripting with Java FX - Cédric Tabin - December 2007
Scripting with Java FX - Cédric Tabin - December 2007
 

Spring Batch - Julien Jakubowski - November 2010