SlideShare a Scribd company logo
1 of 66
Download to read offline
Enterprise Java Training
Victor Rentea
10 March 2017
Clean Lambdas & Streams in Java 8
A Hands-on Experience
Workshop: Searching Streams (30 min)
Workshop: Transforming Streams (40 min)
Workshop: Cleaning Lambdas (20 min)
Conclusions: Best Practices (20 min)
Agenda
www.victorrentea.ro
victor.rentea@gmail.com
@victorrentea
© Copyright Victor Rentea 2017
VictorRentea.ro
Clean Code Evangelist
International Speaker  Spring and
 Clean Code, Design Patterns ( )
 TDD, Coding Dojos
 Java Performance
 many more:
Victor Rentea, PhD(CS)
Consultant, Technical Lead
Lead Architect for major client at IBM Romania
Night Job :
Freelance Trainer & Coach
victorrentea@gmail.com www.victorrentea.ro@victorrentea
2
VictorRentea.ro
They are cool
Expressive code
- .filter(Order::isActive)
Concise code (½ lines?)
Cryptic? Hard to read?
- What guidelines to follow ?
Why Lambdas ?
3
VictorRentea.ro
Which λ to use in enterprise Java apps ?
- Readable, maintainable
- vs Java7
-
Questionnaire-based
- Java8 features in examples from production
- For Java developers of any exp level (min 3 months of Java8 hands-on)
- Wanna submit you answer? Thank you !! : http://bit.ly/2dFf2fi
My own little
Clean Lambdas Study
4
VictorRentea.ro
Workshop: Searching Streams (30 min)
Workshop: Transforming Streams (40 min)
Workshop: Cleaning Lambdas (20 min)
Conclusions: Best Practices (20 min)
Agenda
5
VictorRentea.ro
// Cool Class Diagram
[Order|id:Long;creationDate;paymentMeth
od;status:Status;totalPrice:BigDecimal]-
orderLines*>[OrderLine|count:int;isSpecial
Offer]
[OrderLine]-product>[Product|name]
[Audit|action;date;user;modifiedField]
Before we start: configure your IDE to suggest static imports of:
java.util.stream.Collectors.* and java.util.Comparator.comparing
In Eclipse: Preferences > type “favo” > Favorites > New Type & New Member
Our Domain Model 
6
VictorRentea.ro7
VictorRentea.ro8
VictorRentea.ro9
VictorRentea.ro10
VictorRentea.ro11
VictorRentea.ro12
< 6 mo
> 6 mo
VictorRentea.ro13
VictorRentea.ro14
VictorRentea.ro15
< 6 mo
> 6 mo
VictorRentea.ro16
VictorRentea.ro17
VictorRentea.ro18
< 6 mo
> 6 mo
VictorRentea.ro19
< 6 mo
> 6 mo
VictorRentea.ro20
VictorRentea.ro21
22
VictorRentea.ro23
VictorRentea.ro24
VictorRentea.ro25
VictorRentea.ro26
VictorRentea.ro27
< 6 mo
> 6 mo
VictorRentea.ro28
< 6 mo
> 6 mo
VictorRentea.ro29
VictorRentea.ro30
VictorRentea.ro31
VictorRentea.ro
static method constructor
Method
References
32
Integer::parseInt
Order::getCreationDate
OrderMapper::toDto
String::length
myOrder::getCreationDate
orderMapper::toDto
firstName::length
Date::new
... of a class … of an instance
instance method
instance
is known
𝒇(𝑶𝒓𝒅𝒆𝒓): 𝑫𝒂𝒕𝒆
𝒇(𝑺𝒕𝒓𝒊𝒏𝒈): 𝒊𝒏𝒕
𝒇(𝑶𝒓𝒅𝒆𝒓𝑴𝒂𝒑𝒑𝒆𝒓, 𝑶𝒓𝒅𝒆𝒓): 𝑶𝒓𝒅𝒆𝒓𝑫𝒕𝒐
𝒇(): 𝑫𝒂𝒕𝒆
𝒇(): 𝒊𝒏𝒕
𝒇 𝑶𝒓𝒅𝒆𝒓 : 𝑶𝒓𝒅𝒆𝒓𝑫𝒕𝒐
𝒇(𝑺𝒕𝒓𝒊𝒏𝒈): 𝒊𝒏𝒕
𝒇(): 𝑫𝒂𝒕𝒆
𝒇(𝑳𝒐𝒏𝒈): 𝑫𝒂𝒕𝒆
VictorRentea.ro
= (String s) -> {return s.length();};
Function<String, Integer> stringLen = (String s) -> s.length(); // implicit return
= s -> s.length();
= String :: length;
Comparator<User> fNameComparator = (u1,u2)-> u1.getFName().compareTo(u2.getFName());
= Comparator.comparing(User :: getFName);
Predicate<Apple> appleIsHeavy = a -> a.getWeight() > 150;
= Apple :: isHeavy;
Consumer<String> stringPrinter = s -> System.out.println(s); // returns void
= System.out::println;
Supplier<Wine> firstMiracle = () -> new Wine();
= Wine :: new;
𝒇 𝑺𝒕𝒓𝒊𝒏𝒈 : 𝑰𝒏𝒕𝒆𝒈𝒆𝒓
𝒇 𝑼𝒔𝒆𝒓, 𝑼𝒔𝒆𝒓 : 𝒊𝒏𝒕
𝒇 𝑨𝒑𝒑𝒍𝒆 : 𝒃𝒐𝒐𝒍𝒆𝒂𝒏
𝒇 𝑺𝒕𝒓𝒊𝒏𝒈
𝒇(): 𝑾𝒊𝒏𝒆 ʎ syntax
33
VictorRentea.ro34
VictorRentea.ro
flatMap(i -> i.getChildren().stream())
35
VictorRentea.ro
2 4 1 3
0 2+
.reduce(0, +)
6+ 7+ 10+
36
VictorRentea.ro37
VictorRentea.ro38
< 6 mo
> 6 mo
VictorRentea.ro39
< 6 mo
> 6 mo
VictorRentea.ro40
VictorRentea.ro41
VictorRentea.ro42
VictorRentea.ro43
VictorRentea.ro44
VictorRentea.ro45
VictorRentea.ro46
VictorRentea.ro47
VictorRentea.ro48
VictorRentea.ro49
VictorRentea.ro50
orders.stream()
.filter(Order::isActive)
.map(Order::getCreationDate)
.collect(toList())
VictorRentea.ro51
orders.stream()
.filter(Order::isActive)
.map(Order::getCreationDate)
.collect(toList())
Give me!
Here you go!
Give me!
Give me!
Argh!
Another one!
Here you go!
VictorRentea.ro52
.filter(Order::isActive)
orders.stream()
.map(Order::getCreationDate)
Give me! Nope! I’m done.
.collect(toList())
.limit(3)
ARENEVERSEEN
VictorRentea.ro53
.filter(Order::isActive)
.map(Order::getCreationDate)
.findFirst()
orders.stream()
ARENEVERSEEN
I’m done.
VictorRentea.ro54
Short Circuiting
VictorRentea.ro55
VictorRentea.ro56
The most important principle
in Programming?
VictorRentea.ro57
ingle esponsibility rincipleS R P
VictorRentea.ro58
Keep It Short & SimpleK I S S
VictorRentea.ro59
KISS
(or nullable): SRP
Work with predicates
(coming up next)
Simple code
Look for
the simplest
form
VictorRentea.ro60
Pair Programming
VictorRentea.ro61
VictorRentea.ro
public static Predicate<Order> deliveryDueBefore(Date date) {
return order -> order.getDeliveryDueDate().before(date);
}
Clean Lambdas
Encapsulate Predicates
Predicate<Order> needsTracking = order -> order.hasPoliticalCustomer();
Set<Customer> customersToNotify = orders.stream()
.filter(order -> order.getDeliveryDueDate().before(warningDate) &&
order.getOrderLines().stream()
.anyMatch(line -> line.getStatus() != Status.IN_STOCK))
.map(Order::getCustomer)
.collect(toSet());
.filter(order -> order.getDeliveryDueDate().before(warningDate))
.filter(order -> order.getOrderLines().stream()
.anyMatch(line -> line.getStatus() != Status.IN_STOCK))(OrderLine::isNotInStock))
.filter(this::hasOrdersNotInStock)
<entity>
OrderLine
<service>
NotificationService
(this)
OrderPredicates.deliveryDueBefore(warningDate))deliveryDueBefore(warningDate)).or(this::needsTracking))
<utility>
OrderPredicates
 In entities
 In the class needing it
 As functions returning Predicates
 Auxiliary Predicate variables
62
VictorRentea.ro63
VictorRentea.ro64
Find the shortest form
(peer review)
Don’t abuse them
Clean Code Using Java8 New Features
(lambdas, Stream, Optional)
VictorRentea.ro
Resources
Java 8 in Action by Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft, 2015
https://blog.jetbrains.com/idea/2016/07/java-8-top-tips/
https://github.com/jOOQ/jOOL
Clean Code by Robert C. Martin
https://zeroturnaround.com/rebellabs/java-8-best-practices-cheat-sheet/
https://www.journeytomastery.net/2015/03/22/clean-code-and-java-8/
Curious about Java9: https://bentolor.github.io/java9-in-action/
65
Enterprise Java Training
www.victorrentea.ro
victor.rentea@gmail.com
@victorrentea
 Workshop: Searching Streams (30 min)
 Workshop: Transforming Streams (40 min)
 Workshop: Cleaning Lambdas (20 min)
 Conclusions: Best Practices (20 min)
© Copyright Victor Rentea 2017
Victor Rentea
10 March 2017
Clean Lambdas & Streams in Java 8
A Hands-on Experience

More Related Content

What's hot

Extreme Professionalism - Software Craftsmanship
Extreme Professionalism - Software CraftsmanshipExtreme Professionalism - Software Craftsmanship
Extreme Professionalism - Software CraftsmanshipVictor Rentea
 
