title: Are there patterns for writing a library that hides its actor system implementation?
body: <p>All of the actor system implementations I have seen (primarily using Akka) presume a web app, meaning an HTTP interface that can quite naturally be served by an asynchronous actor system.</p>
  
  <p>But what if I'm writing a desktop app, or a library to be used as a component of a platform-independent app?</p>
  
  <p>I want client subroutines to be able to call <code>val childObj = parentObject.createChild( initParam )</code> without having to know about my allowed message types, or the actor system in general. eg, Not <code>parentObject ! CreateChild( initParam )</code>, and then handle a response received in another message.</p>
  
  <p>I know I could hide the asynchronous responses behind Futures, but are there other known patterns for a synchronous system handing off computation to a hidden actor system?</p>
  
  <p>(I realize that this will result in a blocking call into the library.)</p>