Conjunto Integer Java. Por quê?

Eu li em todo lugar que quando você define um Integer entre -128 a 127 em Java, em vez de criar um novo objeto, ele retorna um objeto já criado.

Eu não vejo nenhum ponto de fazer isso além de permitir que programadores novatos comparam objetos Integer com== para ver se eles são o mesmo número, mas eu acho que isso é ruim porque com certeza eles acham que eles podem comparar qualquer inteiro com==, e também está ensinando uma má prática em qualquer linguagem de programação: comparando o conteúdo de dois objetos 'diferentes' com==.

Existe algum outro motivo para isso ser feito? Ou é apenas uma má decisão ao projetar a linguagem (no meu ponto de vista) como ponto-e-vírgula opcional em JavaScript?

EDIT: vejo aqui que eles explicam o comportamento:Por que o comportamento do pool constante Integer é alterado em 127?

Estou perguntando por que eles projetaram isso para ter esse comportamento, e não por que esse comportamento está acontecendo.

questionAnswers(2)

yourAnswerToTheQuestion