FIX Engine — FIX Antenna Java

FIX Antenna™ Java supports FIX 4.0, 4.1, 4.2, 4.3, 4.4, 5.0, 5.0 SP1, 5.0 SP2, FIXML and FAST. Support for FIX Antenna Java FIX engine includes upgrades to the latest FIX and FAST protocol version. High availability is included as a standard.

The key benefits: runs everywhere, natively integrates with standard Java monitoring toolsets, can be used in an enterprise environment and web-based solutions. This allows maintaining a consistent interface for all internal applications while dealing with many counterparties and cross asset classes where different versions of the protocol are in use. Furthermore, FIX Antenna Java comes with a rich UI for monitoring session statuses and parameters in real time.

All libraries/servers are pre-configured for and certified with multiple exchanges, including CME, ICE, INET and many others.

Our products come with a 24x7 support provided worldwide and availability of "on demand" software escrow.

Feature Description
High performance / low latency
  • Delivers over 50,000 messages per second with persistence and over 150,000 messages per second without persistence. .
  • Adds 11 microseconds to latency in average for sending messages and up to 4 microseconds to latency in average for reading with persistence.
  • Adds up to1microsecond to latency in average for sending messages and up to 3.5 microseconds to latency in average for reading without persistence.

Please refer to the latest benchmarks of FIX Antenna Java, Windows- and Linux-based.

Supports standard FIX
  • 100% FIX standard compliance:
    • FIX 4.0, 4.1, 4.2, 4.3, 4.4, 5.0, 5.0 SP1, 5.0 SP2
    • FAST 1.1
  • Supports all FIX message types (pre-trade, trade, post-trade, market data, etc.)
  • Supports user-defined tags
  • Message validation (wellformness, required and conditionally required fields, fields order, types, etc.)
  • Customizable FIX protocol. Create your own FIX dialect e.g. defined extra field for a message, change "required" attribute, etc. in a friendly XML format (compatible with FIX Antenna C++ and .NET)
  • Multiple session management
    • Supports up to 200 concurrent sessions on a single instance on recommended hardware. Number of concurrent sessions can be increased if more CPUs are added
    • Each session can be configured separately
  • Guaranteed delivery
    • Relies on the store and forward technique
    • Flat files are used for persistence to achieve maximum performance
  • Standard FIX routing based on DeliverTo and OnBehalfOf fields
FIXML converter
  • FIX to FIXML converter
  • FIXML to FIX converter
  • Support FIX 4.0, 4.1, 4.2, 4.3, 4.4, 5.0, 5.0 SP1, 5.0 SP2
Delivery modes
  • Later delivery mode allows unsent messages to be stored in queue and delivered later when connection is re-established. Recommended configuration for a session, where execution reports are to be delivered e.g. session with traders
  • Rejecting mode allows messages, which cannot be sent during some reasonable time (customizable), to be rejected. Recommended configuration for a session, where orders are to be delivered e.g. session with exchanges
Highly customizable FIX session level
  • Highly customizable logic of messages processing
    • Ability to create custom handler for any type of message
    • Ability to add custom pre-processing of messages before they will be handled by FIX Antenna
Reliability vs. performance
  • Supports transient sessions, which do not use any persistence. This significantly increases performance giving up recovery. Applicable when recovery is not required (e.g. for market data) or when persistence is done by the application, which uses the FIX Antenna engine.
  • Supports memory-mapped file storage which is faster than storage based on RandomAccessFile in most cases. The weak point of MMF storage is that it can have an additional penalty for remapping space.
Performance tuning
  • Ability to enable or disable Nagle's algorithm to minimize latency or maximize throughput
  • Ability to manipulate the internal queue size to get maximum throughput (process messages in butch) or lower latency (minimal time in queue)
  • Ability to use different levels of message validation to balance between reasonable correctness and good performance:
    • Wellformness validation
    • Validation of allowed message fields
    • Validation of required message fields
    • Validation of message fields order
    • Validation of duplicated message fields
    • Validation of field values according to defined data types
    • Validation of repeating group fields
    • Conditionally required fields
  • Ability to build template message and send it many times with different values. Sending of such prepared messages will be faster in most cases.
  • Ability to choose sending mode. Synchronous sending gives lower latency, but asynchronous is preferable for getting a better throughput.