The tests are trying to tell you something@VoxxedBucharest.pptx
The tests are trying to tell you something@VoxxedBucharest.pptxThe tests are trying to tell you something@VoxxedBucharest.pptx
The tests are trying to tell you something@VoxxedBucharest.pptxVictor Rentea
 
Clean architecture - Protecting the Domain
Clean architecture - Protecting the DomainClean architecture - Protecting the Domain
Clean architecture - Protecting the DomainVictor Rentea
 
Clean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixClean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixVictor Rentea
 
The Art of Unit Testing - Towards a Testable Design
The Art of Unit Testing - Towards a Testable DesignThe Art of Unit Testing - Towards a Testable Design
The Art of Unit Testing - Towards a Testable DesignVictor Rentea
 
Clean Code @Voxxed Days Cluj 2023 - opening Keynote
Clean Code @Voxxed Days Cluj 2023 - opening KeynoteClean Code @Voxxed Days Cluj 2023 - opening Keynote
Clean Code @Voxxed Days Cluj 2023 - opening KeynoteVictor Rentea
 
Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best PracticesTheo Jungeblut
 
Clean Code - The Next Chapter
Clean Code - The Next ChapterClean Code - The Next Chapter
Clean Code - The Next ChapterVictor Rentea
 
Clean code and Code Smells
Clean code and Code SmellsClean code and Code Smells
Clean code and Code SmellsMario Sangiorgio
 
Profiling your Java Application
Profiling your Java ApplicationProfiling your Java Application
Profiling your Java ApplicationVictor Rentea
 
Java 8 lambda expressions
Java 8 lambda expressionsJava 8 lambda expressions
Java 8 lambda expressionsLogan Chien
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net coreSam Nasr, MCSA, MVP
 
Vertical Slicing Architectures
Vertical Slicing ArchitecturesVertical Slicing Architectures
Vertical Slicing ArchitecturesVictor Rentea
 
SOLID, DRY, SLAP design principles
SOLID, DRY, SLAP design principlesSOLID, DRY, SLAP design principles
SOLID, DRY, SLAP design principlesSergey Karpushin
 
clean code book summary - uncle bob - English version
clean code book summary - uncle bob - English versionclean code book summary - uncle bob - English version
clean code book summary - uncle bob - English versionsaber tabatabaee
 
JavaScript - Chapter 9 - TypeConversion and Regular Expressions
 JavaScript - Chapter 9 - TypeConversion and Regular Expressions  JavaScript - Chapter 9 - TypeConversion and Regular Expressions
JavaScript - Chapter 9 - TypeConversion and Regular Expressions WebStackAcademy
 

What's hot (20)

Clean Code
Clean CodeClean Code
Clean Code
 
Extreme Professionalism - Software Craftsmanship
Extreme Professionalism - Software CraftsmanshipExtreme Professionalism - Software Craftsmanship
Extreme Professionalism - Software Craftsmanship
 
The tests are trying to tell you something@VoxxedBucharest.pptx
The tests are trying to tell you something@VoxxedBucharest.pptxThe tests are trying to tell you something@VoxxedBucharest.pptx
The tests are trying to tell you something@VoxxedBucharest.pptx
 
Clean architecture - Protecting the Domain
Clean architecture - Protecting the DomainClean architecture - Protecting the Domain
Clean architecture - Protecting the Domain
 
Clean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixClean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflix
 
Clean code
Clean codeClean code
Clean code
 
The Art of Unit Testing - Towards a Testable Design
The Art of Unit Testing - Towards a Testable DesignThe Art of Unit Testing - Towards a Testable Design
The Art of Unit Testing - Towards a Testable Design
 
Clean Code @Voxxed Days Cluj 2023 - opening Keynote
Clean Code @Voxxed Days Cluj 2023 - opening KeynoteClean Code @Voxxed Days Cluj 2023 - opening Keynote
Clean Code @Voxxed Days Cluj 2023 - opening Keynote
 
Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best Practices
 
Clean Code - The Next Chapter
Clean Code - The Next ChapterClean Code - The Next Chapter
Clean Code - The Next Chapter
 
Clean code and Code Smells
Clean code and Code SmellsClean code and Code Smells
Clean code and Code Smells
 
Profiling your Java Application
Profiling your Java ApplicationProfiling your Java Application
Profiling your Java Application
 
Clean coding-practices
Clean coding-practicesClean coding-practices
Clean coding-practices
 
Java 8 lambda expressions
Java 8 lambda expressionsJava 8 lambda expressions
Java 8 lambda expressions
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Vertical Slicing Architectures
Vertical Slicing ArchitecturesVertical Slicing Architectures
Vertical Slicing Architectures
 
SOLID, DRY, SLAP design principles
SOLID, DRY, SLAP design principlesSOLID, DRY, SLAP design principles
SOLID, DRY, SLAP design principles
 
clean code book summary - uncle bob - English version
clean code book summary - uncle bob - English versionclean code book summary - uncle bob - English version
clean code book summary - uncle bob - English version
 
JavaScript - Chapter 9 - TypeConversion and Regular Expressions
 JavaScript - Chapter 9 - TypeConversion and Regular Expressions  JavaScript - Chapter 9 - TypeConversion and Regular Expressions
JavaScript - Chapter 9 - TypeConversion and Regular Expressions
 
Clean code
Clean codeClean code
Clean code
 

Viewers also liked

Functional Java 8 in everyday life
Functional Java 8 in everyday lifeFunctional Java 8 in everyday life
Functional Java 8 in everyday lifeAndrea Iacono
 
Concurrency with java
Concurrency with javaConcurrency with java
Concurrency with javaHoang Nguyen
 
ICTFKIPUNSRI_LINDAROSALINA_(SIKORIB)
ICTFKIPUNSRI_LINDAROSALINA_(SIKORIB)ICTFKIPUNSRI_LINDAROSALINA_(SIKORIB)
ICTFKIPUNSRI_LINDAROSALINA_(SIKORIB)linda_rosalina
 
ICTFKIPUNSRI_LINDAROSALINA_(SISTEMKOORDINATAJAIB/SIKORIB)
ICTFKIPUNSRI_LINDAROSALINA_(SISTEMKOORDINATAJAIB/SIKORIB)ICTFKIPUNSRI_LINDAROSALINA_(SISTEMKOORDINATAJAIB/SIKORIB)
ICTFKIPUNSRI_LINDAROSALINA_(SISTEMKOORDINATAJAIB/SIKORIB)linda_rosalina
 
Marketing Involvement in New product development
Marketing Involvement in New product development Marketing Involvement in New product development
Marketing Involvement in New product development Nomanzakir127
 
Wawasan dasar pengelolaan pendidikan
Wawasan dasar pengelolaan pendidikanWawasan dasar pengelolaan pendidikan
Wawasan dasar pengelolaan pendidikanlinda_rosalina
 
analisis puisi matematika
analisis puisi matematikaanalisis puisi matematika
analisis puisi matematikalinda_rosalina
 
Pengelolaaan peserta didik
Pengelolaaan peserta didik Pengelolaaan peserta didik
Pengelolaaan peserta didik linda_rosalina
 
Bab vii distribusi normal
Bab vii distribusi normalBab vii distribusi normal
Bab vii distribusi normallinda_rosalina
 
Bab xi uji hipotesis dua rata rata
Bab xi uji hipotesis dua rata rataBab xi uji hipotesis dua rata rata
Bab xi uji hipotesis dua rata ratalinda_rosalina
 
Bab iv pemusatan dan penyebaran data
Bab iv pemusatan dan penyebaran dataBab iv pemusatan dan penyebaran data
Bab iv pemusatan dan penyebaran datalinda_rosalina
 
Bab ii statistik dasar penyajian data
Bab ii statistik dasar penyajian dataBab ii statistik dasar penyajian data
Bab ii statistik dasar penyajian datalinda_rosalina
 
Sudut Pada Bidang Ruang Geometri
Sudut Pada Bidang Ruang GeometriSudut Pada Bidang Ruang Geometri
Sudut Pada Bidang Ruang Geometrilinda_rosalina
 
Geomertri (Jarak pada Bidang )
Geomertri (Jarak pada Bidang )Geomertri (Jarak pada Bidang )
Geomertri (Jarak pada Bidang )linda_rosalina
 
Bab v kemiringan dan keruncingan
Bab v kemiringan dan keruncinganBab v kemiringan dan keruncingan
Bab v kemiringan dan keruncinganlinda_rosalina
 

Viewers also liked (20)

Functional Java 8 in everyday life
Functional Java 8 in everyday lifeFunctional Java 8 in everyday life
Functional Java 8 in everyday life
 
Concurrency with java
Concurrency with javaConcurrency with java
Concurrency with java
 
Introduction to java 8 stream api
Introduction to java 8 stream apiIntroduction to java 8 stream api
Introduction to java 8 stream api
 
Side Seeing
Side SeeingSide Seeing
Side Seeing
 
ICTFKIPUNSRI_LINDAROSALINA_(SIKORIB)
ICTFKIPUNSRI_LINDAROSALINA_(SIKORIB)ICTFKIPUNSRI_LINDAROSALINA_(SIKORIB)
ICTFKIPUNSRI_LINDAROSALINA_(SIKORIB)
 
Irisan bidang
Irisan bidangIrisan bidang
Irisan bidang
 
Ram Idavalapati
Ram IdavalapatiRam Idavalapati
Ram Idavalapati
 
ICTFKIPUNSRI_LINDAROSALINA_(SISTEMKOORDINATAJAIB/SIKORIB)
ICTFKIPUNSRI_LINDAROSALINA_(SISTEMKOORDINATAJAIB/SIKORIB)ICTFKIPUNSRI_LINDAROSALINA_(SISTEMKOORDINATAJAIB/SIKORIB)
ICTFKIPUNSRI_LINDAROSALINA_(SISTEMKOORDINATAJAIB/SIKORIB)
 
Marketing Involvement in New product development
Marketing Involvement in New product development Marketing Involvement in New product development
Marketing Involvement in New product development
 
Genisision – Sales – 012 – Capability Statement Expanded
Genisision – Sales – 012 – Capability Statement ExpandedGenisision – Sales – 012 – Capability Statement Expanded
Genisision – Sales – 012 – Capability Statement Expanded
 
