SlideShare a Scribd company logo
FP in JAVA 8 
sponsored by ! 
Ignasi Marimon-Clos (@ignasi35) 
JUG Barcelona
@ignasi35 
thanks!
@ignasi35 
about you
@ignasi35 
about me 
@ignasi35 
1) problem solver, Garbage Collector, mostly 
scala, java 8, agile for tech teams 
2) kayaker 
3) under construction 
4) all things JVM
@ignasi35 
FP in Java 8 
Pure Functions 
no side effects 
if not used, remove it 
fixed in — fixed out
@ignasi35 
FP in Java 8 
(T, R) -> Q
@ignasi35 
FP in Java 8 
Supplier<T> 
Function<T,R> 
BiFunction<T,R,Q> 
Predicate<T> 
Consumer<T> 
() -> T 
(T) -> R 
(T, R) -> Q 
(T) -> boolean 
(T) -> {}
@ignasi35 
currying 
(T, R) -> (Q) -> (S) -> J 
BiArgumentedPrototipicalFactoryFactoryBean
@ignasi35
@ignasi35 
thanks!
@ignasi35 
End of presentation
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
XXIst Century DateTime
@ignasi35 
XXIst Century DateTime 
• Date is DEAD (my opinion) 
• Calendar is DEAD (my opinion) 
! 
! • DEAD is 57005 (that’s a fact)
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• LocalDateTime 
• Duration vs Period 
• ZonedDateTime 
! • Enum.Month 
• Enum.DayOfWeek
@ignasi35 
XXIst Century DateTime 
Enum.Month 
! • Not just JAN, FEB, MAR 
• Full arithmetic 
• plus(long months) 
• firstDayOfYear(boolean leapYear) 
• length(boolean leapYear) 
• …
@ignasi35 
XXIst Century DateTime 
• Clock 
• replace your sys.currentTimeMillis 
• allows testing 
• Instant/now 
• LocalDate 
• LocalDateTime 
• Duration vs Period 
• ZonedDateTime
@ignasi35
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• a date 
• no TimeZone 
• birth date, end of war, man on moon,… 
• LocalDateTime 
• Duration vs Period 
• ZonedDateTime
@ignasi35
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• LocalDateTime 
• an hour of the day 
• noon 
• 9am 
• Duration vs Period 
• ZonedDateTime
@ignasi35
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• LocalDateTime 
• Duration vs Period 
• Duration: 365*24*60*60*1000 
• Period: 1 year (not exactly 365 days) 
• Duration (Time) vs Period (Date) 
• ZonedDateTime
@ignasi35
@ignasi35 
XXIst Century DateTime 
• Clock 
• LocalDate 
• LocalDateTime 
• Duration vs Period 
• ZonedDateTime (not an Instant!!) 
• Immutable 
• nanosecond detail 
• Normal, Gap, Overlap
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
Lists 
a1 1 2 3 
Nil 
List<Integer> nil = Lists.nil(); 
! 
List<Integer> a3 = nil.prepend(3); 
List<Integer> a2 = a3.prepend(2); 
List<Integer> a1 = a2.prepend(1);
@ignasi35 
Lists 
a1 1 2 3 
Nil 
head(); tail();
@ignasi35 
public interface List<T> { 
T head(); 
List<T> tail(); 
boolean isEmpty(); 
void forEach(Consumer<? super T> f); 
default List<T> prepend(T t) { 
return new Cons<>(t, this); 
} 
} 
Lists
@ignasi35 
Lists 
a1 
1 2 3 
Nil 
0 
a0 
b Cons 
Cons Cons Cons 
4 
Cons 
List<Integer> a0 = a1.prepend(0); 
List<Integer> b = a1.prepend(4);
@ignasi35 
class Cons<T> implements List<T> { 
private T head; 
private List<T> tail; 
Const(T head, List<T> tail) { 
this.head = head; 
this.tail = tail; 
} 
! 
T head(){return this.head;} 
List<T> tail(){return this.tail;} 
boolean isEmpty(){return false;} 
! 
void forEach(Consumer<? super T> f){ 
f.accept(head); 
tail.forEach(f); 
} 
} 
Lists
@ignasi35 
class Nil<T> implements List<T> { 
! 
T head() { 
throw new NoSuchElementException(); 
} 
List<T> tail() { 
throw new NoSuchElementException(); 
} 
boolean isEmpty() { 
return true; 
} 
void forEach(Consumer<? super T> f){ 
} 
! 
} 
Lists
@ignasi35 
Lists 
a1 
1 2 3 
Nil 
0 
a0 
b Cons 
Cons Cons Cons 
4 
Cons 
Persistent Datastructures (not ephemeral, versioning) 
Immutable 
As efficient (consider amortised cost)
@ignasi35
@ignasi35 
filter 
class Nil<T> implements List<T> { 
//… 
List<T> filter(Predicate<? super T> p) { 
return this; 
} 
} 
! 
class Cons<T> implements List<T> { 
//… 
List<T> filter(Predicate<? super T> p) { 
if (p.test(head)) 
return new Const<>(head, tail.filter(p)); 
else 
return tail.filter(p); 
} 
}
@ignasi35 
map
@ignasi35 
map 
f
@ignasi35 
map 
class Nil<T> implements List<T> { 
//… 
<R> List<R> map(Function<T, R> f) { 
return (List<R>) this; 
} 
} 
! 
class Cons<T> implements List<T> { 
//… 
<R> List<R> map(Function<T, R> f) { 
return new Const<>(f.apply(head), tail.map(f)); 
} 
}
@ignasi35
@ignasi35 
fold 
f 
f 
f
@ignasi35 
fold 
class Nil<T> implements List<T> { 
<Z> Z reduce(Z z, BiFunction<Z, T, Z> f) { 
return z; 
} 
} 
! 
class Cons<T> implements List<T> { 
<Z> Z reduce(Z z, BiFunction<Z, T, Z> f) { 
return tail.reduce(f.apply(z,head), f); 
} 
}
@ignasi35 
fold 
aka reduce
@ignasi35 
map revisited 
f
@ignasi35 
map revisited 
f
! 
@Test 
void testMapList() { 
List<List<String>> actual = Lists 
@ignasi35 
.of(“hello world”, “This is sparta”, “asdf asdf”) 
.map(s -> Lists.of(s.split(“ ”))); 
! 
List<String> expected = Lists.of(“hello”, “world”, 
“This”, “is”, “sparta”, “asdf”, “asdf”); 
! 
assertEquals(expected, actual); 
} 
map revisited
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
map 
f
@ignasi35 
flatMap 
f
@ignasi35 
flatMap 
! 
class Cons<T> implements List<T> { 
//… 
<R> List<R> map(Function<T, R> f) { 
return new Const<>(f.apply(head), tail.map(f)); 
} 
! 
<R> List<R> flatMap(Function<T, List<R> f) { 
return f.apply(head).append(tail.flatMap(f)); 
} 
! 
}
@ignasi35
@ignasi35 
recap 
filter 
! 
map 
! 
fold 
! 
flatMap
@ignasi35
@ignasi35 
class MyFoo { 
! 
//@param surname may be null 
Person someFunc(String name, String surname) { 
… 
} 
! 
}
@ignasi35 
Maybe (aka Optional) 
replaces null completely
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever 
and ever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever 
and ever 
and ever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever 
and ever 
and ever 
and ever
@ignasi35 
Maybe (aka Optional) 
replaces null completely 
forever 
and ever 
and ever 
and ever 
and ever 
and ever
@ignasi35 
Maybe (aka Optional) 
! 
class MyFoo { 
Person someFunc(String name, Optional<String> surname) { 
… 
} 
! 
… 
! 
}
@ignasi35 
Maybe (aka Optional) 
! 
class MyFoo { 
Optional<Person> someFunc(Name x, Optional<Surname> y) { 
… 
} 
! 
… 
! 
}
@ignasi35 
Maybe (aka Optional) 
Some/Just/Algo 
! 
! 
None/Nothing/Nada 
ADT
@ignasi35
@ignasi35 
Maybe (aka Optional) 
filter: applies predicate and Returns input or None 
map: converts content 
fold: returns Some(content) or Some(default) 
flatMap: see list 
get: returns content or throws Exception 
getOrElse: returns content or defaultValue
@ignasi35 
recap 
filter 
! 
map 
! 
fold 
! 
flatMap 
ADT 
! 
Functor
@ignasi35
@ignasi35
@ignasi35 
Future (aka 
CompletableFuture)
@ignasi35 
Future (aka CF, aka 
CompletableFuture) 
! 
[FAIL] Does not use map, flatMap, filter. 
! 
[PASS] CF implemented ADT 
! 
[FAIL] Because Supplier, Consumer, Function, 
Bifuction, … CF’s API sucks.
@ignasi35 
Future 
filter: creates new future applying Predicate 
map: converts content if success. New Future 
fold: n/a 
flatMap: see list 
andThen: chains this Future’s content into a Consumer 
onSuccess/onFailure: callbacks 
recover: equivalent to map() but applied only on Fail
@ignasi35 
recap 
filter 
! 
map 
! 
fold 
! 
flatMap 
! 
andThen 
ADT 
! 
Functor
@ignasi35 
recap 
! 
Maybe simulates nullable 
Future will eventually happen 
! 
Exceptions still fuck up your day
@ignasi35
@ignasi35
@ignasi35 
Try 
Simulates a computation that: 
! 
succeeded 
or 
threw exception
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
Try in action
@ignasi35 
Try in action
@ignasi35
@ignasi35 
Try in action
@ignasi35
@ignasi35 
! 
class PersonRepository { 
Try<Person> loadBy(Name x, Optional<Surname> y) { 
… 
} 
! 
… 
! 
} 
Conclusions
@ignasi35 
class SafeDatabase { 
<T> T withTransaction(Function<Connection, T> block) { 
… 
} 
} 
! 
class AnyAOP { 
<T> T envolve(Supplier<T> block) { 
… 
} 
} 
Conclusions
@ignasi35
@ignasi35
@ignasi35 
Moar resources 
https://github.com/rocketscience-projects/javaslang 
by https://twitter.com/danieldietrich 
thanks @thomasdarimont for the tip 
! 
https://github.com/functionaljava/functionaljava 
by http://www.functionaljava.org/ (runs in Java7)
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35
@ignasi35 
Namaste
@ignasi35 
Questions
@ignasi35 
End of presentation

