OK. Thanks for starting the new thread.

I would say that we then [CANCEL] the ongoing vote about Scala vs. Java
until the Akka issue is resolved.


On Fri, Sep 5, 2014 at 12:54 PM, Stephan Ewen <[email protected]> wrote:

> Okay, to make things clearer, I will start a separate thread for the
> proposed use of Akka, which talks only about the Akka/RPC question, because
> things keep getting confused.
>
> Let's postpone this thread (Java vs Scala) until we resolved the Akka
> question first.
>
>
> On Fri, Sep 5, 2014 at 12:10 PM, Till Rohrmann <[email protected]>
> wrote:
>
> > Hi Daniel,
> >
> > the genesis of my proposal was that I resumed Asterios' effort to
> introduce
> > Akka to handle our RPC calls. Asterios idea was to incorporate Akka into
> > Flink transparently. That meant to use Akka for the MethodInvoker of the
> > proxies and as the server to handle the calls. While rebasing it on the
> > latest master of Flink I noticed that we left out some potential of Akka
> by
> > pursuing this approach. Among others, this includes the supervision,
> > monitoring and exception forwarding mechanism. By making the JobManager
> and
> > TaskManager (and possibly other components if it proves worth) actors, we
> > would get this for free, without having to go through the proxies, method
> > invoker and call actors. Furthermore, I think that this adds unnecessary
> > complexity. If we use Akka, why not properly? At this point you are right
> > that we did not vote on using Akka and I did not think about it. I
> thought
> > that by continuing Asterios work, it would comply with the project.
> >
> > However, making JobManagers and TaskManagers actors comes at the price of
> > rewriting them, which is unavoidable. Since Akka offers Scala as well as
> > Java bindings, it would be possible to do it with both. Since Scala
> > supports pattern matching, lambdas and embraces more the functional
> > paradigm, it is in my view better suited for implementing an actor based
> > RPC system. With Java, the code will become more verbose and probably not
> > so neat to read.
> >
> > For example, for each message it would be necessary to create a Java
> class
> > with the members, getters and setters whereas in Scala it is most of the
> > time a one line case class definition. For each call back it would be
> > necessary to implement an interface and overwrite the corresponding
> method
> > whereas for Scala it is just a lambda expression (to be precise an
> > anonymous function). For short call back functions we would have more
> Java
> > boiler plate code than actual function code.
> >
> > In order to distinguish the different messages in Java, one would have a
> > long list of if(msg instanceof RegisterMessage){} else if (msg instanceof
> > SubmitTask){}.... and cannot directly access the members of the message
> > classes. In Scala it would be simply a pattern matching. Since both
> > languages are Turing-complete and even run in the same JVM, the
> differences
> > are thus conciseness and expressiveness. But in the end everything can
> also
> > be implemented in Java.
> >
> > There is no functional argument for Scala just the advantages of a
> shorter
> > and probably more readable implementation. Since I will probably
> implement
> > it, I'd opt for the shorter solution and thus I started this vote. But
> > there is no necessity to use Scala here. If we decide for Akka, then Akka
> > will simply motivate the use of Scala but not enforce it.
> >
> > Best regards,
> >
> > Till
> >
> >
> > On Fri, Sep 5, 2014 at 11:24 AM, Kostas Tzoumas <[email protected]>
> > wrote:
> >
> > > Hi Daniel,
> > >
> > > +1 on the argument about attracting developers being irrelevant, the
> > > argument can work both ways and is very brittle
> > >
> > > The reasons for using Akka as a library (irrespective of the
> programming
> > > language) have been clearly articulated in my opinion by Stephan and
> Till
> > > in this thread.
> > >
> > > The reasons for using the Scala Akka API versus the Java Akka API is
> > simply
> > > ease and speed of development, as Scala is a better language for this
> > task.
> > > Perhaps Till could expand the argumentation a bit more here, but I
> > suspect
> > > that a language with pattern matching is a good fit for message
> > > passing-like systems.
> > >
> > > Kostas
> > >
> > >
> > >
> > > On Fri, Sep 5, 2014 at 12:38 AM, Ufuk Celebi <[email protected]> wrote:
> > >
> > > > Hey Daniel,
> > > >
> > > > On Thu, Sep 4, 2014 at 11:36 PM, Daniel Warneke <[email protected]>
> > > > wrote:
> > > >
> > > > > I agree that the questions “akka” and “Scala” should be treated
> > > > > separately. Unfortunately, this is not how the discussion has been
> > led
> > > so
> > > > > far. Instead, the new akka RPC service is used to motivate the
> > > necessity
> > > > > for Scala in the runtime core. I still don’t see that necessity. I
> > > tried
> > > > to
> > > > > find the implementation of the new akka RPC service on github. The
> > only
> > > > > code I found was from Asterios, but it looks like he was perfectly
> > able
> > > > to
> > > > > encapsulate the whole akka RPC thing in 5 Java classes [1].
> > > > >
> > > >
> > > > I don't think that anybody is talking about the necessity of Scala.
> > Yes,
> > > > Akka and an actor based refactoring of core runtime parts result in a
> > > hard
> > > > dependency to Scala for the core (because Akka is written in Scala),
> > but
> > > it
> > > > does *not* necessitate to do the refactoring itself in Scala, because
> > > there
> > > > is an Akka Java API as well.
> > > >
> > > > Are you concerned with the dependency to Scala or with using Akka's
> > Scala
> > > > API?
> > > >
> > > > I think that Till started this thread and the [VOTE] exactly because
> he
> > > is
> > > > well aware that it is *not* necessary to do it in Scala. He sees good
> > > > reasons to do it in Scala and asks the community to vote on it.
> Again,
> > > > because he is aware that this is not a small or light weight change.
> > > >
> > > > The second argument (Scala will attract new developers to the
> project)
> > is
> > > > > nothing but speculation. This might as well totally backfire and
> lead
> > > to
> > > > > the opposite.
> > > > >
> > > >
> > > > I agree that this point is speculative and both outlined outcomes
> > > (attract
> > > > or repel developers) are possible. But it is also not the only
> argument
> > > > that has been raised in favor of Scala. Other more technical (not
> > > > speculative) points have been given. It is the goal of the vote to
> > find a
> > > > consensus about whether these points are sufficient or not.
> > > >
> > > >
> > > > > The only explanation I have for this push towards akka and Scala is
> > > that
> > > > > there are already plans to expand the usage of akka way beyond pure
> > > RPC.
> > > > In
> > > > > this case, I feel these plans should be clearly articulated on the
> > dev
> > > > > list. A simple RPC service does not justify the proposed changes in
> > my
> > > > > opinion.
> > > > >
> > > >
> > > > There is no push for Scala. It's a vote. And the reasons for going
> for
> > > Akka
> > > > have been repeated a few times by now.
> > > >
> > > > I think the way that Asterios initially introduced Akka beneath the
> > > > existing RPC proxy service (independently of whether he did in Scala
> or
> > > > Java) would not allow us to make use of central features of Akka
> (some
> > of
> > > > which Till and Stephan outlined).
> > > >
> > > > Best wishes,
> > > >
> > > > Ufuk
> > > >
> > >
> >
>

Reply via email to