Entdecken Sie Ihre Traumkarriere
Für Recruiter
Java ist nicht gleich Java!

Warum Java für High-Speed-Trading besser ist als C++

Es gilt als unbestritten, dass man beim Aufbau eines High-Speed-Trading-Systems eher C++ als Java verwendet: Es ist „näher am Metall“ und daher schneller (geringere Latenzzeit). Einige führende Persönlichkeiten in der Branche sind jedoch anderer Meinung.

Peter Lawrey, CEO von Chronicle Software, kennt das Programmieren mit niedriger Latenz wie seine eigene Hosentasche. Als ehemaliger Trading Performance Engineer bei Barclays und Entwickler/Researcher beim Hedgefonds Millennium Management (um nur zwei Stationen zu nennen) widmete sich Lawrey 2013 High-Speed-Trading-Systemen und gründete Chronicle. Zum Kundenkreis des Unternehmens gehören zehn Tier-1-Investmentbanken und mehrere große Hedgefonds.

In der Vergangenheit hatte Chronicle Kunden, die Handelssysteme mit niedriger Latenzzeit aufbauen wollten, Beratung angeboten. Mittlerweile wird neben dem Consulting auch ein „generisches, anpassbares [Trading-]Infrastruktur“-Paket angeboten, das die Kunden nutzen können. Dieses Paket ist in Java programmiert.

„Wenn Sie unbegrenzt Zeit und Ressourcen haben, wird die beste Lösung für Geschwindigkeit in FPGA programmiert“, sagt Lawrey und bezieht sich dabei auf die Sprache, die direkt feldprogrammierbare Gate-Arrays codet. „Wer dann noch immer Zeit und Ressourcen hat und mehrere Austauschadapter erstellen möchte, wählt C++. Wenn Sie sich allerdings mit mehr als 20 Austauschsystemen beschäftigen, schnell auf den Markt gehen und eine kontinuierliche Leistungsabstimmung implementieren möchten, nehmen Sie Java.“

Das Problem an C++ ist seine Fehleranfälligkeit, sagt Lawrey: „Sie müssen ein extrem guter C++-Entwickler sein und selbst dann können Sie sich noch in den Fuß schießen und ein ganzes Projekt zum Scheitern bringen.“ Als Beispiel verweist Lawrey auf ein System, mit dem er bei einer Investmentbank zu tun hatte. Es war in C++ geschrieben und hätte schnell sein sollen, aber laut Lawrey habe das Entwicklerteam der Bank die meiste Zeit damit verbracht, sich Absturzberichte anzusehen und zu versuchen, zu rekonstruieren, was in C++ falsch gelaufen war. Aus diesem Grund, so Lawrey, seien die Elemente des Systems, die auf Java liefen, wesentlich schneller gewesen. „Sie haben in Java Metriken hinzugefügt, um zu sehen, wie das C++-System damit macht“, sagt er. „Das war mit das rückständigste, was mir während meiner gesamten Karriere begegnet ist.“

Das bedeutet jedoch nicht, dass Java-Code immer schnell ist. Chronicle etwa ist in einem System aufgebaut, das Lawrey als „C-ähnliches Java“ bezeichnet – und in diesem Sinne ermutigt er dazu, Systeme mit niedriger Latenz zu programmieren.

„Die Art und Weise, wie wir programmieren, ähnelt eher C++ als Java“, so Lawrey. „Wir verwenden im Wesentlichen eine konstruierte Form von Java, die alle Java-Konstrukte vermeidet, die die Dinge langsam machen. Wir verwenden nur die Konstrukte, die schnell und effizient sind, und wir vermeiden den ganzen Müll.“ Durch die Vereinfachung von Java und die Umstellung auf Code auf einer sehr niedrigen Ebene, so Lawrey, könne man die Dinge erheblich beschleunigen. Manchmal sei es nur eine Frage der Diagnose: „Mit einer einfachen Änderung der Konfiguration des Codes konnten wir die Latenzzeit im 99,9-Perzentil um den Faktor 25 reduzieren.“

Das einzige Problem rund um Java mit niedriger Latenz ist, dass die meisten erfahrenen Java-Programmierer mit dem neuen Paradigma fremdeln. „Viele, die in Java programmieren, sind es gewohnt, in einer Umgebung zu arbeiten, in der Latenz kein Kriterium ist“, so Lawrey. „Wer 15 oder 20 Jahre Erfahrung mitbringt, hat eher wenig Verständnis für Low-Level-Code oder den Denkansatz, alles auf das Wesentlichste zu konzentrieren.

Chronicle schult die Software-Entwickler seiner Kunden in dieser Form von Low-Level-Java. Das Unternehmen beschäftigt auch zehn eigene Java-Spezialisten und will im Zuge der globalen Plattform-Einführung weiter wachsen. Lawrey erklärt, dass der Fokus auf C-ähnlichem Java die Suche nach geeigneten Mitarbeitern erschweren kann. „Wir haben am Anfang Leute aus den Trading Floors geholt, in letzter Zeit aber auch Leute direkt von der Uni eingestellt, die einen Master- oder Doktortitel mitbringen.

Dennoch seien viele, die sich bei Chronicle bewerben, für die Arbeit nicht geeignet. „Die meisten Java-Programmierer sind Webentwickler und sind es daher gewohnt, Dinge zu modellieren, die sie sehen können“, sagt Lawrey. „In einem Trading-System geht es allerdings um Latenzen, die man nicht sehen kann, und es sind noch nicht einmal die typischen Latenzen – selbst eine Millisekunde kann von Bedeutung sein. Was wir tun, ist sehr theoretisch und abstrakt, und es ist schwierig, sich das, was vor sich geht, bildlich vorzustellen.“

Have a confidential story, tip, or comment you’d like to share? Contact: sbutcher@efinancialcareers.com in the first instance. Whatsapp/Signal/Telegram also available. Bear with us if you leave a comment at the bottom of this article: all our comments are moderated by human beings. Sometimes these humans might be asleep, or away from their desks, so it may take a while for your comment to appear. Eventually it will – unless it’s offensive or libelous (in which case it won’t.)

author-card-avatar
AUTORSarah Butcher Globale Redaktionsleiterin mit Sitz

Bewerben Sie sich für Jobs

Finden Sie Tausende von Stellenangeboten, indem Sie sich noch heute bei eFinancialCareers anmelden.

Treiben Sie Ihre Karriere voran

Finden Sie Tausende von Stellenangeboten, indem Sie sich noch heute bei eFinancialCareers anmelden.
Neueste Jobs
Experis Switzerland
Senior Scrum Master
Experis Switzerland
Zürich, Schweiz
Experis Switzerland
Senior Delivery Manager
Experis Switzerland
Zürich, Schweiz
Experis Switzerland
Senior Angular Frontend Engineer
Experis Switzerland
Zürich, Schweiz
Experis Switzerland
Senior Data Lead/ BI Consultant
Experis Switzerland
Zürich, Schweiz
Experis Switzerland
IT Service Desk Agent
Experis Switzerland
Zug, Schweiz