One critique of Akka, that comes up every now and then is the lack of type safety. Actors essentially represent a PartialFunction[Any, Unit] which is, from a type point of view, something of the worst you can have. It tells you nothing useful; Anything can go in, it might or might not be processed and if so, anything anywhere anytime can happen. It forgoes all the benefits of a statically typed language. There are many reasons for this though, amongst others: location transparency and context.become. While its true that only Any allows us to model everything that can happen, it doesn't mean that everything will always happen. Not every actor gets moved around between different nodes and changes its behavior to something completely unrelated over and over again.

So, why not tell the compiler that we know something about certain actors and have it help us? We're in a statically typed language after all. We're used to compiler support when it comes to refactoring, design and composition. Why forgo this for the sake of a feature I don't want to use.

Hence, Typed Actors!

Akka underwent some experiments itself, for example from typed-channels and typed-actors to akka-typed. Especially the last approach, Akka Typed is really nice and the benefit of having an ActorRef[A] lead to the creation of this library.

Programming language: Scala

typed-actors alternatives and similar packages

Based on the "Functional Reactive Programming" category

  • Vert.x

    Vert.x is a tool-kit for building reactive applications on the JVM
  • RxScala

    Reactive Extensions for Scala
  • Scala.Rx

    An experimental library for Functional Reactive Programming in Scala (reactive variables). Scala.js compatible.
  • Monix

    Extensions to Scala’s standard library for multi-threading primitives and functional reactive programming. Scala.js compatible.
  • SynapseGrid

    an FRP framework for constructing reactive real-time immutable data flow systems. It implements an original way of running and organizing event-driven systems based on Petri nets. The topology can be viewed as a .dot graph. The library is compatible with Akka and can seamlessly communicate with other actors.
  • REScala

    REScala is a library for functional reactive programming on the JVM and the Web. It provides a rich API for event stream transformations and signal composition with managed consistent up-to-date state and minimal syntactic overhead.
  • Reactive Collections

    A library that incorporates event streams and signals with specialized collections called reactive containers, and expresses concurrency using isolates and channels.
  • scala.frp

    Functional Reactive Programming for Scala (event streams).

Do you think we are missing an alternative of typed-actors or a related project?

Add another 'Functional Reactive Programming' Package