This chapter presents a dynamic denotational semantics of the Java programming language. This semantics covers almost the full range of the base language, excluding only concurrency and the API's. A discussion of these limitations is provided in the nal section of the chapter. The abstract syntax described in Chapter 1 tells us how to construct a grammatically correct program. Every syntactically correct program describes an environment that provides all the information about what to do during program execution. The semantics presented in this chapter, formalizes the de nition of Java program beahior as de ned in the Java Language Speci cation JLS 1 .