SlideShare a Scribd company logo
1 of 12
Download to read offline
Java FIX serialisation 
When a FIX engine is too little and too much 
github.com/YTEQ/fixb 
Vlad Yatsenko @ YTEQ
Agenda 
● Problem 
● FIX basics 
● Solution: JA(FIX)B 
● Provider flexibility: Cheetah is fast, but QuickFIX is free 
● QuickFIX/J pitfalls 
● Demo
Problem 
Initial requirements 
● Single Dealer Platform (not high-frequency trading) 
● Integration with backend systems via FIX protocol. 
● Integration contracts as immutable POJOs on Java 
side. 
● Custom messages are based on FIX5.0. 
● For now use QuickFIX/J but later will need to switch to a 
commercial product like Cameron.
FIX Basics 
● Financial Information eXchange protocol. 
● FIX is a public-domain specification owned and 
maintained by FIX Protocol, Ltd. 
● The latest version is 5.0SP2. 
● Standard protocol but not a silver bullet - many use 
custom messages. 
● Somewhat bloated - covers areas already defined in 
TCP.
FIX Basics 
● FIX message - a string of delimited key-value pairs. 
● Header, body and trailer. 
● Key, FIX tag, is a number. 
● Repeating groups - a mechanism for complex nested 
structures with collections of key-value sets. 
100=2|101=V11|102=V12|101=V21|102=V22 
● Dictionary based.
FIX Basics
Solution 
● Java API for FIX bindings. 
● Annotation-based. 
● Immutable POJOs. 
● Built-in support for jodatime types. 
● Used as a serialisation adapter at integration endpoint. 
● Version-agnostic approach.
Solution 
Example 
@FixMessage(type = "ORD") 
public class Order { 
@FixBlock 
private final OrderParameters parameters; 
@FixGroup(tag=100) 
private final List<Party> quotes; 
@FixField(tag=111) 
private final org.jodatime.DateTime timestamp; 
public Order( 
final OrderParameters parameters, 
final List<FxQuote> quotes, 
final DateTime timestamp) { 
this.parameters = parameters; 
this.quotes = quotes; 
this.timestamp = timestamp; 
} 
}
Provider flexibility 
● Two simple interfaces allow for implementation on top of 
different existing FIX libraries. 
● Free "Quick"FIX/J in dev, Commercial provider in prod. 
● Reference implementation based on QuickFIX/J. 
● Own implementation would potentially be the fastest. 
● Version-agnostic approach.
QuickFIX/J Pitfalls 
● Somewhat stiff implementation (Java port of C++-based 
QuickFIX). 
● Dictionary required to deserialise repeating groups. 
● All values are stored as Strings that are converted to 
required type when accessed. 
● Deserialisation errors are stored as part of a quickfix. 
Message object. 
● Problems with milliseconds for time values.
Demo 
Demo* :) 
* Hopefully, this is not one of those never working demos. ;)
Links 
● Vlad Lazarenko's blog: 
http://lazarenko.me/2011/04/12/the-need-for-a-better-fix-protocol 
● FIXB on Github 
https://github.com/YTEQ/fixb

More Related Content

What's hot

BKK16-201 Play Ready OPTEE Integration with Secure Video Path lhg-1
BKK16-201 Play Ready OPTEE Integration with Secure Video Path lhg-1BKK16-201 Play Ready OPTEE Integration with Secure Video Path lhg-1
BKK16-201 Play Ready OPTEE Integration with Secure Video Path lhg-1Linaro
 
BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 Linaro
 
Bootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to HeroBootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to HeroEPAM
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLinaro
 
BKK16-307 LHG OE Initiative
BKK16-307 LHG OE InitiativeBKK16-307 LHG OE Initiative
BKK16-307 LHG OE InitiativeLinaro
 

What's hot (6)

Advanced LB
Advanced LBAdvanced LB
Advanced LB
 
BKK16-201 Play Ready OPTEE Integration with Secure Video Path lhg-1
BKK16-201 Play Ready OPTEE Integration with Secure Video Path lhg-1BKK16-201 Play Ready OPTEE Integration with Secure Video Path lhg-1
BKK16-201 Play Ready OPTEE Integration with Secure Video Path lhg-1
 
BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64
 
Bootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to HeroBootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to Hero
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoT
 
