O que é um tipo bruto e por que não devemos usá-lo?

Questões: O que são tipos brutos em Java e por que geralmente ouço que eles não devem ser usados ​​no novo código? Qual é a alternativa se não podemos usar tipos brutos e como é