KI Assemble is one of our free open source tools for library system vendors looking to implement standards. It is a simple module designed to support the implementation of protocols such as Z39.50 and ISO 10161.

KI Assemble, or “A2J” as it was previously known, was first released in 1999 as the base library for our KI Discover product, the first fully open source Java Z39.50 toolkit. A2J was the first published open source project supported by Knowledge Integration Ltd. The toolkit is split into two halves:

  • A compile time tool which reads ASN.1 specifications and outputs codecs and runtime type classes which represent the protocol definitions.
  • A runtime which supports protocol state machines capable of establishing socket connections and sending/receiving messages defined by the protocol.

A2J was first released for J2SE 1.2 in 1999, and that version has found its way into many commercial ILS systems and hosted services in it’s guise as protocol engine for ISO 10161 and Z39.50 implementations. Along the way, students have taken the toolkit and used it to implement a variety of other real time messaging applications and protocols.

2018, through the FOLIO project, we saw a renewed interest in trying to address some the problems of consortial resource sharing. This was the moment to take out A2J, dust off the old maven build files and update the stack. KI Assemble is the result of that update. The source code can be found on Github. Major features of the refactoring include:

  • Replacing the old maven build with a cleaner gradle build file
  • Replace the old protocol specific endpoint implementations with Generics-based reusable components
  • Much improved unit testing, based around the Generics protocol adapters sending and receiving atomic types.

There are more changes planned as a part of our resource sharing work, including:

  • Support for NIO rather than threaded socket management
  • Support for auto-creation of JSON/Map based representations of protocol messages

Target audience

Java developers and library system vendors looking to implement standards. Anyone who needs to convert ASN.1 specifications into protocol state machines.

How can it help you?

Most of the alternative toolkits to KI Assemble claiming to be open source actually rely on third-party closed source ASN.1 compilers. KI Assemble on the other hand does not, it is 100% open source and free for reuse. We’ve tried to be as true as possible to the ASN.1 specification, so you should be able to throw any valid ASN.1 at the compiler and have it emit sensible codecs, or extend the codebase to support constructs. The toolkit also supports an OID registry of EXTERNALs so you can define and implement protocol extensions.

How to access KI Assemble

KI Assemble is maintained on Github, where you can access the open source code and contribute to the project.

Users and projects

A2J is being used in commercial library systems. It is also available for use freely under the GPL Open Source licence.