Echte Programmierer schreiben Java wie FORTRAN

eFC logo
Echte Programmierer schreiben Java wie FORTRAN

Ich bin ein Java-Programmierer und arbeite an High-Speed-Trading-Systemen. Ich weiss, dass viel darüber diskutiert wird, ob Java die beste Programmiersprache für low latency work ist – meiner Erfahrung nach ist das absolut der Fall. Ich habe erlebt, wie optimierter Java Code nur rund 20-30 Prozent langsamer ist wie sehr, sehr optimierter C-Code – und das ist toll! Die Anwendung konnte auf Marktsignale jedes Mal innerhalb von Single-Digit-Mikrosekunden reagieren.

Echte Programmierer können FORTRAN in jeder Sprache schreiben. Das Problem mit Java ist nicht, dass man keinen Code mit niedriger Latenz schreiben kann, sondern dass man fast völlig ohne Werkzeuge dasteht. Es gibt sehr wenig, was Sie aus den Java-Standardbibliotheken verwenden können. Sie müssen sich also den Kopf darüber zerbrechen, wie Sie selbst das einfachste Problem wie die Speicherverwaltung lösen können, ohne dass etwas passiert, das plötzlich dort eine Menge Latenz erzeugt, wo Sie es nicht wollen.

Überwinden lässt sich das mit einem FORTRAN-ähnlichen Java. Java hat verschiedene Vorteile – nämlich:

  1. Java ist einfacher als C++, erlaubt aber eine einfache Objektmodellierung, die in einfachem C nicht verfügbar ist. Der kleinere Funktionsumfang der Sprache hilft Entwicklern, sich auf die Logik der Anwendung zu konzentrieren, anstatt ihre technische Überlegenheit durch die Anwendung von diversem Schnickschnack, der im Standard verfügbar ist, auszudrücken (was dazu führt, dass Code in C++ oft schwer lesbar ist und von anderen nur schwer verbessert werden kann).
  2. Java ist einfacher zu debuggen als C++. Es erzeugt sehr klare Absturzberichte in Form von umfassenden Stack Traces, mit denen Entwickler sehr schnell nachvollziehen können, was schief gelaufen ist.
  3. Je nachdem, wie latenzempfindlich eine Anwendung ist, kann der Java-Entwickler eine andere Speicherverwaltungstechnik wählen. Es braucht nicht immer einen Zero-Garbage-Ansatz. Man kann stattdessen beispielsweise einen modernen Garbage Collector verwenden, der die Entwicklung beschleunigt. Pausen sind zwar nicht wünschenswert, aber wenn sie nicht zu häufig vorkommen und kurz sind, können sie toleriert werden, solange die Lösung die meiste Zeit mit niedriger Latenz arbeiten kann. Diese Anforderungen werden natürlich je nach Markt, Kunde oder Handelsstrategie variieren.
  4. Bei Java handelt es sich um eine etablierte Sprache. Es ist auch die erste Programmiersprache, die von zig Entwicklern mit unterschiedlichen Erfahrungsniveaus verwendet wurde. Es kann schwierig sein, das zu verlernen, was man bereits weiss, aber oft können dieselben Entwickler, wenn sie geschult sind, Module mit niedriger Latenz genauso gut programmieren wie typische Unternehmens-oder Webanwendungen.
  5. Java hat ein reichhaltiges Development-Ecosystem und kann von Programmierern direkt auf Windows, Mac und verschiedenen Linux-Distributionen eingesetzt werden. Die JVM handeln die meisten der Unterschiede. Das gleiche Programm (jar) wird auf jeder Plattform laufen (obwohl einige kleine zusätzliche plattformspezifische Bibliotheken für beste Ergebnisse an der Low-Latency-Front erforderlich sein können).
  6. Java verfügt über das „Assert“-Keyword, das das Coden von „selbsttestender“ Logik innerhalb einer Anwendung ermöglicht. Diese Logik kann selektiv deaktiviert/aktiviert werden, je nach dem Grad des akzeptablen Overheads und der Teststrategie. In der Praxis wird die „selbsttestende“ Logik ignoriert, ohne dass etwas neu kompiliert werden muss. Es ist sehr hilfreich für die Überprüfung der Zustandskonsistenz beim Pooling/Wiederverwendung von Objekten während Unit- und Integrationstests sowie in Live-QA/UAT-Umgebungen.

Ich bin sicher, dass es Leute gibt, die mir im einen oder anderen Punkt widersprechen würden, aber ich habe erlebt, dass Java mit niedriger Latenz in der Praxis funktioniert. Es gibt Unternehmen, die seit mehr als 15 Jahren Java im elektronischen Trading einsetzen und aktiv in Forschung und Entwicklung investieren, um die Ausführungsgeschwindigkeit und -qualität zu verbessern. Ebenso werden Firmen, die sich strikt auf niedrige Latenzzeiten/HFT konzentrieren, immer nach Möglichkeiten suchen, andere in ihrer Nische zu schlagen. Einige verwenden C/C++ und FPGAs und andere spezialisierte Techniken, um ihre Verzögerung um eine einzige Nanosekunde zu reduzieren. Ich habe auch erlebt, dass Java, C++ und FPGA parallel eingesetzt werden.

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.)

Beliebte Berufsfelder

Loading...

Jobs suchen

Artikel suchen

Close
Loading...