The 3 tier architecture logically separates the functions of an application into a user interface component, a server business logic component, and a database component. Many application server products, ORBs, and middleware products provide support for building and deploying applications using the 3 tier architecture. In most of these cases a primary role of the middle tier business logic components is to manipulate data stored in and accessed from the 3rd tier. The GemStone/J application server includes a capability for creating, storing, and using persistent Java objects in the middle tier. We argue that the use of persistent Java objects in the middle tier of a 3 tier application offers significant advantages over other approaches.