Installing a JDK

Important

Starting with release 10.4.0, StreamBase Studio detects and uses a system-installed Oracle JDK 8 in preference over its bundled JDK 8. This is a behavior change compared to previous releases.

JDK Requirements

StreamBase Studio and the StreamBase Runtime require an installation of Oracle JDK 8 in order to compile and run StreamBase and LiveView program fragments and applications from within StreamBase Studio. A JRE is not sufficient to run StreamBase and LiveView applications; you must have a JDK.

On all supported operating systems, the StreamBase installation kit provides the runtime components of the Oracle JDK 8 version listed in Supported Configurations. This bundled JDK is placed in the jdk subdirectory of the StreamBase installation directory.

Starting with TIBCO Streaming release 10.4.0, StreamBase Studio detects and prefers a system-installed Oracle JDK 8 over its own bundled JDK. Using a system-installed JDK allows you to take advantage of cryptography features of the JDK that TIBCO is not licensed to include with Spotfire Data Streams, and allows you to manage your JDK installation independent of StreamBase.

Starting with Spotfire Data Streams 10.4.1, when looking for installed JDKs, Studio only searches for a JDK 8 at the same release level as the one bundled with StreamBase, or later. That is:

  • StreamBase does not run with earlier JDK 8 versions.

  • StreamBase does not run with JDKs 6 or 7 from any vendor.

  • Oracle JDKs 9, 10, and 11 may work, but are not certified by TIBCO for use with Spotfire Data Streams.

On Windows, by default, the StreamBase Command Prompt looks in standard installation locations for JDK 8, and uses the latest Java 8 version detected. That is, by default, the sb-config --java-home command used by the StreamBase Command Prompt does not rely on the JAVA_HOME environment variable, and ignores it if set. The JDK bundled with StreamBase is used only if no appropriate JDK 8 is detected.

For macOS and Linux, TIBCO recommends using sb-config --java-home in your shell startup scripts, as described below in Using the StreamBase-Determined JDK and in StreamBase-Configured Shells.

Starting with StreamBase 10.3.0, StreamBase command-line tools such as epadmin and sbc do not use Java and do not require Java to be in the system PATH. (The jsbc and jsbadmin commands, however, do use Java.)

The bundled Maven command, mvn, does require Java; it uses the java command that the StreamBase Command Prompt or StreamBase-configured shell places first in the PATH. (Maven might also use a different Java version if so configured in POM files.)

StreamBase is not supported with gcj or icedtea. However, StreamBase and LiveView fragments configured to run in Docker containers use OpenJDK 1.8 inside the container.

Installing a System JDK

Installing a system-level JDK has the advantages of being maintainable independently of StreamBase, and of providing access to JDK cryptography features not shipped by TIBCO. See the JDK Cryptography Features row of the Supported Platforms page for further details.

Download and install a recent JDK from Oracle. Select a JDK 8 release, and not just a JRE. The recommended version is a JDK from the same release as the JDK bundled with StreamBase, or newer. Studio rejects JDK 8 releases earlier than the bundled version, and falls back to the bundled version if detected.

On all platforms, make sure the installer configures your command shell environment to add $JAVA_HOME/bin (or %JAVA_HOME%\bin) to your system PATH. If your JDK installer does not make this change, be sure to configure it manually in the system environment for Windows, or in the shell login scripts for users on macOS and Linux.

Note

Newer Java installers no longer set the JAVA_HOME environment by default. If your shell environment has a legacy setting for JAVA_HOME, make sure it points to the newly installed JDK.

On Windows, download and install the 64-bit JDK option, because StreamBase is supported only on 64-bit editions of Windows.

On macOS, install a JDK from Oracle. The Java 6 JDK that Apple formerly provided in older macOS versions is no longer supported for running StreamBase.

On Red Hat Linux, CentOS, Oracle, and Amazon Linux, the base installation might have installed a recent OpenJDK release. TIBCO recommends installing a supported Oracle JDK for development, QA, and deployment work with StreamBase applications.

Using the StreamBase-Determined JDK

On Windows platforms, the StreamBase Command Prompt looks in standard locations for an Oracle JDK 8 installation. If found, the Command Prompt adds its bin directory to the PATH. If not found, the JDK 8 bundled with StreamBase is added to the PATH.

On macOS and Linux, you can emulate the Windows behavior by placing commands in your shell startup script like these examples:

  • Set JAVA_HOME to the output of sb-config --java-home.

  • Then add $JAVA_HOME/bin to the PATH.

Changing Default Behavior

You can change the default behavior described above by means of the STREAMBASE_USE_INTERNAL_JDK environment variable, which can be set to one of three values:

  • fallback — This is the default setting as of StreamBase 10.4.0. If set to fallback, or not set, this configures Studio to try to locate a system-installed JDK 8, and to use the StreamBase bundled JDK 8 only if a system JDK 8 is not found.

  • true — Always use the JDK 8 bundled with StreamBase. This was the default value of STREAMBASE_USE_INTERNAL_JDK before release 10.4.0.

  • false — Use the JDK specified in the JAVA_HOME environment variable, if set. JAVA_HOME must be set to the full, absolute path to the top-level directory containing your JDK.

    If set to false, but no JAVA_HOME is defined, StreamBase searches the system PATH for a JDK. If not found, StreamBase looks in standard installation locations for a JDK. If still not found, Studio does not start.

Troubleshooting JDK Selection

To help determine which JDK StreamBase Studio uses, you can temporarily start Studio from a StreamBase Command Prompt on Windows, or from a StreamBase-configured shell prompt on macOS, with commands like the following.

On macOS, run:

STREAMBASE_JAVA_LAUNCHER_VERBOSE=1 sbstudio &

On Windows, the sbstudio command suppresses stderr output by default, so we use jsbc instead. Both jsbc and sbstudio commands use the same method to determine the Java command to use.

set STREAMBASE_JAVA_LAUNCHER_VERBOSE=1
jsbc