The module system allows optional dependencies with the ‘requires static’ clause. Module required this way are accessible at compile time but can be absent at run time.
Reflection wants to break into all code; encapsulation wants to give modules a safe space. How can this stand off be resolved?
In the second issue of SitePoint’s Java Channel Newsletter I wonder why Java 9 takes so long.
I’m sure you’ve heard this and that about Java 9: modularity, collection literals (or not?), private methods on interfaces, etc. But if you really want to know all that’s coming, you need this ultimate guide.
There I go babbling about new stream methods and then I forget one: a Stream::iterate overload that produces a finite stream.
More about Java 9 – this time: Optional. We’ll see how the new methods ‘stream()’, ‘or()’, and ‘ifPresentOrElse()’ considerably improve its API.
Java 9 is coming! And it is more than just Jigsaw. One of the many changes are new Stream methods: ‘takeWhile’, ‘dropWhile’, and ‘ofNullable’. For more fun with streams!
In Java 9 a module must read another to be able to use its API. With implied readability a third module passes the dependency on, allowing the first to read the second without explicitly depending on it.
A Jigsaw tutorial explaining how to create modules, state dependencies between them, and use the module system as a service locator to decouple modules.
With the second release the JDeps Maven Plugin allows the creation of flexible exemptions from build-breaking. This enables a self-paced migration away from dependencies of JDK-internal APIs that will be unavailable in Java 9.