Friday, February 10, 2017

What's New With Lightstreamer 6.1

We are very excited to announce general availability of Lightstreamer Server 6.1, which includes many new features and improvements.

Lightstreamer now speaks a brand new protocol, called TLCP. The Android and Java SE client libraries use the new protocol and natively support WebSockets. The iOS client library has become more Swift-friendly. A new client library is available for Microsoft .NET PCL, replacing older .NET, Windows Phone, and WinRT libs. In addition, several fixes and optimizations have been added to most components.

It's super easy to check out Lightstreamer 6.1. You can either download the installation package, or run the official Docker image, or launch the official AWS AMI.

Tuesday, January 31, 2017

One More Step Towards Swift Developers

The Swift language is designed to be as interoperable as possible with Objective-C. This goal is generally fulfilled, but an area still remains where the two languages don't interoperate as well as one would expect: exception handling.

Objective-C provides complete try-catch-finally semantics for exception handling, with full stack unwinding. While Cocoa and CocoaTouch conventions discourage their use for runtime errors (originally for performance reasons), they are of common use also in Apple's frameworks for programmer errors (i.e. logic errors, such as accessing an out-of-bounds element of an NSArray).

Swift, on the other hand, provides similar do-try-catch semantics, but its errors (do not call them exceptions) are actually passed back as an out parameter and does not provide a stack unwinding mechanism. Moreover, as of Swift 3.x, Objective-C exceptions are left completely out of Swift error handling: they are uncatchable in this language, and cause a direct crash of the application or the service. For the rationale behind this choice, and its corresponding discussion, see this dissertation on the Swift GitHub repository.

Tuesday, November 29, 2016

SDKs for iOS, macOS and tvOS Updated

We recently released version 2.1.0 of our SDKs for iOS, macOS and tvOS. This version introduces some important changes:
  • You now have again control on the maximum number of concurrent sessions on the same Server. This feature was part of SDKs version 1.x, but couldn't be included in version 2.0.x.
  • You now have again a connection event specific for authentication challenges. This feature too was part of SDKs version 1.x, but couldn't be included in version 2.0.x.
  • Minimum OS requirements have been raised to 10.9 for macOS and 8.0 for iOS. Thanks to this, we could remove the use of NSURLConnection and all HTTP networking is now done through NSURLSession, reducing the use of threads.
  • The SDKs are now packaged as frameworks, no more as static libraries. Thanks to this, the download size has been reduced and they cohabit better with other libraries when imported via CocoaPods (in particular for projects developed with Swift).
See below for more details.

Note: if you need download and example pointers, jump directly to the end of the post ("Get the SDKs").

Tuesday, August 23, 2016

Benchmarking Lightstreamer JMS Extender vs. Web Services in a Defense Scenario

While Lightstreamer is already well known as a mature solution for Real-Time Data Distribution in a wide range of contexts and industries, it has been also widely used as an academic research tool behind the scenes.

A recent one caught our attention. The research is on interoperability of real-time and non-real-time systems, a well-known topic that has been widely investigated in a large number of domains and industries. In mission-critical fields, performance and reliability of the bridges used to interconnect two different message exchange solutions is crucial. Defense is surely one of the most demanding, thus a perfect and realistic research scenario.

Wednesday, July 20, 2016

Vue.js and Lightstreamer

Vue.js is an open-source JavaScript library for building interactive web interfaces which is rapidly growing in popularity (as evidenced by its GitHub’s stars).
It's basically a view layer for any application, which enables reactive data binding and composable view components (without polyfills, even in browsers that don’t support those features natively) through an extremely simple API.

Vue differs from the alternatives, such as React or Angular, mainly for the great developer experience it provides, which makes them super productive without the need to spend tons of time learning new stuff.

Friday, July 15, 2016

Angular 2 Demo

Last week, we built our first demo in Angular 2. The application implements our evergreen "Basic Stock-List Demo", which shows ten stocks whose market-data are dynamically updated by a random simulator and sent in real time to the web client by the Lightstreamer Server.

Previously, we had done the same exercise using AngularJS (you can see the outcome in this live demo and this GitHub project).

The overall task of integrating Angular 2 and Lightstreamer Web Client API was not difficult at all, notwithstanding the lack of extensive documentation (at the time of writing, Angular 2 is still in beta).

Angular 2 aims to be a complete framework to build sophisticated web interfaces. In the demo we just scratched the surface.

Thursday, May 12, 2016

What's New With Lightstreamer 6.0.2

We are very excited to announce the general availability of Lightstreamer Server 6.0.2, which includes several new and updated components.

Client-side SDKs

More client libraries have been updated to reflect the Lightstreamer Unified Client API model. We recommend upgrading the client code to make use of the new libraries, even if this requires some rework when migrating from non-unified APIs. The big advantage in using the Unified API is that the same consistent interface and behavior are guaranteed across different client platforms. In other words, the same abstractions and internal mechanisms are provided for very different platforms, while respecting the conventions, styles, and best practice of each platform. This will dramatically reduce costs and complexity when maintaining client applications for different platforms.

