Coming from his background in Java development, the concept of using delegates and categories, as opposed to subclassing, was a bit foreign to Marcus Zarra. In Java subclassing, nearly everything was quite common. So common in fact, that Sun provided generic subclasses in quite a few cases. Objective-C and Cocoa, however, have a different approach. Marcus walks you through the different approaches used in Objective-C programming. Also: the Java platform includes a number of packages that are concerned with the movement of data into and out of programs. These packages differ in the kinds of abstractions they provide for dealing with I/O (input/output). This chapter covers primarily the stream-based model of the java.io package.