SlideShare une entreprise Scribd logo
#DevoxxFR
Java (8) eXperiments
Francois Sarradin @fsarradin
1
#DevoxxFR
François Sarradin
• @ippontech - #IpponOz
• Développeur, architecte, data ingénieur
• Manager technique capitalisation
• brownbaglunch.fr
2
#DevoxxFR
une pratique peut-elle être
bonne ?
3
#DevoxxFR
de nouvelles pratiques
pour faire face
aux nouveaux besoins
4
#DevoxxFR 5
BE
Curious
Weird
EXPERIMENT
Innovation
#DevoxxFR 6
#DevoxxFR
Sommaire
7
• Héritage multiple
• Exception
• Pattern matching
Et du live coding !
#DevoxxFR
Héritage multiple
8
Java 8
#DevoxxFR
héritage multiple d’état ?
10
#DevoxxFR
Live Demo
11
#DevoxxFR
Ce qu’il faut retenir
12
#DevoxxFR 13
• return in -> 2 * in // => singleton
• return in -> 2 * in + out // => new instance
State multiple
inheritance
#DevoxxFR
Exception
15
#DevoxxFR 16
Email is required
EMail
John
First name
Last name
Wololo
Age
Age must be an integer
#DevoxxFR
existe-t-il une alternative à
throw new Exception(); ?
17
#DevoxxFR
Live Demo
18
#DevoxxFR
Ce qu’il faut retenir
19
#DevoxxFR
Limiter le nombre sous-classes
abstract class Base {
private Base() {}
public static class Class1 extends Base { … }
public static class Class2 extends Base { … }
}
20
#DevoxxFR
Contraindre par le type
21
• Limitation des sous-classes => TDD
• Type = spécification
• ATTENTION !!! null interdit (checkstyle) T = Type
#DevoxxFR
Pattern matching
22
#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
#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
#DevoxxFR
Live Demo
25
#DevoxxFR
Grammaire
26
MatchCase
match
when
end
When
then
Otherwise
otherwise
end
#DevoxxFR
Ce qu’il faut retenir
27
#DevoxxFR
Un DSL en Java qui respecte
un grammaire précise…
… C’est possible !
28
#DevoxxFR
Grammaire
29
FirstWord SecondWord
firstWord secondWord
repeat
end
#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
#DevoxxFR
Conclusion
31
#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
#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 !
#DevoxxFR
Merci / Thank you
34
Make bugs, not war

Contenu connexe

PDF
Retours sur java 8 devoxx fr 2016
PDF
L'API Collector dans tous ses états
PDF
Java 8 : Un ch'ti peu de lambda
PDF
50 nouvelles choses que l'on peut faire en Java 8
PDF
Java 8-streams-collectors-patterns
PDF
50 nouvelles choses que l'on peut faire avec Java 8
PDF
JDK 8, lambdas, streams, collectors - Bretagne Tour
PDF
Les Streams sont parmi nous
Retours sur java 8 devoxx fr 2016
L'API Collector dans tous ses états
Java 8 : Un ch'ti peu de lambda
50 nouvelles choses que l'on peut faire en Java 8
Java 8-streams-collectors-patterns
50 nouvelles choses que l'on peut faire avec Java 8
JDK 8, lambdas, streams, collectors - Bretagne Tour
Les Streams sont parmi nous

Tendances (20)

PDF
API Asynchrones en Java 8
PDF
20140123 java8 lambdas_jose-paumard-soat
PPTX
Une Introduction à R
PDF
Javascript : fondamentaux et OOP
PDF
Asyncio: offrez des tulipes à vos entrées sorties asynchrones
PPT
Présentation Groovy
PDF
Ce bon vieux propel
ODP
Monitoring d'applications/environnements PHP: APM et Pinba
PDF
Introduction à Python - Achraf Kacimi El Hassani
ODP
ZendFramework2 - Présentation
PDF
Introduction à l'analyse de réseaux avec R
PPT
Introduction à JavaScript
PDF
Communications Réseaux et HTTP avec PHP
PDF
CocoaHeads Rennes #16: OHHTTPStubs
PDF
PHPTour 2011 - PHP5.4
PPTX
Php 5.3
PPT
Dynamic Languages
PPTX
Zend Framework 2
PDF
PHP 7 et Symfony 3
PPTX
Change mind about JS
API Asynchrones en Java 8
20140123 java8 lambdas_jose-paumard-soat
Une Introduction à R
Javascript : fondamentaux et OOP
Asyncio: offrez des tulipes à vos entrées sorties asynchrones
Présentation Groovy
Ce bon vieux propel
Monitoring d'applications/environnements PHP: APM et Pinba
Introduction à Python - Achraf Kacimi El Hassani
ZendFramework2 - Présentation
Introduction à l'analyse de réseaux avec R
Introduction à JavaScript
Communications Réseaux et HTTP avec PHP
CocoaHeads Rennes #16: OHHTTPStubs
PHPTour 2011 - PHP5.4
Php 5.3
Dynamic Languages
Zend Framework 2
PHP 7 et Symfony 3
Change mind about JS
Publicité