BKK16-307 LHG OE Initiative
BKK16-307 LHG OE InitiativeBKK16-307 LHG OE Initiative
BKK16-307 LHG OE Initiative
 

Viewers also liked

Email Social Media 4 Tactics 2010 Nor Cal Dma 11.18.09
Email Social Media 4 Tactics 2010 Nor Cal Dma 11.18.09Email Social Media 4 Tactics 2010 Nor Cal Dma 11.18.09
Email Social Media 4 Tactics 2010 Nor Cal Dma 11.18.09Silverpop
 
2014 holiday online shopping mobile trends silverpop
2014 holiday online shopping mobile trends silverpop2014 holiday online shopping mobile trends silverpop
2014 holiday online shopping mobile trends silverpopSilverpop
 
Sdkff core
Sdkff coreSdkff core
Sdkff corejwony
 
Why You Need FPGA In Your High-Frequency Trading Business
Why You Need FPGA In Your High-Frequency Trading BusinessWhy You Need FPGA In Your High-Frequency Trading Business
Why You Need FPGA In Your High-Frequency Trading Businessjeffjohnsonau
 
Hacking The Trading Floor
Hacking The Trading FloorHacking The Trading Floor
Hacking The Trading Flooriffybird_099
 
FIX Protocol Overview.
FIX Protocol Overview.FIX Protocol Overview.
FIX Protocol Overview.aiQUANT
 
Trading Clearing Systems Test Automation
Trading Clearing Systems Test AutomationTrading Clearing Systems Test Automation
Trading Clearing Systems Test AutomationIosif Itkin
 
Algorithmic Trading and FIX Protocol
Algorithmic Trading and FIX ProtocolAlgorithmic Trading and FIX Protocol
Algorithmic Trading and FIX ProtocolEXANTE
 
Fast and secure protocol (fasp)
Fast and secure protocol (fasp)Fast and secure protocol (fasp)
Fast and secure protocol (fasp)Vikrant Arya
 
Intel aspera-medical-v1
Intel aspera-medical-v1Intel aspera-medical-v1
Intel aspera-medical-v1dkumiaspera
 
Tactics to integrate social and email marketing silverpop
Tactics to integrate social and email marketing silverpopTactics to integrate social and email marketing silverpop
Tactics to integrate social and email marketing silverpopSilverpop
 
How to create Forex Robot for Fix Api Trading
How to create Forex Robot for Fix Api Trading How to create Forex Robot for Fix Api Trading
How to create Forex Robot for Fix Api Trading Edwin12Gentner
 

Viewers also liked (14)

Too fast for Scrum? | AgilePT 2015
Too fast for Scrum? | AgilePT 2015Too fast for Scrum? | AgilePT 2015
Too fast for Scrum? | AgilePT 2015
 
Email Social Media 4 Tactics 2010 Nor Cal Dma 11.18.09
Email Social Media 4 Tactics 2010 Nor Cal Dma 11.18.09Email Social Media 4 Tactics 2010 Nor Cal Dma 11.18.09
Email Social Media 4 Tactics 2010 Nor Cal Dma 11.18.09
 
2014 holiday online shopping mobile trends silverpop
2014 holiday online shopping mobile trends silverpop2014 holiday online shopping mobile trends silverpop
2014 holiday online shopping mobile trends silverpop
 
Fix
FixFix
Fix
 
Sdkff core
Sdkff coreSdkff core
Sdkff core
 
Why You Need FPGA In Your High-Frequency Trading Business
Why You Need FPGA In Your High-Frequency Trading BusinessWhy You Need FPGA In Your High-Frequency Trading Business
Why You Need FPGA In Your High-Frequency Trading Business
 
Hacking The Trading Floor
Hacking The Trading FloorHacking The Trading Floor
Hacking The Trading Floor
 
FIX Protocol Overview.
FIX Protocol Overview.FIX Protocol Overview.
FIX Protocol Overview.
 
Trading Clearing Systems Test Automation
Trading Clearing Systems Test AutomationTrading Clearing Systems Test Automation
Trading Clearing Systems Test Automation
 
Algorithmic Trading and FIX Protocol
Algorithmic Trading and FIX ProtocolAlgorithmic Trading and FIX Protocol
Algorithmic Trading and FIX Protocol
 
