In Java - Second Edition


The Second Edition of Modern Compiler Implementation in Java, by Andrew W. Appel and Jens Palsberg, published by Cambridge University Press (New York, Cambridge), ISBN 052182060X, is a very different book from the rest of the series.

While, finally, the design is much better, starting with the introduction of the Visitors, there are many shortcoming for us:

  • The language is no longer Tiger, in spite of the cover, but MiniJava, a subset of Java. It should be noted that, although dressed in OO fashion, the core language addressed in the first part of the book is no more OO than Tiger. Just as in the first edition, OO is addressed in Chapter 14 (a good thing IMHO).

  • This language seems, at first sight, to have a simpler syntax. In particular, it does not include the “l-value vs. array instantiation” ambiguity, which is a pity, since that’s a nice grammar massage exercise.

  • The appendix no longer contains the Tiger Language Reference Manual, but the MiniJava Language Reference Manual. This is a real problem for EPITA students who have to produce a compiler for Tiger. This is why our Tiger Language Reference Manual in Tiger Language Reference Manual is now much more detailed: so that students can buy the recent version of this book, and still have an access to the definition of the Tiger language.

  • MiniJava, as Java, does not need static links. Although this book does mention static links (and uses an example in… Tiger!), it contains much less material than the original edition. This is unfortunate: try to find another version of the book.

  • Sometimes the sentence are convoluted because… it would be nice to illustrate using Tiger… For instance page 151 “Record and Array Creation” begins with “Imagine a language construct {e1, e2, …, en} that creates an n-element record…”.

Nevertheless, because we don’t encourage book copying, we now provide a complete definition of the Tiger language in Tiger Language Reference Manual in Tiger Language Reference Manual.