Java Producer Provider

First pass at adding java producer functionality.  

A lot still needs to be cleaned up
I don't entirely understand why the `#_push` method is here, it's incredibly short. What's the value of keeping this as a separate method instead of putting those two lines in `#push` above?