Fast and secure protocol (fasp)
Fast and secure protocol (fasp)Fast and secure protocol (fasp)
Fast and secure protocol (fasp)
 
Intel aspera-medical-v1
Intel aspera-medical-v1Intel aspera-medical-v1
Intel aspera-medical-v1
 
Tactics to integrate social and email marketing silverpop
Tactics to integrate social and email marketing silverpopTactics to integrate social and email marketing silverpop
Tactics to integrate social and email marketing silverpop
 
How to create Forex Robot for Fix Api Trading
How to create Forex Robot for Fix Api Trading How to create Forex Robot for Fix Api Trading
How to create Forex Robot for Fix Api Trading
 

Similar to Fix Bindings for Java

Mobicents Summit 2012 - Jean Deruelle - Mobicents SIP Servlets
Mobicents Summit 2012 - Jean Deruelle - Mobicents SIP ServletsMobicents Summit 2012 - Jean Deruelle - Mobicents SIP Servlets
Mobicents Summit 2012 - Jean Deruelle - Mobicents SIP Servletstelestax
 
JBoss Architect Forum London - October 2013 - Platform as a What?
JBoss Architect Forum London - October 2013 - Platform as a What?JBoss Architect Forum London - October 2013 - Platform as a What?
JBoss Architect Forum London - October 2013 - Platform as a What?JBossArchitectForum
 
Ceph Day Shanghai - On the Productization Practice of Ceph
Ceph Day Shanghai - On the Productization Practice of Ceph Ceph Day Shanghai - On the Productization Practice of Ceph
Ceph Day Shanghai - On the Productization Practice of Ceph Ceph Community
 
Portets to composite applications
Portets to composite applicationsPortets to composite applications
Portets to composite applicationsSerge Huber
 
Crushing Latency with Vert.x
Crushing Latency with Vert.xCrushing Latency with Vert.x
Crushing Latency with Vert.xPaulo Lopes
 
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]Leonardo Zanivan
 
Meet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento CloudMeet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento CloudLyzun Oleksandr
 
Framework Modularity Layer - Glyn Normington, IBM
Framework Modularity Layer - Glyn Normington, IBMFramework Modularity Layer - Glyn Normington, IBM
Framework Modularity Layer - Glyn Normington, IBMmfrancis
 
CNIT 140: Flashing Firmware
CNIT 140: Flashing FirmwareCNIT 140: Flashing Firmware
CNIT 140: Flashing FirmwareSam Bowne
 
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps WayDevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Waysmalltown
 
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.All Things Open
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...Igalia
 
Open Source Load Testing: JMeter, Gatling and Taurus
Open Source Load Testing: JMeter, Gatling and TaurusOpen Source Load Testing: JMeter, Gatling and Taurus
Open Source Load Testing: JMeter, Gatling and TaurusGuy Salton
 
Railo Presentation Railo 3.1
Railo Presentation Railo 3.1Railo Presentation Railo 3.1
Railo Presentation Railo 3.1Rhinofly
 

Similar to Fix Bindings for Java (20)

Mobicents Summit 2012 - Jean Deruelle - Mobicents SIP Servlets
Mobicents Summit 2012 - Jean Deruelle - Mobicents SIP ServletsMobicents Summit 2012 - Jean Deruelle - Mobicents SIP Servlets
Mobicents Summit 2012 - Jean Deruelle - Mobicents SIP Servlets
 
Java one2013
Java one2013Java one2013
Java one2013
 
FPGA MeetUp
FPGA MeetUpFPGA MeetUp
FPGA MeetUp
 
JBoss Architect Forum London - October 2013 - Platform as a What?
JBoss Architect Forum London - October 2013 - Platform as a What?JBoss Architect Forum London - October 2013 - Platform as a What?
JBoss Architect Forum London - October 2013 - Platform as a What?
 
Ceph Day Shanghai - On the Productization Practice of Ceph
Ceph Day Shanghai - On the Productization Practice of Ceph Ceph Day Shanghai - On the Productization Practice of Ceph
Ceph Day Shanghai - On the Productization Practice of Ceph
 
Portets to composite applications
Portets to composite applicationsPortets to composite applications
Portets to composite applications
 
Crushing Latency with Vert.x
Crushing Latency with Vert.xCrushing Latency with Vert.x
Crushing Latency with Vert.x
 
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
 
