Java permite atribuir byte a java.lang.Short, mas não a java.lang.Integer

final byte b = 12;  
Short s = b;  
Integer i = b;

O programa é compilado corretamente para a compilação Curta, mas para Inteira falha com a mensagem "tipos incompatíveis".

Estou tendo dificuldades para entender esse comportamento. Não encontrei nada para esse cenário específico.