Introduction to JVM Languages by Vincent van der Leun