O java suporta e otimiza chamadas recursivas de cauda?

Digamos que eu tenho uma função recursiva que é recursiva na cauda.

System.out.println( sum(Arrays.asList(0, 1, 2, 3, 4, 5)) );

int sum(List<Integer> integers) {
    if (integers.isEmpty())
        return 0;
    else
        return integers.get(0) + sum(integers.subList(1, integers.size()));
}

Gostaria de saber se esta funçãosum crescerá na pilha ou será alterado para um loop (já que é uma função recursiva da cauda)?

Acabei de ler que o Scala detecta essas chamadas e a otimiza, mas isso é apenas uma coisa do Scala ou JVM em geral?

questionAnswers(2)

yourAnswerToTheQuestion