An Operational Semantics for Java