ARTICLES

Chronicle Articles

Read the latest articles from our experienced developers to learn how you can write simpler and faster Java applications.

ARTICLE OF THE MONTH

Java is Very Fast, If You Don’t Create Many Objects

This article looks at a benchmark passing events over TCP/IP at 4 billion events per minute using the net.openhft.chronicle.wire.channel package in Chronicle Wire and why we aim to avoid object allocations. 

Does not allocating really make such a difference? 

Read Article >>
CHRONICLE FIX

Much More Than a Quick Fix

Chronicle FIX has been built from the ground up by low-latency experts to be as fast as possible and leverages many ingenious techniques and patterns, some of which we believe are unique in the industry. 

Read Article >>
CHRONICLE QUEUE ENTERPRISE

Reducing Tail Latencies with Chronicle Queue Enterprise

Persistent queue solutions are frequently used when designing low-latency applications. However high sustained message rates, or bursty workloads, can lead to delays caused by the OS or hardware which are challenging, but not impossible, to mitigate.

Read Article >>
Large Price Comparison

55 Dedicated Cloud Compute Optimised Solutions

We have compared compute-optimised instances from 55 vendors, and the cost per virtual CPU differs significantly between different products. 

  • All
  • Chronicle FIX
  • Chronicle Queue
  • Chronicle Services
  • Cloud
  • Event Driven
  • Low-Latency
  • Throughput
  • Tune
  • wire

Strategies for Managing State in Chronicle Services

Introduction In distributed, microservice based applications the management of state is one of the most important, yet difficult aspects of design. Ensuring the accuracy and consistency of state without introducing…

Continue Reading >>

Software Continuity: Failover Strategies for Uninterrupted Operations

This article explores how Chronicle Services provides empowering failover strategies for uninterrupted operations.

Continue Reading >>

Navigating Behaviour with Events

The practices of Event-Driven Architecture and Behaviour-Driven Development have more in common than may at first be apparent. At Chronicle, we have embraced both of these approaches and implemented them through our Chronicle Services Framework.

Continue Reading >>

Events and Data Transfer Objects in Chronicle Services

In this article, we will explore the ideas behind Events in Chronicle Services in more detail, and how to build a service that works with Events carrying structured data.

Continue Reading >>
Abstract Imagery 01

Memory Management in Java: An Introduction

Understanding memory management in Java, and particularly the role of object allocation is essential when optimising system performance. In Java, memory management is an automatic process that is managed by…

Continue Reading >>

Chronicle Services: Building Fast Microservices with Java

Low Latency?   In computing, latency is defined as the length of time to perform some task. This could be the time it takes to respond to an interrupt from…

Continue Reading >>

Building Low Latency Java Microservices using Chronicle Services

In this series of articles, we will explore Chronicle Services through a number of worked examples, each illustrating a specific feature of the framework.

Continue Reading >>

Is 99% of your System’s Latency due to Accidental Complexity?

Have you realised that 99% of your system’s latency might be due to accidental complexity?    In this article we will look at a real life example of accidental complexity…

Continue Reading >>

6 Considerations when Building High-Performance Java Microservices with EDA

Event-Driven Architecture (EDA) is a design principle focused on the creation, detection, and reaction to events. Renowned for its resilience and low latency, EDA is a reliable choice for developing…

Continue Reading >>

Chronicle Queue Released for Linux ARM64

Chronicle Queue Released for Linux ARM64 Chronicle Queue Chronicle Queue is a persisted low-latency messaging framework for high performance and critical applications. Designed to be a “record everything store” Chronicle…

Continue Reading >>

Eight Core Java Questions

Please join the discussion of the answers for these questions on Twitter – eight core Java Questions.

Continue Reading >>

Billions of Messages Per Minute Over TCP/IP

Key Takeaways Data consistency is critical when communicating between software components on different machines to ensure information remains in tact. Low-latency data exchange requires a different approach than common formats….

Continue Reading >>

RUST language addition to Chronicle Queue Enterprise

A multi-language offering   We’re excited to announce that Chronicle Queue Enterprise is now available in multiple programming languages to ensure maximum user flexibility and interoperability with other data processing…

Continue Reading >>

How to Optimise CPU Performance Through Isolation and System Tuning

What are the challenges of tuning your CPU and system for optimal performance with Linux, and how does Chronicle Tune address them?   CPU isolation and efficient system management are…

Continue Reading >>

Building Custom Solutions vs. Buy-and-Build Software

The Challenges of Building a FIX Engine The first day I was introduced to FIX was when I worked at an investment bank in London as a developer; I was…

Continue Reading >>

Unique Identifiers Based on Timestamps in Distributed Applications

