It's also worth looking at --jopt-simple.
It 'attempts to honor the command line option syntaxes of POSIX getopt() and GNU getopt_long().'
It seems to have some community traction, notably being the command line parsing lib of choice for the OpenJDK.
Also, as Brett mentioned, tab completion is typically provided by your shell - you would write shell functions to provide that desired functionality.
p.s. Sorry for the duplicate answer, but this question is almost identical to Java library for parsing command-line parameters?