Abstract. We introduce an expressive yet semantically clean core Java-like language,
Java Jr., and provide it with a formal operational semantics based on traces
of observable actions which represent interaction across package boundaries. A
detailed example based on the Observer Pattern is used to demonstrate the intuitive
character of the semantic model. We also show that our semantic trace equivalence
is fully-abstract with respect to a natural notion of testing equivalence for
object systems. This is the first such result for a full class-based OO-language
with inheritance.