Java Integer pool. ¿Por qué?

He leído en todas partes que cuando define un entero entre -128 y 127 en Java, en lugar de crear un nuevo objeto, devuelve un objeto ya creado.

No veo otro punto de hacer esto más que permitir que los programadores novatos comparen objetos de Integer con== para ver si son el mismo número, pero creo que esto es malo porque seguro que piensan que pueden comparar cualquier Entero con==, y también está enseñando una mala práctica en cualquier lenguaje de programación: comparar el contenido de dos objetos 'diferentes' con==.

¿Hay alguna otra razón por la que se hace esto? ¿O es solo una mala decisión al diseñar el lenguaje (en mi punto de vista) como un punto y coma opcional en JavaScript?

EDIT: Veo aquí que explican el comportamiento:¿Por qué cambia el comportamiento de la agrupación constante de enteros en 127?

Estoy preguntando por qué lo diseñaron para tener este comportamiento, y no por qué está sucediendo este comportamiento.

Respuestas a la pregunta(2)

Su respuesta a la pregunta