1 CS1001 Lecture 15. 2 Overview Java Programming Java Programming Arrays Arrays.
Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in...
Transcript of Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in...
![Page 1: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/1.jpg)
Overview of Java
Supported Programming Paradigms
Douglas C. Schmidt
![Page 2: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/2.jpg)
Learning Objectives in This Lesson• Recognize the two programming paradigms supported by modern Java.
Naturally, these paradigms are also supported in versions above & beyond Java 8!
![Page 3: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/3.jpg)
Learning Objectives in This Lesson• Recognize the two programming paradigms supported by modern Java.
• Object-oriented programming
![Page 4: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/4.jpg)
Learning Objectives in This Lesson• Recognize the two programming paradigms supported by modern Java.
• Object-oriented programming
• Functional programming
![Page 5: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/5.jpg)
Learning Objectives in This Lesson
We’ll show some Java 8 code fragments that will be covered in more detail later.
• Recognize the two programming paradigms supported by modern Java.
• Object-oriented programming
• Functional programming
![Page 6: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/6.jpg)
Overview of Programming Paradigms in Java 8
Douglas C. Schmidt
![Page 7: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/7.jpg)
See www.deadcoderising.com/why-you-should-embrace-lambdas-in-java-8
Overview of Programming Paradigms in Java 8• Java 8 is a “hybrid” that combines the object-oriented & functional paradigms.
Java 8e.g., C++,
Java, C#e.g., C,
FORTRAN
e.g., ML,Haskell
e.g., Prolog
![Page 8: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/8.jpg)
Overview of Programming Paradigms in Java 8• Object-oriented programming is an “imperative” paradigm.
e.g., C++,Java, C#
e.g., C, FORTRAN
See en.wikipedia.org/wiki/Imperative_programming
![Page 9: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/9.jpg)
Overview of Programming Paradigms in Java 8• Object-oriented programming is an “imperative” paradigm.
• e.g., a program consists of commands for the computer to perform.
Imperative programming focuses on describing how a program operates via statements that change its state.
e.g., C++,Java, C#
e.g., C, FORTRAN
![Page 10: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/10.jpg)
Overview of Programming Paradigms in Java 8• Object-oriented programming is an “imperative” paradigm.
• e.g., a program consists of commands for the computer to perform.
List<String> zap(List<String> lines,
String omit) {
List<String> res =
new ArrayList<>();
for (String line : lines)
if (!omit.equals(line))
res.add(line);
return res;
}e.g., C++,Java, C#
e.g., C, FORTRAN
Imperatively remove a given string from a list of strings
![Page 11: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/11.jpg)
Overview of Programming Paradigms in Java 8• Object-oriented programming is an “imperative” paradigm.
• e.g., a program consists of commands for the computer to perform.
List<String> zap(List<String> lines,
String omit) {
List<String> res =
new ArrayList<>();
for (String line : lines)
if (!omit.equals(line))
res.add(line);
return res;
}e.g., C++,Java, C#
e.g., C, FORTRAN
Create an empty list to hold results
![Page 12: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/12.jpg)
Overview of Programming Paradigms in Java 8• Object-oriented programming is an “imperative” paradigm.
• e.g., a program consists of commands for the computer to perform.
List<String> zap(List<String> lines,
String omit) {
List<String> res =
new ArrayList<>();
for (String line : lines)
if (!omit.equals(line))
res.add(line);
return res;
}e.g., C++,Java, C#
e.g., C, FORTRAN
Iterate sequentially through each line
![Page 13: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/13.jpg)
Overview of Programming Paradigms in Java 8• Object-oriented programming is an “imperative” paradigm.
• e.g., a program consists of commands for the computer to perform.
List<String> zap(List<String> lines,
String omit) {
List<String> res =
new ArrayList<>();
for (String line : lines)
if (!omit.equals(line))
res.add(line);
return res;
}e.g., C++,Java, C#
e.g., C, FORTRAN
Only add lines that don’t match the omit string
![Page 14: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/14.jpg)
Overview of Programming Paradigms in Java 8• Object-oriented programming is an “imperative” paradigm.
• e.g., a program consists of commands for the computer to perform.
List<String> zap(List<String> lines,
String omit) {
List<String> res =
new ArrayList<>();
for (String line : lines)
if (!omit.equals(line))
res.add(line);
return res;
}e.g., C++,Java, C#
e.g., C, FORTRAN
Return the list of nonmatching lines
![Page 15: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/15.jpg)
Overview of Programming Paradigms in Java 8• Object-oriented programming is an “imperative” paradigm.
• e.g., a program consists of commands for the computer to perform.
List<String> zap(List<String> lines,
String omit) {
List<String> res =
new ArrayList<>();
for (String line : lines)
if (!omit.equals(line))
res.add(line);
return res;
}e.g., C++,Java, C#
e.g., C, FORTRAN
See www.ibm.com/developerworks/library/j-java-streams-2-brian-goetz
This sequential code applies the Accumulator anti-pattern.
![Page 16: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/16.jpg)
See en.wikipedia.org/wiki/Declarative_programming
Overview of Programming Paradigms in Java 8• Conversely, functional programming is a “declarative” paradigm.
e.g., Prologe.g., ML,Haskell
![Page 17: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/17.jpg)
Overview of Programming Paradigms in Java 8• Conversely, functional programming is a “declarative” paradigm.
• e.g., a program expresses computational logic without describing control flow or explicit algorithmic steps.
Declarative programming focuses largely on “what” computations to perform, not “how” to compute them.
e.g., Prologe.g., ML,Haskell
What
How
![Page 18: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/18.jpg)
Overview of Programming Paradigms in Java 8• Conversely, functional programming is a “declarative” paradigm.
• e.g., a program expresses computational logic without describing control flow or explicit algorithmic steps.
Declaratively remove a given string from a list of strings.
List<String> zap(List<String> lines,
String omit) {
return lines
.stream()
.filter(not(omit::equals))
.collect(toList());
} e.g., Prologe.g., ML,Haskell
See github.com/douglascraigschmidt/LiveLessons/tree/master/Java8/ex0
![Page 19: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/19.jpg)
Overview of Programming Paradigms in Java 8• Conversely, functional programming is a “declarative” paradigm.
• e.g., a program expresses computational logic without describing control flow or explicit algorithmic steps.
List<String> zap(List<String> lines,
String omit) {
return lines
.stream()
.filter(not(omit::equals))
.collect(toList());
} e.g., Prologe.g., ML,Haskell
Convert list into a stream.
![Page 20: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/20.jpg)
Overview of Programming Paradigms in Java 8• Conversely, functional programming is a “declarative” paradigm.
• e.g., a program expresses computational logic without describing control flow or explicit algorithmic steps.
Remove any line in the stream that matches the omit param.
List<String> zap(List<String> lines,
String omit) {
return lines
.stream()
.filter(not(omit::equals))
.collect(toList());
} e.g., Prologe.g., ML,Haskell
![Page 21: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/21.jpg)
Overview of Programming Paradigms in Java 8• Conversely, functional programming is a “declarative” paradigm.
• e.g., a program expresses computational logic without describing control flow or explicit algorithmic steps.
Collect all nonmatching lines into a list & return it to the caller.
List<String> zap(List<String> lines,
String omit) {
return lines
.stream()
.filter(not(omit::equals))
.collect(toList());
} e.g., Prologe.g., ML,Haskell
![Page 22: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/22.jpg)
Overview of Programming Paradigms in Java 8• Conversely, functional programming is a “declarative” paradigm.
• e.g., a program expresses computational logic without describing control flow or explicit algorithmic steps.
Note the “fluent” programming style with cascading method calls.
List<String> zap(List<String> lines,
String omit) {
return lines
.stream()
.filter(not(omit::equals))
.collect(toList());
} e.g., Prologe.g., ML,Haskell
See en.wikipedia.org/wiki/Fluent_interface
![Page 23: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/23.jpg)
Overview of Programming Paradigms in Java 8• Conversely, functional programming is a “declarative” paradigm.
• e.g., a program expresses computational logic without describing control flow or explicit algorithmic steps.
List<String> zap(List<String> lines,
String omit) {
return lines
.parallelStream()
.filter(not(omit::equals))
.collect(toList());
} e.g., Prologe.g., ML,Haskell
Filter in parallel.
See docs.oracle.com/javase/tutorial/collections/streams/parallelism.html
![Page 24: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/24.jpg)
Code was parallelized with minuscule changes since it’s declarative & stateless!
Overview of Programming Paradigms in Java 8• Conversely, functional programming is a “declarative” paradigm.
• e.g., a program expresses computational logic without describing control flow or explicit algorithmic steps.
List<String> zap(List<String> lines,
String omit) {
return lines
.parallelStream()
.filter(not(omit::equals))
.collect(toList());
} e.g., Prologe.g., ML,Haskell
Filter in parallel.
![Page 25: Overview of Java - Vanderbilt University · 2019-08-21 · Overview of Programming Paradigms in Java 8 •Conversely, functional programming is a “declarative” paradigm. •e.g.,](https://reader033.fdocuments.net/reader033/viewer/2022042910/5f3f385ed8c10e3fab6a7f81/html5/thumbnails/25.jpg)