Java SE provides Java Access Bridge, Java Accessibility API (JAAPI), and Java Accessibility Utilities to enable you to create accessible applications.
Java Access Bridge
Java Access Bridge enables certain Java applications to be visible to assistive technologies on Microsoft Windows. See Enabling and Testing Java Access Bridge.
Java Accessibility API
The Java Accessibility API (JAAPI), contained in the javax.accessibility package, is one of the core parts of the Java Foundation Classes (JFC). The JFCs are a comprehensive set of graphical user interface components and foundation services designed to simplify deployment of Internet, intranet and desktop applications. JAAPI enables you to create Java applications that are accessible to persons with disabilities. Accessible Java applications are compatible with assistive technologies, such as screen readers, screen magnifiers, speech recognition systems, and refreshable braille displays. The JAAPI makes GUI component information available to assistive technologies, giving users alternative presentation and control of Java applications.
Support for JAAPI is built into Swing components; see How to Support Assistive Technologies in The Java Tutorials (Java SE 8 and earlier).
Java Accessibility Utilities
Java Accessibility Utilities, which is contained in the package com.sun.java.accessibility.util, is a set of utility classes that help assistive technologies provide access to GUI toolkits that implement the Java Accessibility API. Java Accessibility Utilities monitor events related to UI components. They also help assistive technologies get additional information about a GUI, such as the current position of the mouse, or the window that currently has focus. See Java Accessibility Utilities Overview.
Pluggable Look and Feel
The Java Foundation Classes implement a Pluggable Look and Feel architecture. This architecture allows non-visual manifestations of a user interface to replace or enhance the visual presentation of an application. The expression of the user interface is separated from the underlying structure and data of each individual component. This is accomplished by separating the user interface of the component from its model. The model of a component is the structure which encapsulates the state and information that is presented to the user by the user interface. For more information on this architecture, see About the JFC and Swing in The Java Tutorials (Java SE 8 and earlier).