Office Hours: TuW 10-11 & by appt.
Course home page:
As Java becomes increasingly popular as a general-purpose programming language, it is important to understand the key implementation technologies that support the language. This course is addressed to experienced programmers and system architects who want an in-depth understanding of how to design and optimize Java-based systems. The course will examine key aspects of Java "from the inside," with a focus on factors affecting performance and security. Alternative languages and implementation strategies will be considered throughout.
Learn how Java implementations work and how they might work better.
Basic familiarity with Java programming; compilers at the undergraduate level.
Primarily a reading and discussion course. Each student will perform a programming project or produce a written research report on some aspect of Java compilation covered by the course. If class size permits, students will be encouraged to make in-class presentations on their results.
The project or report will constitute the entire basis for the course grade.
Topics for projects and reports must be agreed upon between student and instructor by Feb. 12th at the latest. Projects and reports will be due on March 5th, i.e., at the next-to-last class.
No textbook is required; all necessary material is available for free on the web, or (in rare cases) will be handed out in class. The course web page will contain many useful pointers into this material.
If you wish to buy a book, the most useful is probably Lindholm and Yellin, The Java Virtual Machine Specification, Addison-Wesley, 1997. Note, however, that the text of this book is available for free on Sun's web site.
I know of two books that ``explain'' the material in Lindholm and Yellin:
Meyer and Downing, Java Virtual Machine, O'Reilly, 1997. (Not available on-line.)
Venners, Inside the Java Virtual Machine, to be published(?) by McGraw-Hill. (``Beta version'' currently available on line from their web site.)
All the software we use will also be available for free over the net. Projects can be done on your own machine or on the PSU Sun network, where some software will be pre-installed. Considerably more Java-related freeware is available for Unix systems than for MS OS's.
We will cover as many of these as we have time for!
Java Language Environment and Virtual Machine Architecture
Compiling for the JVM
Internal implementation of the JVM
Whole-program optimization methods
Security for mobile code
Coordinated distributed computing