Vanilla Java Blog

Understanding how Core Java really works can help you write simpler, faster applications.

Choosing Chronicle FIX Engine

Overview The FIX Trading Community web site has posted a list of common questions about FIX Engines. This page brings together our answers for these questions. For more details on Chronicle FIX Capabilities/throughput Chronicle FIX supports; 100,000 messages per second per core. (NewOrderSingle / ExecutionReport sized messages) FIX Services which need to have a 30 micro-seconds tick…

Read More...

Chronicle Update January 2019

Welcome to our newsletter giving you an update on Chronicle Software. We provide professional services and world-leading java libraries to enhance automated trading capabilities for a multitude of global financial services organizations. Commercial Update We have had a very strong start to 2019 and whilst enabling our business to grow it has also helped us…

Read More...

Improving percentile latencies in Chronicle Queue

Compared to a year ago, we have significantly improved the throughput at which we can achieve the 99%ile (worst one in 100). What tools and tricks did we use to achieve that? What are we testing? Chronicle Queue appends messages to a file while another thread or process can be reading it. This gives you…

Read More...

Best practices for Event Sourcing

David Schmitz presented an excellent talk on what he sees as best practices in using Event Sourcing. Chronicle Software has two very different event sourcing frameworks Chronicle Microservices Framework (CMF) and Chronicle Decentred. This talk is useful in highlighting how they differ with each other and other Event Sourcing solutions. CMF is built on Chronicle Queue and is designed for low latency…

Read More...

Chronicle Update November 2018

Welcome to our newsletter giving you an update on Chronicle Software. We provide professional services and world-leading java libraries to enhance automated trading capabilities for a multitude of global financial services organizations. Commercial Update We are engaging with a lot more prospects who are using established FIX engines but are now feeling increasingly frustrated by…

Read More...

Chronicle Queue storing 1TB in virtual memory on a 128GB machine

If you use a standard JVM like the Oracle JVM or the OpenJDK, you might find that as the heap size grows the performance of your JVM can drop as GC pause time escalates. This tends to be a problem around 32 GB of heap, but it often depends on the application at which point…

Read More...

Object Pools Revisited

Object pools were popular before Java 5.0, however, more efficient allocation made most of these pools a needless complication. Can an Object Pool still make sense and how fast do they need to be? Overview Up to Java 5.0 using object pools could significantly improve performance. However, from Java 5.0, the cost of using naive…

Read More...

StringBuffer and how hard it is to get rid of legacy code

In 2006, Java 5.0 was released with StringBuilder, a more lightweight and sane version of StringBuffer. The Javadoc for Java 5.0 for StringBuffer notes As of release JDK 5, this class has been supplemented with an equivalent class designed for use by a single thread, StringBuilder. The StringBuilder class should generally be used in preference…

Read More...

What’s the difference between blockchain and traditional databases?

The key difference between blockchain and traditional databases is the level of trust needed in those running the service. With blockchain, you trust the protocol, not those running it. What does a blockchain do? A blockchain records transactions without needing to trust any individual, organisation or computer, in a tamper-proof way (or pretty close). This…

Read More...

Micro-services for performance

Overview Microservices is a buzz word at the moment. Is it really something original or based on established best practices? There are some disadvantages to the way microservices have been implemented, but can these be solved? Component testability and consistency Once you have assembled a large system, it can be hard or even impossible to…

Read More...