The java.lang package contains the collection of base types (language types) that are always imported into any given compilation unit. This is where you'll find the declarations of
Object (the root of the class hierarchy) and
Class, plus threads, exceptions, wrappers for the primitive data types, and a variety of other fundamental classes.
Number classes--these classes are "wrapper" classes for the primitive types. You use these classes in applications where the primitive types must be stored as objects. Note also the
Throwable class--this is the root class for all exceptions and errors.
java.io package contains the declarations of classes to deal with streams and random-access files. This is where you find the rough equivalent of the Standard I/O Library you're familiar with on most UNIX systems. A further library is called
java.net, which provides support for sockets, telnet interfaces, and URLs.
Note that the grayed out boxes with
DataOutput represent interfaces, not classes. Any new I/O class that subclasses one of the other classes can implement the appropriate interface if it needs to.
The java.util package contains various utility classes including collection classes such as Dictionary and Vector. Here you'll find common storage classes such as
Stack, as well as special use classes like
Time and classes to handle encoder and decoder techniques. This picture illustrates the useful classes contained in the
java.awt package is an Abstract Windowing Toolkit that provides a layer enabling you to port Java applications easily from one window system to another. This library contains classes for basic interface components such as events, colors, fonts, and controls such as buttons and scrollbars.