Configuration
  • Supports configuration in XML and properties file format.
  • Ability to configure default behavior and custom sessions in the same configuration file.
Monitoring and administration
  • Built-in remote monitoring and administrative interface for sessions monitoring and management
  • Public API to override and/or extend existing administrative instructions
  • Rich monitoring and administration GUI out of the box
Message composition API
  • Provides the following functionality:
    • Creating a message singleton by FIX protocol version and message type
    • Creating a message from a raw FIX string (parse)
    • Serializing a FIX object message to raw FIX string
    • Adding, removing, modifying FIX fields and repeating groups
    • Validating message
    • Ability of internal pooling to reduce memory allocations
  • FIX flat message model - generic model to work with the abstract FIXMessage class via fields and groups getters and setters, which gives the highest performance
  • FIX object model - each FIX message type is a class with FIX fields as members, using intellisense to make working with FIX business object more pleasant
  • Prepared messages - message template for faster sending messages with the same structure but with different values
Integration with JMS
  • Has customizable adapter for communicating with JMS servers. It provides API for easy sending/receiving FIX messages from/to JMS
  • Included standalone FIX-to-JMS server for routing messages between FIX and JMS environments
Security
  • Provides native built-in SSL support and SSL tunneling
  • Standard FIX authorization utilizing username and password fields in FIX Logon message
  • Strategies for accepting incoming sessions:
    • Auto-accept incoming sessions (to simplify development and testing)
    • Auto-decline non pre-configured sessions
Small footprint
  • The minimal FIX application size could be about 200K and it will not include 3rd parties libraries
Packaging

Each package consists of:

See the full list of packages available for FIX Antenna Java. 

Supports all popular environments

Supported OS:

  • Windows, Linux, Solaris

Supported compilers:

  • JDK 1.5 and above

Our latest FIX Antenna Java engine (v. 2) is built on over a decade of FIX market experience, thorough understanding of the current market structure and future trends. We also took into account the feedback from our clients. The current release of the FIX library adds extra reliability for operating in the most demanding low latency environments.

The transport layer of FIX Antenna Java is built using Message Queues with priorities. This allows processing of the system messages even in high load applications.

The logic of the FIX session layer is built using Chain of Responsibility Pattern. There is a chain of the system and user defined handlers, which check the message for validity, right number sequence, etc. Such approach enables greater flexibility. It allows to incorporate custom logic into any place of this chain and easily adapt the application behavior to any requirements.

During the persistent session the messages will also be stored after processing. The incoming messages will be saved after the normal processing by all handlers and user application, while the outgoing messages will be saved after they are sent to counterparties. This assures that every single message will be processed.

FIX session layer logic

View larger image

FIX Antenna Java provides the following main APIs for trading applications to:

  • Create multiple FIX sessions (initiators and acceptors)
  • Open and close FIX session
  • Form FIX message
  • Validate FIX message
  • Send and receive FIX messages
  • Convert FIX messages to/from FIXML
  • Route FIX messages to/from JMS
  • Work with FAST stream
  • Set sequence numbers

See the full list of FIX Antenna Java APIs.

Name Description
CreateMessage Demonstrates how to easily create a message object with the FIX Messaging API.
FlatNewOrderSingleMessage Demonstrates several ways to convert an existing string with a FIX message into its object representation.
NewOrderSingleMessage Demonstrates how to create the NewOrderSingle (D) message with object messaging model.
SimpleNewsBroadcaster Simplest client application. It demonstrates how to create a FIX initiator session and send a News (B) message to the server.
MaxSpeedBroadcaster Demonstrates how to configure the SimpleNewsBroadcaster sample for working with a maximum throughput.
CustomProtocolBroadcaster Demonstrates how to run the SimpleNewsBroadcaster sample with customized FIX protocol.
SimpleAdminClient Demonstrates how to connect to an administrative session and communicate with it using the implementation of administrative messages.
SimpleServer Demonstrates how to implement a FIX server with simple IP filtering of incoming sessions.
SimpleServerWithAdminSession Demonstrates how to run the SimpleServer sample with enabled Administrative plug-in.
SimpleServerWithCustomDic Demonstrates how to run the SimpleServer sample with customized FIX protocol.