Wawasan dasar pengelolaan pendidikan
Wawasan dasar pengelolaan pendidikanWawasan dasar pengelolaan pendidikan
Wawasan dasar pengelolaan pendidikan
 
analisis puisi matematika
analisis puisi matematikaanalisis puisi matematika
analisis puisi matematika
 
Pengelolaaan peserta didik
Pengelolaaan peserta didik Pengelolaaan peserta didik
Pengelolaaan peserta didik
 
Bab vii distribusi normal
Bab vii distribusi normalBab vii distribusi normal
Bab vii distribusi normal
 
Bab xi uji hipotesis dua rata rata
Bab xi uji hipotesis dua rata rataBab xi uji hipotesis dua rata rata
Bab xi uji hipotesis dua rata rata
 
Bab iv pemusatan dan penyebaran data
Bab iv pemusatan dan penyebaran dataBab iv pemusatan dan penyebaran data
Bab iv pemusatan dan penyebaran data
 
Bab ii statistik dasar penyajian data
Bab ii statistik dasar penyajian dataBab ii statistik dasar penyajian data
Bab ii statistik dasar penyajian data
 
Sudut Pada Bidang Ruang Geometri
Sudut Pada Bidang Ruang GeometriSudut Pada Bidang Ruang Geometri
Sudut Pada Bidang Ruang Geometri
 
Geomertri (Jarak pada Bidang )
Geomertri (Jarak pada Bidang )Geomertri (Jarak pada Bidang )
Geomertri (Jarak pada Bidang )
 
Bab v kemiringan dan keruncingan
Bab v kemiringan dan keruncinganBab v kemiringan dan keruncingan
Bab v kemiringan dan keruncingan
 

Similar to Java 8 Clean Lambdas Streams Hands-On Workshop

Hierarchical free monads and software design in fp
Hierarchical free monads and software design in fpHierarchical free monads and software design in fp
Hierarchical free monads and software design in fpAlexander Granin
 
Performance and Scalability Testing with Python and Multi-Mechanize
Performance and Scalability Testing with Python and Multi-MechanizePerformance and Scalability Testing with Python and Multi-Mechanize
Performance and Scalability Testing with Python and Multi-Mechanizecoreygoldberg
 
What's New in Java 8
What's New in Java 8What's New in Java 8
What's New in Java 8javafxpert
 
Leverage Streaming Data in a Microservices Ecosystem
Leverage Streaming Data in a Microservices EcosystemLeverage Streaming Data in a Microservices Ecosystem
Leverage Streaming Data in a Microservices EcosystemTechWell
 
Building a web application with ontinuation monads
Building a web application with ontinuation monadsBuilding a web application with ontinuation monads
Building a web application with ontinuation monadsSeitaro Yuuki
 
SoCal Code Camp 2015: An introduction to Java 8
SoCal Code Camp 2015: An introduction to Java 8SoCal Code Camp 2015: An introduction to Java 8
SoCal Code Camp 2015: An introduction to Java 8Chaitanya Ganoo
 
Top Performance Problems in Distributed Architectures
Top Performance Problems in Distributed ArchitecturesTop Performance Problems in Distributed Architectures
Top Performance Problems in Distributed ArchitecturesAndreas Grabner
 
Código Saudável => Programador Feliz - Rs on Rails 2010
Código Saudável => Programador Feliz - Rs on Rails 2010Código Saudável => Programador Feliz - Rs on Rails 2010
Código Saudável => Programador Feliz - Rs on Rails 2010Plataformatec
 
The Value of Reactive
The Value of ReactiveThe Value of Reactive
The Value of ReactiveVMware Tanzu
 
Advanced Python, Part 2
Advanced Python, Part 2Advanced Python, Part 2
Advanced Python, Part 2Zaar Hai
 
PHP applications/environments monitoring: APM & Pinba
PHP applications/environments monitoring: APM & PinbaPHP applications/environments monitoring: APM & Pinba
PHP applications/environments monitoring: APM & PinbaPatrick Allaert
 
ECS19 - Serge Luca - MICROSOFT FLOW IN REAL WORLD PROJECTS: 3 YEARS LATER AN...
ECS19 - Serge Luca -  MICROSOFT FLOW IN REAL WORLD PROJECTS: 3 YEARS LATER AN...ECS19 - Serge Luca -  MICROSOFT FLOW IN REAL WORLD PROJECTS: 3 YEARS LATER AN...
ECS19 - Serge Luca - MICROSOFT FLOW IN REAL WORLD PROJECTS: 3 YEARS LATER AN...European Collaboration Summit
 
Lambdas & Streams
Lambdas & StreamsLambdas & Streams
Lambdas & StreamsC4Media
 

Similar to Java 8 Clean Lambdas Streams Hands-On Workshop (20)

Hierarchical free monads and software design in fp
Hierarchical free monads and software design in fpHierarchical free monads and software design in fp
Hierarchical free monads and software design in fp
 
