The power of Maybe in Haskell comes from both the existence of the type, and from the existence of sequencing combinators that understand how to handle Maybe.
Just adding a Maybe type to Java wouldn't do anything; each method would still have to handle the Nothing case in some way.
For Maybe to be useful in Java, control flow would have to change from running one line after another to "running" by applying functions, so that whether or not to run each "line of code" would be determined by a combinator that understands the semantics of Maybe. Then, of course, you just have Haskell, which already exists!
A better option for Java would be a type that could not be null. I don't think the language allows the compiler to determine this, though, which means it probably won't exist (or if it does exist, it won't be too useful).
Basically, if you want a good type system, you want to ditch Java.
Just adding a Maybe type to Java wouldn't do anything; each method would still have to handle the Nothing case in some way.
For Maybe to be useful in Java, control flow would have to change from running one line after another to "running" by applying functions, so that whether or not to run each "line of code" would be determined by a combinator that understands the semantics of Maybe. Then, of course, you just have Haskell, which already exists!
A better option for Java would be a type that could not be null. I don't think the language allows the compiler to determine this, though, which means it probably won't exist (or if it does exist, it won't be too useful).
Basically, if you want a good type system, you want to ditch Java.