Por que Java não tem declarações de variável com escopo de bloco?

O método a seguir não funciona porque o bloco interno declara uma variável com o mesmo nome de um no bloco externo. Aparentemente as variáveis ​​pertencem ao método ou classe na qual elas são declaradas, não ao bloco no qual elas são declaradas, então, portanto, não consigo escrever um pequeno bloco temporário para depuração que, por acaso, empurra uma variável no escopo externo para sombra apenas por um momento:

void methodName() {
  int i = 7;
  for (int j = 0; j < 10; j++) {
    int i = j * 2;
  }
}

Quase todas as linguagens com escopo de bloco que eu já usei suportaram isso, incluindo pequenas linguagens triviais nas quais escrevi intérpretes e compiladores na escola. O Perl pode fazer isso, assim como o Scheme, e até mesmo o C. Mesmo o PL / SQL suporta isso!

Qual é a razão para esta decisão de design para Java?

Edit: como alguém apontou, o Java tem um escopo de bloco. Qual é o nome do conceito que estou perguntando? Eu gostaria de poder lembrar mais daquelas aulas de design de idiomas. :)

questionAnswers(6)

yourAnswerToTheQuestion