The demo collection at http://jtf.acm.org/demos/ is considerably larger. In particular, the assignments page includes a large number of new “nifty” assignments, including popular computer games like Spacewar, Boggle, Solitaire, Sudoku, Surround, and Hunt the Wumpus, along with assignments that explore the Mandelbrot set and generate random mazes.
The File menu for the Program class includes two new items: one that exports a program as an applet and one that submits a program via email. These facilities make it much easier for students to publish or submit their work.
The acm packages now support serialization for all appropriate classes, most notably the graphical object hierarchy.
The acm packages have been completely updated so that they conform to J2SE Version 5. In particular, the code now uses type-safe generic collections throughout the implementation.
The GImage class now includes a new constructor and methods that make it easy to convert between images and pixel arrays.
The acm.util package offers new SoundClip and MovieClip classes, which support playback and manipulation of audio and video media. These classes make it easy to introduce programming concepts through dynamic media as pioneered in Mark Guzdial’s Media Computation textbook.
The acm.graphics package now interprets getBounds in a way that conforms to Java’s traditional interpretation of bounding boxes. In previous versions of the package, the bounding box returned by getBounds included the pixels at the bottom and right edge of a rectangle or oval, which made them inconsistent with the Java graphics model.
The acm.util package now exports a FileChooserFilter class that makes it easier to create file dialogs. The primary motivation for including this class was to avoid the name conflict between the different FileFilter classes that appear in java.io and javax.swing.
The MediaTools class in the acm.util package now includes an openDataFile method that makes it easier to read data files from applets.
The Platform class in the acm.util package exports the methods getJTFVersion and compareVersion that make it possible for client code to check which version of the library is loaded.
The startup logic for the Program class has been substantially improved, making it possible to eliminate the main method in a wider variety of environments.
The ProgramMenuBar class has been redesigned to support the development of editors that operate compatibly with the acm packages.
The acm.program package now includes a CommandLineProgram class that operates even in the absence of a graphics environment.