More Related Content

What's hot (19)

The Compatibility Challenge:Examining R and Developing TERR
The Compatibility Challenge:Examining R and Developing TERRThe Compatibility Challenge:Examining R and Developing TERR
The Compatibility Challenge:Examining R and Developing TERR
Lou Bajuk
 
Beginning Scala Svcc 2009
Beginning Scala Svcc 2009Beginning Scala Svcc 2009
Beginning Scala Svcc 2009
David Pollak
 
뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피
겨울 정
 
String matching with finite state automata
String matching with finite state automataString matching with finite state automata
String matching with finite state automata
Anmol Hamid
 
Quick sort algorithm using slide presentation , Learn selection sort example ...
Quick sort algorithm using slide presentation , Learn selection sort example ...Quick sort algorithm using slide presentation , Learn selection sort example ...
Quick sort algorithm using slide presentation , Learn selection sort example ...
University of Science and Technology Chitttagong
 
Java ME API Next
 Java ME API Next Java ME API Next
Java ME API Next
Otávio Santana
 
Correctness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQLCorrectness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQL
Nicolas Poggi
 
Writing Perl 6 Rx
Writing Perl 6 RxWriting Perl 6 Rx
Writing Perl 6 Rx
lichtkind
 
Stack and its applications
Stack and its applicationsStack and its applications
Stack and its applications
Ahsan Mansiv
 
