title: Akka and its Error Kernel
body: <p>I am reading the Akka (<strong>Java lib</strong>) docs and need clarification on some of their own proclaimed <a href="http://doc.akka.io/docs/akka/2.0.2/general/actor-systems.html" rel="nofollow"><em>Akka/Actor Best Practices</em></a>.</p>
  
  <blockquote>
    <p>Actors should not block (i.e. passively wait while occupying a Thread) on some external entity...The blocking operations should be 
      done in some special-cased thread which sends messages to the actors which shall act on them.</p>
  </blockquote>
  
  <p>So what does a code example of this look like in Akka/Java? If an <code>Actor</code> isn't an appriote place to put code that <em>has</em> to block, then what <em>does</em> satisfy the definition of "some special-cased thread"?</p>
  
  <blockquote>
    <p>Do not pass mutable objects between actors. In order to ensure that, prefer immutable messages.</p>
  </blockquote>
  
  <p>I'm familiar with how to make immutable classes (no public setters, no public fields, make the class <code>final</code>, etc.). But does Akka have its own definition of an "immutable class", and if so, what is it?</p>
  
  <blockquote>
    <p>Top-level actors are the innermost part of your Error Kernel...</p>
  </blockquote>
  
  <p>I don't even know what this means! I understand what they mean by "top-level" actors (highest in the actor/manager/supervisor hierarchy), but what's an "Error Kernel", and how does it relate to actors?</p>