SlideShare a Scribd company logo
1 of 75
Functional Java 8
This Ain’t Your Daddy’s JDK

Nick Maiorano
1
ThoughtFlow Solutions Inc.
About me
Developer

Software
Architect

Independent
Consultant
ThoughtFlow Solutions

Functional Java 8 – This Ain’t Your Daddy’s JDK

2
Available April 2014

Functional Java 8 – This Ain’t Your Daddy’s JDK

3
Functional Java 8 – This Ain’t Your Daddy’s JDK

4
What’s in Java 8?
Encoding
enhancements

Encryption
updates

Functional
libraries

Concurrency
Modularization

Repeating
annotations

New
Date/Time
API

Concurrency
updates

Java 8
Lambdas
Nashorn
JavaScript
Engine

Church
Performance
improvements

Functional Java 8 – This Ain’t Your Daddy’s JDK

GC
updates

Collections

5
What’s in Java 8?
Functional
libraries

Concurrency

Java 8
Lambdas

Church

Functional Java 8 – This Ain’t Your Daddy’s JDK

Collections

6
The rocky road to lambdas
•
•
•
•
•
•

Lambdas too difficult in late 1990s
BGGA project initiated in 2007
JSR 335 filed in late 2009
Had to fit type system
Maintain backward compatibility
Java community divided

Functional Java 8 – This Ain’t Your Daddy’s JDK

7
The rocky road to lambdas
•
•
•
•

To be released as part of Java 7
To be released in September 2013
To be released in March 2014
Completing 7 years of work

Functional Java 8 – This Ain’t Your Daddy’s JDK

8
Functional Programming
• Rooted in lambda calculus
• Hastened by death of Moore’s law
• Programming paradigm of the times

Functional Java 8 – This Ain’t Your Daddy’s JDK

9
Java DNA
Structured

Reflective

Object
Oriented

Imperative

Concurrent
Generic

Generic
Java DNA
Structured

Reflective

Object
Oriented

Functional

Imperative

Concurrent
Generic

Generic
Organization
Java

Classes
Vs.

FP

Functional Java 8 – This Ain’t Your Daddy’s JDK

Functions

12
Building blocks
Java

Polymorphism, encapsulation,
inheritance, dynamic binding
Vs.

FP

Functional Java 8 – This Ain’t Your Daddy’s JDK

Higher-order functions, currying,
monads, list comprehensions

13
Algorithmic style
Java

Imperative: define behaviour as a
series of steps
Vs.

FP

Functional Java 8 – This Ain’t Your Daddy’s JDK

Declarative: binding functions together
without necessarily specifying their
contents

14
State management
Java

Put state and behaviour together
Vs.

FP

Functional Java 8 – This Ain’t Your Daddy’s JDK

Avoid state

15
Mutability
Java

Supports mutability & immutability
Vs.

FP

Functional Java 8 – This Ain’t Your Daddy’s JDK

Emphasis on immutability

16
Design patterns
Java

Relies on design patterns to
complement OOP for a higher level of
abstraction
Vs.

FP

Functional Java 8 – This Ain’t Your Daddy’s JDK

Is already a higher level abstraction

17
Concurrency
Java

Use multi-threading, control access to
shared resources via locks
Vs.

FP

Functional Java 8 – This Ain’t Your Daddy’s JDK

Organize processing into parallel workflows
each dedicated to a core and avoid state,
shared resources and locks

18
Recursion
Java

Supported with limitations
Vs.

FP

Functional Java 8 – This Ain’t Your Daddy’s JDK

Rudimentary

19
Expressiveness
Java

Clear & verbose
Vs.

FP

Functional Java 8 – This Ain’t Your Daddy’s JDK

Concise & dense

20
Functional Java
“…Is a blend of imperative and object
oriented programming enhanced
with functional flavors”

Functional Java 8 – This Ain’t Your Daddy’s JDK

21
Functional Java 8 – This Ain’t Your Daddy’s JDK

22
New Syntax
•
•
•
•