Kotlin For Android - Collections APIs (part 6 of 7)
Kotlin For Android - Collections APIs (part 6 of 7)Kotlin For Android - Collections APIs (part 6 of 7)
Kotlin For Android - Collections APIs (part 6 of 7)
Gesh Markov
 
Ds stack 03
Ds stack 03Ds stack 03
Ds stack 03
MuhammadZubair568
 
Jug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands onJug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands on
Onofrio Panzarino
 
Python to scala
Python to scalaPython to scala
Python to scala
kao kuo-tung
 
Heap Sort
Heap SortHeap Sort
Heap Sort
Faiza Saleem
 
Regular expressions, Alex Perry, Google, PyCon2014
Regular expressions, Alex Perry, Google, PyCon2014Regular expressions, Alex Perry, Google, PyCon2014
Regular expressions, Alex Perry, Google, PyCon2014
alex_perry
 
Lab07 (1)
Lab07 (1)Lab07 (1)
Lab07 (1)
AlexisHarvey8
 
LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話
LINE Corporation
 
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
t.eazzy
 
Lec21-CS110 Computational Engineering
Lec21-CS110 Computational EngineeringLec21-CS110 Computational Engineering
Lec21-CS110 Computational Engineering
Sri Harsha Pamu
 
The Compatibility Challenge:Examining R and Developing TERR
The Compatibility Challenge:Examining R and Developing TERRThe Compatibility Challenge:Examining R and Developing TERR
The Compatibility Challenge:Examining R and Developing TERR
Lou Bajuk
 
