Supported Environments for the Solace JCSMP API

The Solace JCSMP API is compatible with many different operating systems and platforms. The major operating systems and environments supported for the Solace JCSMP API are listed below:

  • Windows
    • x86/x86_64
  • macOS
    • x86_64
    • ARM (M-Series)
  • Linux
    • x86
    • x86_64
    • ARM
  • Alpine Linux
    • x86_64

JCSMP requires any version of a Java Development Kit (JDK) that is in active support for the platform and operating system.

Most Solace Messaging APIs support various Linux environments for desktops and servers but do not support Alpine Linux. Alpine Linux is built with musl-c, which is typically used for containerized environments or microcontroller devices.  The Solace Messaging APIs are built with glibc, which are typically used for Linux ( both desktop and server) environments. See appropriate API section on this page to determine whether Alpine Linux (musl-c) is supported.

Java Compatibility and Build Requirements

The Solace JCSMP API supports various Java environments, dependencies, and build tools:

  • The Solace Messaging API for JCSMP is compatible and supported with any version of the Oracle JDK or OpenJDK that is in active support and also has security update support. For information about supported versions, see the Oracle Java SE Support Roadmap.
  • Java 1.8 or later is required to use TLS/SSL connections to the event broker.
  • The Solace JCSMP API includes a sample Ant build script (build.xml) with the sample applications that shows how to add the Solace Messaging API libraries to the CLASSPATH during the compiler invocation.
    • Ensure that the CLASSPATH set when invoking the javac compiler includes all the .jar files in the JCSMP  lib directory. For information on Apache Ant, refer to http://ant.apache.org.
  • OSGi support—The JCSMP (sol-jcsmp) JAR file includes metadata conforming to the OSGi standards and can be deployed as an OSGi bundle.

TLS and SSL Support

Transport Layer Security (TLS) provides secure connections between Solace Messaging APIs and event brokers. The Solace JCSMP API supports the following TLS versions. The recommended version to use is the most recent version of TLS:

  • TLS 1.2
  • TLS 1.3—Requires version 10.27 or later of the Solace JCSMP API.

In this documentation, the term TLS/SSL refers to Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols used for securing data transmission. We don't recommend that you use SSL unless it's required for backwards compatibility.

Java 1.8 or later is required to use TLS/SSL connections to the event broker.

Netty Dependency Compatibility

Versions 10.23 and later of the Solace JCSMP API rely on the Netty library as a dependency. The Solace JCSMP API has specific Netty version requirements:

  • Solace JCSMP API versions 10.29 and later require Netty 4.2.7.Final or later.
  • Solace JCSMP API versions 10.23 to 10.28 can use either Netty 4.1.x or Netty 4.2.x.
  • If using a Netty Bill of Materials (BOM), version 4.2.7.Final or later is required to ensure compatible Netty 4.2.x versions are used.
  • Using multiple Netty versions in a single project is not supported.

Solace JCSMP API versions 10.29 and later require Netty 4.2+, which is not supported by Spring Boot 3.x. Applications that use Spring Boot 3 should remain on versions 10.28 or earlier of the Solace JCSMP API.

For more information about Netty, see https://netty.io.

The following example shows a Maven dependency configuration for the Solace JCSMP API version 10.29.0 with the Netty 4.2.7.Final BOM:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-bom</artifactId>
            <version>4.2.7.Final</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>com.solace</groupId>
        <artifactId>sol-jcsmp</artifactId>
        <version>10.29.0</version>
    </dependency>
</dependencies>