•
•
•
•
•
•
•
•
•
•
•
•
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
•
•
•
•
•
•
•
•
•
269:
213:
• 214:
• 231:
• 240:
• 241:
• 260:
• 289:
• 298:
• 158:
• 223:
• 245:
• 248:
• 271:
Real World Java 9 (QCon London)
Real World Java 9 (QCon London)
Real World Java 9 (QCon London)
Real World Java 9 (QCon London)
Real World Java 9 (QCon London)
Real World Java 9 (QCon London)
Real World Java 9 (QCon London)
Real World Java 9 (QCon London)

Real World Java 9 (QCon London)

  • 2.
  • 4.
  • 8.
    274: Enhanced MethodHandles 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
  • 25.
  • 50.
  • 52.
  • 53.
  • 57.
    • 214: • 231: •240: • 241: • 260: • 289: • 298:
  • 58.
    • 158: • 223: •245: • 248: • 271:

Editor's Notes

  • #15 Show the working application
  • #19 Started with Gradle Structure Ended up with this
  • #20 JDK 9
  • #21 Not using Gradle (couldn’t get it to work) Cheated with the tests Managing the dependencies with IDEA Not running from the command line (tests aren’t in modules) Realised my modules were all wrong And that modules != services Also, when creating these slides, realised it’s still wrong because the other services shouldn’t depend upon Twitter
  • #25 Support in the IDE: - doesn’t error - can create module-info files - basic code completion: * requires, plus completion for jdk modules * exports, plus completion for module names * opens… to… and completion - suggests adding “requires” lines - manually have to add exports
  • #34 Basically the same thing, but instead of injecting a function into some arbitrary position (which mine was), gives much more clarity to the end points and their jobs
  • #37 Picture of User Service
  • #38 Picture of what mood service does – with tweet coming in and CSV going out per tweet
  • #39 Update picture to show a mood comes out for every moody word, or no message if nothing Note that flat map needs the concurrency setting
  • #45 Fix UI Show everything running correctly
  • #50 Was actually a bit easier to test, because I was mocking out publishers and subscribers
  • #56 Defaults (GC) changing, validation being added, tools removed, internal APIs being hidden, logging messages changing
  • #59 Gradle, Groovy not working for me
  • #60 You can make use of the modules in the JDK, but you don’t need to apply it everywhere
  • #61 Backpressure; errors; implementing your own APIs
  • #63 Modules, separation of concerns
  • #64 REPL, Reactive
  • #65 All the other features