EPICS Jackie Channel Access library for Java

Table of Content

About EPICS Jackie

EPICS Jackie is a pure Java implementation of the Channel Access protocol used by EPICS. It is fully interoperable with other implementations of the Channel Access protocol and runs Java 6 and newer.


An extensive manual, explaining the concepts behind EPICS Jackie and including a guide on how to use it in an application, is available online and as part of the binary distribution. There also is a complete API reference that is also bundled with the binary distribution.


This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0. By downloading the software you agree to be bound the the terms of this license. In particular, you have to agree to sections five (“NO WARRANTY”) and six (“DISCLAIMER OF LIABILITY”) before downloading the software.

Some files in the binary distribution have different copyrights and licenses. Refer to the information provided in the package for details about those copyrights and licenses.

When using Apache Maven (or a build tool using the same mechanism for dependency management), the easiest way of using EPICS Jackie is by adding the dependency to the project configuration.

The EPICS Jackie client can be added by using the following dependency definition:


Alternatively, you can download the binary and source distribution here. The binary distribution also contains a copy of the reference manual and of the API reference documentation.

Release 1.0.1 (June 20th, 2016)

This is a bugfix release that fixes a few minor problems that were present in the 1.0.0 release.
An IllegalStateException could be incorrectly thrown when a ChannelAccessMonitor’s destroy() method was called right at the same moment when the connection to the channel’s server was interrupted.
Two typos were fixed: One was causing a ChannelAccessValue’s toString() method to return an incorrectly formatted string under certain circumstances. The other one resulted in a thread’s name to have a spelling error.
In addition to that, a workaround was implemented in order to avoid a a NullPointerException being thrown occassionally in the channel-name resolver thread. This exception was not actually caused by a bug in the library (extensive tests have been carried out to verify this). Rather, it seems like some JVM versions have a bug (most likely located in the JIT compiler) that causes instructions to be executed in the wrong order, resulting in a LinkedList’s poll() method to return null, when the list is not empty and the element at the head of the list is not null. While this problem did typically not have a direct impact on the library’s operation, it could lead to the application’s log being flooded with messages and with channel-name resolution taking longer due to spurious failures when trying to send UDP packets.

Release 1.0.0 (May 12th, 2016)

This is the first release of EPICS Jackie.


You can contact the author of this software, Sebastian Marsching, at epics-jackie-maintainer removethis <at> oss <dot> aquenos <dot> com.

Visit other projects on oss.aquenos.com.

© 2014-2016 aquenos GmbH