BT

Reactive Programming as an Emerging Trend

by Dio Synodinos on Aug 28, 2013 |

Reactive programming (RP) is based on data flows and the propagation of change, with the underlying execution model of a programming language automatically propagating changes through the data flow. With the popularity of event-driven, scalable, and interactive architectures both on the server and the client, the concept of  “reactiveness” is increasingly gaining attention.

InfoQ has already been covering this paradigm for a couple of years, and a few weeks ago the Gartner research firm included both “Reactive Programming” and “Event-Driven Web” in their “Hype Cycle for Application Development, 2013” publication (“On the Rise” section).

Around a month ago Bruce Eckel, author of numerous books on programming, and Jonas Boner, creator of Akka and CTO of Typesafe, published the “The Reactive Manifesto” which tries to define what reactive applications are.

These applications should be capable to:

  • React to events: the event-driven nature enables the following qualities.
  • React to load: focus on scalability rather than single-user performance.
  • React to failure: build resilient systems with the ability to recover at all levels.
  • React to users: combine the above traits for an interactive user experience.

Following the publication of this manifesto, Martin Odersky creator of Scala, Erik Meijer creator of Reactive Extensions and Roland Kuhn Akka Tech Lead, have announced a free course on Coursera called “Principles of Reactive Programming”:

The aim of the second course is to teach the principles of reactive programming. Reactive programming is an emerging discipline which combines concurrency and event-based and asynchronous systems. It is essential for writing any kind of web-service or distributed system and is also at the core of many high-performance concurrent systems. Reactive programming can be seen as a natural extension of higher-order functional programming to concurrent systems that deal with distributed state by coordinating and orchestrating asynchronous data streams exchanged by actors.

A company that has been using RP extensively is Netflix, who have even contributed a Java port of Rx:

Functional reactive programming with RxJava has enabled Netflix developers to leverage server-side conconcurrency without the typical thread-safety and synchronization concerns. The API service layer implementation has control over concurrency primitives, which enables us to pursue system performance improvements without fear of breaking client code. RxJava is effective on the server for us and it spreads deeper into our code the more we use it.

Facebook also recently released the React JavaScript library for building next generation user interfaces. Facebook Engineer Stoyan Stefanov describes the main concept behind React:

React lets you build your application using components that know how to render some data. When data changes, components update automatically in a very efficient way, only where necessary. And all the job of attaching and detaching event handlers is taken care of for you. Also efficiently - using delegation.

It is worth noting that RP is already enjoying  a lot of attention in the front-end developers community, which started around 2009 with the original Flapjax paper [PDF], and continued with several libraries that implemented RP principles like Bacon.js, Knockout, Meteor, React.js, Reactive.coffee, and RxJS.

During the QCon San Francisco 2013 conference there will be extensive coverage of the Reactive paradigm along side all other major software & IT trends and innovations, both in tutorials and within regular tracks, so come and take advantage of the early bird registration!

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

New Proposal: "Self-Adaptive Manifesto" by William Louth

Lets try and take a slightly bigger step forward with the "Self-Adaptive Manifesto" (SAM I AM). To make it easy for those who have already adopted the "Reactive Manifesto" simply replace "react" with "adapt". Here we go.

These applications should be capable to:
Adapt to events (perception)
Adapt to load (behavior & control)
Adapt to failure
Adapt to users

more information on adaptive control can be found here: www.jinspired.com/research/adaptive-control-in-...

A good paper on self adaptive research in context of software engineering can be found here:
www.jinspired.com/site/future-research-directio...

Re: New Proposal: "Self-Adaptive Manifesto" by Sandeep Patil

Can't agree more. Shouldn't it be "adaptive" rather than "recative"?

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

2 Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2014 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT