Project Valhalla: Value Types in Java

Seite 3: Konkurrenz + Ausblick

Inhaltsverzeichnis

Als Abschluss bietet es sich an, zu schauen, wie andere Programmiersprachen das Problem lösen. In C++ können Entwickler mit Zeigern auf den Heap zugreifen. Dadurch können sie sich bei einer Variable aussuchen, ob sie auf dem Stack oder auf dem Heap liegen soll und das unabhängig davon, ob es sich um einen Wert oder ein Objekt handelt. Die Unveränderlichkeitseigenschaft können sie durch const-Felder und nicht zustandsverändernde Methoden erreichen. (Das ist dann die C++-Variante der "value-based class".)

C# hat einen Mechanismus, der ebenfalls "value types" heißt. Mit dem Schlüsselwort struct lassen sich Werttypen definieren. Sie haben allerdings lediglich die Eigenschaft, dass sie keine Referenztypen sind, also auf dem Stack liegen können. Unveränderlichkeit wird für die Value Types bei C# nicht gefordert. Will man sie erreichen, bietet sich wieder das Muster "value-based class" an.

Mit Projekt Valhalla wird ein von vielen ersehnter Mechanismus in Java eingeführt. Die Umsetzung hat Einfluss auf die Performance. Noch spannender ist allerdings, dass es auch die "immutable"-Eigenschaft von Werten erzwingt. Ein Feature, dass zum Beispiel C# (das ja mit seinen Structs "value types" hat) nicht unterstützt. Wer an noch mehr technischen Details interessiert ist, dem empfiehlt sich die Lektüre des Dokuments "State of the Values" der Programmiersprachen-Gurus John Rose, Brian Goetz und Guy Steele.

Der Wermutstropfen bleibt: Wann das Feature kommt, steht in den Sternen. Die offizielle Aussage vom Java-Team dazu ist: "Irgendwann nach Version 9."

Henning Schwentner
liebt Programmieren. Diese Leidenschaft lebt er als Softwarearchitekt und Berater bei der WPS – Workplace Solutions in Hamburg aus. Seine Projekte sind agil und in Programmiersprachen wie Java und C#, aber auch ABAP. geschrieben. Ihn interessieren die Evolution von Programmiersprachen, langlebige Softwarearchitekturen und große Refactorings.
(ane)