The SPL toolkit com.ibm.streamsx.topology provides:

  • APIs to allow creation of Streaming Analytics service and IBM Streams applications in Python, Java or Scala.
  • SPL Python primitive operators.
  • Publish-Subscribe stream model to allow integration between streaming applications implemented in different languages (SPL, Python, Java or Scala) using a microservice approach.

Latest Release

Python improvements with 1.6 release - 2017/03/27

Python Application API

  • Python Application API - allows an application to be built using Python, so that streams are created, processed and sinked using Python callables and tuples are Python objects.
  • SPL Python primitive operators - easily create SPL operators that invoke Python classes or functions.
  • Python Streams REST API - Python wrappers for the Streaming Analytics service and IBM Streams REST apis.
For details see the documentation.

Java Application API

1.6.0 release - 2017/03/27

The Java Application API enables a developer to create streaming applications entirely in Java and Scala for IBM Streams. The API employs a functional style of programming -- a developer may define a graph's flow and data manipulation simultaneously.

     * Declare a source stream (hw) with String as tuples that sends two
     * tuples "Hello" and "World!", and prints them to output.
    Topology topology = new Topology("HelloWorld");
    TStream<String> hw = topology.strings("Hello", "World!");

Open source

Streamsx.topology is an open source project that can be found on github.

Java Application API Quick Start VM

Get started now with the new Java Application API Quick Start VMware image by following this getting started guide.

Please refer to the getting started guide, FAQ page, and documentation for help.


Publish-subscribe provides the abiltity to connect streams between independent IBM Streams applications regardless of their implementation language. This allows a microservice approach where an Streams application acting as a service publishes one or more streams. Subscriber services then subscribe to those streams without requiring any knowledge of how a stream is published.

Publish-subscribe is a simplification of SPL's Import/Export allowing the publisher and subscriber to be totally independent, a subscriber always receives the correct tuples regardless of the number of parallel regions in the publisher or subscriber and regardless of if the publisher allows filters. A stream is published using an topic and its stream type.
For details see com.ibm.streamsx.topology.topic.

1.6.0 release

1.6.0 - 2017/03/27

New Python functionality:

  • Python 2.7 support for Python Application API.
  • Simplified development with Python Application API by supporting lambda functions, callables defined in the main file and iterables directly as source functions.
  • New SPL decorators the create stateful or stateless operators with operator parameters and supporting passing SPL tuple attributes by name.
  • Python access to Streams execution context including custom metrics
  • Python wrapper for the Streams REST api to allow monitoring of Streams instances and running jobs, including accessing the data from views on streams.


1.6 continues to support functionality in the 1.4 release for Java, Scala and SPL: