Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Java (8) eXperiments - DevoxxFR 2016

1.128 visualizaciones

Publicado el

Dans cette présentation, je vous propose de découvrir ensemble d’autre façon de développer en Java et Java 8 en particulier, mais que peu ont testé. Est-il possible de limiter le nombre de sous-classes pour une classe ? Si on peut désormais mettre un comportement dans une interface, peut-on y mettre un état ? Et peut-on sécuriser la grammaire de ses DSL internes ? Live coding à l’appui, voici certaines des questions auxquelles nous allons essayer de répondre ou qu’on ne devrait jamais aborder.

Publicado en: Software
  • Sé el primero en comentar

Java (8) eXperiments - DevoxxFR 2016

  1. 1. #DevoxxFR Java (8) eXperiments Francois Sarradin @fsarradin 1
  2. 2. #DevoxxFR François Sarradin • @ippontech - #IpponOz • Développeur, architecte, data ingénieur • Manager technique capitalisation • brownbaglunch.fr 2
  3. 3. #DevoxxFR une pratique peut-elle être bonne ? 3
  4. 4. #DevoxxFR de nouvelles pratiques pour faire face aux nouveaux besoins 4
  5. 5. #DevoxxFR 5 BE Curious Weird EXPERIMENT Innovation
  6. 6. #DevoxxFR 6
  7. 7. #DevoxxFR Sommaire 7 • Héritage multiple • Exception • Pattern matching Et du live coding !
  8. 8. #DevoxxFR Héritage multiple 8
  9. 9. Java 8
  10. 10. #DevoxxFR héritage multiple d’état ? 10
  11. 11. #DevoxxFR Live Demo 11
  12. 12. #DevoxxFR Ce qu’il faut retenir 12
  13. 13. #DevoxxFR 13 • return in -> 2 * in // => singleton • return in -> 2 * in + out // => new instance
  14. 14. State multiple inheritance
  15. 15. #DevoxxFR Exception 15
  16. 16. #DevoxxFR 16 Email is required EMail John First name Last name Wololo Age Age must be an integer
  17. 17. #DevoxxFR existe-t-il une alternative à throw new Exception(); ? 17
  18. 18. #DevoxxFR Live Demo 18
  19. 19. #DevoxxFR Ce qu’il faut retenir 19
  20. 20. #DevoxxFR Limiter le nombre sous-classes abstract class Base { private Base() {} public static class Class1 extends Base { … } public static class Class2 extends Base { … } } 20
  21. 21. #DevoxxFR Contraindre par le type 21 • Limitation des sous-classes => TDD • Type = spécification • ATTENTION !!! null interdit (checkstyle) T = Type
  22. 22. #DevoxxFR Pattern matching 22
  23. 23. #DevoxxFR Switch case (Java 7+) switch (myValue) { case "hello": System.out.println("hello world"); break; case "world": System.out.println("world hello"); break; default : System.out.println("what else!"); } 23
  24. 24. #DevoxxFR Pattern matching (Scala) myValue matches { case "hello" => println("hello world") case i: Int => println(s"int: $i") case Add(a, b) => println(s"a + b = ${a + b}") case _ => println("what else!") } 24
  25. 25. #DevoxxFR Live Demo 25
  26. 26. #DevoxxFR Grammaire 26 MatchCase match when end When then Otherwise otherwise end
  27. 27. #DevoxxFR Ce qu’il faut retenir 27
  28. 28. #DevoxxFR Un DSL en Java qui respecte un grammaire précise… … C’est possible ! 28
  29. 29. #DevoxxFR Grammaire 29 FirstWord SecondWord firstWord secondWord repeat end
  30. 30. #DevoxxFR DSL en Java FirstWord firstWord(T t0) { return new FirstWord(t0); } class FirstWord { final T t; FirstWord(T t) { this.t = t; } FirstWord repeat(T tn) { return new FirstWord(t + tn); } SecondWord secondWord(R r) { return new SecondWord(r); } class SecondWord { final R r; SecondWord(R r) { this.r = r; } S end() { return /* … */; } } } 30
  31. 31. #DevoxxFR Conclusion 31
  32. 32. #DevoxxFR Ce que nous avons vu 32 Montrer les mécanismes internes à Java 8 Pousser le compilateur à nous aider (contraintes de type) Spécification analysée par le compilateur
  33. 33. #DevoxxFR Ce qu’il faut faire 33 Voir d’autres langages (Python, OCaml, Scala) Voir d’autres approches (FP, logical programming, prototype based programming, acteurs) Communiquer !
  34. 34. #DevoxxFR Merci / Thank you 34 Make bugs, not war

×