1.0 Introduction
When you write a Java application, think about the fact that users with varying abilities will want to use your product. There will be users who cannot use their hands, and users who are blind. That means they may not be able to use a mouse, type on a keyboard, see a screen, or read a printed User's Guide.
Over the years, disabled users and Assistive Technology Vendors (ATVs) have invented incredibly clever work-arounds for these problems. Voice input replaced the mouse, mouth sticks and switches replaced the keyboard, text-to-speech synthesis replaced the screen, and online books replaced printed books.
Some products include unintentional roadblocks to people who have disabilities. Some examples:
- Programs that provide only mouse input (impossible for people who are blind or who use voice control - this also applies to hardware that does not have a mouse).
- Programs that use audio-only messages (individuals who are deaf cannot hear the messages - this also applies to people with systems that do not have sound capability).
- Operating systems that define Ctrl+Alt+Del to reboot the system (try doing this with only one hand).
The following section discusses disability issues. Understanding these issues will help you better understand how to make an accessible Java solution.
1.1 Disability needs
The following describes what disabled users need:
Users who are blind or who have low vision need:
- Keyboard alternatives to the mouse (mouseless operation).
- Text descriptions of graphics and video.
- To know which object has focus and when the focus changes.
- To know the default action and how to take that action.
- Online documentation.
- Screen magnification.
- High color contrast.
Users who are deaf or hard of hearing need:
- A visual indication of any sound.
- Text captioning of multimedia presentations.
- Text description of significant audio.
Users who are mobility impaired need:
- Voice or assistive device input, instead of keyboard or mouse input.
- Alternatives to multiple key inputs.
- Online documentation.
Users who have multiple disabilities need:
- Combinations of solutions; for example, speech output and voice input that do not conflict.
However as an application developer you don't have to provide all of the solution. You need to enable your application so that programmers writing and creating Assistive Technologies (AT) have the ability to obtain from the application program what it needs to present to it's users.
1.2 Why java for accessibility?
Java was first developed for use in small appliances. It has since evolved into a language that enables applications to run on multiple operating systems and hardware platforms. Because Java runs virtually everywhere, it was enthusiastically adopted for Web and Internet applications.
Java is object-oriented from the ground up. This provides a mechanism for application components to export accessibility information about themselves to assistive technologies.
Java's characteristics and these factors made it ideal for developing industry standards for accessible solutions.
The software engineers at Sun and IBM who developed Java technology are well aware of accessibility issues. They consulted with disabled customers, and business, education, and rehabilitation experts in the computer accessibility community. They conducted extensive reviews and beta testing of their code. As a result, many accessibility features are already built into Java and more features continue to be added.
If you exploit the Java accessibility features when you develop software, you win in three ways. First, the features are easy enough to incorporate that you won't expend lots of development resource. Second, your software will be universally accessible; customers of all abilities will be able to work with it. Third, features that are designed specifically for disabled users often make the product more usable for non-disabled users as well. For example, if you "keyboard-enable" your application so that it is easier for blind users to read with their screen readers, it will be easier for people who use voice control software as well.
Assistive Technology Vendors (ATVs) are winners too. If you implement your application using the Java accessibility features, ATVs have a much easier time making their products work with yours. IBM took advantage of this technology.
