null is a keyword. It works much like NULL in C++ (not void* since null is not a type, it is a value). null simply means that a reference variable does not refer to any object.
Not according to Sun's definition. "While true and false might appear to be keywords, they are technically Boolean literals (�3.10.3). Similarly, while null might appear to be a keyword, it is technically the null literal (�3.10.7)." The difference appears to have literal practical value, since just about the only thing they do with the definition is tell us that we can't have an identifier that matches a keyword... or a boolean literal or null literal. And all three of these are incorporated in the definition of token. Big deal. It looks like "keyword" never appears in any definition in which the null literal and boolean literals aren't also included, so it would've made sense to group them all together in the first place. Regardless though, for whatever reason, Sun chose to group them separately.