BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Reactive Programming as an Emerging Trend

Reactive Programming as an Emerging Trend

Leia em Português

This item in japanese

Lire ce contenu en français

Bookmarks

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!

Rate this Article

Adoption
Style

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.

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

Community comments

  • Re: New Proposal: "Self-Adaptive Manifesto"

    by Sandeep Patil,

    Your message is awaiting moderation. Thank you for participating in the discussion.

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

  • Re: New Proposal: "Self-Adaptive Manifesto"

    by Peti Koch,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Too bad, the original jinspired.com-papers from the comment from William are not available anymore... the links are forwarded to the autoletics start-page, where I don't find the articles...

    About William's comment:
    The "self-adaptive manifesto" is an interesting idea.

    My personal opinion is that something like a reactive-stream works great - out of the box without any adjustment. It just works.

    Where as an adaptive system instance must be first properly adjusted: in the simpler cases using an auto-adaptive controller (automatically), in other cases propably manually. The stability of the adaptive system depends then fully on the quality of the (auto) adjustment and the amount of disturbance which the system can handle.

    The problem with the reactive-streams is, that we live in world full a "old" synchronous (maybe blocking) stuff and API's. If we write every API and system new from scratch using reactive-stream technology, great. Otherwise we have to adapt, if we wan't to use the "old" things. And here comes the adaptive stuff!

    Best regards from Switzerland,
    Peti Koch

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

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

BT