A newer version of this documentation is available.

View Latest

Compatibility of Couchbase Features, Couchbase Server Versions, and the Couchbase Java SDK

      +
      Features available in different SDK versions, and compatibility between Server and SDK. Plus notes on Cloud, networks, and AWS Lambda.

      The 3.x SDK requires Java 8 or later to be installed, earlier versions will not work. Java 11 is recommended, which has various enhancements like lambda local variable type inference, profiling tools, and updated security features. Most of the flavors available will do, although we may only provide support for OpenJDK and Oracle JDK going forward. The Java SDK has not been tested (and is not supported on) Java 12 or later.

      Couchbase Version/SDK Version Matrix

      Couchbase SDKs are tested against a variety of different environments to ensure both backward and forward compatibility with different versions of Couchbase Server. The matrix below denotes the version of Couchbase Server, the version of the Java SDK and whether the SDK is:

      • Unsupported: This combination is not tested, and is not within the scope of technical support if you have purchased a support agreement.

      • Compatible: This combination has been tested previously, and should be compatible. This combination is not recommended by our technical support organization. It is best to upgrade either the SDK or the Couchbase version you are using.

      • Supported:This combination is subject to ongoing quality assurance, and is fully supported by our technical support organization.

      Table 1. Recommended SDK per Server Version Matrix
      SDK 2.4, 2.5 SDK 2.6 SDK 2.7 SDK 3.0, 3.1

      Server 5.0

      Server 5.5

      Server 6.0

      Server 6.5-6.6

      Server 7.0

      Note the End of Life dates for Couchbase Server and SDK versions. See the notes there for Support details.

      JDK Version Compatibility

      The Java SDK is tested with Oracle JDK and OpenJDK. Other JDK implementations might work but are not tested and are unsupported. We recommend running the latest LTS version (i.e. at the time of writing JDK 11) with the highest patch version available.

      We only support LTS versions of Oracle JDK and OpenJDK. Other versions, such as JDK 12, may work — but they are not tested and they are not supported.

      The following JDK releases are supported:

      Please make sure you run on one of the latest patch releases, since they provide stability improvements and security fixes in general.

      Couchbase Feature Availability Matrix

      Table 2. Couchbase Server and SDK Supported Version Matrix
      Server 5.0, 5.1, & 5.5 Server 6.0 Server 6.5 & 6.6 Server 7.0

      Enhanced Durability

      All SDK versions

      Durable Writes

      Not Supported

      Since 3.0

      Analytics

      DP in 5.5 with 2.6

      Since 2.7

      Distributed ACID Transactions

      Not Supported

      Since 3.0[1]

      N1QL Queries inside the Transaction Lambda

      Not Supported

      Since 3.0.7[2]

      Collections

      Not Supported

      Developer Preview in 6.5-6.6, SDK 3.0

      Since 3.0

      Scope-Level N1QL Queries

      Not Supported

      Since SDK 3.0.8

      Network Requirements

      Couchbase SDKs are developed to be run in an environment with local area network (LAN) like throughput and latencies. While there is no technical issue that prevents the use across a wide area network (WAN), SDKs have certain thresholds around timeouts and behaviors to recover that will not be the same once the higher latency and possible bandwidth constraints and congestion of a WAN is introduced. Couchbase tests for correctness under LAN like conditions. For this reason, only LAN-like network environments are officially supported.

      Couchbase does document, for purposes of convenience when developing and performing basic operational work, what may need to be tuned when network throughputs and latencies are higher. If you encounter issues, even with these tune-ables, you should attempt the same workload from a supported, LAN-like environment.

      Running on AWS Lambda

      AWS Lambda’s execution environment can freeze/thaw processes. Current Couchbase SDKs run background processing to check and adapt to topology changes in the Couchbase Cluster being used. Since the freeze does not allow this background processing and upon thaw the event-driven Couchbase SDKs may issue requests to an old topology, unexpected behavior including failures may occur. AWS λ does not provide a way to detect the freeze/thaw cycle. For this reason AWS λ is not currently a tested and supported platform for running current Couchbase SDKs.

      Spring Data Couchbase Compatibility

      Spring Data Couchbase uses the Java SDK underneath and as a result is also provides different compatibilities with Couchbase Server. The following table provides an overview.

      Table 3. Recommended Spring Data Couchbase per Server Version Matrix
      SDC 3.x SDC 4.0 & 4.1

      Status >

      SDK 2.x only

      New Features, Active Development

      Server 5.x

      SDK 2.x

      Not Compatible

      Server 6.0

      SDK 2.x

      Recommended

      Server 6.5 & 6.6

      SDK 2.x

      Recommended

      Check the Spring Data Couchbase’s compile dependencies — older versions may link an out-of-date version of the Java SDK in their dependencies list, although a supported version should be in the updates. Please make sure that you are using a supported version of the Couchbase Java SDK, prefereably the latest version, which will contain any available bug fixes. Using the latest Spring Data Couchbase should ensure that this is so.
      Reactor Core Version

      SpringBoot may set the io.projectreactor version at an earlier virsion than the one needed by the current version of Couchbase JVM Core IO. In case of errors, override with Core IO’s preferred version, e.g.:

      <dependency>
          <groupId>io.projectreactor</groupId>
          <artifactId>reactor-core</artifactId>
          <version>3.3.5.RELEASE</version>
      </dependency>

      Interface Stability

      Couchbase SDKs indicate the stability of an API through documentation. Since there are different meanings when developers mention stability, we mean interface stability: how likely the interface is to change or be removed entirely. A stable interface is one that is guaranteed not to change between versions, meaning that you may use an API of a given SDK version and be assured that the given API will retain the same parameters and behavior in subsequent versions. An unstable interface is one which may appear to work or behave in a specific way within a given SDK version, but may change in its behavior or arguments in future SDK versions, causing odd application behavior or compiler/API usage errors. Implementation stability is implied to be more reliable at higher levels, but all are tested to the level that is appropriate for their stability.

      Couchbase uses three interface stability classifiers. You may find these classifiers appended as annotations or comments within documentation for each API:

      • Committed: This stability level is used to indicate the most stable interfaces that are guaranteed to be supported and remain stable between SDK versions.

      • Uncommitted: This level is used to indicate APIs that are unlikely to change, but may still change as final consensus on their behavior has not yet been reached. Uncommitted APIs usually end up becoming stable APIs.

      • Volatile: This level is used to indicate experimental APIs that are still in flux and may likely be changed. It may also be used to indicate inherently private APIs that may be exposed, but "YMMV" (your mileage may vary) principles apply. Volatile APIs typically end up being promoted to Uncommitted after undergoing some modifications.

      APIs that are marked as Committed have a stable implementation. Uncommitted and Volatile APIs should be stable within the bounds of any known and often documented issues, but Couchbase has not made a commitment to these APIs and may not respond to reported defects with the same priority.

      Additionally, take note of the following interface labels:

      • Deprecated: Any API marked deprecated may be removed in the next major version released. Couchbase recommends migrating from the deprecated API to the replacement as soon as possible. In rare instances, deprecated API may be rendered non-functional in a dot-minor release when the API cannot continue to be supported.

      • Internal: This level is used to indicate you should not rely on this API as it is not intended for use outside the module, even to other Couchbase components.

      Older SDK Versions

      Documentation on older, unsupported versions of the SDK — that have reached end-of-life — can be found in the archive.


      1. 3.0.7 or more recent recommended; preferably, follow the transitive dependency for the transactions library in Maven.
      2. With Java Transactions Library 1.1.3.