Warum gibt es zwei Emulatoren: JTCEMU und JTCemuFX?

JTCEMU wurde mit Java entwickelt. Die grafische Benutzeroberfläche des Emulators verwendet die in der Java Standard Edition enthaltene Technologie AWT/Swing. Diese Technologie ist inzwischen in der Jahre gekommen und deckt nicht mehr alle Anforderungen ab, die man heute an moderne grafische Benutzeroberflächen stellt. Konkret werden Animationen, die Wiedergabe von aktuellen Audio- und Video-Medien sowie die deklarative Beschreibung der Oberflächenelemente nicht bzw. nicht direkt unterstützt. Aus diesem Grund hat man die neue Oberflächentechnologie JavaFX entwickelt, die mit Erscheinen von Java 8 im Jahr 2014 in die Java Standard Edition aufgenommen wurde. Gleichzeitig wurde verkündet, dass JavaFX tendenziell ein Ersatz für AWT/Swing sein soll.

Für mich war das Anlass genug, sich mit JavaFX zu beschäftigen. Ich habe deshalb im Jahr 2014 angefangen, den JTCEMU-Programmcode in einen oberflächenunabhängigen Teil, der nur Java-Basisklassen verwendet, und in einen oberflächenabhängigen Teil, der AWT/Swing verwendet, aufzuteilen. Diese beiden Teile zusammen bilden die Code-Basis für JTCEMU.

Zusätzlich habe ich begonnen, parallel zum oberflächenabhängigen AWT/Swing-Teil eine neue Benutzeroberfläche mit JavaFX zu entwicklen. Diese neue Oberfläche zusammen mit dem oberflächenunabhängigen Teil bildet die Code-Basis für einen neuen Emulator. Da sich bei diesem nur die Benutzeroberfläche, nicht aber der Emulatorkern geändert hat, sollte der Name an JTCEMU angelehnt sein. Herausgekommen ist JTCemuFX.

Die neue auf JavaFX basierte Oberfläche wurde nur für einige der im JTCEMU enthaltenen Werkzeuge realisiert. JTCemuFX hat deshalb gegenüber JTCEMU einen abgespeckten Funktionsumfang. Ebenfalls wurde auf die Emulation des Kassettenrecorderanschlusses verzichtet, da die dort verwendete Java Sound API nicht zu den Java Basisklassen gehört.

Eine weitere Motivation für die Beschäftigung mit JavaFX war für mich das Projekt JavaFXPorts, welches zum Ziel hat, JavaFX-Anwendungen auf Android und iOS lauffähig zu machen. Damit besteht prinzipiell die Aussicht, irgendwann einmal JTCemuFX auch auf einem Smartphone nutzen zu können. Aus diesem Grund habe ich auch die Philosophie der Benutzeroberfläche auf die Erfordernisse mobiler Geräte angepasst: Es gibt nur noch eine Ansicht (ein Fenster), in dem alles abläuft.

Auf eine Veröffentlichung von JTCemuFX habe ich zum damaligen Zeitpunkt verzichtet, da mir bekannt war, dass die Z8-Emulation noch ein paar Schwächen und Fehler hat. Diese wollte ich erst beheben. Der Fehlerbereinigungs- und Konsolidierungsprozess hat sich dann aber noch bis zum Jahr 2021 hingezogen.

Eine überraschende Wendung gab es mit Java 11. Oracle hat JavaFX aus der Java Standard Edition wieder ausgegliedert. Diese Technologie ist somit nicht mehr im Standard enthalten und wird nun unter dem Namen OpenJFX als separates Projekt von der Community weitergeführt. Damit ist aber auch die Zukunft von JavaFX ungewiss. Auch lassen sich mit Java 8 compilierte JavaFX-Programme nicht einfach so mit OpenJDK und OpenJFX ausführen. Beides, die ungewisse Zukunft und die für den unbedarften Anwender nun vorhandenen technischen Hürden, haben mich dazu bewogen, die JavaFX-Schiene nicht mehr weiter zu verfolgen. Trotzdem wollte ich meine mit JavaFX vorgenommenen Entwicklungen der Öffentlichkeit zugänglich machen. Aus diesem Grund gibt es nun JTCemuFX, aber eine substanzielle Weiterentwicklung wird es wohl eher nicht geben.

Jens Müller

© 2021 Jens Müller