Beginning Scala Svcc 2009
Beginning Scala Svcc 2009Beginning Scala Svcc 2009
Beginning Scala Svcc 2009
David Pollak
 
뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피뱅크샐러드 파이썬맛 레시피
뱅크샐러드 파이썬맛 레시피
겨울 정
 
String matching with finite state automata
String matching with finite state automataString matching with finite state automata
String matching with finite state automata
Anmol Hamid
 
Correctness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQLCorrectness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQL
Nicolas Poggi
 
Writing Perl 6 Rx
Writing Perl 6 RxWriting Perl 6 Rx
Writing Perl 6 Rx
lichtkind
 
Stack and its applications
Stack and its applicationsStack and its applications
Stack and its applications
Ahsan Mansiv
 
Kotlin For Android - Collections APIs (part 6 of 7)
Kotlin For Android - Collections APIs (part 6 of 7)Kotlin For Android - Collections APIs (part 6 of 7)
Kotlin For Android - Collections APIs (part 6 of 7)
Gesh Markov
 
Jug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands onJug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands on
Onofrio Panzarino
 
Regular expressions, Alex Perry, Google, PyCon2014
Regular expressions, Alex Perry, Google, PyCon2014Regular expressions, Alex Perry, Google, PyCon2014
Regular expressions, Alex Perry, Google, PyCon2014
alex_perry
 
LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話
LINE Corporation
 
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
SAP Inside Track Vienna 2018 #sitVIE - Back to the Future by adopting OO in A...
t.eazzy
 
Lec21-CS110 Computational Engineering
Lec21-CS110 Computational EngineeringLec21-CS110 Computational Engineering
Lec21-CS110 Computational Engineering
Sri Harsha Pamu
 

Viewers also liked (20)

Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes
Ch4 Algorthmique Avancée - Analyse & complexité des AlgorithmesCh4 Algorthmique Avancée - Analyse & complexité des Algorithmes
Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes
lotfibenromdhane
 
Java 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & StreamsJava 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & Streams
NewCircle Training
 
Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete  Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete
Adnan abid
 
Java 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava ComparisonJava 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava Comparison
José Paumard
 
Ch2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - RécursivitéCh2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - Récursivité
lotfibenromdhane
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
Talha Ocakçı
 
Ch5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de TriCh5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de Tri
lotfibenromdhane
 
Functional Programming in Java
Functional Programming in JavaFunctional Programming in Java
Functional Programming in Java
Premanand Chandrasekaran
 
Notifications
NotificationsNotifications
Notifications
Youssef ELBOUZIANI
 
Ch7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-CopmlétudeCh7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-Copmlétude
lotfibenromdhane
 
Ch3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes RécursivesCh3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes Récursives
lotfibenromdhane
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
José Paumard
 
Functional programming in java
Functional programming in javaFunctional programming in java
Functional programming in java
John Ferguson Smart Limited
 
Ch1 Algorthmique Avancée - Rappel & Notions de Base
Ch1 Algorthmique Avancée - Rappel & Notions de BaseCh1 Algorthmique Avancée - Rappel & Notions de Base
Ch1 Algorthmique Avancée - Rappel & Notions de Base
lotfibenromdhane
 
Cats
CatsCats
Cats
Riadh Harizi
 
JDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne TourJDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne Tour
José Paumard
 
Java 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJava 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelization
José Paumard
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
LivePerson
 
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautésAlphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm
 
Alphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server FacesAlphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server Faces
Alphorm
 
Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes
Ch4 Algorthmique Avancée - Analyse & complexité des AlgorithmesCh4 Algorthmique Avancée - Analyse & complexité des Algorithmes
Ch4 Algorthmique Avancée - Analyse & complexité des Algorithmes
lotfibenromdhane
 
Java 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & StreamsJava 8 Lambda Expressions & Streams
Java 8 Lambda Expressions & Streams
NewCircle Training
 
Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete  Database structure Structures Link list and trees and Recurison complete
Database structure Structures Link list and trees and Recurison complete
Adnan abid
 
