We are thrilled to announce a momentous new release of Lightstreamer, encompassing both the Lightstreamer Server and all the Lightstreamer Client SDKs and Adapter SDKs. This significant update introduces groundbreaking features and improvements, enhancing the overall performance and functionality of Lightstreamer.
Brand New Client SDKs Based on the Unified Client Model
We have taken a giant leap forward by completely rewriting all the Lightstreamer client libraries from scratch. As a result, we are proud to present new major versions of each of them:
- Web Client SDK v. 9.0.0
- Android Client SDK v. 5.0.0
- Swift Client SDK v. 6.0.0
- Flutter Client Plugin v. 1.1.0
- Node.js Client SDK v. 9.0.0
- .NET Standard Client SDK v. 6.0.0
- Java SE Client SDK v. 5.0.0
- Python Client SDK v. 2.0.0
This overhaul was driven by our commitment to keep all libraries perfectly aligned with the continuous expansion of supported client-side platforms and languages, as well as the growing array of Lightstreamer features. To achieve this, we introduced the concept of the “Unified Client Model” (UCM), a theoretical model of the Lightstreamer client library that remains independent of the target platform. UCM is based on state machines and was implemented in Haxe, a versatile metalanguage capable of transpiling into multiple programming languages. Simultaneously, we directly implemented the model in languages that cannot be transpiled from Haxe. For each codebase, we carefully selected platform-dependent libraries and facilities, such as websocket management and cookie handling, to create highly efficient and robust libraries.
We are excited to announce that the implementation of UCM has been successfully completed for all supported languages and platforms, with even more to come in the future.
What’s new with Lightstreamer Server 7.4
Lightstreamer Server 7.4 introduces some highly anticipated enhancements and features:
Async Adapter interface
For in-process Java Adapters, we have transitioned to an asynchronous interface for the most critical callbacks, specifically the two overloads of notifyUser and notifyUserMessage in the MetadataProvider interface. These methods have been modified to return a CompletableFuture, enabling more flexible and efficient handling of these callbacks. Similar support for non-Java Adapters will be made available in the future.
See the Java Adapter changelog and the Server changelog for more details.
Request-Response Support
While Lightstreamer is primarily an event broker following the publish-subscribe paradigm, we have observed growing demand for a basic request-response paradigm. There are use cases where leveraging the existing Lightstreamer connection to facilitate quick round-trip interactions becomes beneficial, eliminating the need to rely on an external web server.
To address this need, we have introduced the ability for the notifyUserMessage callback in in-process Java Adapters to provide a response message via the new CompletableFuture return value. This response is then received by the ClientMessageListener on the client side. Similar capabilities will be extended to non-Java Adapters in the future.
See the Java Adapter changelog and the Server changelog for more details.
Remote Adapters
Lightstreamer 7.4 brings substantial improvements to remote adapters.
A single TCP connection can now handle all the traffic previously carried by two different TCP connections between a Proxy Data Adapter and a Remote Data Adapter. This streamlines systems administration, reducing the number of ports to manage and configure on firewalls.
The direction in which the connections between the server and the remote adapters (both Data and Metadata Adapters) are established can now be inverted. While the default remains with the remote adapters connecting to the server, this new configuration option allows the server to connect to the remote adapters. This enhanced flexibility is particularly advantageous in scenarios involving an elastic Lightstreamer Server cluster, where the scale-up and scale-down operations continuously change the number of nodes. With this setup, a single remote adapter (or an adapter cluster behind a load balancer) can handle connections from all servers, eliminating the need to predefine the number of Lightstreamer servers and their addresses in advance. The remote adapter will need to spawn an internal process for each incoming connection.
Moreover, several security improvements have been implemented, including the possibility of enforcing adapter authentication via client certificates.
For a comprehensive overview of these updates and additional improvements, please refer to the Server changelog and the changelogs of each adapter SDK:
- Java Remote Adapter changelog
- .NET Standard Adapter changelog
- Node.js Adapter SDK changelog
- Python Adapter SDK changelog
Many Other Improvements
This expansive release encompasses numerous other improvements and fixes across the Lightstreamer platform. We strongly recommend reviewing all the changelogs to gain insight into every change. The changelogs also provide clear indications regarding backward compatibility with existing code and cross-compatibility between components, such as the minimum server version required by each client SDK and adapter SDK.
As always, we guarantee backward compatibility with all previous versions of clients when upgrading to this new server version. This means you can confidently upgrade your server without disrupting the operation of your older clients, giving you time to upgrade them at your earliest convenience.
The Lightstreamer Server is conveniently accessible through multiple options, including as a downloadable package, a Docker image, and an AWS AMI. For easy access to both the Lightstreamer Server and all the SDKs, visit lightstreamer.com/download/ to find all the relevant links.
Should you have any questions or require further assistance, please don’t hesitate to contact the Lightstreamer team.
We eagerly anticipate receiving your feedback on this momentous release as we continue to enhance and optimize Lightstreamer for your needs.