The Java API is an extensive collection of library routines (written in the Java programming language or in native code) that perform basic tasks such as GUI display and manipulation, sorting and countless others.

Sun has defined 3 platforms targeting different application environments and segmented many of its APIs so that they belong to one of the platforms. The platforms are:

Some additional APIs not in the above platforms may be found here.

Table of contents
1 Organization of the APIs
2 API Development
3 Comparisons with Other Languages
4 Legal Issues

Organization of the APIs

The classes in the Java APIs are organized into separate groups called packages. Each package contains a set of related interfaces, classes and exceptions. Refer to the separate platforms for a description of the packages available.

API Development

The set of APIs is controlled by Sun Microsystems in cooperation with others through its Java Community Process program. Companies or individuals participating in this process can influence the design and development of the APIs, but Sun retains ownership and control of the APIs. This process has been a subject of controversy.

Comparisons with Other Languages

See Comparison of Java to C++

Legal Issues

In the corporate programming culture, legal issues surrounding Intellectual Property often complicate technical issues. This fact of life is especially apparent with regard to the Java API.

For example, the Swing API often imitates the underlying native platform's GUI, using perfectly cross-platform code. This way, users (ideally) feel comfortable and unaware they're working on a non-native platform, without Sun needing to pollute Swing with native code. However, the native system's copyright or trademark owner may demand that the look be implemented in terms of the underlying native widgets, as in the case of the Aqua look and feel in Apple's Mac OS X. Apple considers Aqua to be a competitive advantage, and desires the look and feel to be confined to their operating system.