¿Por qué se permite una conversión de reducción implícita de int a byte pero no de largo a int?

Considere el siguiente fragmento de código:

// automatic casting works for int to byte conversion as integer literal 127
// is in the range for byte
byte b1 = 127; //OK

// automatic casting doesn't work for long to int conversion 
// even if long literal is in the range of int.
int i5 = 100L; // NOT OK - compilation error

¿Hay alguna explicación para tal comportamiento?

¿Por qué no es necesaria la conversión explícita en el caso de int a byte, sino que se necesita durante mucho tiempo a int?

los¿Cómo convierte Java int en byte? La pregunta es diferente. Se trata de un problema en la conversión implícita de int a byte cuando el valor int está fuera de rango.

Respuestas a la pregunta(2)

Su respuesta a la pregunta