Your SlideShare is downloading. ×
0
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Telosys tools jug-nantes-2014-v1.2

538

Published on

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

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

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
538
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
20
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Development accelerator ... ou comment faire un « départ lancé »un « départ lancé » JUG Nantes 14 avril 2014 Ver 1.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. Un parcours en 3 étapes Telosys Tools @telosys http://tools.telosys.org 3
  • 4. Principes Généraux 1 Telosys Tools @telosys http://tools.telosys.org 4
  • 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. • 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. • 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. • 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. 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. Philosophie Keep it simpleKeep it simpleKeep it simpleKeep it simple and pragmaticand pragmaticand pragmaticand pragmatic Telosys Tools @telosys http://tools.telosys.org 10
  • 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. 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. Ç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. 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. Démo 1 Telosys Tools @telosys http://tools.telosys.org 15
  • 16. AngularJS Spring MVC – JPA 2 Telosys Tools @telosys http://tools.telosys.org 16
  • 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. 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. Application 1 : Spring MVC + Spring MVC + AngularJS Telosys Tools @telosys http://tools.telosys.org 19 + Spring Data JPA
  • 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. 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. 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. 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. 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. 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. 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. 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. Spring MVC + Spring Data JPA Démo 2 Telosys Tools @telosys http://tools.telosys.org 28
  • 29. Application 2 : AngularJS AngularJS + Spring MVC REST Telosys Tools @telosys http://tools.telosys.org 29 AngularJS
  • 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. 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. 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. 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. 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. 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. AngularJS + Spring MVC REST Démo 2 Telosys Tools @telosys http://tools.telosys.org 36
  • 37. Restfull Spring Data HATEOAS 3 Telosys Tools @telosys http://tools.telosys.org 37
  • 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. 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. 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. 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. 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. Spring Data REST Book @Entity Telosys Tools @telosys http://tools.telosys.org 43
  • 44. Spring Data REST Book @Entity BookRepository CrudRepository Telosys Tools @telosys http://tools.telosys.org 44
  • 45. Spring Data REST Book @Entity BookRepository CrudRepository Spring Data REST @Controller, Dispatcher Servlet… Telosys Tools @telosys http://tools.telosys.org 45
  • 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. 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. 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. 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. HATEOAS ? " HATEOAS – the word, there's no pronounciation for. " Telosys Tools @telosys http://tools.telosys.org 50 pronounciation for. " (Ben Hale, SpringOne2GX 2012)
  • 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. HATEOAS ? Telosys Tools @telosys http://tools.telosys.org 52 Model of RESTful maturity by L.Richardson
  • 53. HATEOAS ? Un format ? Un standard ? Telosys Tools @telosys http://tools.telosys.org 53
  • 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. 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. 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. HAL : Hypertext Application Language Telosys Tools @telosys http://tools.telosys.org 57
  • 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. 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. HAL : Hypertext Application Language • Pour implémenter ou consommer des services "HAL" … Telosys Tools @telosys http://tools.telosys.org 60
  • 61. Démo 3 Telosys Tools @telosys http://tools.telosys.org 61
  • 62. Arrivée 4 Telosys Tools @telosys http://tools.telosys.org 62
  • 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. 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. 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. 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. Vous avez des questions ? Telosys Tools @telosys http://tools.telosys.org 67

×