Tuesday, April 26, 2016

New SDK for Python Adapters

Our family of Adapter Development Kits has been further enriched with the Lightstreamer SDK For Python Adapters, which lets developers write Remote Adapter Sets exploiting the power and flexibility of Python, one of the most widely used general purpose high-level languages.

The new SDK has been developed keeping in mind the same principles and concepts which drove the design and implementation of the SDK for .NET Adapters, the "progenitor" of the successive SDKs for Java Remote Adapters and for Node.js Adapters, all already provided as part of the Lightstreamer distribution. Nevertheless, the Python Adapter SDK must not be considered as a "simple" port to the Python language; on the contrary, it is a brand new implementation, based on the best practices and widespread conventions promoted by the community around the language.

In this post we are going to show a general overview about the development of custom Python Remote Adapter Sets, which should sound quite familiar for those who have already experimented with the others Lightstreamer Adapter SDKs.

Wednesday, April 13, 2016

Dockerizing Lightstreamer

Containerization is one of the most important IT trends over the last two years. Docker heads this technology up, providing an open platform which lets you package up applications with all their dependencies. Applications can be shipped as software containers to enable process isolation, resources optimization, portability, and ease of maintainability and deployment.

As passionate about each new exciting and promising technology, we at Lightstreamer could not miss the opportunity to enter this world, so we tested how well our Server could be "dockerized" and ... Yes, we did it! We published the Docker official image for Lightsteamer Server on Docker Hub.

The aim of this blog post is to show how to use our Docker image as a starting point to build new Lightstreamer Server deployments.

Monday, April 11, 2016

React Native Demo Available

In the past few years, we have seen the diffusion of frameworks like PhoneGap and Titanium, which offer developers the opportunity of building mobile applications using web technologies. The outcome is called a hybrid app.

Web developers can use their skills for mobile development and in addition they can use the same codebase with little changes for multiple platforms - what became known as “Write once, run everywhere”. On the downside, some of these frameworks wrap your JavaScript code in a web view: this results in UI elements that don’t have a native look and feel and fall short when it comes to performance (you are still writing a web app).

Friday, March 11, 2016

Electron Demo Available

Nowadays, since browsers and mobile devices got powerful, there has been a constant decline of desktop applications, which are getting replaced by mobile and web apps.

There are a lot of advantages to writing desktop applications and in some context it's still preferable.

GitHub’s Electron framework (formerly known as Atom Shell) wants to give developers new exciting reasons to continue coding them, letting us write cross-platform desktop apps using web technologies (HTML, CSS and JavaScript).

Thursday, March 10, 2016

New tvOS Client SDK Now Available

With the release of Apple TV 4th generation, Apple added a new platform for the development and distribution of apps. We are happy to announce that Lightstreamer now supports this new platform as well, with the same APIs provided for iOS and OS X.

The new tvOS Client SDK is directly derived from the iOS SDK version 2.0.0. As such, the API model is pretty identical

We provide also a sample application, our ubiquitous Stock-List Demo, in tvOS flavor on GitHub. Check it out for an example of use of this new SDK.

Monday, February 8, 2016

Meet Our Customers: eToro

"Choosing Lightstreamer was a no-brainer" - a short interview with Israel Kalush, VP Engineering at eToro, a pioneer and world leader in Social Trading. eToro opted for Lightstreamer to deliver server-to-client high-frequency messages, including price ticks.

Let’s talk about your organization. What is your core business?

"eToro is the world's largest social investment network. eToro allows traders to invest in the global markets, follow the financial trading activities of other users as well as CopyTrade them. Clients allow their trading activity to be published on eToro's network along with their trading history and performance metrics. Users leverage this wealth of financial information and choose to copy other traders. In such case, the eToro platform will automatically duplicate each trade made in the copier's account using the same execution rates."

 Could you let us know any further information?
" Through eToro's award winning platform, over 5 million traders are empowered to learn from each other, share live trading information and even capitalize on their collective trading power, thanks to the CopyTrader feature. Traders can also use eToro’s social trading services on the go, with eToro’s Mobile Trader for Android and iPhone.

 eToro has local offices in London, Cyprus, Moscow, Shanghai, Israel and Sydney."

Thursday, January 7, 2016

Introducing Lightstreamer JMS Extender

The Lightstreamer JMS Extender is a new product aimed at porting the JMS interface to the Web and Node.js environments.

For those who don't know the JMS acronym, it stands for Java Message Service and it is a well-known set of APIs used in Java-based environments to provide publish/subscribe and message queuing paradigms. Not only does the JMS Extender provide that same set of APIs as a JavaScript client library (and other languages in the future), but it also extends the reachability and scalability of a JMS broker (typically a local-area-network component) to the entire Web.

Friday, October 16, 2015

Weswit Becomes Lightstreamer

We are so thrilled to announce that Weswit, the company behind the Lightstreamer product family, has been renamed as Lightstreamer.

