Implementation of JEM-a Java composite event package. Events are used in distributed systems for monitoring purposes since internal states are often hidden from the observer. Composite events are recursively defined events upon conditions involving other events and occur whenever those conditions are satisfied. In systems where conditions on the occurrences of multiple events need to be monitored, composite events are extremely useful for clarifying the semantics of the conditions to be monitored and the correlation of simpler events. We present a composite event package in Java called JEM, which accepts and monitors the composite events specified in a Java Event Specification Language (JESL). JESL is developed based on a unified formalism presented by G.Liu et al. (1998) for composite event and timing constraint specification. The system structure of JEM and its major components, i.e., Event Subscription Server, Composite Event Complier and Monitor, are described. Some performance experiment results and the scalability issue of JEM are also discussed. The paper also demonstrates the practicality of JEM by explaining how a network event correlation application is built using JEM.