Page 1 of 1

Tail-Call-Optimierung in Java

Posted: 23 Dec 2024, 13:11
by Anonymous
Ab Java 8 bietet Java keine Tail-Call-Optimierung (TCO).
Als ich darüber recherchierte, erfuhr ich den Grund dafür:
In JDK-Klassen [...] gibt es eine Reihe sicherheitsrelevanter Methoden, die auf der Zählung von Stapelrahmen zwischen JDK-Bibliothekscode und aufrufendem Code basieren, um herauszufinden, wer sie aufruft.

Allerdings Scala, das auf JVM basiert, unterstützt die Tail-Call-Optimierung. Scala führt zur Kompilierungszeit eine Tail-Rekursionsoptimierung durch. Warum kann Java nicht den gleichen Ansatz verwenden?
PS: Ich bin mir nicht sicher, ob die neueste Version (derzeit Java 11) von Java jetzt TCO hat. Wäre toll, wenn jemand, der es weiß, dies auch teilen könnte.
Anmerkungen:
  • Ich weiß, dass TCO ist im Rückstand und hat eine niedrigere Priorität, möchte aber wissen, warum Java in der Kompilierungszeit keine Änderungen ähnlich wie bei Scala vornehmen kann.
  • Java tut dies nicht Es gibt keine Tail-Call-Optimierung aus demselben Grund, aus dem die meisten imperativen Sprachen sie nicht haben. Imperativschleifen sind der bevorzugte Stil der Sprache, und der Programmierer kann die Schwanzrekursion durch Imperativschleifen ersetzen. (Quelle)