Last Update: November 2022
Refinitiv Real-Time SDK (Java Edition) (RTSDK, formerly known as Elektron SDK) is a suite of modern and open source APIs that aim to simplify development through a strong focus on ease of use and standardized access to a broad set of Refinitiv proprietary content and services via the proprietary TCP connection named RSSL and proprietary binary message encoding format named OMM Message. The capabilities range from low latency/high-performance APIs right through to simple streaming Web APIs.
The SDK has been mavenized to support Apache Maven and Gradle build automation tools since version 1.2. This supports helps Java developers to build the RTSDK Java application, manage its dependencies (Java Developers do not need to manually manage different versions of jar files anymore), and better collaboration in the team.
The previous article (Medium) shows how to set up the EMA Java project with Maven via a command line. However, many developers are using the Eclipse IDE for Java application development. This article shows how to create the RTSDK - Java's Maven project with Eclipse to get the library dynamically and run the EMA Java examples.
Disclaimer: I am using the IntelliJ IDEA and Visual Studio Code as my main IDE/editor.
Eclipse Maven Prerequisite
To use the Eclipse IDE with Maven, you need the following software.
This article is based on the Eclipse IDE for Java Developers version 2021-12 (4.22.0). You can download the installation package from the Eclipse Foundation website.
If you are using a different version of Eclipse, some steps may be different, but the concept is still the same.
Java SDK and Maven
You need the Oracle Java Development Kit or Open JDK, and Apache Maven in your machine. Please check the RTSDK - Java README file or API Compatibility Matrix file for more detail regarding the supported JDK versions.
This project is based on the Open JDK version "11" (2018-09-25) and Maven version 3.6.3.
The M2Eclipse plugin provides integration for Apache Maven into the Eclipse IDE. Please check the Installation section on the project GitHub page about how to install the plugin.
Internet Access to Maven Central Repository
The Refinitiv Real-Time SDK Java is now available in Maven Central Repository. You can define the following dependency in Maven's pom.xml file to let Maven automatically download the EMA Java library and ETA Java library for the application.
- This article is based on EMA Java version 3.6.4 L1 (RTSDK Java Edition 2.0.4 L1).
The Basic of RTSDK Java with Maven
This example project is focusing on setting the Eclipse IDE for the RTSDK Java project with Maven only. You can find the basic knowledge of how to use the RTSDK Java with Maven, Maven pom.xml setting for EMA Java, Standard Directory Layout, etc. from the How to Set Up Refinitiv Real-Time SDK Java Application with Maven article (Medium).
IDE Set Up
Step 1: Creating a new workspace
Firstly, create a new workspace. I pick the C:\rtsdk_maven_eclipse folder as my workspace location. The location and file name are based on your machine preference.
You can create a new workspace by setting the C:\rtsdk_maven_eclipse location in the Eclipse IDE launcher.
Then, a new workspace is created.
Step 2: Set Up Default Maven and JDK
The next step is setting up the default Maven and JDK runtime path in Eclipse.
Let's open the IDE toolbar Window -> Preferences menu and choose Maven --> Installation option. Then add your local Maven installation path and tick the checkbox in front of it.
Note: You need to install the M2E plugin before this step.
Moving on to the JDK setting. In the Window -> Preferences menu, choose Java --> Installed JREs option. Add your local JDK 11 installation path and tick the checkbox in front of it.
Stay in the Java setting, choose the Compiler option and set the Compiler compliance level: to 1.8.
Step 3: Create a new Maven Project
That brings us to the Maven Project creation with Eclipse. You can create a new Maven project with the File --> New --> Other... menu option
Then select the Maven Project option and click Next.
Choose the Create a simple project (skip archetype selection) option, and then click the next button.
Now it is time to set the basic Maven pom.xml properties. I set this example project with the following properties:
- Group Id: com.refinitiv.ema
- Artifact Id: EMA_Java_204L1_Maven
- Version: 1.0.0-SNAPSHOT
- Name: EMA_Java_204L1_Maven
Then click the Finish button, a new Maven project is newly created.
Step 4: Set up the Project setting for RTSDK
Before we add the EMA Java code and configurations, there are some project-specific settings that we need to set them first.
Right-click on the project in the Package Explorer panel, and choose the Properties option.
Uncheck the Enable project specific settings option.
Step 5: Set up Maven Pom.xml file
Open the Project's pom.xml file in the Eclipse IDE, then set the following EMA Java application dependencies in the Maven pom.xml file. The EMA Java is the message-level API built on top of the ETA Java (Transport API), the Maven can automatically pull all dependency artifacts within Maven central for the application.
Update Nov 2022:
- For RTSDK version 2.0.7.L1, please specify the RTSDK version as 220.127.116.11 in the pom.xml file.
- For RTSDK version 2.0.7.L2, please specify the RTSDK version as 18.104.22.168 in the pom.xml file.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
You may be noticed that I have added the JavaFX dependencies to the Maven pom.xml file as well. This dependency is for the EMA GUI example.
Step 6: Add EMA Java Example Source Code to the Project
The EMA Java example source code is available at the RTSDK Java package/Java/Ema/Example/src/main folder.
You can copy an entire main folder to replace the Workspace/EMA_Java_204L1_Maven/src/main folder.
Next, copy the EMA Configuration EmaConfig.xml file from the RTSDK Java package/Java/Ema/ folder to the root folder of the EMA_Java_204L1_Maven project.
Additionally, you may copy the local dictionary files folder (RTSDK Java package/Java/etc/) to the root folder of the EMA_Java_204L1_Maven project if you want to use local dictionary files.
You can find more detail about the EmaConfig.xml and local dictionary configurations on the Enterprise Message API (EMA) - Configuration Overview article.
Finally, right-click on the project and choose the Refresh option to make the newly added codes to the project.
Now the EMA_Java_204L1_Maven project and Eclipse IDE are ready to run the RTSDK Java.
Running the RTO Console Example.
Let's start by running the Refinitiv Real-Time -- Optimized (RTO) example ex450_MP_QueryServiceDiscovery. Firstly, create a Run Configuration for the ex450_MP_QueryServiceDiscovery example application.
I set a configuration name as Consumer -example 450. Please do not forget to set the Main class to ex450_MP_QueryServiceDiscovery's Consumer class.
Next, click the Arguments tab, and input the RTO credentials as command-line arguments. You can check the list of supported parameters from the example readme and source code files.
Finally, click the Apply and Run buttons to start the RTO example.
You can find more detail about the Eclipse IDE Run and Run Configuration from the TutorialsPoint page.
Running the GUI Example.
The EMA Java GUI example is the Refinitiv Real-Time Market Data Viewer (RRTViewer). The RRTViewer supports the RSSL and WebSocket connections for both local RTDS and RTO deployment scenarios. This session covers the RTO with the Service Discovery scenario only, but the GUI interface and flow of the RTDS scenario are not that different.
Firstly, create a Run Configuration for the RRTViewer example application. Please do not forget to set the Main class to com.refinitiv.ema.examples.rrtmdviewer.desktop.RRTMDViewerDesktopMain class.
Then, click run to start the example application. The first screen lets you choose between the following options:
- Discovery Endpoint: Connect to RTO with the Service Discovery
- Specify Endpoint: Connect to your local RTDS server
Let's choose the Discover Endpoint options and then click the next button.
Next, input your RTO credentials and click the Retrieve Service Endpoints button. Please note that you can choose whether you want to connect with the RSSL or WebSocket connection too.
Then, the example application authenticates with the RDP Auth Service and gets the list of endpoints from the RDP Service Discovery. You can select the endpoint that you want to connect to and then click the connect button.
Once the connection is succeeded, you can select the Real-Time service name, data domain, input RICs name, set the subscription properties, and then click the submit button. The real-time data is shown on the right panel.
That's all for the Real-Time Market Data Viewer example.
Eclipse is one of the most popular IDEs for Java development. With the Maven integration (via the M2Eclipse plugin), developers can create and manage the development project faster than the old manual way. Developers do not need to manually maintain jars file dependencies anymore. This helps when updating the library versions, sharing the project among peers, and supports various build processes that match developers' workflow.
The RTSDK Java is now available in Maven central repository which makes Java developers can implement the Real-Time application with the build automation tools such as Apache Maven, Gradle. Java developers who are using the Eclipse IDE to set up the development project with the RTSDK Java by just adding the EMA or ETA API dependencies to the pom.xml file.
Note: The IntelliJ IDEA already has built-in Maven (and Gradle) support.
For further details, please check out the following resources:
- Refinitiv Real-Time SDK Java page on the Refinitiv Developer Community website.
- Refinitiv Real-Time SDK Family page.
- Enterprise Message API Java Quick Start
- Developer Webinar: Introduction to Enterprise App Creation With Open-Source Enterprise Message API
- Developer Article: 10 important things you need to know before you write an Enterprise Real Time application
- Developer Article: How to Set Up Refinitiv Real-Time SDK Java Application with Maven.
- Developer Article: How to deploy and run Real-Time Java Application with Maven in Docker.
- Developer Article: Testing Real-time Streaming applications with Docker & Refinitiv Real-Time Connector (part 1).
- Developer Article: Testing Real-time Streaming applications with Docker & Refinitiv Real-Time Connector (part 2).
- Developer Article: How to use the Refinitiv Real-Time SDK Docker Images on the Visual Studio Code with the Remote - Containers extension.
- Apache Maven Project page
- Maven Getting Started Guide
- Maven in 5 Minutes
- Maven Central Repository Search
- Maven - Eclipse IDE tutorial.
- Eclipse Foundation website.
- M2Eclipse plugin website.
For any questions related to this article or the RTSDK page, please use the Developer Community Q&A Forum.