Java 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava ComparisonJava 8 Stream API and RxJava Comparison
Java 8 Stream API and RxJava Comparison
José Paumard
 
Ch2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - RécursivitéCh2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - Récursivité
lotfibenromdhane
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
Talha Ocakçı
 
Ch5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de TriCh5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de Tri
lotfibenromdhane
 
Ch7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-CopmlétudeCh7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-Copmlétude
lotfibenromdhane
 
Ch3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes RécursivesCh3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes Récursives
lotfibenromdhane
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
José Paumard
 
Ch1 Algorthmique Avancée - Rappel & Notions de Base
Ch1 Algorthmique Avancée - Rappel & Notions de BaseCh1 Algorthmique Avancée - Rappel & Notions de Base
Ch1 Algorthmique Avancée - Rappel & Notions de Base
lotfibenromdhane
 
JDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne TourJDK 8, lambdas, streams, collectors - Bretagne Tour
JDK 8, lambdas, streams, collectors - Bretagne Tour
José Paumard
 
Java 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJava 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelization
José Paumard
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
LivePerson
 
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautésAlphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm.com Formation Autodesk Revit 2018 : Les nouveautés
Alphorm
 
Alphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server FacesAlphorm.com Formation Java Server Faces
Alphorm.com Formation Java Server Faces
Alphorm
 
Ad

Similar to Functional Programming in JAVA 8 (20)

Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Chris Richardson
 
Map, flatmap and reduce are your new best friends (javaone, svcc)
Map, flatmap and reduce are your new best friends (javaone, svcc)Map, flatmap and reduce are your new best friends (javaone, svcc)
Map, flatmap and reduce are your new best friends (javaone, svcc)
Chris Richardson
 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.
David Gómez García
 
Good functional programming is good programming
Good functional programming is good programmingGood functional programming is good programming
Good functional programming is good programming
kenbot
 
Functional Programming 101 for Java 7 Developers
Functional Programming 101 for Java 7 DevelopersFunctional Programming 101 for Java 7 Developers
Functional Programming 101 for Java 7 Developers
Jayaram Sankaranarayanan
 
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Chris Richardson
 
Java Collections Framework - Interfaces, Classes and Algorithms
Java Collections Framework - Interfaces, Classes and AlgorithmsJava Collections Framework - Interfaces, Classes and Algorithms
Java Collections Framework - Interfaces, Classes and Algorithms
RajalakshmiS74
 
LJ_JAVA_FS_Collection.pptx
LJ_JAVA_FS_Collection.pptxLJ_JAVA_FS_Collection.pptx
LJ_JAVA_FS_Collection.pptx
Raneez2
 
OOP and FP: become a better programmer - Simone Bordet, Mario Fusco - Codemot...
OOP and FP: become a better programmer - Simone Bordet, Mario Fusco - Codemot...OOP and FP: become a better programmer - Simone Bordet, Mario Fusco - Codemot...
OOP and FP: become a better programmer - Simone Bordet, Mario Fusco - Codemot...
Codemotion
 
OOP and FP - Become a Better Programmer
OOP and FP - Become a Better ProgrammerOOP and FP - Become a Better Programmer
OOP and FP - Become a Better Programmer
Mario Fusco
 
JDK8 Functional API
JDK8 Functional APIJDK8 Functional API
JDK8 Functional API
Justin Lin
 
Thumbtack Expertise Days # 5 - Javaz
Thumbtack Expertise Days # 5 - JavazThumbtack Expertise Days # 5 - Javaz
Thumbtack Expertise Days # 5 - Javaz
Alexey Remnev
 
Collections Framework Beginners Guide 2
Collections Framework Beginners Guide 2Collections Framework Beginners Guide 2
Collections Framework Beginners Guide 2
Kenji HASUNUMA
 
Collections Framework Begineers guide 2
Collections Framework Begineers guide 2Collections Framework Begineers guide 2
Collections Framework Begineers guide 2
Kenji HASUNUMA
 
Collections
CollectionsCollections
Collections
Manav Prasad
 
Best core & advanced java classes in mumbai
Best core & advanced java classes in mumbaiBest core & advanced java classes in mumbai
Best core & advanced java classes in mumbai
Vibrant Technologies & Computers
 
EMFPath
EMFPathEMFPath
EMFPath
mikaelbarbero
 
