https://blog.jetbrains.com/idea/2020/09/a-picture-of-java-in-2020/
Java 8 remains the most popular version. It is used by 75% of professional
developers who use Java as their primary language.
Slide 3
Slide 3 text
https://www.infoq.com/news/2020/03/new-relic-jvm-report/ https://snyk.io/wp-content/uploads/jvm_2020.pdf
“The majority of JVMs (over 85%) are running on Java 8”
Slide 4
Slide 4 text
Releases, Updates,
Licensing & Support
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
We have two types of releases
Slide 7
Slide 7 text
We have two types of releases
Releases and LTS (Long Term Support) releases
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
$$$
$$$
Slide 10
Slide 10 text
$$$
$$$
Slide 11
Slide 11 text
https://flic.kr/p/8xhk74
Slide 12
Slide 12 text
Java 11
Long Term Support (LTS) Release; ~3 years support
Slide 13
Slide 13 text
Java 15
Current release; be prepared to upgrade in March 2021
Slide 14
Slide 14 text
https://jdk.dev
Slide 15
Slide 15 text
IntelliJ IDEA can
help you
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
Why bother?
Slide 18
Slide 18 text
Java 11
Long Term Support (LTS) Release
Slide 19
Slide 19 text
JShell
Slide 20
Slide 20 text
var
Slide 21
Slide 21 text
Convenience Factory Methods for
Collections
Slide 22
Slide 22 text
Collecting to Unmodifable Collections
items.stream()
.filter(Objects!::nonNull)
.map(Object!::toString)
.collect(Collectors.toUnmodifiableList());
Slide 23
Slide 23 text
New Methods on Stream API
items.stream()
.takeWhile(user !-> user.count() < maxCount)
.forEach(user !-> position.incrementAndGet());
Slide 24
Slide 24 text
Predicate.not()
Slide 25
Slide 25 text
New Methods on Optional
Slide 26
Slide 26 text
Built in Http Client
Slide 27
Slide 27 text
• https://blog.jetbrains.com/idea/2017/10/creating-
multi-release-jar-files-in-intellij-idea/
Multi Release Jar Files
Slide 28
Slide 28 text
Jigsaw
Slide 29
Slide 29 text
Java Module System
Slide 30
Slide 30 text
JLink
Slide 31
Slide 31 text
Java 15
Current Release
Slide 32
Slide 32 text
Switch Expressions
Slide 33
Slide 33 text
Switch Expressions
https://jb.gg/ij-jdk12
Slide 34
Slide 34 text
Text Blocks
Slide 35
Slide 35 text
Text Blocks
https://jb.gg/ij-jdk13
Slide 36
Slide 36 text
Hidden classes
Slide 37
Slide 37 text
Hidden classes
JEP 371
Slide 38
Slide 38 text
A Scalable Low-Latency Garbage Collector
Slide 39
Slide 39 text
A Scalable Low-Latency Garbage Collector
JEP 377
Slide 40
Slide 40 text
Preview Features
Slide 41
Slide 41 text
Pattern Matching for instanceof
Slide 42
Slide 42 text
Pattern Matching for instanceof
https://jb.gg/ij-jdk14
Slide 43
Slide 43 text
Records
Slide 44
Slide 44 text
Records
https://jb.gg/ij-jdk14
Slide 45
Slide 45 text
Sealed Types
Slide 46
Slide 46 text
Sealed Types
https://jb.gg/ij-jdk15
Slide 47
Slide 47 text
https://openjdk.java.net/projects/jdk/15/
Slide 48
Slide 48 text
The Future
Slide 49
Slide 49 text
• JEP 302: Lambda Leftovers (including underscore for
param)
• JEP 360: Sealed Types (Preview)
• JEP draft: Pattern matching for switch (Preview)
• Project Amber
• Valhalla
• Loom
• Lots of Garbage Collection improvements
Java 16
Slide 50
Slide 50 text
• Project Amber
• Valhalla
• Loom
• More Garbage Collection improvements
• Proposed New Project: Leyden
And in the future?
Slide 51
Slide 51 text
The Business
Doesn’t Care About
Language Features
Slide 52
Slide 52 text
Performance
Slide 53
Slide 53 text
Use of Memory
Slide 54
Slide 54 text
• Java 9: JEP 248: G1 the Default GC
• Java 10: JEP 307: Parallel Full GC for G1
• Java 11: JEP 318: Epsilon (Experimental)
• Java 11: JEP 333: ZGC (Experimental)
Garbage Collection (Java 11)