Real World Java 9 - JetBrains Webinar

57
Trisha Gee (@trisha_gee) Developer & Technical Advocate, JetBrains Real World Java 9

Transcript of Real World Java 9 - JetBrains Webinar

Page 1: Real World Java 9 - JetBrains Webinar

Trisha Gee (@trisha_gee)

Developer & Technical Advocate, JetBrains

Real World Java 9

Page 2: Real World Java 9 - JetBrains Webinar

Any questions?

Use the Questions pane in the GoToWebinar window. We’ll try to answer as we go along.

Page 3: Real World Java 9 - JetBrains Webinar
Page 4: Real World Java 9 - JetBrains Webinar

Real World Java 9

• Jigsaw in Action

• The Reactive API in Java 9

• Everything Else

Page 5: Real World Java 9 - JetBrains Webinar

Why Java 9?

Page 6: Real World Java 9 - JetBrains Webinar

Free Lunch!

• Better Use of Memory

• Better Performance of: • Locking• Secure Apps• Graphics

• Better Use of Hardware

• Better Documentation

• Prettier Graphics (Windows and Linux)• Faster Compilation

Page 7: Real World Java 9 - JetBrains Webinar

Jigsaw

Page 8: Real World Java 9 - JetBrains Webinar

REPL

Page 9: Real World Java 9 - JetBrains Webinar

And… other things?

Page 10: Real World Java 9 - JetBrains Webinar

274: Enhanced Method Handles

275: Modular Java Application Packaging

276: Dynamic Linking of Language-Defined Object Models

277: Enhanced Deprecation

278: Additional Tests for Humongous Objects in G1

279: Improve Test-Failure Troubleshooting

280: Indify String Concatenation

281: HotSpot C++ Unit-Test Framework

282: jlink: The Java Linker

283: Enable GTK 3 on Linux

284: New HotSpot Build System

285: Spin-Wait Hints

287: SHA-3 Hash Algorithms

288: Disable SHA-1 Certificates

289: Deprecate the Applet API

290: Filter Incoming Serialization Data

292: Implement Selected ECMAScript 6 Features in Nashorn

294: Linux/s390x Port

295: Ahead-of-Time Compilation

297: Unified arm32/arm64 Port

298: Remove Demos and Samples

Page 11: Real World Java 9 - JetBrains Webinar

The Case Study

Page 12: Real World Java 9 - JetBrains Webinar

Twitter Dashboard

Page 13: Real World Java 9 - JetBrains Webinar
Page 14: Real World Java 9 - JetBrains Webinar

http://bit.ly/Java8InAnger

Page 15: Real World Java 9 - JetBrains Webinar

Compiling with Java 9

Page 16: Real World Java 9 - JetBrains Webinar

Jigsaw

Page 17: Real World Java 9 - JetBrains Webinar

• JEP 200: The Modular JDK

• JEP 201: Modular Source Code

• JEP 220: Modular Run-Time Images

• JEP 260: Encapsulate Most Internal APIs

• JEP 261: Module System

• JEP 282: jlink: The Java Linker

• JSR 376: Java Platform Module System

Project Jigsaw

Page 18: Real World Java 9 - JetBrains Webinar

Java Platform Module System (JPMS)

Page 19: Real World Java 9 - JetBrains Webinar
Page 20: Real World Java 9 - JetBrains Webinar
Page 21: Real World Java 9 - JetBrains Webinar
Page 22: Real World Java 9 - JetBrains Webinar
Page 23: Real World Java 9 - JetBrains Webinar

module-info.java

Page 24: Real World Java 9 - JetBrains Webinar

Pain

• Some structural reorganisation may be needed

• IDE support is not what we’re used to

• RTFM. No, really do.

Page 25: Real World Java 9 - JetBrains Webinar

• Cleaner design

• Reliable configuration

• Smaller deployables

Gain

Page 26: Real World Java 9 - JetBrains Webinar

Reactive API

Page 27: Real World Java 9 - JetBrains Webinar

Reactive Streams API

Page 29: Real World Java 9 - JetBrains Webinar

Java 9 Flow API

Page 30: Real World Java 9 - JetBrains Webinar
Page 31: Real World Java 9 - JetBrains Webinar

Other Java 9 Features

Page 32: Real World Java 9 - JetBrains Webinar

269: Convenience Factory Methods for Collections

Page 33: Real World Java 9 - JetBrains Webinar

213: Private Methods on Interfaces

Page 34: Real World Java 9 - JetBrains Webinar

New Methods on the Streams API

Page 35: Real World Java 9 - JetBrains Webinar

New Methods on Optional

Page 36: Real World Java 9 - JetBrains Webinar

259: Stack-Walking API

Page 37: Real World Java 9 - JetBrains Webinar

102: Process API Updates

Page 38: Real World Java 9 - JetBrains Webinar

238: Multi-Release JAR Files

Page 39: Real World Java 9 - JetBrains Webinar

277: Updated Deprecation

Page 40: Real World Java 9 - JetBrains Webinar

224: HTML5 Javadoc

Page 41: Real World Java 9 - JetBrains Webinar

225: Javadoc search

Page 42: Real World Java 9 - JetBrains Webinar
Page 43: Real World Java 9 - JetBrains Webinar

JShell (REPL)

Page 45: Real World Java 9 - JetBrains Webinar

We’d Love Your Help

https://youtrack.jetbrains.com/issue/IDEA-161611

Page 46: Real World Java 9 - JetBrains Webinar

The Pain

Page 47: Real World Java 9 - JetBrains Webinar

Your code might break!

Try it out now to find out sooner, not later

Page 48: Real World Java 9 - JetBrains Webinar

• 214: Remove Deprecated GC Combinations

• 231: Remove Launch-Time JRE Version Selection

• 240: Remove the JVM TI hprof Agent

• 241: Remove the jhat Tool

• 260: Encapsulate Most Internal APIs

• 289: Deprecate the Applet API

• 298: Remove Demos and Samples

Going Away

Page 49: Real World Java 9 - JetBrains Webinar

• 158: Unified JVM Logging

• 223: New Version-String Scheme

• 245: Validate JVM Command-Line Flag Arguments

• 248: Make G1 the Default Garbage Collector

• 271: Unified GC Logging

Possible Unexpected Behaviour

Page 50: Real World Java 9 - JetBrains Webinar

Tools are still evolving

…another reason to try it early

Page 51: Real World Java 9 - JetBrains Webinar

Don’t rush in to modularisation

It might not be for you

Page 52: Real World Java 9 - JetBrains Webinar

The Gain

Page 53: Real World Java 9 - JetBrains Webinar

Encourages good design

Page 54: Real World Java 9 - JetBrains Webinar

Encourages new ways of working

Page 55: Real World Java 9 - JetBrains Webinar

Just a bit nicer to write code

Page 56: Real World Java 9 - JetBrains Webinar

…and you’ll be ready for Java 10

Or 18.3…

Page 57: Real World Java 9 - JetBrains Webinar

http://bit.ly/RealJava9