jjenkov / iap-tools-java

A Java toolkit for working with the IAP network protocol and its data format ION.
Apache License 2.0
76 stars 6 forks source link

IAP Tools for Java

A Java toolkit for working with the IAP network protocol and its data format ION. IAP is a network protocol intended to replace HTTP, and possibly other protocols too.

IAP encodes messages using a data format called ION. ION can be used to encode a wide variety of data (e.g. the result from a remote procedure call), and you can also nest other encodings (e.g raw bytes) inside ION.

ION can be used separately from IAP. It is very flexible, compact and fast. You can use ION with IAP, with HTTP (instead of e.g. JSON), and also in log files and data files.

IAP Tools Tutorial

We have a tutorial for IAP Tools here:

http://tutorials.jenkov.com/iap-tools-java/index.html

IAP / ION Specification

The official specifications for IAP and ION can be found here:

http://tutorials.jenkov.com/iap/index.html

ION vs. Other Data Formats

If you are curious about ION's capabilities compared to other data formats, we have a rough comparision here:

http://tutorials.jenkov.com/iap/ion-vs-other-formats.html

ION Benchmarks

As mentioned, ION is fast and compact. To back up this claim we have implemented a long list of benchmarks. You can find these benchmarks here:

http://tutorials.jenkov.com/iap/ion-performance-benchmarks.html

The benchmark code is kept in a separate Github repository here:

https://github.com/jjenkov/iap-tools-java-benchmarks

A Note to Contributors

We are happy to receive contributions to IAP Tools, but please be aware that we have already a plan for the future direction of the API. We will not be accepting pull requests that do not fit 100% with that direction.

If you want a feature, you can ask for it. If it fits with where IAP Tools is going, we will add the feature (sooner or later). If not, we will reject the feature and tell you why.

If you need some kind of feature that isn't on our road map, implement the feature in a component that wraps the IAP Tools component(s) that it uses. That way you can have that feature - outside of IAP Tools - but at least you have it.