QuickFIX/J Documentation
repository·master·Indexed 22 days ago
https://github.com/quickfix-j/quickfixjA complete Java implementation of the FIX (Financial Information eXchange) protocol engine supporting versions 4.0 through 5.0SP2 and FIXLatest. The project includes the core engine (quickfixj-core), foundational classes (quickfixj-base), and various message artifacts for different FIX specifications. It provides tools for custom builds, including a code generator Maven plugin and orchestration support for FIX Latest and FIX T1.1.
What's inside QuickFIX/J
- QuickFIX/J is a full-featured, 100% Java open-source messaging engine for the FIX protocol. It is an implementation of the popular C++ QuickFIX engine and supports FIX versions 4.0 through 5.0SP2/FIXT1.1 and FIXLatest. The Financial Information eXchange (FIX) protocol is a standard for the real-time electronic exchange of securities transactions.
Overview of quickfixj-core
masterThe
quickfixj-coremodule contains the main QuickFIX/J FIX engine and its supporting capabilities. It is built upon thequickfixj-basemodule.Crucially,
quickfixj-corehas a test dependency on generated message classes. This design choice is intended to facilitate easier customization of QuickFIX/J deployments by decoupling the core engine from specific message implementations during standard development.Use FIX 4.4 message classes
masterThequickfixj-messages-fix44module provides the Java classes required to implement the FIX 4.4 specification. It contains the message and field definitions specific to version 4.4. Note that any FIX classes not defined in the 4.4 specification are pruned from this package during the build process.Use FIX 4.1 message classes
masterThequickfixj-messages-fix41module provides Java classes corresponding to theFIX 4.1specification. It contains the message types and fields defined by that version of the protocol. Note that any FIX classes not present in the 4.1 specification are pruned from this package during the build process.Use FIX 4.2 message classes
masterThis module provides the Java class implementations for theFIX 4.2specification. It contains the message and field classes required to implement a FIX 4.2 session. Note that any FIX classes not defined in the 4.2 specification have been pruned from this package.Use FIX 4.3 message classes
masterThequickfixj-messages-fix43module provides Java classes corresponding to theFIX 4.3specification. These classes allow you to work with FIX 4.3 messages and fields within the QuickFIX/J framework. Note that any FIX classes not defined in the 4.3 specification are pruned from this package during the build process.Understand the QuickFIX/J Messages module organization
masterThe
quickfixj-messagesmodule provides reference artifacts for various FIX specification versions. It is organized into several modules to allow users to depend only on the specific FIX versions they need at runtime, rather than the entire suite.Available Modules
quickfixj-messages-fixt11: FIX Transport Layer 1.1.quickfixj-messages-all: Generates and compiles classes for all FIX protocol major versions.quickfixj-messages-fixlatest: The most recent FIX specification.quickfixj-messages-fix50sp2,quickfixj-messages-fix50sp1,quickfixj-messages-fix50: FIX 5.0 variants.quickfixj-messages-fix44,quickfixj-messages-fix43,quickfixj-messages-fix42,quickfixj-messages-fix41,quickfixj-messages-fix40: Legacy FIX versions.
Key Architectural Concepts
- Version Agnosticism: QuickFIX/J core supports multiple concurrent FIX versions. Messages and Components are compositions of
Mapsofquickfix.Fields. - Package Structure: Messages and Components reside in distinct packages corresponding to their FIX protocol version. The
quickfix.Fieldspackage is common across all versions. - Dependency Management: Generated code depends on
quickfixj-base. To avoid runtime class-loader conflicts, certain Standard Header and Trailer fields provided byquickfixj-baseare removed from the generated code in other artifacts during assembly. - FIX Latest & FIX T1.1: These are generated from a FIX Orchestra "repository" file using the
quickfixj-orchestrationmodule.
Use FIX 5.0 message artifacts
masterThis module provides the Java artifacts (JARs) containing the Messages, Components, and Fields specifically for the
FIX 5.0specification.Note that in FIX versions 5.0 and later, the FIX Session layer is architecturally separated from the Application Message layer. To prevent class duplication and conflicts, the FIX Session layer classes are excluded from these specific artifacts. Instead, you should use the QuickFIX/J reference implementation's shared Session layer JAR as a dependency alongside these FIX 5.0 message artifacts.
Use FIX 4.0 message classes
masterThequickfixj-messages-fix40module provides Java classes specifically mapped to theFIX 4.0specification. It contains the message and field definitions required to implement a FIX 4.0 session. Note that any FIX classes not defined in the 4.0 specification are pruned from this package to ensure strict adherence to the version.What is QuickFIX/J support for FIX Orchestra?
masterThis module provides support for the FIX Orchestra standard by publishing a QuickFIX/J compatible FIX dictionary and a QuickFIX/J FIX "orchestration".
An "orchestration" is an implementation of a FIX Orchestra standard repository. This specific module depends on the FIX Latest standard orchestration published by the FIX Trading Community. It uses XSL transformations to clean the standard repository (removing problematic elements and updating CodeSet names) to ensure compatibility with the QuickFIX/J build process.
Understand the role of the quickfixj-base module
masterThe
quickfixj-basemodule provides the foundational Java classes that all generated QuickFIX/J Fields, Components, and Messages depend on.It specifically contains a small number of generated Fields required by the
Standard HeaderandStandard Trailer. Because these fields are part of the core protocol structure, they are generated and compiled within this module to ensure they are available in the resulting JAR artifact.Important for Compatibility: To ensure Java runtime compatibility, do not include these specific core Fields in other QuickFIX/J or custom artifacts. They are intended to be provided solely by the
quickfixj-basemodule.Compare Single-Threaded vs Thread-Per-Session strategies
masterUse the following comparison to decide which QuickFIX/J component to instantiate based on your requirements:
Feature SocketAcceptor/SocketInitiatorMessage processing Single shared thread Application thread-safety required No Session isolation No Typical use case Few sessions, simple apps Feature ThreadedSocketAcceptor/ThreadedSocketInitiatorMessage processing One thread per session Application thread-safety required Yes Session isolation Yes Typical use case Many sessions, independent processing