Java Platform, Standard Edition

The Java package java.lang contains fundamental classes and interfaces closely tied to the language and runtime system.

This includes the root classes that form the class hierarchy, types tied to the language definition, basic exceptions, math functions, threading, security functions, as well as some information on the underlying native system.

The java.lang.ref package provides more flexible types of references than are otherwise available, permitting limited interaction between the application and the Java Virtual Machine (JVM) garbage collector.

Java has an expressive system of references and allows for special behavior for garbage collection.

The java.lang.ref also defines the class ReferenceQueue, which can be used in each of the applications discussed above to keep track of objects that have changed reference type.

Reflection is used to instantiate classes and invoke methods using their names, a concept that allows for dynamic programming.

For example: Method, Constructor, and Field objects can be used to dynamically access the represented member of the class.

They use the default character encoding for the platform, which as of J2SE 5.0 is represented by the Charset returned by the java.nio.charset.Charset.defaultCharset() static method.

The file pointer is moved implicitly by reading or writing and explicitly by calling the seek(long) or skipBytes(int) methods.

The FileDescriptor class is a file descriptor that represents a source or sink (destination) of bytes.

In J2SE 1.4, the package java.nio (NIO or Non-blocking I/O) was added to support memory-mapped I/O, facilitating I/O operations closer to the underlying hardware with sometimes dramatically better performance.

The subpackage java.nio.channels provides support for channels, which represent connections to entities that are capable of performing I/O operations, such as files and sockets.

Included in the package is the Collections API, an organized data structure hierarchy influenced heavily by the design patterns considerations.

Created to support Java applet creation, the java.applet package lets applications be downloaded over a network and run within a guarded sandbox.

Included in the java.beans package are various classes for developing and manipulating beans, reusable components defined by the JavaBeans architecture.

The java.awt, or Abstract Window Toolkit, provides access to a basic set of GUI widgets based on the underlying native platform's widget set, the core of the GUI event subsystem, and the interface between the native windowing system and the Java application.

The javax.rmi package provided support for the remote communication between applications, using the RMI over IIOP protocol.

Java SE Core Technologies - CORBA / RMI-IIOP Swing is a collection of routines that build on java.awt to provide a platform independent widget toolkit.

javax.swing uses the 2D drawing routines to render the user interface components instead of relying on the underlying native operating system GUI support.

It supports pluggable looks and feels (PLAFs) so that widgets in the GUI can imitate those from the underlying native system.

One inconsistency is that (as of J2SE 1.3) fonts are drawn by the underlying native system, and not by Java, limiting text portability.

It defines annotations for customizing Java program elements to XML Schema mapping.

Same as RMI and RMI-IIOP, this package is for calling remote methods of objects on other virtual machines (usually via network).

[8][9] Security alerts from Oracle announce critical security-related patches to Java SE.