

Reactive (Dataflow) Programming in Java and Clojure with Quasar and Pulsar - pron
http://blog.paralleluniverse.co/2014/02/20/reactive/

======
weavejester
What's the performance characteristics of Pulsar vs. core.async like?

~~~
pron
I did a benchmark a while ago. If your go blocks block a lot and communicate
with many other go blocks, then Pulsar can be _much_ faster (without changing
your code if you're using Pulsar's core.async API). If they don't, then
core.async can be faster than Pulsar if you're using Pulsar's default
scheduler, which is based on ForkJoinPool, or a little slower than Pulsar when
using an ExecutorThreadPool-based scheduler to schedule the fibers (see the UI
example in the post on how to create and assign schedulers).

------
namelezz
How is Quasar vs Akka?

~~~
pron
I'm not sure whether Akka supports reactive programming or not, but the main
difference is that Quasar has true lightweight threads which means CSP like in
Go, and actors just like in Erlang (Quasar actors can, and should, block, they
have selective receive just like Erlang etc.). Also, I think Akka has a
distinct Scala feel even to its Java API.

~~~
based2
[http://typesafe.com/platform/runtime/akka](http://typesafe.com/platform/runtime/akka)

[http://en.wikipedia.org/wiki/Reactive_programming](http://en.wikipedia.org/wiki/Reactive_programming)
[http://en.wikipedia.org/wiki/Functional_reactive_programming](http://en.wikipedia.org/wiki/Functional_reactive_programming)

[http://www.reactivemanifesto.org/](http://www.reactivemanifesto.org/)

[http://vimeo.com/user18356272/review/66548920/f93e3fa7d9](http://vimeo.com/user18356272/review/66548920/f93e3fa7d9)

[http://letitcrash.com/](http://letitcrash.com/)

~~~
pron
The "reactive" in the "reactive manifesto" shares only the name with reactive
programming, nicely explained in the Wikipedia articles you link to (which are
also linked in the article).

Same goes for Akka. I don't know if it supports reactive programming (despite
the use of the word "reactive" in the materials you linked to), but none of
the links you supplied suggests that it does.

~~~
TuringTest
Are those really that different? Sure, the manifesto spends more time
showcasing the benefits of a reactive system than explaining how it works, and
that explanation takes the form of an event-based view.

But event propagation ''is'' a way to transfer change throughout a system
built on data flows, so it fits the definition of the reactive parading. In
doing so, the manifesto could be seen as a particular way to realize RP, a
subset of a larger concept.

Am I missing something? Why do you consider they don't have anything in common
but the name?

~~~
the_af
To be honest I'm not even sure what reactive programming means. I took the
Reactive Programming course from Coursera, by Odersky, Kuhn & Meijer, and in
the forums Kuhn explicitly said it's not _functional_ reactive programming.

I'll admit I'm confused by the relationship between FRP, RP and Akka's brand
of RP. The only thing I'm certain is that Akka's RP != FRP. The assignments
from the course were full of side-effects, mutability and global variables.

~~~
seanmcdirmid
Rx is not FRP, for sure, but even most impure FRP systems (like flapjax) are
not really FRP given a pure definition.

"Reactive" is quite vague. The earliest programming systems labelled
"reactive" were meant for expressing low level real time control behavior, but
these days the word could just as well be related to UI or enterprise/web data
processing (note, that the above projects don't really help with UI, they are
more for the latter!).