Performance and Scalability Testing with Python and Multi-Mechanize
Performance and Scalability Testing with Python and Multi-MechanizePerformance and Scalability Testing with Python and Multi-Mechanize
Performance and Scalability Testing with Python and Multi-Mechanize
 
What's New in Java 8
What's New in Java 8What's New in Java 8
What's New in Java 8
 
Leverage Streaming Data in a Microservices Ecosystem
Leverage Streaming Data in a Microservices EcosystemLeverage Streaming Data in a Microservices Ecosystem
Leverage Streaming Data in a Microservices Ecosystem
 
Building a web application with ontinuation monads
Building a web application with ontinuation monadsBuilding a web application with ontinuation monads
Building a web application with ontinuation monads
 
SoCal Code Camp 2015: An introduction to Java 8
SoCal Code Camp 2015: An introduction to Java 8SoCal Code Camp 2015: An introduction to Java 8
SoCal Code Camp 2015: An introduction to Java 8
 
SonarQube.pptx
SonarQube.pptxSonarQube.pptx
SonarQube.pptx
 
ql.io at NodePDX
ql.io at NodePDXql.io at NodePDX
ql.io at NodePDX
 
Top Performance Problems in Distributed Architectures
Top Performance Problems in Distributed ArchitecturesTop Performance Problems in Distributed Architectures
Top Performance Problems in Distributed Architectures
 
What`s New in Java 8
What`s New in Java 8What`s New in Java 8
What`s New in Java 8
 
Código Saudável => Programador Feliz - Rs on Rails 2010
Código Saudável => Programador Feliz - Rs on Rails 2010Código Saudável => Programador Feliz - Rs on Rails 2010
Código Saudável => Programador Feliz - Rs on Rails 2010
 
Lambdas puzzler - Peter Lawrey
Lambdas puzzler - Peter LawreyLambdas puzzler - Peter Lawrey
Lambdas puzzler - Peter Lawrey
 
The value of reactive
The value of reactiveThe value of reactive
The value of reactive
 
The Value of Reactive
The Value of ReactiveThe Value of Reactive
The Value of Reactive
 
Advanced Python, Part 2
Advanced Python, Part 2Advanced Python, Part 2
Advanced Python, Part 2
 
PHP applications/environments monitoring: APM & Pinba
PHP applications/environments monitoring: APM & PinbaPHP applications/environments monitoring: APM & Pinba
PHP applications/environments monitoring: APM & Pinba
 
1- java
1- java1- java
1- java
 
ECS19 - Serge Luca - MICROSOFT FLOW IN REAL WORLD PROJECTS: 3 YEARS LATER AN...
ECS19 - Serge Luca -  MICROSOFT FLOW IN REAL WORLD PROJECTS: 3 YEARS LATER AN...ECS19 - Serge Luca -  MICROSOFT FLOW IN REAL WORLD PROJECTS: 3 YEARS LATER AN...
ECS19 - Serge Luca - MICROSOFT FLOW IN REAL WORLD PROJECTS: 3 YEARS LATER AN...
 
Lambdas & Streams
Lambdas & StreamsLambdas & Streams
Lambdas & Streams
 
00_Introduction to Java.ppt
00_Introduction to Java.ppt00_Introduction to Java.ppt
00_Introduction to Java.ppt
 

More from Victor Rentea

Microservice Resilience Patterns @VoxxedCern'24
Microservice Resilience Patterns @VoxxedCern'24Microservice Resilience Patterns @VoxxedCern'24
Microservice Resilience Patterns @VoxxedCern'24Victor Rentea
 
Distributed Consistency.pdf
Distributed Consistency.pdfDistributed Consistency.pdf
Distributed Consistency.pdfVictor Rentea
 
Testing Microservices @DevoxxBE 23.pdf
Testing Microservices @DevoxxBE 23.pdfTesting Microservices @DevoxxBE 23.pdf
Testing Microservices @DevoxxBE 23.pdfVictor Rentea
 
From Web to Flux @DevoxxBE 2023.pptx
From Web to Flux @DevoxxBE 2023.pptxFrom Web to Flux @DevoxxBE 2023.pptx
From Web to Flux @DevoxxBE 2023.pptxVictor Rentea
 
Test-Driven Design Insights@DevoxxBE 2023.pptx
Test-Driven Design Insights@DevoxxBE 2023.pptxTest-Driven Design Insights@DevoxxBE 2023.pptx
Test-Driven Design Insights@DevoxxBE 2023.pptxVictor Rentea
 
Unit testing - 9 design hints
Unit testing - 9 design hintsUnit testing - 9 design hints
Unit testing - 9 design hintsVictor Rentea
 
Refactoring blockers and code smells @jNation 2021
Refactoring   blockers and code smells @jNation 2021Refactoring   blockers and code smells @jNation 2021
Refactoring blockers and code smells @jNation 2021Victor Rentea
 
Hibernate and Spring - Unleash the Magic
Hibernate and Spring - Unleash the MagicHibernate and Spring - Unleash the Magic
Hibernate and Spring - Unleash the MagicVictor Rentea
 
Integration testing with spring @JAX Mainz
Integration testing with spring @JAX MainzIntegration testing with spring @JAX Mainz
Integration testing with spring @JAX MainzVictor Rentea
 
