If we're talking about differences that aren't syntax-related, Tomasz Nurkiewicz pretty much highlights the biggest one in the opening paragraphs of his blog post:
Optional was introduced in Java 8 so obviously it is not used throughout the standard Java library - and never will be for the backward compatibility reasons.
(emph. mine - although I wouldn't be so adamant on "never", given the new default
methods)
So the biggest difference, and the greatest advantage of Scala's Option
, seems to be simply that it's much more tightly integrated into the language's API.
First of all, you're very likely to obtain exposure to it, and hence its usage pattern, early on when you start using Scala - most notably, through Scala's Map#get
.
And inversely - if you look at Scala's Option API, you will see that it is "spliced" into Scala's collection hierarchy, meaning that you can transparently use it as a collection whenever you need so - e.g. without, say, the end developer of your library ever dealing with its particularities.