Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Beyond Java 8

Trisha Gee
March 04, 2019

Beyond Java 8

Wasn’t Java 8 a fantastic update to the language? Lambdas and streams were a huge change and have helped to improve Java developers’ productivity and introduce some functional ideas to the language. Then came Java 9... and although the module system is really interesting for certain types of applications, the lack of exciting language features and uncertainty around how painful it might be to migrate to Java 9 left many applications taking a wait-and-see approach, happy with Java 8.

But now Java has a new version every six months, and suddenly Java 12 is here. We’re all still on Java 8, wondering whether we should move to a later version, which one to choose, and how painful it might be to upgrade.

In this presentation, we look at:

- Why upgrade from Java 8, including language features from Java 9, 10, 11 and 12
- What sorts of issues might we run into if we do choose to upgrade
- How the support and license changes that came in with Java 11 might impact us.

Trisha Gee

March 04, 2019
Tweet

More Decks by Trisha Gee

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. var

  4. var

  5. var

  6. var

  7. var

  8. var

  9. New Methods on Stream API items.stream() .takeWhile(user -> user.count() <

    maxCount) .forEach(user -> position.incrementAndGet());
  10. • 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?
  11. • 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
  12. • 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
  13. If It Hurts, Do It More Frequently, and Bring the

    Pain Forward An idea from Extreme Programming (XP) Continuous Delivery – Jez Humble & Dave Farley