Installation & Testing
Runtime Dependencies
Java Virtual Machine:
JVM compatible with Oracle JRE Java 1.7.x or higher (Java 11+ or 21 recommended for modern deployments).
Required run-time libraries:
quickfixj-core.jarquickfixj-msg-fix40.jarthroughquickfixj-msg-fix50sp2.jarOr simply usequickfixj-all.jarwhich includes core and message JARs.mina-core-2.0.16.jar(Socket handling via Java NIO)slf4j-api.jar(SLF4J library for JDK logging)
Optional run-time libraries:
log4j.jarproxool.jar(Required for JDBC connection pooling)jcl104-over-slf4j.jar(Required for Proxool)sleepycat-je.jar(Needed if the SleepyCat JE message store is used)
Building QuickFIX/J
These instructions are for developers who don't want to use the prebuilt binaries or intend to modify and rebuild the QuickFIX/J code.
If you are building the code from the command line you'll need to download and install Maven. Building from source requires Java 7+.
- Checkout the Code: Clone the repository.
git clone https://github.com/quickfix-j/quickfixj.git
cd quickfixj - Run Maven: Run
mvn packageto build the QuickFIX/J and examples jar files. This generates all the FIX message-related code using XML data dictionaries.mvn clean package - BigDecimal Option: To use
java.math.BigDecimalinstead ofdoublefor fields like price and quantity, pass the-Dgenerator.decimaloption:mvn clean package -Dgenerator.decimal=true
Generating the database for JDBC based store and log
Everything needed to generate your database is in the src/main/resources/config/sql subdirectories.
For MySQL, there are create_mysql.sh and create_mysql.bat scripts. These try to generate the database using the root account with no password. If you need a different account/password, edit the script. Similar scripts are provided for MSSQL, PostgreSQL, and Oracle.
Special notes for Oracle:
Oracle treats empty strings as null values. Null values are not allowed for primary key fields (beginstring, sendercompid, targetcompid, session_qualifier, msgseqnum). Therefore, session_qualifier has been set to a non-empty string for Oracle scripts. Also, for string fields, the VARCHAR2 data type should always be used.
Testing QuickFIX/J
The development of QuickFIX/J has been driven by a suite of functional acceptance tests and unit tests.
- Unit Tests: Written in JUnit. Run them via
mvn test. - Functional Acceptance Tests: Scripted FIX messages pumped into a running FIX server, based on the official FIX Session-level Test Cases and Expected Behaviors document.