Eclipse Californium™ (Cf) is an open source implementation of the Constrained Application Protocol (CoAP). It is written in Java and targets unconstrained environments such as back-end service infrastructures (e.g., proxies, resource directories, or cloud services) and less constrained environments such as embedded devices running Linux (e.g., smart home/factory controllers or cellular gateways). Californium (Cf) has been running code for the IETF standardization of CoAP and was reimplemented from scratch having all the experience. In particular, Cf focuses now on service scalability for large-scale Internet of Things applications. The new implementation was successfully tested at the ETSI CoAP and OMA LWM2M Plugtests in November 2013 and March 2014. It complies with all mandatory and optional test cases.
The Californium (Cf) CoAP framework provides the following features (3.0.0):
- Implementation of CoAP (RFC 7252)
- Implementation of Observe/Notify (RFC 7641)
- Implementation of Blockwise Transfers (RFC 7959)
- Implementation of No Server Response (RFC 7967, with 3.0.0)
- Implementation of the Resource Directory draft (draft-ietf-core-resource-directory-20)
- Implementation of DTLS 1.2 (RFC 6347)
- Implementation of DTLS 1.2 Connection ID (RFC9146, with 3.0.0).
- Implementation of DTLS Record Size Limit Extension (RFC 8449)
- Implementation of DTLS Extended Master Secret (RFC 7627, with 3.0.0)
- Implementation of OSCORE (RFC 8613) (with 3.5.0)
- Experimental support for RSA in DTLS (with 3.0.0)
- Experimental support for Bouncy Castle in DTLS (alternative to openjdk JCE, with 3.0.0)
- Experimental (currently not complete) implementation of CoAP over TCP (RFC 8323)
- CoAP-HTTP cross-proxy support through HttpCore-NIO and Guava
- Scalable Web resource framework with a flexible concurrency model for the implementation of Internet of Things applications
- OSGi wrapper for managed servers
The content of this open source project is received and distributed under the license(s) listed above. Some source code and binaries may be distributed under different terms. Specific license information is provided in file headers and in NOTICE files distributed with the project's binaries.