You must add a |reason=
parameter to this Cleanup template – replace it with {{Cleanup|February 2006|reason=<Fill reason here>}}
, or remove the Cleanup template.
Java Platform, Standard Edition or Java SE (formerly known as Java 2 Platform, Standard Edition or J2SE up to version 5.0), is a collection of Java Application Programming Interfaces useful to many Java platform programs. The Java EE includes all of the classes in the Java SE, plus a number which are more useful to programs running on servers than on workstations.
General-purpose
java.lang
The java.lang package contains fundamental classes closely tied to the language and runtime system. This includes basic exceptions, math functions, threading, security functions, as well as some information on the underlying native system. It also contains the String class, and wrappers for numeric types like Integer.
Classes in java.lang are automatically imported into every application.
java.lang.ref
Application-garbage collector interaction is supported by the java.lang.ref package. One use for the package is the weak reference, which allows an application to refer to an object without the garbage collector cleaning it up. The technique is useful in caches, where the garbage collector randomly deletes from memory any objects no longer referred to.
java.lang.reflection
Reflection is a constituent of the Java API which enables Java code to examine and "reflect" upon Java components at runtime. Among other possibilities, reflection enables advanced debugging strategies.
Reflection is primarily used to call classes and methods using their names, a concept that allows for dynamic programming. The cost of reflection is the inability of the compiler to check for the existence of called classes.
java.io
The java.io package groups routines for normal input and output. This includes streams and file handling. Noteworthy streams are InputStreamReader, FileReader, and BufferedReader. InputStreamReader takes as a parameter System.in. The InputStreamReader accepts character input from the system. FileReader reads one character at a time from a data file. BufferedReader takes as a parameter either FileReader or InputStreamReader, and changes the input to word by word as opposed to one character at a time.
java.math
The java.math package supports multiprecision arithmetic (including modular arithmetic operations) and provides multiprecision prime number generators used for cryptographic key generation. The main classes of the package are BigInteger and BigDecimal.
java.net
The java.net package provides special IO routines for networks, allowing HTTP requests, as well as other common transactions. It cannot yet achieve high performance computing (HPC).
java.text
The java.text package implements parsing routines for strings and supports various human-readable languages and locale-specific parsing.
java.util
Data structures that aggregate objects are the focus of the java.util package. Included in the package is the Collections API, an organized data structure hierarchy influenced heavily by the design patterns considerations.
Special-purpose
java.applet
Created to support applet creation, the java.applet package allows applications to be downloaded over a network and run within a guarded sandbox. Security restrictions are easily imposed on the sandbox. A developer, for example, may apply a digital signature to an applet, thereby labeling it as safe. Doing so removes most restrictions but typically costs the developer hundreds of dollars for a security certificate. (Such certificates are issued by such agencies as Thawte or Entrust.)
java.beans
Included in the java.beans package are various classes for developing and manipulating beans, reusable components defined by the JavaBeans architecture. The architecture provides mechanisms for manipulating properties of components and firing events when those properties change.
Most of the APIs in java.beans are intended for use by a bean editing tool, in which beans can be combined, customized and manipulated. One type of bean editor is a GUI designer in an integrated development environment.
java.awt
The Abstract Windowing Toolkit contains routines to support basic GUI operations and uses basic windows from the underlying native system. Many independent implementations of the Java API (such as GNU's libgcj) implement everything but AWT, which is useless to most server-side Java applications. This package also contains the Java2D graphics API.
java.rmi
The java.rmi package provides for remote communication between two java applications.
java.security
Support for security, including the message digest algorithm, is included in the java.security package.
java.sql
An implementation of the JDBC API (used to access SQL databases) is grouped into the java.sql package.
javax.swing
Swing is a collection of routines that build on java.awt, using 2D drawing routines to give more drawing power than normally allowed. One cost of this flexibility is that Swing elements may not exist outside of java.awt windows. Swing can prove to be much slower than the java.awt package because it is implemented entirely in Java. The AWT is implemented entirely using native code.
Swing is a very rich system in its own right, supporting pluggable looks and feels (PLAFs) so that widgets in the GUI can imitate those from the underlying native system. Design patterns permeate the system, especially a modification of the model-view-controller pattern, which loosens the coupling between function and appearance. One inconsistency is that (as of JDK 1.3) fonts are drawn by the underlying native system, and not by Java, limiting text portability. Workarounds, such as using bitmap fonts, do exist. In general, layouts are used and keep elements within an aesthetically consistent GUI across platforms.