The Proxy Fairy and the Magic of Spring @JAX Mainz 2021
The Proxy Fairy and the Magic of Spring @JAX Mainz 2021The Proxy Fairy and the Magic of Spring @JAX Mainz 2021
The Proxy Fairy and the Magic of Spring @JAX Mainz 2021Victor Rentea
 
Pure functions and immutable objects @dev nexus 2021
Pure functions and immutable objects @dev nexus 2021Pure functions and immutable objects @dev nexus 2021
Pure functions and immutable objects @dev nexus 2021Victor Rentea
 
Definitive Guide to Working With Exceptions in Java - takj at Java Champions ...
Definitive Guide to Working With Exceptions in Java - takj at Java Champions ...Definitive Guide to Working With Exceptions in Java - takj at Java Champions ...
Definitive Guide to Working With Exceptions in Java - takj at Java Champions ...Victor Rentea
 
Pure Functions and Immutable Objects
Pure Functions and Immutable ObjectsPure Functions and Immutable Objects
Pure Functions and Immutable ObjectsVictor Rentea
 
Definitive Guide to Working With Exceptions in Java
Definitive Guide to Working With Exceptions in JavaDefinitive Guide to Working With Exceptions in Java
Definitive Guide to Working With Exceptions in JavaVictor Rentea
 
Extreme Professionalism - Software Craftsmanship
Extreme Professionalism - Software CraftsmanshipExtreme Professionalism - Software Craftsmanship
Extreme Professionalism - Software CraftsmanshipVictor Rentea
 
Engaging Isolation - What I've Learned Delivering 250 Webinar Hours during CO...
Engaging Isolation - What I've Learned Delivering 250 Webinar Hours during CO...Engaging Isolation - What I've Learned Delivering 250 Webinar Hours during CO...
Engaging Isolation - What I've Learned Delivering 250 Webinar Hours during CO...Victor Rentea
 

More from Victor Rentea (18)

Microservice Resilience Patterns @VoxxedCern'24
Microservice Resilience Patterns @VoxxedCern'24Microservice Resilience Patterns @VoxxedCern'24
Microservice Resilience Patterns @VoxxedCern'24
 
Distributed Consistency.pdf
Distributed Consistency.pdfDistributed Consistency.pdf
Distributed Consistency.pdf
 
Testing Microservices @DevoxxBE 23.pdf
Testing Microservices @DevoxxBE 23.pdfTesting Microservices @DevoxxBE 23.pdf
Testing Microservices @DevoxxBE 23.pdf
 
From Web to Flux @DevoxxBE 2023.pptx
From Web to Flux @DevoxxBE 2023.pptxFrom Web to Flux @DevoxxBE 2023.pptx
From Web to Flux @DevoxxBE 2023.pptx
 
Test-Driven Design Insights@DevoxxBE 2023.pptx
Test-Driven Design Insights@DevoxxBE 2023.pptxTest-Driven Design Insights@DevoxxBE 2023.pptx
Test-Driven Design Insights@DevoxxBE 2023.pptx
 
OAuth in the Wild
OAuth in the WildOAuth in the Wild
OAuth in the Wild
 
Unit testing - 9 design hints
Unit testing - 9 design hintsUnit testing - 9 design hints
Unit testing - 9 design hints
 
Refactoring blockers and code smells @jNation 2021
Refactoring   blockers and code smells @jNation 2021Refactoring   blockers and code smells @jNation 2021
Refactoring blockers and code smells @jNation 2021
 
Hibernate and Spring - Unleash the Magic
Hibernate and Spring - Unleash the MagicHibernate and Spring - Unleash the Magic
Hibernate and Spring - Unleash the Magic
 
Integration testing with spring @JAX Mainz
Integration testing with spring @JAX MainzIntegration testing with spring @JAX Mainz
Integration testing with spring @JAX Mainz
 
The Proxy Fairy and the Magic of Spring @JAX Mainz 2021
The Proxy Fairy and the Magic of Spring @JAX Mainz 2021The Proxy Fairy and the Magic of Spring @JAX Mainz 2021
The Proxy Fairy and the Magic of Spring @JAX Mainz 2021
 
Pure functions and immutable objects @dev nexus 2021
Pure functions and immutable objects @dev nexus 2021Pure functions and immutable objects @dev nexus 2021
Pure functions and immutable objects @dev nexus 2021
 
TDD Mantra
TDD MantraTDD Mantra
TDD Mantra
 
Definitive Guide to Working With Exceptions in Java - takj at Java Champions ...
Definitive Guide to Working With Exceptions in Java - takj at Java Champions ...Definitive Guide to Working With Exceptions in Java - takj at Java Champions ...
Definitive Guide to Working With Exceptions in Java - takj at Java Champions ...
 
Pure Functions and Immutable Objects
Pure Functions and Immutable ObjectsPure Functions and Immutable Objects
Pure Functions and Immutable Objects
 
Definitive Guide to Working With Exceptions in Java
Definitive Guide to Working With Exceptions in JavaDefinitive Guide to Working With Exceptions in Java
Definitive Guide to Working With Exceptions in Java
 