Lambdas
Functional interfaces
Method references
Default methods

Functional Java 8 – This Ain’t Your Daddy’s JDK

23
What’s a lambda?

Functional Java 8 – This Ain’t Your Daddy’s JDK

24
Anatomy of the lambda
• Behavior-as-data facilitators
• On-the-fly code definers
• Ground-floor of FP

Functional Java 8 – This Ain’t Your Daddy’s JDK

25
Anatomy of the lambda
Lambda blocks
(Parameter declaration) -> {Lambda body}

(Integer i) -> {System.out.println(i);};

Functional Java 8 – This Ain’t Your Daddy’s JDK

26
Anatomy of the lambda
Lambda blocks
(Parameter declaration) -> {Lambda body}

(Integer i) -> {System.out.println(i);};

Functional Java 8 – This Ain’t Your Daddy’s JDK

27
Anatomy of the lambda
Lambda expressions
Parameter name -> Lambda expression

(Integer i) -> {System.out.println(i);};

Functional Java 8 – This Ain’t Your Daddy’s JDK

28
Anatomy of the lambda
Lambda expressions
Parameter name -> Lambda expression

i -> System.out.println(i);

Functional Java 8 – This Ain’t Your Daddy’s JDK

29
Anatomy of the lambda
Lambda expressions
Parameter name -> single statement;

i -> i * 2;

Functional Java 8 – This Ain’t Your Daddy’s JDK

No return statement

30
Functional Interfaces
• Lambdas are backed by interfaces
• Single abstract methods
• @FunctionalInterface

Functional Java 8 – This Ain’t Your Daddy’s JDK

31
Functional Interfaces
@FunctionalInterface
public interface Calculator
{
int calculate(int x, int y);
}

Functional Java 8 – This Ain’t Your Daddy’s JDK

32
Functional Interfaces
Calculator multiply = (x, y) -> x * y;
Calculator divide = (x, y) -> x / y;

int product = multiply.calculate(10, 20);
int quotient = divide.calculate(10, 20);
someMethod(multiply, divide);
anotherMethod((x, y) -> x ^ y);
Functional Java 8 – This Ain’t Your Daddy’s JDK

33
Functional Interfaces
• Over 40 functional interfaces in JDK 8
• Rarely need to define your own
• Generic and specialized

Functional Java 8 – This Ain’t Your Daddy’s JDK

34
Functional Interfaces
Consumer

Supplier<T>
T get()

Supplier

Functional
Interfaces

Consumer<T>
void accept(T t);

Function

Function <T, R>
R apply(T t);

Predicate

Predicate<T>
boolean test(T t);

Functional Java 8 – This Ain’t Your Daddy’s JDK

35
Method References
Calculator maxFinder = (x, y) -> Math.max(x, y);

Functional Java 8 – This Ain’t Your Daddy’s JDK

36
Method References
Calculator maxFinder = Math::max;
Math
Calculator

int max(int a, int b);
int calculate(int x, int y);

Functional Java 8 – This Ain’t Your Daddy’s JDK

37
Method References
Type

Template

Static

Class::method

Instance

instanceVariable::method

Constructor

Class::new

Super

super::method

Generic constructor

Class<Type>::new

Array

Class[]::new

Functional Java 8 – This Ain’t Your Daddy’s JDK

38
Anonymous classes?
• Do we still need anonymous classes?
• Lambdas are behavior-only – no state
• Only single abstract methods

Functional Java 8 – This Ain’t Your Daddy’s JDK

39
Default Methods
@FunctionalInterface
public interface Calculator
{
int calculate(int x, int y);
default int multiply(int x, int y)
{
return x * y;
}
}
Functional Java 8 – This Ain’t Your Daddy’s JDK

40
Default Methods
• Can be overloaded
• Can be static or instance based
• Introduce multiple inheritance

Functional Java 8 – This Ain’t Your Daddy’s JDK

41
Functional Java 8 – This Ain’t Your Daddy’s JDK

42
Java-style functional programming
• Other languages support FP natively
• Java supports FP through libraries