Meet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento CloudMeet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento Cloud
 
Itb2018 thinking modularly
Itb2018   thinking modularlyItb2018   thinking modularly
Itb2018 thinking modularly
 
Enduro/X Middleware
Enduro/X MiddlewareEnduro/X Middleware
Enduro/X Middleware
 
Framework Modularity Layer - Glyn Normington, IBM
Framework Modularity Layer - Glyn Normington, IBMFramework Modularity Layer - Glyn Normington, IBM
Framework Modularity Layer - Glyn Normington, IBM
 
CNIT 140: Flashing Firmware
CNIT 140: Flashing FirmwareCNIT 140: Flashing Firmware
CNIT 140: Flashing Firmware
 
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps WayDevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
 
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
 
Open Source Load Testing: JMeter, Gatling and Taurus
Open Source Load Testing: JMeter, Gatling and TaurusOpen Source Load Testing: JMeter, Gatling and Taurus
Open Source Load Testing: JMeter, Gatling and Taurus
 
Nginx pres
Nginx presNginx pres
Nginx pres
 
Railo Presentation Railo 3.1
Railo Presentation Railo 3.1Railo Presentation Railo 3.1
Railo Presentation Railo 3.1
 
Advent of magento2
Advent of magento2Advent of magento2
Advent of magento2
 

Recently uploaded

What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 

Recently uploaded (20)

What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 

Fix Bindings for Java

  • 1. Java FIX serialisation When a FIX engine is too little and too much github.com/YTEQ/fixb Vlad Yatsenko @ YTEQ
  • 2. Agenda ● Problem ● FIX basics ● Solution: JA(FIX)B ● Provider flexibility: Cheetah is fast, but QuickFIX is free ● QuickFIX/J pitfalls ● Demo
  • 3. Problem Initial requirements ● Single Dealer Platform (not high-frequency trading) ● Integration with backend systems via FIX protocol. ● Integration contracts as immutable POJOs on Java side. ● Custom messages are based on FIX5.0. ● For now use QuickFIX/J but later will need to switch to a commercial product like Cameron.
  • 4. FIX Basics ● Financial Information eXchange protocol. ● FIX is a public-domain specification owned and maintained by FIX Protocol, Ltd. ● The latest version is 5.0SP2. ● Standard protocol but not a silver bullet - many use custom messages. ● Somewhat bloated - covers areas already defined in TCP.
  • 5. FIX Basics ● FIX message - a string of delimited key-value pairs. ● Header, body and trailer. ● Key, FIX tag, is a number. ● Repeating groups - a mechanism for complex nested structures with collections of key-value sets. 100=2|101=V11|102=V12|101=V21|102=V22 ● Dictionary based.
  • 7. Solution ● Java API for FIX bindings. ● Annotation-based. ● Immutable POJOs. ● Built-in support for jodatime types. ● Used as a serialisation adapter at integration endpoint. ● Version-agnostic approach.
  • 8. Solution Example @FixMessage(type = "ORD") public class Order { @FixBlock private final OrderParameters parameters; @FixGroup(tag=100) private final List<Party> quotes; @FixField(tag=111) private final org.jodatime.DateTime timestamp; public Order( final OrderParameters parameters, final List<FxQuote> quotes, final DateTime timestamp) { this.parameters = parameters; this.quotes = quotes; this.timestamp = timestamp; } }
  • 9. Provider flexibility ● Two simple interfaces allow for implementation on top of different existing FIX libraries. ● Free "Quick"FIX/J in dev, Commercial provider in prod. ● Reference implementation based on QuickFIX/J. ● Own implementation would potentially be the fastest. ● Version-agnostic approach.
  • 10. QuickFIX/J Pitfalls ● Somewhat stiff implementation (Java port of C++-based QuickFIX). ● Dictionary required to deserialise repeating groups. ● All values are stored as Strings that are converted to required type when accessed. ● Deserialisation errors are stored as part of a quickfix. Message object. ● Problems with milliseconds for time values.
  • 11. Demo Demo* :) * Hopefully, this is not one of those never working demos. ;)
  • 12. Links ● Vlad Lazarenko's blog: http://lazarenko.me/2011/04/12/the-need-for-a-better-fix-protocol ● FIXB on Github https://github.com/YTEQ/fixb