class Hoge<T>{ }

上記のClass宣言があるとして

Hoge x1;
Hoge<?> x2;

変数宣言で?ありと?なしで宣言できるみたいなのですが、この違いは何でしょうか?