A framework for building event sourced Java applications