BackDay Xebia : Découvrez RxJava, le reactive programming

download BackDay Xebia : Découvrez RxJava, le reactive programming

of 47

  • date post

    27-Jul-2015
  • Category

    Technology

  • view

    131
  • download

    4

Embed Size (px)

Transcript of BackDay Xebia : Découvrez RxJava, le reactive programming

1. Jrome Doucet |Romain Niveau RxJava Dcouvrez RxJava, le reactive programming 2. Pourquoi Rx ? 3. Origine Pourquoi Rx Reactive programming Rx: Reactive Extensions Initialement en .NET Polyglote Extension du pattern Observer 3 4. Documentations Pourquoi Rx Documentations trs riches Bases sur des diagrammes billes Arbre de dcision pour trouver les bons oprateurs 4 5. Documentations Pourquoi Rx 5 6. Pattern Observer 7. Pattern initial Pattern Observer 7 8. Dans RxJava Pattern Observer Bas sur ce pattern Ajout doprateurs divers (agrgation, inspections de squences, ) Ecriture fonctionnelle 8 9. Classes principales Pattern Observer Observable Observer Subscription Scheduler 9 10. 3 mthodes principales Pattern Observer OnNext Appele aprs chaque vnement OnError Appele lorsquune erreur survient OnCompleted Appele la fin de la squence 10 11. Exemple dObserver: classe complte Pattern Observer 11 12. Exemple dObserver: actions rapides Pattern Observer 12 13. ConnectableObservable Pattern Observer Cold Observable Hot Observable Non synchronis par dfaut Connect() synchronise les Observers 13 14. Squences 15. Crations Squences Les squences sont au coeur de RxJava Elles sont toujours cres laide de mthodes statiques Quelques exemples 15 16. Crations Squences from() 16 17. Crations Squences from() 17 18. Crations Squences create() 18 19. Crations Squences Et il en existe pleins dautres : just(), repeat(), repeatWhen(), defer(), range(), interval(), timer(), empty(), error(), never(). Une extension (rxjava-async) permet de crer des Observables partir de fonctions. 19 20. Inspection de squences 21. Inspection Squences Les squences peuvent tre inspectes. Les mthodes suivantes peuvent tre utilises : all(), contains(), exists(), isEmpty(), sequenceEquals() 21 22. Agrgation de squences 23. Agrgation Squences RxJava propose des oprateurs dagrgation courants Ils vont permettre de prsenter la donne sous une forme qui va faciliter son exploitation Ils sont en partie inspirs doprateurs fonctionnels. Quelques exemples 23 24. Agrgation Squences reduce() 24 25. Agrgation Squences collect() 25 26. Agrgation Squences Loprateur reduce est aussi prsent, ainsi que dautres permettant de convertir la squence en Collections (toList(), toMap(), toSortedList(), ) Une extension (rxjava-math) permet de faire des agrgations sur des nombres Deux autres oprateurs permettent de faire des agrgations sur des String uniquement, join() et stringConcat() 26 27. Backpressure / Gestion derreurs 28. Mthodes ltrantes Backpressure throttleFirst throttleLast debounce 28 29. Concepts alternatifs: buffer Backpressure 29 30. Concepts alternatifs: window Backpressure 30 31. Principes de base Gestion derreurs Aucune exception leve hors de lObservable par dfaut Si onError lve une exception, celle ci remonte dans une OnErrorFailedException OnErrorNotImplementedException est leve si lObserver na pas de onError CompositeException encapsule lensemble des exceptions 31 32. Principes avancs Gestion derreurs OnErrorResumeNext OnErrorReturn Retry 32 33. Principes avancs Gestion derreurs OnErrorResumeNext OnErrorReturn Retry 33 34. Principes avancs Gestion derreurs OnErrorResumeNext OnErrorReturn Retry 34 35. Combinaison de squences 36. Combinaison de squences Rpond aux besoins de fusion entre plusieurs sources de donnes. Permet darbitrer des sources de donnes concurrentes. Permet de corrler les vnements issus de plusieurs sources de donnes. 36 37. Fusion Combinaison de squences concat() 37 38. Fusion Combinaison de squences startWith() 38 39. Concurrence Combinaison de squences amb() 39 40. Concurrence Combinaison de squences merge() 40 41. Corrlation Combinaison de squences zip() 41 42. Concurrency 43. Scheduler Concurrency Base sur des Schedulers fourni par RxJava : computation() from(Executor) immediate() io() newTread() trampoline() Peuvent tre utiliss directement Mais il existe des raccourcis 43 44. Concurrency subscribeOn() - observeOn() 44 45. Dmo 46. Conclusion 47. Conclusion Framework uniquement pour la gestion dvnements Ne sert pas faire des appels asynchrones Framework complexe qui demande du temps de prise en main Utilis dans des outils open source: Hystrix, rx-vertx 47