The Java Version Almanac — отличный веб-сайт, если кто не видел. В удобной форме показывает, какие новинки в какой версии Java появились как incubator, preview или PROD-ready. Позволяет сравнивать одну версию Java с другой. Ну и за одно — ссылки на реализации конкретной версии Java от разных вендоров.
Как создать native image с помощью GraalVM
Про GraalVM я уже рассказывал в предыдущей статье. Из набора технологий GraalVM интересным была технология предварительной компиляции Ahead-of-Time compilation (AOT compilation), которая была на время экспериментально добавлена в обычный Java JDK. В Java 17 эта функция была выпилена. Ходят слухи, что в Java 21 она снова появится.
В GraalVM функция предкомпиляции позволяет так называемые нативные приложения (native images). То есть все ваше Java-приложение вместе со всеми потрохами Java SDK заворачивается в исполняемый файл и этот файл можно запускать, на любой другой машине даже если там нет Java JDK. Разумеется, exe-файл получается внушительный, но 1) GraalVM весьма умно при компиляции понимает, что надо в него заворачивать, а что не понадобится 2) когда это нас стали пугать exe файлы размером в 11 мегабайт?
Давно хотел поиграться с этой функцией, чтобы хотя бы в общих чертах понять сам процесс. Я решил попробовать собрать простейшее тестовое Spring-приложение в native-image не меняя в нем ничего, чтобы разобраться, какие танцы с бубном понадобятся, чтобы все заработало само собой просто из коробки.
В интернете полно видео и документации, но некоторые вещи из документации и видео не очевидны. Авторы опускают важные детали, из-за чего легко зайти в тупик и потратить много времени на поиск решения очевидных проблем. С бубном конечно пришлось немножко поплясать, поэтому делюсь опытом для того, чтобы неприятные грабли, на которые наступал я, не мешали вам придти к приятному результату.
Читать далееКак измерить latency с помощью tcpdump
Для элементарных замеров latency в торговых приложениях на стадии разработки и QA часто используется перехватчик пакетов tcpdump, а пакеты анализируются с помощью приложения Wireshark.
tcpdump не применяют на PROD, потому что он сам оказывает влияение на производительность системы. Тонкие замеры latency на PROD производятся другими средствами, о чем я расскажу в свое время.
В данной статье я хочу продемонстрировать технику замера latency на примере двух моих приложений SimpleFIXClient и SimpleFIXExecutor. Надеюсь, пошаговая инструкция будет достаточно понятной и не слишком запутает вас.
Читать далееЧто должна уметь OMS (Order Management System)
В данной статье я расскажу об основных функциях системы управления ордерами (OMS) в брокерской конторе, о том, что должна уметь OMS в брокерском бизнесе торговли акциями. Эта статья будет интересна финансовым программистам и архитекторам, а также всем тем, кто интересуется внутренним устройством сложным финансовых программных систем.
Читать далееСпособы организации торгов
Книга лимитных ордеров (limit order book) — не единственный способ организации торгов. Концептуально в мировой истории биржевых торгов были три варианта:
- рынок специалиста (specialist market)
- quote driven market (рынок котировок)
- order dirven market (рынок заявок собранных в книгу лимитных ордеров)
Все эти три способа организации рынка торгов имеют свои преимущества и недостатки. О книге лимитных ордеров я уже рассказывал в предыдущей статье. В этой статье попробую популярно объяснить остальные варианты.
Читать далее