Advanced FIXAJ Samples

Name Description
CustomSessionLevelBroadcaster Demonstrates how to run the SimpleNewsBroadcaster sample with a customized session level. Allows to redefine handlers for Resend Request(2) and Reject(3) messages in its configuration.
CustomStorageBroadcaster Demonstrates how to implement and configure a custom storage mechanism for incoming messages (outgoing messages will be stored in the default way). Customization is based on the SimpleNewsBroadcaster sample.

SSL Samples

Name Description
SimpleMessageSSLClient Demonstrates how to configure the SimpleNewsBroadcaster sample for working with SSL connection.
SimpleSSLNewsBroadcaster A bit more complex than the SimpleMessageSSLClient sample with GUI elements. It demonstrates how to build the simplest GUI FIX client that can work under SSL.
SimpleSSLServer Demonstrates how to build the simplest SSL FIX server. This sample is based on the SimpleServer sample

Validation Samples

Name Description
SimpleValidator44 Demonstrates how to check a message for compliance with FIX 4.4 using FIX Antenna Validation module.
SimpleValidator50 Demonstrates how to check a message for compliance with FIX 5.0 using FIX Antenna Validation module.
AdditionalValidationSample44 Demonstrates how to customize validation in case of using customized FIX protocol.

FIXML Samples

Name Description
FIX2FIXML Demonstrates a simple way of converting a string with a FIX message into its FIXML representation.
FIX2FIXMLWithCustomSerializer Demonstrates how to convert a string with a FIX message into its FIXML representation with custom XML processing.
FIXML2FIX Demonstrates a simple way of converting a string with an FIXML message into its FIX representation.
FIXML2FIXWithCustomParser Demonstrates how to convert a string with an FIXML message into its FIX representation with custom XML processing.

FAST Samples

Name Description
FastDecoder Demonstrates how to decode a FAST message and get a FIX message.
FastEncoder Demonstrates how to encode a FIX message into FAST.
SimpleFastClient Demonstrates how to connect to the FAST server and receive messages from it. Built as a simple command line tool.

JMS Samples

Name Description
FIXJMSAdpator Demonstrates how to send and receive FIX messages via JMS Adaptor.
FIXJMSAdvancedAdpator Demonstrates how to send and receive FIX messages via JMS Adaptor. FIXJMSAdvancedAdaptor hides the JMS queues access and makes it easier to initialize the adaptor.

Package matrix

View larger image

Legend

FIXAJ Light - FIX engine with a minimal footprint. This package can be used in products which have strict limitations for their size.

FIXAJ Full - A fully functional FIX engine.

FIXAJ Add-ons - Validation and Message Object Model for FIX Antenna Light.

ICE Adaptor - FIX Antenna Solution for ICE Trade Capture. This package contains console and GUI tools for communicating with ICE Trade Capture interface.

FIXML Convertor - A set of FIX Antenna related libraries for converting FIX to FIXML and back.

Fast Engine - The functional core for supporting FAST.

CME Fast Adaptor - A fully functional application for communicating with CME.

JMS Adaptor - An adaptor which helps link FIX Antenna with the Java Message Service. The package also contains a server for routing FIX messages to and from JMS server.

Download FIX engine 

Download FIX Antenna Java v2.10.20 

We offer cost effective licensing models. They are based on application process concurrency limits, level of support (business hours only, 24x5/7), etc. Also Site licenses, OEM licensing models, as well as discounts based on number of purchased licenses are available. Development, test and back-up licenses are licensed separately. Cost of such licenses is 50% from listed price of production license.