Сегодня в Java Magazine опубликована статья-обзор о том, как Java использовалась и используется в финансах.
В статье упоминается Island ECN, чей движок был переписан на Java в 2002 году после того, как Island был приобретен компанией Instinet. Если сравнить эту дату с историей Java, то можно догадаться, что движок был написан на Java 1.4, т.е. еще до того, как в Java поменялась модель памяти и улучшилась поддержка concurrency. Переписыванием движка с FoxPro for DOS на Java занимался программист Brian Nigito, Java-маг и чародей, который сейчас работает в Jane Street.
Также упоминается фреймфорк работы с коллекциями, который был написан в Goldman Sachs и по-началу назывался Caramel, а потом был переименован в GS Collections. Мне довелось с ним работать в 2008-2009 году, когда я работал как контрактник в GS над их внутренним проектом. Исходники фреймворка были открыты для публики в 2012 году, а затем переданы в фонд Eclipse, и сейчас фреймворк называется Eclipse Collections.
В 2010 году сенсацию среди разработчиков произвел фреймворк Disruptor, который показал, что Java не «тормозит», если писать на ней вдумчиво и с пониманием. Решения на Java предлагает для HFT консультант-программист Peter Lawrey. Часть его продуктов тоже распространяется с открытыми исходниками, например Chronical Queue.
В статье упоминается несколько Java-проектов с открытым кодом, которые позволяют заглянуть за кулисы и увидеть, как пишутся и работают отдельные компоненты софта для финансового рынка:
- Exchange-Core — биржевой движок на Java
- библиотека finmath — для финансовой аналитики
- ta4j — библиотека для технического анализа
- QuickFIX/J — FIX-движок на Java
Из данной статьи можно сделать вывод, что Java еще способна что-то предложить финансовым программистам. Несмотря на то, что современные требования к latency сейчас дошли до уровня наносекунд и достижимы уже только с помощью FPGA, ASIC или очень хорошо отлаженного C или C++ кода, для Java еще существует области применения, где ее многоплатформенность, автоматическая работа с памятью, простота и легкость понимания кода перевешивают все остальные недостатки.