I saw this code today:
ImmutableMap, CommandProcessorInterface> immutableMap =
ImmutableMap.
It means you're invoking a generic static method, called of in the ImmutableMap class.
It's pretty much the same as you're invoking a static method, nested in some class:
SomeClass.staticMethod();
For the cases when your method has a type-parameter defined, you can explicitly provide the generic type and this is done like this:
SomeClass.genericStaticMethod();
And to answer you final question:
What is the difference between
ImmutableMapandImmutableMap.?
The first is usually used when creating an instance of a generic class. It's used to define the generic-type on class level, while the second is used to invoke a generic static method that's nested in some class.