Java8lambda
Java8lambda Java8lambda
Java8lambda
Isuru Samaraweera
 
Javaz. Functional design in Java 8.
Javaz. Functional design in Java 8.Javaz. Functional design in Java 8.
Javaz. Functional design in Java 8.
Vadim Dubs
 
Collections
CollectionsCollections
Collections
bsurya1989
 
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Map, Flatmap and Reduce are Your New Best Friends: Simpler Collections, Concu...
Chris Richardson
 
Map, flatmap and reduce are your new best friends (javaone, svcc)
Map, flatmap and reduce are your new best friends (javaone, svcc)Map, flatmap and reduce are your new best friends (javaone, svcc)
Map, flatmap and reduce are your new best friends (javaone, svcc)
Chris Richardson
 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.
David Gómez García
 
Good functional programming is good programming
Good functional programming is good programmingGood functional programming is good programming
Good functional programming is good programming
kenbot
 
Functional Programming 101 for Java 7 Developers
Functional Programming 101 for Java 7 DevelopersFunctional Programming 101 for Java 7 Developers
Functional Programming 101 for Java 7 Developers
Jayaram Sankaranarayanan
 
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Chris Richardson
 
Java Collections Framework - Interfaces, Classes and Algorithms
Java Collections Framework - Interfaces, Classes and AlgorithmsJava Collections Framework - Interfaces, Classes and Algorithms
Java Collections Framework - Interfaces, Classes and Algorithms
RajalakshmiS74
 
LJ_JAVA_FS_Collection.pptx
LJ_JAVA_FS_Collection.pptxLJ_JAVA_FS_Collection.pptx
LJ_JAVA_FS_Collection.pptx
Raneez2
 
OOP and FP: become a better programmer - Simone Bordet, Mario Fusco - Codemot...
OOP and FP: become a better programmer - Simone Bordet, Mario Fusco - Codemot...OOP and FP: become a better programmer - Simone Bordet, Mario Fusco - Codemot...
OOP and FP: become a better programmer - Simone Bordet, Mario Fusco - Codemot...
Codemotion
 
OOP and FP - Become a Better Programmer
OOP and FP - Become a Better ProgrammerOOP and FP - Become a Better Programmer
OOP and FP - Become a Better Programmer
Mario Fusco
 
JDK8 Functional API
JDK8 Functional APIJDK8 Functional API
JDK8 Functional API
Justin Lin
 
Thumbtack Expertise Days # 5 - Javaz
Thumbtack Expertise Days # 5 - JavazThumbtack Expertise Days # 5 - Javaz
Thumbtack Expertise Days # 5 - Javaz
Alexey Remnev
 
Collections Framework Beginners Guide 2
Collections Framework Beginners Guide 2Collections Framework Beginners Guide 2
Collections Framework Beginners Guide 2
Kenji HASUNUMA
 
Collections Framework Begineers guide 2
Collections Framework Begineers guide 2Collections Framework Begineers guide 2
Collections Framework Begineers guide 2
Kenji HASUNUMA
 
Javaz. Functional design in Java 8.
Javaz. Functional design in Java 8.Javaz. Functional design in Java 8.
Javaz. Functional design in Java 8.
Vadim Dubs
 
Ad

More from Ignasi Marimon-Clos i Sunyol (10)