Weswit pioneered the real-time web since the early 2000s and its flagship product, Lightstreamer, has become the absolute leader among commercial products in the Internet messaging space, in terms of market share. The Lightstreamer brand is now very well known globally. It makes total sense to identify the company and the product with the same name, for the sake of clarity and simplicity.

We are now growing our product family, enlarging our team of brilliant engineers, and starting up brand new ideas. Innovation remains the key to all that we do.

Our fabulous new headquarter at Copernico, in Milan, Italy.

Now, when dealing with real-time messaging and data streaming, a single word needs to be remembered: Lightstreamer!

Thursday, October 15, 2015

New Client APIs for iOS and OS X

When the iOS SDK came out in 2009, our choice at Lightstreamer was to build a new client library from scratch. We took as a reference the Java client library and started developing an entirely new Objective-C codebase, trying to merge the best object-oriented design we had at that time with a new language and environment.

This had both advantages and disadvantages. On one side, native integration with iOS led to good performance and useful features, like network availability monitoring to avoid battery drainage. On the other hand, the slow process of discovering and fixing corner-conditions and bugs, which the Java library had passed through already, had to be repeated all over again. Moreover, as new features were introduced in the server, they had to be introduced in the client libraries multiple times.

For these reasons, when the opportunity to rewrite the iOS client came in, we decided to try a different approach: transpile (i.e. trans-compile) a single Java codebase, in common with the Java client (now mostly dedicated to Android) and fill in the gaps with well designed wrappers and dependency injection. We explored this possibility before, but tools were not mature enough. Now they are, trans-compilaiton is a reality thanks to j2objc, an impressive tool made by the Google team, and transpiled code works and performs very well.

So, today we are proud and excited to announce the availability of the alpha version of iOS and OS X client libraries version 2.0, both developed from a highly engineered codebase in common with the Java/Android client. The library's core is written in Java, transpiled to Objective-C and then wrapped and integrated with especially written native code, providing a natural and seamless interface to iOS and OS X developers.

Version 2.0 adheres to the so-called Lightstreamer Unified Client API Model, i.e. an API designed to be the same across all environments: Javascript, Java/Android, iOS/OS X, .NET and so on. Developers will be able to switch between different platforms sure to find the same objects and methods, behaviors and features.

Let's see how it works and how to port your code.

Note: if you need download and example pointers, jump directly to the end of the post ("Get the SDKs").

Monday, September 28, 2015

Meet Our Customers: ImageTrend

A short interview with Lindsey Phillips, Project Manager at ImageTrend, a software development company which offers a wide range of Web-based solutions for industries as diverse as government, medical, human resources, business, education and non-profit.

ImageTrend has been listed in the Inc. 5000 Fastest Growing Private Companies in America in each year from 2007 through 2010. Customers include Russell Athletic, Goodyear Tire, HealthEast Care System, the University of Minnesota, Cargill, and FirstComp Insurance.

Let’s talk about your organization. What is your core business?

"ImageTrend, Inc. is dedicated to enterprise-level data management and analysis through the innovative use of technology. ImageTrend’s applications serve a variety of industries, but is primarily based in the healthcare and emergency response community. Based in Lakeville, Minnesota, ImageTrend combines business analysis, creative design and database-driven architecture to offer innovative, scalable solutions and strategies for today and the future."

Thursday, July 16, 2015

New Client APIs for Android and Java SE

We are very excited to announce early availability of brand new client APIs for Android and Java SE. The new APIs follow the Lightstreamer Unified Client API model, which was first introduced with the JavaScript client API.

This means that developers of applications for different client platforms will be given the same programming model when using a Lightstreamer client library. Same abstractions, same interfaces, same features, and same internal mechanisms. Developers will be able to move from a client platform to another seamlessly, without having to learn a new Lightstreamer API, or having to deal with caveats specific to each platform. At the same time, the Unified Client API implementations respect all the peculiarities of each platform, in terms of naming conventions, packaging, etc. So, developers of each platform will feel "at home" when using the new APIs.

Monday, July 13, 2015

Lightstreamer and OpenFin Integration

When it comes to fast changing data for online financial applications, software developers know how challenging it can be to deliver excellent performance, especially when web technologies are involved. On the one hand, real-time data must be streamed efficiently over the Internet through firewalls and proxies to reach the users' desktop or mobile device. On the other hand, the data must be rendered smoothly to provide the best possible user experience.

Lightstreamer and OpenFin joined forces to show, through a demo, how both these challenges can be addressed by combining their respective solutions: Lightstreamer for real-time data transport and OpenFin for real-time data visualization using HTML5.

Friday, June 26, 2015

It's Now Easier to Upgrade to Lightstreamer 6.0

It has been five months since the public release of Lightstreamer 6.0. To make the upgrade process simpler and faster, a few weeks ago we made available an online tool, which automatically converts Lightstreamer 5.1.2 configuration files to version 6.0.