At Chronicle we build applications that must process very high numbers of events with minimum latency. Generating unique IDs for these events using the traditional method of UUIDs introduces an…

Continue Reading >>

Java is Very Fast, If You Don’t Create Many Objects

This article looks at a benchmark passing events over TCP/IP at 4 billion events per minute using the net.openhft.chronicle.wire.channel package in Chronicle Wire and why we aim to avoid object…

Continue Reading >>

Monitoring Event Loops for Blockages

Chronicle’s open source Chronicle Threads library has a little known feature which is one of the first tools I get from my bag if a client reports that they are…

Continue Reading >>

Monitoring Chronicle Services

Chronicle Services is a framework for building Event-driven microservices. Microservices built with Chronicle Services are efficient, easy to build, test, and maintain. Equally important they provide exceptional high-throughput and low…

Continue Reading >>

Using Pausers in Event Loops

Typically in low-latency development, a trade-off must be made between minimising latency and avoiding excessive CPU utilisation. This article explores how Chronicle’s Pausers can be used to automatically apply a…

Continue Reading >>

Tuning Java Applications for Low Latency on Linux

Introduction I have lost count of the number of times I have been told that Java is not a suitable language in which to develop applications where performance is a…

Continue Reading >>

The Unix Philosophy for Low Latency

Unix has been around for more than 50 years, and the original design principles must be good enough for it (and its derivative, Linux) to be the most widely used…

Continue Reading >>

Comparing Approaches to Durability in Low Latency Messaging Queues

A significant feature of Chronicle Queue Enterprise is support for TCP replication across multiple servers to ensure high availability of application infrastructure. I have generally held the view that replicating…

Continue Reading >>

Automatically Creating Microservices Architecture Diagrams

In application development, microservices is an architectural style where larger applications are structured as a collection of smaller, independent, yet interconnected services. While this allows for highly maintainable and testable…

Continue Reading >>

Chronicle FIX: Much More Than a Quick Fix

Many of our customers have upgraded from QuickFIX/J to Chronicle FIX and this article provides some background as to why. Introduction QuickFIX/J is free, accessible, supports the FIX standard and…

Continue Reading >>

Chronicle FIX: Designed Not To Skip A Message Even If Your Data Centre Fails

A high level of availability of IT services is crucial to prevent disruptions of service that can lead to financial losses, business opportunity losses, data loss, and reputational damage. A…

Continue Reading >>

Chronicle Wire: Object Marshalling

At Chronicle, we know that efficient code doesn’t just run faster; if it’s using less compute-resource, it may also be cheaper to run. In particular, distributed cloud applications can benefit…

Continue Reading >>

How to Automatically Generate GitHub Release Notes From Resolved Issues

GitHub Issues are convenient since they come bundled with a GitHub repository. Many companies are exploring this tool as an alternative to full-featured issue tracker such as Atlassian JIRA. Complex…

Continue Reading >>

Event-Driven Order Processing Program

Following the Hello World example of a simple, independently deployable real-time Event-Driven Microservice, this article looks at a more realistic example of an Order Processor with a New Order Single…

Continue Reading >>

Efficient Memory Mapping for Terabyte Sparse Files in Java

On Linux, you can create sparse files, where only the pages (of 4 KiB) that are touched utilise either memory or disk space. This allows you to memory map large…

Continue Reading >>

Exhaustive JUnit5 Testing with Combinations, Permutations and Products

Unit testing constitutes an integral part of the process of providing high-quality software. But, how can one write tests covering all variants of several operations? Read this article and learn…

Continue Reading >>

Event Driven Hello World Program

Event-driven microservices can be straightforward to describe before they are implemented, tested and maintained. They are also highly responsive to new information in real time, with latencies in Java of…

Continue Reading >>

Is There a Best OS to Develop a Java Application on?

One subject that often evokes a lot of debate is which is the best OS to develop a Java application on. This article gives my view on the issue.  …

Continue Reading >>

How Behaviour Driven Development Works Well with Event Driven Architectures

Behaviour Driven Development (BDD) and Event Driven Architecture (EDA) work well together as they complement each other’s strengths and weaknesses. Using both can result in a shorter time to market…

Continue Reading >>

Which is the Fastest JVM?

How is a high-performance, low-latency Java application affected by the JVM version used? Every nanosecond counts for trading and other applications where messages between two different threads are exchanged in…

Continue Reading >>

Why Core-to-Core Latency Matters

Last year we had a global shortage of microchips; today, I feel there is a worldwide shortage of software developers. Like many other software companies, Chronicle Software is rapidly expanding…

Continue Reading >>

“The More You Say, the Less People Remember…

