Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Upgrading Past Java 9 Sounds Scary …and I don’t want to pay for Java

Slide 3

Slide 3 text

Super happy with Java 8, thanks

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Starting with Java 11, Oracle will provide JDK releases under the open source GNU General Public License v2, with the Classpath Exception (GPLv2+CPE), and under a commercial license for those using the Oracle JDK as part of an Oracle product or service, or who do not wish to use open source software. This… replaces the historical “BCL” license, which had a combination of free and paid commercial terms. Donald Smith, Sr. Director of Product Management (June 2018) https://blogs.oracle.com/java-platform-group/oracle-jdk-releases- for-java-11-and-later

Slide 13

Slide 13 text

That sounds frightening, and overly complicated. Talk us through it. The Lego Batman Movie

Slide 14

Slide 14 text

That sounds frightening, and overly complicated. Talk us through it. The Lego Batman Movie

Slide 15

Slide 15 text

https://flic.kr/p/8xhk74

Slide 16

Slide 16 text

From Java 11 forward, Oracle JDK builds and OpenJDK builds will be essentially identical. Donald Smith, Sr. Director of Product Management (Sept 2018) https://blogs.oracle.com/java-platform-group/oracle-jdk-releases- for-java-11-and-later

Slide 17

Slide 17 text

https://blog.joda.org/2018/09/time-to-look-beyond-oracles-jdk.html

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

https://adoptopenjdk.net

Slide 21

Slide 21 text

https://adoptopenjdk.net/support.html

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

Language features

Slide 24

Slide 24 text

JShell

Slide 25

Slide 25 text

JShell

Slide 26

Slide 26 text

JShell

Slide 27

Slide 27 text

var

Slide 28

Slide 28 text

var

Slide 29

Slide 29 text

var

Slide 30

Slide 30 text

var

Slide 31

Slide 31 text

var

Slide 32

Slide 32 text

var

Slide 33

Slide 33 text

Convenience Factory Methods for Collections

Slide 34

Slide 34 text

Convenience Factory Methods for Collections

Slide 35

Slide 35 text

Convenience Factory Methods for Collections

Slide 36

Slide 36 text

Convenience Factory Methods for Collections

Slide 37

Slide 37 text

Collecting to Unmodifable Collections items.stream() .filter(Objects::nonNull) .map(Object::toString) .collect(Collectors.toUnmodifiableList());

Slide 38

Slide 38 text

New Methods on Stream API items.stream() .takeWhile(user -> user.count() < maxCount) .forEach(user -> position.incrementAndGet());

Slide 39

Slide 39 text

Predicate.not()

Slide 40

Slide 40 text

New Methods on Optional

Slide 41

Slide 41 text

Http Client @tddmonkey

Slide 42

Slide 42 text

Multi Release Jar Files

Slide 43

Slide 43 text

Jigsaw

Slide 44

Slide 44 text

Java Module System

Slide 45

Slide 45 text

Java Module System

Slide 46

Slide 46 text

JLink

Slide 47

Slide 47 text

And in the future?

Slide 48

Slide 48 text

Java 12: Switch expressions

Slide 49

Slide 49 text

• JEP 302: Lambda Leftovers (including underscore for param) • JEP 305: Pattern Matching (Preview) • Data Classes for Java • Project Amber • Valhalla • Loom And in the future?

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

Performance

Slide 52

Slide 52 text

Memory Usage

Slide 53

Slide 53 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 Collectors

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) • Java 12: JEP 189: Shenandoah (Experimental) • Java 12: More Updates to G1 • Java 12: More Improvements to ZGC Garbage Collectors

Slide 55

Slide 55 text

Cost £$€

Slide 56

Slide 56 text

Catch the 6 month release train

Slide 57

Slide 57 text

If It Hurts, Do It More Frequently, and Bring the Pain Forward An idea from Extreme Programming (XP) Continuous Delivery – Jez Humble & Dave Farley

Slide 58

Slide 58 text

No content

Slide 59

Slide 59 text

Modularity?

Slide 60

Slide 60 text

Missing classes / methods

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

Run on updated JDK It might “just work”

Slide 63

Slide 63 text

Address compiler warnings …they are there for a reason

Slide 64

Slide 64 text

Update your dependencies And add new ones

Slide 65

Slide 65 text

Update your build tool Maven and Gradle work with Java 12

Slide 66

Slide 66 text

Compile against updated JDK …and start using the shiny new features

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

Java Is Changing …fast

Slide 69

Slide 69 text

Modern Java Can Help You Performance, cost, maintenance…

Slide 70

Slide 70 text

Upgrade Now And Reduce Future Pain …and keep upgrading, at least in CI

Slide 71

Slide 71 text

No content