Development
accelerator
... ou comment faire
un « départ lancé »un « départ lancé »
JUG Nantes
14 avril 2014
Ver 1.2
Qui sommes nous ?
Laurent Guérin (Project Leader)
@ltguerin
laurent.guerin@sogeti.com
Benoit Wilcox (Commiter)
@WilcoxBeno...
Un parcours en 3 étapes
Telosys Tools @telosys http://tools.telosys.org 3
Principes
Généraux
1
Telosys Tools @telosys http://tools.telosys.org 4
La juste part du développeur
Application
Framework 1 Framework 2
Code stéréotypé
& répétitif
Développeur Générateur
Telosy...
• Model Driven Architecture (cf OMG)
• Approche « Model First »
=> concevoir et maintenir un modèle
(UML, DSL, …)
Générati...
• Littéralement « échafaudage »
• Définition Wikipedia : (incomplète)
• Largement utilisé dans certains écosystèmes
Généra...
• Approche « Database First »
• Efficace (permet un démarrage rapide)
• Outil de type « boite noire », généralement non ad...
Telosys Tools: une nouvelle approche
« Database first » scaffolding avec un modèle léger et des templates
ADAPTABLE
Telosy...
Philosophie
Keep it simpleKeep it simpleKeep it simpleKeep it simple
and pragmaticand pragmaticand pragmaticand pragmatic
...
Plugin
Code Generator
Environnement de travail : Eclipse + plugin + templates
Model Editor
Workspace
Community templates
G...
Que peut-on générer ?
Tout fichier de type « texte » :
Java, XML, JSP, PHP, Scala, JavaScript, HTML, etc…
Principe :
1 ent...
Ça ressemble à quoi un template ?
http://velocity.apache.org/
Objets du model
« entities »
Velocity Template Language (VTL...
Ce n’est pas magique
Ne pas chercher
à tout générer
(il faut savoir s’arrêter)
code code
généré non généré
Application
Cod...
Démo
1
Telosys Tools @telosys http://tools.telosys.org 15
AngularJS
Spring MVC – JPA
2
Telosys Tools @telosys http://tools.telosys.org 16
• Fonctionnalités de CRUD :
– Création, Recherche, Modification, Suppression d’entités
• Internationalisation (i18n) :
– L...
Architecture générale
Tomcat Server
Webapp
Spring MVC + JPA
bookstore-
spring
2 Projets
Telosys Tools @telosys http://tool...
Application 1 :
Spring MVC
+
Spring MVC + AngularJS
Telosys Tools @telosys http://tools.telosys.org 19
+
Spring Data JPA
Application 1
Spring MVC + Spring Data JPA
Base de données
relationnelle
JPA
Spring
Data JPA
Spring
MVC
Web REST
Telosys T...
Spring MVC + Spring Data JPA
Présentation
Spring MVC
Service
JPA
Persistance
Spring
3 couches
Telosys Tools @telosys http:...
Points de vigilance sur JPA (Java Persistence API)
Spring MVC + Spring Data JPA
Présentation
Spring MVC
Service
JPA
Persis...
Points de vigilance sur JPA (Java Persistence API)
• Concepts mal maîtrisés voir inconnus des développeurs
– Session Hiber...
Notre solution :
Isoler JPA dans la couche de persistance
Spring MVC + Spring Data JPA
Présentation Service
JPA
Contrôleur...
Spring MVC + Spring Data JPA
Partie générée par Telosys :
« Controller »
BookController
« Service »
BookService
« DAO »
Bo...
Aspects techniques
• Web : Twitter bootstrap 3, Tiles
• RESTful : GET, POST, PUT, DELETE
• Tests unitaires : Couverture de...
Organisation et dépendances des bundles
Spring MVC
front-springmvc
Service
Présentation
Services
service-springdatajpa
Tel...
Spring MVC + Spring Data JPA
Démo
2
Telosys Tools @telosys http://tools.telosys.org 28
Application 2 :
AngularJS
AngularJS + Spring MVC REST
Telosys Tools @telosys http://tools.telosys.org 29
AngularJS
• Fonctionnalités de CRUD :
– Création, Recherche, Modification, Suppression d’entités
• Internationalisation (i18n) :
– L...
AngularJS + Spring MVC REST
Application 1
Base de
données
relationnelle
JPA
Spring
Data JPA
Spring
MVC
REST
Telosys Tools ...
AngularJS + Spring MVC REST
URLs des services REST
• Récupérer la liste des entités :
– GET : /rest/[entity]
• Récupérer u...
AngularJS + Spring MVC REST
Partie générée par Telosys :
« Controller »
BookCtrl
_________________________________________...
Aspects techniques
• Basé sur le projet de démarrage « Seed »
de Angular :
– https://github.com/angular/angular-seed
• Ges...
Organisation et dépendances des bundles
Spring MVC
front-springmvc
Service
Présentation
AngularJS
front-angularjs
MVC Java...
AngularJS + Spring MVC REST
Démo
2
Telosys Tools @telosys http://tools.telosys.org 36
Restfull
Spring Data
HATEOAS
3
Telosys Tools @telosys http://tools.telosys.org 37
Spring Data REST dans l'écosystème Spring
Spring Data REST
Spring MVC
Spring Data
JPA
Spring Data
Neo4J
Spring Data
MongoD...
Spring Data, un socle commun
Spring Data REST
Spring MVC
Spring Data
JPA
Spring Data
Neo4J
Spring Data
MongoDB
Spring Data...
Spring Data : Différents fournisseurs de données
• API de manipulation d'une source de données spécifiques
Spring Data RES...
Spring Data REST
Spring Data REST
Spring MVC
Spring Data
JPA
Spring Data
Neo4J
Spring Data
MongoDB
Spring Data Commons
Spr...
Spring Data REST
Spring Data REST
Spring MVC
Spring Data
JPA
Spring Data
Neo4J
Spring Data
MongoDB
Spring Data Commons
Spr...
Spring Data REST
Book
@Entity
Telosys Tools @telosys http://tools.telosys.org 43
Spring Data REST
Book
@Entity
BookRepository
CrudRepository
Telosys Tools @telosys http://tools.telosys.org 44
Spring Data REST
Book
@Entity
BookRepository
CrudRepository
Spring Data REST
@Controller, Dispatcher
Servlet…
Telosys Tool...
Spring Data REST
Book
@Entity
BookRepository
CrudRepository
Spring Data REST
@Controller, Dispatcher
Servlet…
Telosys Tool...
Spring Data REST
Book
@Entity
BookRepository
CrudRepository
Spring Data REST
@Controller,
ServletDispatcher …
Telosys Tool...
Spring Data REST
Book
@Entity
BookRepository
CrudRepository
Spring Data REST
@Controller,
ServletDispatcher …
Telosys Tool...
Spring Data REST
Book
@Entity
BookRepository
CrudRepository
Spring Data REST
@Controller,
ServletDispatcher …
Partie génér...
HATEOAS ?
" HATEOAS – the
word, there's no
pronounciation for. "
Telosys Tools @telosys http://tools.telosys.org 50
pronou...
HATEOAS ?
" HATEOAS – the
word, there's no
pronounciation for. "
(Ben Hale, SpringOne2GX 2012)
Telosys Tools @telosys http...
HATEOAS ?
Telosys Tools @telosys http://tools.telosys.org 52
Model of RESTful maturity by L.Richardson
HATEOAS ?
Un format ? Un standard ?
Telosys Tools @telosys http://tools.telosys.org 53
HATEOAS ?
Collection+JSON – Hypermedia Type
HAL – Hypertext Application Language
Un format ? Un standard ?
Telosys Tools @...
HATEOAS ?
Un format ?
Collection+JSON – Hypermedia Type
HAL – Hypertext Application Language
Un standard ?
Telosys Tools @...
HATEOAS ?
Collection+JSON – Hypermedia Type
HAL – Hypertext Application Language
Un format ? Un standard ?
Telosys Tools @...
HAL : Hypertext Application Language
Telosys Tools @telosys http://tools.telosys.org 57
HAL : Hypertext Application Language : Example
{
"isbn": "2-212-12232-2",
"title": "Programmer en Java",
"price": 35,
"qua...
HAL : Hypertext Application Language : Example
{
"isbn": "2-212-12232-2",
"title": "Programmer en Java",
"price": 35,
"qua...
HAL : Hypertext Application Language
• Pour implémenter ou consommer des services "HAL" …
Telosys Tools @telosys http://to...
Démo
3
Telosys Tools @telosys http://tools.telosys.org 61
Arrivée
4
Telosys Tools @telosys http://tools.telosys.org 62
Et maintenant
à vous de jouer !
Vous pouvez…
Telosys Tools @telosys http://tools.telosys.org 63
Vous pouvez…
- Tester
- Cr...
Ressources en ligne
Tutorials : https://sites.google.com/site/telosystutorial/
Templates : https://github.com/telosys-tool...
Roadmap
2014
Plugin :
- Modèle sans base de données ( DSL )
- Amélioration de l’IHM du plugin ( links, customization )
Nou...
Sondage / roadmap
Quels templates voudriez-vous ?
( pour quelles cibles de génération ) :
• Struts
• JSF
• Wicket
• Scala
...
Vous avez des questions ?
Telosys Tools @telosys http://tools.telosys.org 67
Prochain SlideShare
Chargement dans…5
×

Telosys tools jug-nantes-2014-v1.2

1 232 vues

Publié le

Présentation Telosys Tools au JUG Nantes le 14 avril 2014

Publié dans : Logiciels
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 232
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
38
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Telosys tools jug-nantes-2014-v1.2

  1. 1. Development accelerator ... ou comment faire un « départ lancé »un « départ lancé » JUG Nantes 14 avril 2014 Ver 1.2
  2. 2. Qui sommes nous ? Laurent Guérin (Project Leader) @ltguerin laurent.guerin@sogeti.com Benoit Wilcox (Commiter) @WilcoxBenoit Ludovic Chaboud (Commiter) @ludovic_chaboud Telosys Tools @telosys http://tools.telosys.org 2 @WilcoxBenoit benoit.wilcox@sogeti.com @ludovic_chaboud ludovic.chaboud@sogeti.com Telosys Team http://labs.sogeti.com/
  3. 3. Un parcours en 3 étapes Telosys Tools @telosys http://tools.telosys.org 3
  4. 4. Principes Généraux 1 Telosys Tools @telosys http://tools.telosys.org 4
  5. 5. La juste part du développeur Application Framework 1 Framework 2 Code stéréotypé & répétitif Développeur Générateur Telosys Tools @telosys http://tools.telosys.org 5 Plate-forme ( ie Java EE ) Comment réduire le volume de code à réaliser ? Frameworks & « boilerplate » réduction du code technique (code générique, « factorisable ») Mais il reste toujours une partie du code qui est spécifique et répétitive (et sans valeur ajoutée) La génération de code permet d’automatiser cette partie
  6. 6. • Model Driven Architecture (cf OMG) • Approche « Model First » => concevoir et maintenir un modèle (UML, DSL, …) Génération de code - Approche « MDA » MODEL Service name Port name 0..n+port 0..n Port Type name Binding name 1 +binding 1 1 +type 1 Param name Output Input StartWithExtensions BindingOperation name 0..n+operation 0..n 0..1 +input0..1 0..1+output 0..1 Operation name 0..1 +input 0..1 0..10..1 0..n+operation 0..n 11 X M I ( XML ) Telosys Tools @telosys http://tools.telosys.org 6 Code Part name Message name 0..n+part 0..n 1+message 1 Output BindingFault Fault name 1 +message 11 name 0..n name 0..1 +output 0..1 0..n+fault 0..n 11 1 +fault 0..n Template TOOL Processus lourd, ne permet pas un démarrage rapide
  7. 7. • Littéralement « échafaudage » • Définition Wikipedia : (incomplète) • Largement utilisé dans certains écosystèmes Génération de code - Approche « Scaffolding » Scaffolding is a meta-programming method of building database-backed software applications. Telosys Tools @telosys http://tools.telosys.org 7 • Largement utilisé dans certains écosystèmes – Ruby ( RoR - Ruby On Rails ) – Groovy ( Grails – Groovy on Rails ) • Et pour Java? – Spring ROO (Boite noire, lié à Spring, AspectJ ) – DALI / Eclipse (JPA mapping only) – AppFuse (command line + web)
  8. 8. • Approche « Database First » • Efficace (permet un démarrage rapide) • Outil de type « boite noire », généralement non adaptable Génération de code - Approche « Scaffolding » Database TOOL Code Metadata Telosys Tools @telosys http://tools.telosys.org 8 Pas de templates : - Comment personnaliser la génération de code ? Pas de modèle : - Comment ajouter des informations (en + des méta-data) ? - Comment modifier (durablement) les méta-data ? noms/types des attributs Java, règles de validation (min, max, regexp, …), représentation des Booléens (1/0, "T"/"F", … ), etc
  9. 9. Telosys Tools: une nouvelle approche « Database first » scaffolding avec un modèle léger et des templates ADAPTABLE Telosys Tools @telosys http://tools.telosys.org 9
  10. 10. Philosophie Keep it simpleKeep it simpleKeep it simpleKeep it simple and pragmaticand pragmaticand pragmaticand pragmatic Telosys Tools @telosys http://tools.telosys.org 10
  11. 11. Plugin Code Generator Environnement de travail : Eclipse + plugin + templates Model Editor Workspace Community templates GitHub download templates install plugin Telosys Tools @telosys http://tools.telosys.org 11 Code GeneratorModel Editor Template Editor Database Editor Model Generator
  12. 12. Que peut-on générer ? Tout fichier de type « texte » : Java, XML, JSP, PHP, Scala, JavaScript, HTML, etc… Principe : 1 entity N templates N targets 1 bean Telosys Tools @telosys http://tools.telosys.org 12 N entities 1 template 1 target model (all entities with links) 1 controller 1 web page 1 list
  13. 13. Ça ressemble à quoi un template ? http://velocity.apache.org/ Objets du model « entities » Velocity Template Language (VTL) • Références aux objets : $, ${…} • Directives : #set, #if, #foreach, … • Commentaire : ## #* .. *# Telosys Tools @telosys http://tools.telosys.org 13 Objets de l’environnement
  14. 14. Ce n’est pas magique Ne pas chercher à tout générer (il faut savoir s’arrêter) code code généré non généré Application Code stéréotypé & répétitif Telosys Tools @telosys http://tools.telosys.org 14 Estimer le gain de productivité
  15. 15. Démo 1 Telosys Tools @telosys http://tools.telosys.org 15
  16. 16. AngularJS Spring MVC – JPA 2 Telosys Tools @telosys http://tools.telosys.org 16
  17. 17. • Fonctionnalités de CRUD : – Création, Recherche, Modification, Suppression d’entités • Internationalisation (i18n) : – Libellés français / anglais – Gestion des dates Fonctionnalités Telosys Tools @telosys http://tools.telosys.org 17
  18. 18. Architecture générale Tomcat Server Webapp Spring MVC + JPA bookstore- spring 2 Projets Telosys Tools @telosys http://tools.telosys.org 18 Base de données relationnelle Spring MVC + JPA Webapp AngularJS spring bookstore- angularjs
  19. 19. Application 1 : Spring MVC + Spring MVC + AngularJS Telosys Tools @telosys http://tools.telosys.org 19 + Spring Data JPA
  20. 20. Application 1 Spring MVC + Spring Data JPA Base de données relationnelle JPA Spring Data JPA Spring MVC Web REST Telosys Tools @telosys http://tools.telosys.org 20 Utilisateur
  21. 21. Spring MVC + Spring Data JPA Présentation Spring MVC Service JPA Persistance Spring 3 couches Telosys Tools @telosys http://tools.telosys.org 21 Contrôleurs Pages Web Service DAO
  22. 22. Points de vigilance sur JPA (Java Persistence API) Spring MVC + Spring Data JPA Présentation Spring MVC Service JPA Persistance Spring Telosys Tools @telosys http://tools.telosys.org 22 Contrôleurs Pages Web Service DAO
  23. 23. Points de vigilance sur JPA (Java Persistence API) • Concepts mal maîtrisés voir inconnus des développeurs – Session Hibernate / Entity Manager : • Objets « attachés » et « détachés » • Mise à jour différée de la base de données – Règles de persistance des liens entre les objets • Notion « owning side » et « inverse side » Spring MVC + Spring Data JPA Telosys Tools @telosys http://tools.telosys.org 23 • Notion « owning side » et « inverse side » • Problème de performances – Chargement à la volée : • problème du « N+1 requêtes » • Erreurs techniques si l’objet est « détaché » • Comportements masqués et objets « pollués » – Chargement à la volée : • Utilisation d’objets « proxy » et de collections « proxy »
  24. 24. Notre solution : Isoler JPA dans la couche de persistance Spring MVC + Spring Data JPA Présentation Service JPA Contrôleurs Pages Web Service DAO Persistance Telosys Tools @telosys http://tools.telosys.org 24 Pages Web Objets d’affichage Mapping Entités JPA Transactions
  25. 25. Spring MVC + Spring Data JPA Partie générée par Telosys : « Controller » BookController « Service » BookService « DAO » BookJpaRepository Base de données relationnelle« Controller » BookRestController Telosys Tools @telosys http://tools.telosys.org 25 BookController Utilisateur REST Pages GET, POST, PUT, DELETE BookRestController Web
  26. 26. Aspects techniques • Web : Twitter bootstrap 3, Tiles • RESTful : GET, POST, PUT, DELETE • Tests unitaires : Couverture de 90% • Analyse SONAR : Rules compliance : 91% Telosys Tools @telosys http://tools.telosys.org 26
  27. 27. Organisation et dépendances des bundles Spring MVC front-springmvc Service Présentation Services service-springdatajpa Telosys Tools @telosys http://tools.telosys.org 27 Spring Data JPA persistence-springdatajpa Database Persistance Database
  28. 28. Spring MVC + Spring Data JPA Démo 2 Telosys Tools @telosys http://tools.telosys.org 28
  29. 29. Application 2 : AngularJS AngularJS + Spring MVC REST Telosys Tools @telosys http://tools.telosys.org 29 AngularJS
  30. 30. • Fonctionnalités de CRUD : – Création, Recherche, Modification, Suppression d’entités • Internationalisation (i18n) : – Libellés français / anglais – Gestion des dates Fonctionnalités Telosys Tools @telosys http://tools.telosys.org 30
  31. 31. AngularJS + Spring MVC REST Application 1 Base de données relationnelle JPA Spring Data JPA Spring MVC REST Telosys Tools @telosys http://tools.telosys.org 31 Application 2 relationnelle AngularJS Utilisateur Web
  32. 32. AngularJS + Spring MVC REST URLs des services REST • Récupérer la liste des entités : – GET : /rest/[entity] • Récupérer une entité : – GET : /rest/[entity]/[id] • Créer une entité : – POST : /rest/[entity] Telosys Tools @telosys http://tools.telosys.org 32 – POST : /rest/[entity] • Modifier une entité : – PUT : /rest/[entity]/[id] • Supprimer une entité : – DELETE : /rest/[entity]/[id]
  33. 33. AngularJS + Spring MVC REST Partie générée par Telosys : « Controller » BookCtrl _____________________________________________ load loadAll save delete _____________________________________________ $scope.book REST « Service » Book ______________________________________ get getAll create update delete GET, Telosys Tools @telosys http://tools.telosys.org 33 $scope.book $scope.books delete Page de modification book_form.html Page de recherche book_list.html GET, POST, PUT, DELETE Utilisateur Web
  34. 34. Aspects techniques • Basé sur le projet de démarrage « Seed » de Angular : – https://github.com/angular/angular-seed • Gestion de l’internationalisation (i18n) : Telosys Tools @telosys http://tools.telosys.org 34 • Gestion de l’internationalisation (i18n) : – https://github.com/angular-translate/angular-translate • Intégration de Twitter bootstrap 3 avec AngularStrap : – http://mgcrea.github.io/angular-strap
  35. 35. Organisation et dépendances des bundles Spring MVC front-springmvc Service Présentation AngularJS front-angularjs MVC Javascript Service layer Telosys Tools @telosys http://tools.telosys.org 35 Spring Data JPA persistence-springdatajpa Database Service Persistance Database Service layer service-springdatajpa
  36. 36. AngularJS + Spring MVC REST Démo 2 Telosys Tools @telosys http://tools.telosys.org 36
  37. 37. Restfull Spring Data HATEOAS 3 Telosys Tools @telosys http://tools.telosys.org 37
  38. 38. Spring Data REST dans l'écosystème Spring Spring Data REST Spring MVC Spring Data JPA Spring Data Neo4J Spring Data MongoDB Spring Data Commons Spring Data Gemfire Telosys Tools @telosys http://tools.telosys.org 38
  39. 39. Spring Data, un socle commun Spring Data REST Spring MVC Spring Data JPA Spring Data Neo4J Spring Data MongoDB Spring Data Commons Spring Data Gemfire Telosys Tools @telosys http://tools.telosys.org 39 Spring Data Commons • Couche d'abstraction partagée par les différents projets •Ex : Repository, Génération dynamique des requêtes à partir des nom de méthodes, audit …
  40. 40. Spring Data : Différents fournisseurs de données • API de manipulation d'une source de données spécifiques Spring Data REST Spring MVC Spring Data JPA Spring Data Neo4J Spring Data MongoDB Spring Data Commons Spring Data Gemfire Telosys Tools @telosys http://tools.telosys.org 40 • API de manipulation d'une source de données spécifiques • Implémentation implicite des opérations les plus courantes (CRUD) • Plusieurs fournisseurs de données : • JPA, MongoDB, Neo4J, Gemfire, Redis, Hadoop, SolR, Couchbase, elasticsearch, cassandra et dynamoDB • Supportés par Spring Data REST : • JPA, MongoDB, Neo4J et Gemfire (cache distribué, VMWare)
  41. 41. Spring Data REST Spring Data REST Spring MVC Spring Data JPA Spring Data Neo4J Spring Data MongoDB Spring Data Commons Spring Data Gemfire Telosys Tools @telosys http://tools.telosys.org 41 Spring Data REST • S'appui sur Spring MVC pour l'exposition de services. • Les services exposés sont RESTful, approche HATEAOS • S'appui sur les interfaces Repository pour la génération des services CRUD et de l'API /search
  42. 42. Spring Data REST Spring Data REST Spring MVC Spring Data JPA Spring Data Neo4J Spring Data MongoDB Spring Data Commons Spring Data Gemfire Telosys Tools @telosys http://tools.telosys.org 42 Stack de l'application générée • Spring Data REST 2.0.1.RELEASE • Spring Data JPA 1.5.1.RELEASE • Hibernate 4.2
  43. 43. Spring Data REST Book @Entity Telosys Tools @telosys http://tools.telosys.org 43
  44. 44. Spring Data REST Book @Entity BookRepository CrudRepository Telosys Tools @telosys http://tools.telosys.org 44
  45. 45. Spring Data REST Book @Entity BookRepository CrudRepository Spring Data REST @Controller, Dispatcher Servlet… Telosys Tools @telosys http://tools.telosys.org 45
  46. 46. Spring Data REST Book @Entity BookRepository CrudRepository Spring Data REST @Controller, Dispatcher Servlet… Telosys Tools @telosys http://tools.telosys.org 46 API CRUD • GET • POST • PUT • DELETE
  47. 47. Spring Data REST Book @Entity BookRepository CrudRepository Spring Data REST @Controller, ServletDispatcher … Telosys Tools @telosys http://tools.telosys.org 47 API CRUD • GET • POST • PUT • DELETE API Search /search Toutes les méthodes définies dans l'interface BookRepository.
  48. 48. Spring Data REST Book @Entity BookRepository CrudRepository Spring Data REST @Controller, ServletDispatcher … Telosys Tools @telosys http://tools.telosys.org 48 API CRUD • GET • POST • PUT • DELETE API Search /search Toutes les méthodes définies dans l'interface BookRepository. Json Schema /schema Description des propriétés de l'entité.
  49. 49. Spring Data REST Book @Entity BookRepository CrudRepository Spring Data REST @Controller, ServletDispatcher … Partie générée par Telosys Tools • Entités • Repositories • "FindBy" pour Many-To-One • Validators • Configuration de l'application Telosys Tools @telosys http://tools.telosys.org 49 API CRUD • GET • POST • PUT • PATCH • DELETE API Search /search Toutes les méthodes définies dans l'interface BookRepository. Json Schema /schema Description des propriétés de l'entité.
  50. 50. HATEOAS ? " HATEOAS – the word, there's no pronounciation for. " Telosys Tools @telosys http://tools.telosys.org 50 pronounciation for. " (Ben Hale, SpringOne2GX 2012)
  51. 51. HATEOAS ? " HATEOAS – the word, there's no pronounciation for. " (Ben Hale, SpringOne2GX 2012) Telosys Tools @telosys http://tools.telosys.org 51 Hypermedia As The Engine Of Application State
  52. 52. HATEOAS ? Telosys Tools @telosys http://tools.telosys.org 52 Model of RESTful maturity by L.Richardson
  53. 53. HATEOAS ? Un format ? Un standard ? Telosys Tools @telosys http://tools.telosys.org 53
  54. 54. HATEOAS ? Collection+JSON – Hypermedia Type HAL – Hypertext Application Language Un format ? Un standard ? Telosys Tools @telosys http://tools.telosys.org 54 Json-LD : JSON for Linking Data W3C depuis 16/01/2014 SIREN JSON Schema & JSON Hyper-Schema
  55. 55. HATEOAS ? Un format ? Collection+JSON – Hypermedia Type HAL – Hypertext Application Language Un standard ? Telosys Tools @telosys http://tools.telosys.org 55 Json-LD : JSON for Linking Data W3C depuis 16/01/2014 SIREN JSON Schema & JSON Hyper-Schema
  56. 56. HATEOAS ? Collection+JSON – Hypermedia Type HAL – Hypertext Application Language Un format ? Un standard ? Telosys Tools @telosys http://tools.telosys.org 56 Json-LD : JSON for Linking Data W3C depuis 16/01/2014 SIREN JSON Schema & JSON Hyper-Schema
  57. 57. HAL : Hypertext Application Language Telosys Tools @telosys http://tools.telosys.org 57
  58. 58. HAL : Hypertext Application Language : Example { "isbn": "2-212-12232-2", "title": "Programmer en Java", "price": 35, "quantity": 23, "discount": false, "availability": true, "bestSeller": true, "_links": { Telosys Tools @telosys http://tools.telosys.org 58 "_links": { "self": {"href": "http://localhost:8080/bookstore-rest/books/1" }, "author": {"href": "http://localhost:8080/bookstore-rest/books/1/author"}, "page_extract": { "href": "http://localhost:8080/bookstore-rest/books/1/author/extract{?page}", "templated" : true } } }
  59. 59. HAL : Hypertext Application Language : Example { "isbn": "2-212-12232-2", "title": "Programmer en Java", "price": 35, "quantity": 23, "discount": false, "availability": true, "bestSeller": true, "_links": { Telosys Tools @telosys http://tools.telosys.org 59 "_links": { "self": {"href": "http://localhost:8080/bookstore-rest/books/1" }, "author": {"href": "http://localhost:8080/bookstore-rest/books/1/author"}, "page_extract": { "href": "http://localhost:8080/bookstore-rest/books/1/author/extract{?page}", "templated" : true } } } Liens, actions
  60. 60. HAL : Hypertext Application Language • Pour implémenter ou consommer des services "HAL" … Telosys Tools @telosys http://tools.telosys.org 60
  61. 61. Démo 3 Telosys Tools @telosys http://tools.telosys.org 61
  62. 62. Arrivée 4 Telosys Tools @telosys http://tools.telosys.org 62
  63. 63. Et maintenant à vous de jouer ! Vous pouvez… Telosys Tools @telosys http://tools.telosys.org 63 Vous pouvez… - Tester - Créer vos templates - Contribuer - Supporter
  64. 64. Ressources en ligne Tutorials : https://sites.google.com/site/telosystutorial/ Templates : https://github.com/telosys-tools Telosys Tools @telosys http://tools.telosys.org 64 Templates : https://github.com/telosys-tools Code généré : https://github.com/telosys-tools-demo Applications déployées : - http://bookstore-spring.telosys-tools-demo.cloudbees.net/ - http://bookstore-angularjs.telosys-tools-demo.cloudbees.net/
  65. 65. Roadmap 2014 Plugin : - Modèle sans base de données ( DSL ) - Amélioration de l’IHM du plugin ( links, customization ) Nouveaux templates bundles : - Spring JDBC - Struts 2 (?) - PHP / CodeIgniter (?) Telosys Tools @telosys http://tools.telosys.org 65 - PHP / CodeIgniter (?) 2015 Telosys Tools Studio (outil autonome / socle Eclipse )
  66. 66. Sondage / roadmap Quels templates voudriez-vous ? ( pour quelles cibles de génération ) : • Struts • JSF • Wicket • Scala • PHP • autre… Telosys Tools @telosys http://tools.telosys.org 66 • autre… Gradle est-il une priorité ? Un outil 100% en ligne de commande ? Un outil 100% web (SaaS / cloud) ? Vous pouvez répondre avec Twitter @telosys
  67. 67. Vous avez des questions ? Telosys Tools @telosys http://tools.telosys.org 67

×