…The Fewer the Words, the Greater the Profit.” These wise words were written by François Fénelon, a writer and theologian living during the 17th century. This is an article summarising…

Continue Reading >>

How Does Kafka Perform When You Need Low Latency?

Most Kafka benchmarks appear to test high throughput but not low latency. Kafka was traditionally used for high throughput rather than latency-sensitive messaging, but it does have a low-latency configuration….

Continue Reading >>

Cloud-Native Chronicle Deployment

Traditionally, companies with low-latency requirements deployed to bare metal servers, eschewing the convenience and programmability of virtualisation and containerisation in an effort to squeeze maximum performance and minimal latency from…

Continue Reading >>

How to Reduce Cloud Cost by 99% for EDA Kafka Applications

While the cloud offers great convenience and flexibility, the operational cost for applications deployed in the cloud can sometimes be significant. This article shows a way to substantially reduce operating…

Continue Reading >>

How to Leverage Method Chaining to Add Smart Message Routing

This article explores how to use method chaining to add routing information to serialised data structures in a lightweight fashion, where the routing information can be read separately by an…

Continue Reading >>

Introducing the Multifunctional FIX Router of Chronicle FIX

A Load Balancer, FIX Version Translator, and Rule-based Drop Copy FIX (Financial Information eXchange) protocol was developed to provide a reliable and high-speed exchange of transaction information between trading parties….

Continue Reading >>

Challenges when Developing a GUI for FIX

This article explores the Challenges in developing a Graphical User Interface (GUI) for Financial Information eXchange (FIX) data. FIX is both a protocol and a message format, but to create…

Continue Reading >>

Automated CI/CD of Multiple Projects Using TeamCity’s Kotlin DSL

In a previous article I described a way to organise low-latency products as multiple code bases which are bound together with a Maven Bill of Materials (BOM). Understandably, this requires…

Continue Reading >>

Why the Cool Kids Use Event Loops

A Discussion On the Benefits of Event Loops in Java. When I was working in software development back in the 1990s, nearly all the software libraries that I worked on…

Continue Reading >>

How to Develop Event-Driven Architectures

Last month, I wrote an article on Open source Chronicle Wire, that discusses how we could serialise an application’s state into different message formats. Now in this article, I’m going…

Continue Reading >>

Kafka vs Chronicle for Microservices: which is 750 times faster?

Apache Kafka is a common choice for inter-service communication. Kafka facilitates the parallel processing of messages and is a good choice for log aggregation. Kafka claims to be low latency,…

Continue Reading >>

Unusual Java: StackTrace Extends Throwable

There are things you can do in Java you rarely see, generally because there is no use for it. However, there are some unusual things in Java that could be…

Continue Reading >>

How to Get C++ Speed in Java Serialisation

Using Trivially Copyable Objects to Improve Java Serialisation Speeds For any low-latency software it is vital that the most common operations introduce minimal latency. For example, in trading software, one…

Continue Reading >>

Why the Fastest Way of Serializing a Java Field is not Serializing it at All

This article elaborates on different ways of serializing Java objects and benchmarks performance for the variants. Read this article and become aware of different ways to improve Java serialization performance….

Continue Reading >>

Reducing Tail Latencies with Chronicle Queue Enterprise

Persistent queue solutions are frequently used when designing low-latency applications. The problem is that high sustained message rates, or bursty workloads, can lead to delays caused by the OS or…

Continue Reading >>

How Object Reuse Can Reduce Latency and Improve Performance

Become familiar with the art of object reuse by reading this article and learn the pros and cons of different reuse strategies in a multi-threaded Java application. This allows you…

Continue Reading >>

Creating Terabyte Sized Queues with Low-Latency

Queues are often fundamental components in software design patterns. But, what if there are millions of messages received every second and multi-process consumers need to be able to read the…

Continue Reading >>

High-Performance Java Serialisation to Different Formats

Java serialization is a popular mechanism where you are able to serialize and deserialize complex object graphs; for example where object A can contain a reference to object B, which…

Continue Reading >>

Why a Set Can Contain Duplicate Elements

In low-latency applications, the creation of unnecessary objects is often avoided by reusing mutable objects to reduce memory pressure and thus the load on the garbage collector. This makes the…

Continue Reading >>

Low Latency Microservices, A Retrospective

I wrote an article on low latency microservices almost five years ago now. Chronicle Software has worked with a number of tier one investment banks to implement and support those systems….

Continue Reading >>

Monorepo Versus Bill of Materials: Shaping Your Project

During most of my development career, the usual code organization pattern was monolithic repository or Monorepo. There is a single large version control repository, to which all developers on the…

Continue Reading >>