3D's execution model intertwines with its rendering modes and with behaviors and their scheduling. This chapter first describes the three rendering modes, then describes how an application starts up a Java  3D environment, and finally it discusses how the various rendering modes work within this framework. Immediate Mode Immediate mode allows maximum flexibility at some cost in rendering speed. The programmer can choose to draw geometry directly or to define a scene graph. Retained Mode Retained mode allows a great deal of the flexibility provided by immediate mode while also providing a substantial increase in rendering speed.
All objects defined in the scene graph are accessible and manipulable.
The scene graph itself is fully manipulable. Retained mode also allows maximal access to objects through a general pick capability. Java  3D's retained mode allows a programmer to construct objects, insert objects into a database, compose objects, and add behaviors to objects. In retained mode, Java  3D knows that the programmer has defined objects, knows how the programmer has combined those objects into compound objects or scene graphs, and knows what behaviors or actions the programmer has attached to objects in the database. This knowledge allows Java  3D to perform many optimizations.