Extreme Professionalism - Software Craftsmanship
Extreme Professionalism - Software CraftsmanshipExtreme Professionalism - Software Craftsmanship
Extreme Professionalism - Software Craftsmanship
 
Engaging Isolation - What I've Learned Delivering 250 Webinar Hours during CO...
Engaging Isolation - What I've Learned Delivering 250 Webinar Hours during CO...Engaging Isolation - What I've Learned Delivering 250 Webinar Hours during CO...
Engaging Isolation - What I've Learned Delivering 250 Webinar Hours during CO...
 

Recently uploaded

Leveraging the Expertise of a Social Media Fraud Analyst to Safeguard Brand R...
Leveraging the Expertise of a Social Media Fraud Analyst to Safeguard Brand R...Leveraging the Expertise of a Social Media Fraud Analyst to Safeguard Brand R...
Leveraging the Expertise of a Social Media Fraud Analyst to Safeguard Brand R...Milind Agarwal
 
Reliable from-source builds (Qshare 28 Nov 2023).pdf
Reliable from-source builds (Qshare 28 Nov 2023).pdfReliable from-source builds (Qshare 28 Nov 2023).pdf
Reliable from-source builds (Qshare 28 Nov 2023).pdfRalf Gommers
 
What is Mendix and the concept of low-code development.docx
What is Mendix and the concept of low-code development.docxWhat is Mendix and the concept of low-code development.docx
What is Mendix and the concept of low-code development.docxTechnogeeks
 
Effort Estimation Techniques used in Software Projects
Effort Estimation Techniques used in Software ProjectsEffort Estimation Techniques used in Software Projects
Effort Estimation Techniques used in Software ProjectsDEEPRAJ PATHAK
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxAS Design & AST.
 
full course of software engineering mid term.pdf
full course of software engineering mid term.pdffull course of software engineering mid term.pdf
full course of software engineering mid term.pdfAbdul salam
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfkalichargn70th171
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfmaor17
 
SPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptx
SPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptxSPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptx
SPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptxVersion 1 Analytics
 
What are the core components of Azure Data Engineer courses.docx
What are the core components of Azure Data Engineer courses.docxWhat are the core components of Azure Data Engineer courses.docx
What are the core components of Azure Data Engineer courses.docxkzayra69
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
OpenMetadata Community Meeting - 4th April, 2024
OpenMetadata Community Meeting - 4th April, 2024OpenMetadata Community Meeting - 4th April, 2024
OpenMetadata Community Meeting - 4th April, 2024OpenMetadata
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdfAndrey Devyatkin
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
Tech Tuesday Slides - Getting Started with the Portfolio Module.
Tech Tuesday Slides - Getting Started with the Portfolio Module.Tech Tuesday Slides - Getting Started with the Portfolio Module.
Tech Tuesday Slides - Getting Started with the Portfolio Module.OnePlan Solutions
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdfSteve Caron
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 

Recently uploaded (20)

Leveraging the Expertise of a Social Media Fraud Analyst to Safeguard Brand R...
Leveraging the Expertise of a Social Media Fraud Analyst to Safeguard Brand R...Leveraging the Expertise of a Social Media Fraud Analyst to Safeguard Brand R...
Leveraging the Expertise of a Social Media Fraud Analyst to Safeguard Brand R...
 
Reliable from-source builds (Qshare 28 Nov 2023).pdf
Reliable from-source builds (Qshare 28 Nov 2023).pdfReliable from-source builds (Qshare 28 Nov 2023).pdf
Reliable from-source builds (Qshare 28 Nov 2023).pdf
 
What is Mendix and the concept of low-code development.docx
What is Mendix and the concept of low-code development.docxWhat is Mendix and the concept of low-code development.docx
What is Mendix and the concept of low-code development.docx
 
Effort Estimation Techniques used in Software Projects
Effort Estimation Techniques used in Software ProjectsEffort Estimation Techniques used in Software Projects
Effort Estimation Techniques used in Software Projects
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptx
 
full course of software engineering mid term.pdf
full course of software engineering mid term.pdffull course of software engineering mid term.pdf
full course of software engineering mid term.pdf
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdf
 
SPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptx
SPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptxSPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptx
SPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptx
 
What are the core components of Azure Data Engineer courses.docx
What are the core components of Azure Data Engineer courses.docxWhat are the core components of Azure Data Engineer courses.docx
What are the core components of Azure Data Engineer courses.docx
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
OpenMetadata Community Meeting - 4th April, 2024
OpenMetadata Community Meeting - 4th April, 2024OpenMetadata Community Meeting - 4th April, 2024
OpenMetadata Community Meeting - 4th April, 2024
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
Tech Tuesday Slides - Getting Started with the Portfolio Module.
Tech Tuesday Slides - Getting Started with the Portfolio Module.Tech Tuesday Slides - Getting Started with the Portfolio Module.
Tech Tuesday Slides - Getting Started with the Portfolio Module.
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 

Java 8 Clean Lambdas Streams Hands-On Workshop