Java's Optional is exactly unlike a NullObject. Optional is not a Proxy. Being untyped, not being an implementation of the interface, it can't be used interchangeably.
It's NullObjects all the way down. Makes more sense when designs favor compositions over inheritance.
Optional is the wrapper no one needed. For syntactic sugar, static library methods worked just fine.