En vedette (15)

PPTX
ಪ್ರವಾದಿ ಮುಹಮ್ಮದ್ [ಸ]ರ ಕೆಲವು ವಚನಗಳು 3
PDF
Linked in
PPTX
HighRoad U Webinar: Creating Personalized Email Experiences
PDF
iMindQ Whitepaper
PDF
Plantas de energía solar inteligentes (Smart Solar Plants)
PDF
Qiu_Lisa_CENTC_Poster_Final
PDF
Alla ricerca del cristallo arcobaleno
PDF
Prés fleuris en voiries / Urban flower meadows
PPT
Trees management by the Ministry of the Brussels Region / Gestion des arbres ...
PDF
Periscope Tips
PPTX
Festivales de música electrónica
PDF
hamid hussain cv
PPTX
DIRECTUM В DIRECTUM. Открытые дни DIRECTUM 2015
PDF
Tech for Good Trailblazers - Pavegen
ಪ್ರವಾದಿ ಮುಹಮ್ಮದ್ [ಸ]ರ ಕೆಲವು ವಚನಗಳು 3
Linked in
HighRoad U Webinar: Creating Personalized Email Experiences
iMindQ Whitepaper
Plantas de energía solar inteligentes (Smart Solar Plants)
Qiu_Lisa_CENTC_Poster_Final
Alla ricerca del cristallo arcobaleno
Prés fleuris en voiries / Urban flower meadows
Trees management by the Ministry of the Brussels Region / Gestion des arbres ...
Periscope Tips
Festivales de música electrónica
hamid hussain cv
DIRECTUM В DIRECTUM. Открытые дни DIRECTUM 2015
Tech for Good Trailblazers - Pavegen
Publicité

Similaire à Java (8) eXperiments - DevoxxFR 2016 (20)

PDF
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
PPTX
Lego bonnes pratiques_devoxx_2017
PPTX
Finalement, c’est quoi un système distribué ?
PDF
Kubernetes University - Cap sur l'orchestration
PDF
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
PDF
Kubernetes University, Cap sur l’orchestration Docker
PDF
Redux rx js
PDF
Networxx (intro et fin)
PPTX
Cassandra Spark Lan Party at Devoxx France
PDF
Java 9 modulo les modules devoxx fr 2017
PDF
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
PDF
Voxxeddays lux 2018 apres java 8, java 9 et 10
PDF
Devoxx France 2014 - Tests de performance en continu
PDF
H2O , Le machine learning sans coder ou presque - Devoxx france 2016
PPTX
TP Git avancé DevoxxFR 2018 (pres')
PDF
Découverte du moteur de rendu du projet Spartan
PPTX
Retours Devoxx France 2016
PDF
Les Cast Codeurs à Devoxx Belgique 2013
PDF
Decouvrir CQRS (sans Event sourcing) par la pratique
PPTX
Javascript proprement
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Lego bonnes pratiques_devoxx_2017
Finalement, c’est quoi un système distribué ?
Kubernetes University - Cap sur l'orchestration
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Kubernetes University, Cap sur l’orchestration Docker
Redux rx js
Networxx (intro et fin)
Cassandra Spark Lan Party at Devoxx France
Java 9 modulo les modules devoxx fr 2017
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
Voxxeddays lux 2018 apres java 8, java 9 et 10
Devoxx France 2014 - Tests de performance en continu
H2O , Le machine learning sans coder ou presque - Devoxx france 2016
TP Git avancé DevoxxFR 2018 (pres')
Découverte du moteur de rendu du projet Spartan
Retours Devoxx France 2016
Les Cast Codeurs à Devoxx Belgique 2013
Decouvrir CQRS (sans Event sourcing) par la pratique
Javascript proprement

Plus de François Sarradin (6)

PDF
Java8 eXperiment - Normandy JUG
PDF
FLATMAP ZAT SHIT : les monades expliquées aux geeks (Devoxx France 2013)
PDF
Scala vs java 8
PDF
Java 8 Lambda
PDF
JavaScript Core
PDF
Programmation Fonctionnelle
Java8 eXperiment - Normandy JUG
FLATMAP ZAT SHIT : les monades expliquées aux geeks (Devoxx France 2013)
Scala vs java 8
Java 8 Lambda
JavaScript Core
Programmation Fonctionnelle

Java (8) eXperiments - DevoxxFR 2016