Functional
interfaces

Functional

Java
Streams

Collections

Functional Java 8 – This Ain’t Your Daddy’s JDK

43
Functionalized Collections

Functional Java 8 – This Ain’t Your Daddy’s JDK

44
Functionalized Lists
List<String> stooges =
Arrays.asList("Larry", "Moe", "Curly");

stooges.forEach(s -> System.out.println(s);

Functional Java 8 – This Ain’t Your Daddy’s JDK

45
Functionalized Lists
List<String> stooges =
Arrays.asList("Larry", "Moe", "Curly");

stooges.forEach(System.out::println);

Functional Java 8 – This Ain’t Your Daddy’s JDK

46
Functionalized Lists
Function<String, String> feminize =
s -> "Larry".equals(s) ? "Lara" :
"Moe".equals(s) ? "Maude" : "Shirley";
stooges.replaceAll(feminize);

Functional Java 8 – This Ain’t Your Daddy’s JDK

47
Functionalized Lists
Predicate<String> moeRemover =
s -> “Moe".equals(s);

stooges.removeIf(moeRemover);

Functional Java 8 – This Ain’t Your Daddy’s JDK

48
Functionalized Maps
Map<Integer, List<String>> movieDb = new HashMap<>();
movieDb.computeIfAbsent(1930, k -> new LinkedList<>());
movieDb.compute(1930, (k, v) -> { v.add(“Soup to nuts”);
return v;});

Functional Java 8 – This Ain’t Your Daddy’s JDK

49
Functionalized Maps
movieDb.putIfAbsent
(1930, new LinkedList<>());

movieDb.getOrDefault
(1930, new LinkedList<>());

Functional Java 8 – This Ain’t Your Daddy’s JDK

50
Streams

Functional Java 8 – This Ain’t Your Daddy’s JDK

51
Streams
Lambda

Stream

Operation 1

Functional Java 8 – This Ain’t Your Daddy’s JDK

Lambda

Operation 2

Lambda

Operation 3

Lambda

Operation 4

52
Streams
Build

Peek

Filter

Stream
operations
Iterate

Map

Reduce

Functional Java 8 – This Ain’t Your Daddy’s JDK

53
Streams
private static boolean isPerfect(long n)
{
long sum = 0;
for (long i = 1; i <= n / 2; i++)
{
if (n % i == 0)
{
sum += i;
}
}

return sum == n;
}
Functional Java 8 – This Ain’t Your Daddy’s JDK

54
Streams
private static boolean isPerfect(long n)
{
return n > 0 &&
LongStream.rangeClosed(1, n / 2).
filter(i -> n % i == 0).
reduce(0, (l, r) -> l + r) == n;
}

Functional Java 8 – This Ain’t Your Daddy’s JDK

55
Streams
•
•
•
•

Declarative constructs
Can abstract any imperative for/while loop
Work best when adhering to FP principles
Easily parallelizable

Functional Java 8 – This Ain’t Your Daddy’s JDK

56
Parallel Streams
private static boolean isPerfect(long n)
{
return n > 0 &&
LongStream.rangeClosed(1, n / 2).
filter(i -> n % i == 0).
reduce(0, (l, r) -> l + r) == n;
}

Functional Java 8 – This Ain’t Your Daddy’s JDK

57
Parallel Streams
private static boolean isPerfect(long n)
{
return n > 0 &&
LongStream.rangeClosed(1, n / 2). parallel().
filter(i -> n % i == 0).
reduce(0, (l, r) -> l + r) == n;
}

Functional Java 8 – This Ain’t Your Daddy’s JDK

58
Parallel Streams

Functional Java 8 – This Ain’t Your Daddy’s JDK

59
Parallel Streams

Functional Java 8 – This Ain’t Your Daddy’s JDK

60
Parallel Streams
• Uses fork-join used under the hood
• Thread pool sized to # cores
• Order can be changed

Functional Java 8 – This Ain’t Your Daddy’s JDK

61
Parallel Streams
private static boolean isPerfect(long n)
{
return n > 0 &&
LongStream.rangeClosed(1, n / 2). parallel().
filter(i -> n % i == 0).
reduce(0, (l, r) -> l + r) == n;
}

Functional Java 8 – This Ain’t Your Daddy’s JDK

62
Parallel Streams
private static boolean isPerfect(long n)
{
return n > 0 &&
LongStream.rangeClosed(1, n / 2). parallel().
filter(i -> n % i == 0).
reduce(0, (l, r) -> l + r) == n;
}
List<Long> perfectNumbers =
LongStream.rangeClosed(1, 8192).
filter(PerfectNumberFinder::isPerfect).
collect(ArrayList<Long>::new, ArrayList<Long>::add, ArrayList<Long>::addAll);

Functional Java 8 – This Ain’t Your Daddy’s JDK

63
Parallel Streams
private static boolean isPerfect(long n)
{
return n > 0 &&
LongStream.rangeClosed(1, n / 2). parallel().
filter(i -> n % i == 0).
reduce(0, (l, r) -> l + r) == n;
}
List<Long> perfectNumbers =
LongStream.rangeClosed(1, 8192).parallel().
filter(PerfectNumberFinder::isPerfect).
collect(ArrayList<Long>::new, ArrayList<Long>::add, ArrayList<Long>::addAll);

Functional Java 8 – This Ain’t Your Daddy’s JDK

64
Parallel Streams
8,128
33,550,336
8,589,869,056
137,438,691,328

Functional Java 8 – This Ain’t Your Daddy’s JDK

Imperative
0
190
48648
778853

Serial
Stream

1
229
59646
998776

Parallel
Stream

0
66
13383
203651

65
Parallelization
• Must avoid side-effects and mutating state
• Problems must fit the associativity property
• Ex: ((a * b) * c) = (a * (b * c))

• Must be enough parallelizable code
• Performance not always better
• Can’t modify local variables (unlike for loops)

Functional Java 8 – This Ain’t Your Daddy’s JDK

66
Streams (the good)
•
•
•
•

Allow abstraction of details
Communicate intent clearly
Concise
On-demand parallelization

Functional Java 8 – This Ain’t Your Daddy’s JDK

67
Streams (the bad)
•
•
•
•

Loss of flexibility and control
Increased code density
Can be less efficient
On-demand parallelization

Functional Java 8 – This Ain’t Your Daddy’s JDK

68
Functional Java 8 – This Ain’t Your Daddy’s JDK

69
Final thoughts on
Java 8

Functional Java 8 – This Ain’t Your Daddy’s JDK

70
How good is functional Java?
•
•
•
•
•
•

Java now supports functional constructs
But still OO at its core
Functional expressions a little clunky
Generics require more mental agility
Conciseness is compromised
Recursion not industrial strength

Functional Java 8 – This Ain’t Your Daddy’s JDK

71
How good is functional Java?
• FP integrated cohesively & coherently
• New tools available for the masses

Functional Java 8 – This Ain’t Your Daddy’s JDK

72
Available at Amazon April 2014

Functional Java 8 – This Ain’t Your Daddy’s JDK

73
@ThoughtFlow_Inc

Functional Java 8 – This Ain’t Your Daddy’s JDK

74
Questions

Functional Java 8 – This Ain’t Your Daddy’s JDK

75

More Related Content

What's hot

Kotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developersKotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developers
Bartosz Kosarzycki
 

What's hot (20)

New Features in JDK 8
New Features in JDK 8New Features in JDK 8
New Features in JDK 8
 
Refactoring to Scala DSLs and LiftOff 2009 Recap
Refactoring to Scala DSLs and LiftOff 2009 RecapRefactoring to Scala DSLs and LiftOff 2009 Recap
Refactoring to Scala DSLs and LiftOff 2009 Recap
 
Java 8 features
Java 8 featuresJava 8 features
Java 8 features
 
Smart Migration to JDK 8
Smart Migration to JDK 8Smart Migration to JDK 8
Smart Migration to JDK 8
 
Kotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developersKotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developers
 
Java 8 features
Java 8 featuresJava 8 features
Java 8 features
 
The Dark Side Of Lambda Expressions in Java 8
The Dark Side Of Lambda Expressions in Java 8The Dark Side Of Lambda Expressions in Java 8
The Dark Side Of Lambda Expressions in Java 8
 
Modern Programming in Java 8 - Lambdas, Streams and Date Time API
Modern Programming in Java 8 - Lambdas, Streams and Date Time APIModern Programming in Java 8 - Lambdas, Streams and Date Time API
Modern Programming in Java 8 - Lambdas, Streams and Date Time API
 
JDK1.6
JDK1.6JDK1.6
JDK1.6
 
A Brief, but Dense, Intro to Scala
A Brief, but Dense, Intro to ScalaA Brief, but Dense, Intro to Scala
A Brief, but Dense, Intro to Scala
 
Java 8 Features
Java 8 FeaturesJava 8 Features
Java 8 Features
 
New Features Of JDK 7
New Features Of JDK 7New Features Of JDK 7
New Features Of JDK 7
 
Productive Programming in Java 8 - with Lambdas and Streams
Productive Programming in Java 8 - with Lambdas and Streams Productive Programming in Java 8 - with Lambdas and Streams
Productive Programming in Java 8 - with Lambdas and Streams
 
Java SE 8 - New Features
Java SE 8 - New FeaturesJava SE 8 - New Features
Java SE 8 - New Features
 
Spark workshop
Spark workshopSpark workshop
Spark workshop
 
Java 8 lambda
Java 8 lambdaJava 8 lambda
Java 8 lambda
 
Kotlin in action
Kotlin in actionKotlin in action
Kotlin in action
 
Scala Intro
Scala IntroScala Intro
Scala Intro
 
Scala : language of the future
Scala : language of the futureScala : language of the future
Scala : language of the future
 
Advanced Production Debugging
Advanced Production DebuggingAdvanced Production Debugging
Advanced Production Debugging
 

Viewers also liked

Classloading and Type Visibility in OSGi
Classloading and Type Visibility in OSGiClassloading and Type Visibility in OSGi
Classloading and Type Visibility in OSGi
martinlippert
 
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesik
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A GrzesikApache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesik
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesik
mfrancis
 
Regular Expressions 101
Regular Expressions 101Regular Expressions 101
Regular Expressions 101
Raj Rajandran
 

Viewers also liked (20)

Functional programming with_jdk8-s_ritter
Functional programming with_jdk8-s_ritterFunctional programming with_jdk8-s_ritter
Functional programming with_jdk8-s_ritter
 
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
 
Java Class Loading
Java Class LoadingJava Class Loading
Java Class Loading
 
Java class loader
Java class loaderJava class loader
Java class loader
 
Application of Ontology in Semantic Information Retrieval by Prof Shahrul Azm...
Application of Ontology in Semantic Information Retrieval by Prof Shahrul Azm...Application of Ontology in Semantic Information Retrieval by Prof Shahrul Azm...
Application of Ontology in Semantic Information Retrieval by Prof Shahrul Azm...
 
Incremental Evolving Grammar Fragments
Incremental Evolving Grammar FragmentsIncremental Evolving Grammar Fragments
Incremental Evolving Grammar Fragments
 
Classloading and Type Visibility in OSGi
Classloading and Type Visibility in OSGiClassloading and Type Visibility in OSGi
Classloading and Type Visibility in OSGi
 
Carbon and OSGi Deep Dive
Carbon and OSGi Deep DiveCarbon and OSGi Deep Dive
Carbon and OSGi Deep Dive
 
OSGi Presentation
OSGi PresentationOSGi Presentation
OSGi Presentation
 
Lambdas And Streams Hands On Lab
Lambdas And Streams Hands On LabLambdas And Streams Hands On Lab
Lambdas And Streams Hands On Lab
 
Self adaptive based natural language interface for disambiguation of
Self adaptive based natural language interface for disambiguation ofSelf adaptive based natural language interface for disambiguation of
Self adaptive based natural language interface for disambiguation of
 
Open Services Gateway Initiative (OSGI)
Open Services Gateway Initiative (OSGI)Open Services Gateway Initiative (OSGI)
Open Services Gateway Initiative (OSGI)
 
Java Modularity with OSGi
Java Modularity with OSGiJava Modularity with OSGi
Java Modularity with OSGi
 
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesik
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A GrzesikApache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesik
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesik
 
The Full Stack Java Developer - Josh Long
The Full Stack Java Developer - Josh LongThe Full Stack Java Developer - Josh Long
The Full Stack Java Developer - Josh Long
 
Introduction to-osgi
Introduction to-osgiIntroduction to-osgi
Introduction to-osgi
 
OSGi Blueprint Services
OSGi Blueprint ServicesOSGi Blueprint Services
OSGi Blueprint Services
 
Microservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karafMicroservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karaf
 
Regular Expressions 101
Regular Expressions 101Regular Expressions 101
Regular Expressions 101
 
Lecture: Regular Expressions and Regular Languages
Lecture: Regular Expressions and Regular LanguagesLecture: Regular Expressions and Regular Languages
Lecture: Regular Expressions and Regular Languages
 

Similar to Functional java 8

Java jdk-update-nov10-sde-v3m
Java jdk-update-nov10-sde-v3mJava jdk-update-nov10-sde-v3m
Java jdk-update-nov10-sde-v3m
Steve Elliott
 
Fundamentals of java --- version 2
Fundamentals of java --- version 2Fundamentals of java --- version 2
Fundamentals of java --- version 2
Uday Sharma
 
Java 7 & 8
Java 7 & 8Java 7 & 8
Java 7 & 8
Ken Coenen
 

Similar to Functional java 8 (20)

Java jdk-update-nov10-sde-v3m
Java jdk-update-nov10-sde-v3mJava jdk-update-nov10-sde-v3m
Java jdk-update-nov10-sde-v3m
 
Java 8 Lambda
Java 8 LambdaJava 8 Lambda
Java 8 Lambda
 
Reaching the lambda heaven
Reaching the lambda heavenReaching the lambda heaven
Reaching the lambda heaven
 
Introduction of Java 8 with emphasis on Lambda Expressions and Streams
Introduction of Java 8 with emphasis on Lambda Expressions and StreamsIntroduction of Java 8 with emphasis on Lambda Expressions and Streams
Introduction of Java 8 with emphasis on Lambda Expressions and Streams
 
Fundamentals of java --- version 2
Fundamentals of java --- version 2Fundamentals of java --- version 2
Fundamentals of java --- version 2
 
1 Module 1 Introduction.pptx
1 Module 1 Introduction.pptx1 Module 1 Introduction.pptx
1 Module 1 Introduction.pptx
 
Java 8 Overview
Java 8 OverviewJava 8 Overview
Java 8 Overview
 
Polyglot and functional (Devoxx Nov/2011)
Polyglot and functional (Devoxx Nov/2011)Polyglot and functional (Devoxx Nov/2011)
Polyglot and functional (Devoxx Nov/2011)
 
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
 
Java SE 8
Java SE 8Java SE 8
Java SE 8
 
Developing android apps with java 8
Developing android apps with java 8Developing android apps with java 8
Developing android apps with java 8
 
InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303)
InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303)InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303)
InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303)
 
Java Future S Ritter
Java Future S RitterJava Future S Ritter
Java Future S Ritter
 
ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)
 
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion MiddlewareAMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
Java 7 & 8
Java 7 & 8Java 7 & 8
Java 7 & 8
 
Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)
 
55 New Features in Java SE 8
55 New Features in Java SE 855 New Features in Java SE 8
55 New Features in Java SE 8
 
Scala-Ls1
Scala-Ls1Scala-Ls1
Scala-Ls1
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Functional java 8