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.

Documentation

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.

Download

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:

    <dependency>
      <groupId>com.aquenos.epics.jackie</groupId>
      <artifactId>epics-jackie-client</artifiactId>
      <version>1.0.3</version>
    </dependency>

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.3 (April 7th, 2017)

Changes:
This is a bugfix release that fixes a few problems that mainly concerned the handling of large values (with many elements) transferred via Channel Access.
One of this bugs caused a connection to a server to be stalled when connecting to a channel with more than 65534 elements. Another bug caused the connection to hang when receiving a message with more than 16384 bytes.
A bug in the handling of error messages sent by a server could cause problems when a write request failed. Due to this bug, an error message sent in response to a write request would not be processed correctly, causing this write operation to hang indefinitely (instead of failing).

Release 1.0.2 (April 2nd, 2017)

Changes:
This is a bugfix release that fixes a few problems that were present in present in the 1.0.0 and 1.0.1 releases.
An IllegalStateException would incorrectly be thrown in certain cases when destroying a client.
Compatibility with older server versions that do not send a CA_PROTO_VERSION message when the connection is initiated has been added. In older versions of EPICS Jackie, channels hosted by such servers would never connect. Now, the library handles CA_PROTO_VERSION messages in a way that is compatible with older servers.

Release 1.0.1 (June 20th, 2016)

Changes:
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)

Changes:
This is the first release of EPICS Jackie.

Contact

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