The Emperor Has No Docs (Geecon Oct'23)
The Emperor Has No Docs (Geecon Oct'23)The Emperor Has No Docs (Geecon Oct'23)
The Emperor Has No Docs (Geecon Oct'23)
Ignasi Marimon-Clos i Sunyol
 
Jeroglificos, Minotauros y la factura de la luz
Jeroglificos, Minotauros y la factura de la luzJeroglificos, Minotauros y la factura de la luz
Jeroglificos, Minotauros y la factura de la luz
Ignasi Marimon-Clos i Sunyol
 
Contributing to Akka (Hacktoberfest 2020)
Contributing to Akka (Hacktoberfest 2020)Contributing to Akka (Hacktoberfest 2020)
Contributing to Akka (Hacktoberfest 2020)
Ignasi Marimon-Clos i Sunyol
 
Contributing to OSS (Scalator 2020-01-22)
Contributing to OSS (Scalator 2020-01-22)Contributing to OSS (Scalator 2020-01-22)
Contributing to OSS (Scalator 2020-01-22)
Ignasi Marimon-Clos i Sunyol
 
Reactive Microsystems (Sw Crafters Barcelona 2018)
Reactive Microsystems (Sw Crafters Barcelona 2018)Reactive Microsystems (Sw Crafters Barcelona 2018)
Reactive Microsystems (Sw Crafters Barcelona 2018)
Ignasi Marimon-Clos i Sunyol
 
Lagom Workshop BarcelonaJUG 2017-06-08
Lagom Workshop  BarcelonaJUG 2017-06-08Lagom Workshop  BarcelonaJUG 2017-06-08
Lagom Workshop BarcelonaJUG 2017-06-08
Ignasi Marimon-Clos i Sunyol
 
Intro scala for rubyists (ironhack)
Intro scala for rubyists (ironhack)Intro scala for rubyists (ironhack)
Intro scala for rubyists (ironhack)
Ignasi Marimon-Clos i Sunyol
 
Scala 101-bcndevcon
Scala 101-bcndevconScala 101-bcndevcon
Scala 101-bcndevcon
Ignasi Marimon-Clos i Sunyol
 
Scala 101
Scala 101Scala 101
Scala 101
Ignasi Marimon-Clos i Sunyol
 
Spray & Maven Intro for Scala Barcelona Developers Meetup
Spray & Maven Intro for Scala Barcelona Developers MeetupSpray & Maven Intro for Scala Barcelona Developers Meetup
Spray & Maven Intro for Scala Barcelona Developers Meetup
Ignasi Marimon-Clos i Sunyol
 

Recently uploaded (20)

cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdfcnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
AmirStern2
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
Safe Software
 
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdfvertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
AmirStern2
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Analysis of the changes in the attitude of the news comments caused by knowin...
Analysis of the changes in the attitude of the news comments caused by knowin...Analysis of the changes in the attitude of the news comments caused by knowin...
Analysis of the changes in the attitude of the news comments caused by knowin...
Matsushita Laboratory
 
Providing an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME FlowProviding an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME Flow
Safe Software
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Supporting the NextGen 911 Digital Transformation with FME
Supporting the NextGen 911 Digital Transformation with FMESupporting the NextGen 911 Digital Transformation with FME
Supporting the NextGen 911 Digital Transformation with FME
Safe Software
 
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptxFIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Alliance
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptxFIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
SOFTTECHHUB
 
Data Validation and System Interoperability
Data Validation and System InteroperabilityData Validation and System Interoperability
Data Validation and System Interoperability
Safe Software
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementaryMurdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
Floods in Valencia: Two FME-Powered Stories of Data Resilience
Floods in Valencia: Two FME-Powered Stories of Data ResilienceFloods in Valencia: Two FME-Powered Stories of Data Resilience
Floods in Valencia: Two FME-Powered Stories of Data Resilience
Safe Software
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdfEdge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
Safe Software
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdfWar_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
PyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent IntegrationPyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent Integration
barqawicloud
 
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdfcnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
AmirStern2
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
Safe Software
 
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdfvertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
AmirStern2
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Analysis of the changes in the attitude of the news comments caused by knowin...
Analysis of the changes in the attitude of the news comments caused by knowin...Analysis of the changes in the attitude of the news comments caused by knowin...
Analysis of the changes in the attitude of the news comments caused by knowin...
Matsushita Laboratory
 
Providing an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME FlowProviding an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME Flow
Safe Software
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Supporting the NextGen 911 Digital Transformation with FME
Supporting the NextGen 911 Digital Transformation with FMESupporting the NextGen 911 Digital Transformation with FME
Supporting the NextGen 911 Digital Transformation with FME
Safe Software
 
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptxFIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Alliance
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptxFIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
SOFTTECHHUB
 
Data Validation and System Interoperability
Data Validation and System InteroperabilityData Validation and System Interoperability
Data Validation and System Interoperability
Safe Software
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementaryMurdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
Floods in Valencia: Two FME-Powered Stories of Data Resilience
Floods in Valencia: Two FME-Powered Stories of Data ResilienceFloods in Valencia: Two FME-Powered Stories of Data Resilience
Floods in Valencia: Two FME-Powered Stories of Data Resilience
Safe Software
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdfEdge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
Safe Software
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdfWar_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
PyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent IntegrationPyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent Integration
barqawicloud
 

Functional Programming in JAVA 8