This chapter discusses the higher levels of program structure for Java programs. The two levels of organization discussed in this chapter are compilation units and packages. A compilation unit contains the source code for one or more classes or interfaces. A package is a collection of related compilation units.
This chapter also discusses the two most common top-level Java program architectures: applications and applets. An application is a stand-alone Java program that can be run directly from the command line (or other operating system environment). An applet is a Java program that must be run from within another program, such as a Web browser. In the future, applets will even be hosted by other environments, such as cellular phones and personal digital assistants.
A compilation unit is the highest-level syntactic structure that Java recognizes:
Only one of the classes or interfaces declared in a compilation unit can be declared public.
A compilation unit usually corresponds to a single source code file. However, the Java language specification allows compilation units to be stored in a database. If compilation units are stored in a database, the limit of one public class or interface per compilation unit does not apply, as long as there is a way to extract the compilation units from the database and place them in individual files that contain no more than one public class or interface per file. This exception to the one public class or interface per compilation unit rule is useful if you are implementing a Java development environment.
Every compilation unit is part of exactly one package. That package is specified by the package directive that appears at the beginning of the compilation unit. If there is no package directive, the compilation unit is part of the default package.