3. Motivation
WHO
Accessibility = usability for all. More than 1.3 billion people live
with a disability. (source: WHO)
Accessibility is about inclusive,
ethical design.
4. “Digital accessibility ensures everyone can
perceive, understand, navigate and interact
with information on the internet, regardless of
ability. ” Source:https://case.edu/accessibility/what-accessibility
Source: https://pixabay.com/photos/laptop-digital-device-technology-5673901/
5. Goals
Java’s role in accessibility Impact of API design and
documentation
Use AI to augment accessibility
6. The State of Accessibility Today
W3C WCAG
Accessibility features benefit
everyone.
WCAG 2.2 Guidelines represent an
industry standard. (see W3C WCAG)
Companies face lawsuits, brand
damage, and lose users over poor
accessibility.
The European Accessibility Act came into effect on 28 June 2025.
7. The Four Principles of Accessibility
Perceivable - Ensure that all
users can consume the content,
whether they rely on sight, sound,
or tactile feedback.
Operable - Design interactions
that can be carried out using
different input methods, such as a
keyboard, mouse, touch device, or
voice control.
Understandable - Use clear,
readable language and intuitive
instructions.
Robust - Build your application
so that it functions correctly
across various platforms and
technologies, including assistive
tools like screen readers and
speech recognition systems.
Source: https://www.w3.org/TR/UNDERSTANDING-WCAG20/intro.html
8. WCAG Levels Overview
AAA
AA
A Basic accessibility features like making sure all
interactive elements are keyboard accessible.
Success criteria includes providing text alternatives for
images and ensuring consistent navigation throughout the
site.
Meeting this level involves providing sign language
interpretation for audio content, ensuring a contrast ratio
of at least 7:1, etc.
9. “The power of the Web is in its universality.
Access by everyone regardless of disability is
an essential aspect.”
Tim Berners-Lee
Source:https://pixabay.com/photos/dew-water-drop-droplets-dewdrop-4567294/
10. Universal Accessibility Tools
Tools and Purposes Desktop Examples Web Examples
Screen readers read text aloud for users
with low vision or blindness.
NVDA, JAWS, VoiceOver ChromeVox
Readability tools remove clutter to make
pages easier to read.
Mercury Reader
Color contrast adjusters let users tweak
colors for better visibility.
Colour Contrast Analyser (TPG) Dark Reader, ColorZilla
Focus enhancers highlight active elements
for easier navigation.
Windows Magnifier with Focus
Tracking, Mac Zoom
Tota11y, Focus Indicator
(Browser DevTools)
Keyboard navigation tools enable
navigation using only a keyboard.
Sticky Keys / Mouse Keys Web Developer Toolbar
Accessibility testers help developers meet
WCAG standards.
JAWS Inspect Axe DevTools, Lighthouse
11. The Myth of Accessibility Is “Just” Frontend
Product teams design semantics
and user flow.
Frontend is essential to transform
those designs into accessible
interfaces.
Backend shapes data that’s
understandable and usable.
Content writers help make
interfaces understandable through
plain language, writing
descriptive text and offering clear
instructions.
12. Java’s Role in Accessibility
Java Access Bridge
enables assistive tech on
Windows (e.g. screen readers).
Java Accessibility API (JAAPI)
is a core API
in javax.accessibility for
exposing UI elements.
Java Accessibility Utilities
helps assistive tech monitor
events & GUI states.
Pluggable Look and Feel
allows non-visual UI
presentations for better
accessibility.
JavaFX supports accessibility via
native platform bridges.
14. Fundamentals of Accessibility API in JavaFX
API Description
Node#accessibleRoleProperty() The Role tells the Screen Reader the “kind of control”.
The default role is AccessibleRole.NODE(or PARENT).
Node#accessibleRoleDescriptionProperty() There are no user defined roles. This property allows role
customization to provide more meaning for that Node.
Node#accessibleTextProperty() Tells the Screen Reader how to speak the contents of a
control.
Node#accessibleHelpProperty() Provides a longer, more detailed description of a control.
Label#labelForProperty() Offers a description for all kinds of controls
(ImageView, Slider, ProgressIndicator).
15. Immediate Use of ARIA Roles
Button startButton = new Button("Start Game");
startButton.setAccessibleRole(AccessibleRole.BUTTON);
Accessible Rich Internet Applications (ARIA) roles help screen readers understand how to
interpret elements in your application.
16. Semantic Markup Example
GridPane grid = new GridPane();
grid.setHgap(10);
grid.setVgap(10);
//…
Scene scene = new Scene(grid, 300, 200);
stage.setScene(scene);
stage.show();
JavaFX layout containers
(like BorderPane,GridPane,Vbox,HBox,
etc.) define a logical UI structure that adapts to
screen sizes and input methods.
By using layout containers instead of pixel
values, you allow the interface to adjust
semantically.
17. Implement Keyboard Navigation
Button startButton = new Button("Start Game");
startButton.setFocusTraversable(true);
startButton.setOnKeyPressed(event -> {
if (event.getCode() == KeyCode.ENTER ||
event.getCode() == KeyCode.S) {
startGame();
}
});
startButton.setAccessibleText("Start the game");
Use logical focus traversal and key
bindings.
Add a keyboard event listener so it
responds to a key combination (a
mnemonic shortcut).
Set AccessibleText to help
screen readers announce what the
button does.
18. Set the Color Contrast
Choose foreground/background color combinations that meet WCAG AA or AAA guidelines.
Use tools like WebAIM Contrast Checker to test color combinations.
Button startButton = new Button("Start Game");
startButton.setFocusTraversable(true);
startButton.setStyle("-fx-background-color: #003366; -fx-text-fill: #F5F5F5;");
//…
19. Dynamic Content Handling
// ..
Label statusLabel = new Label("Ready to start");
statusLabel.setAccessibleText("Ready to start");
Button startButton = new Button("Start Game");
startButton.setAccessibleText("Start the game");
startButton.setFocusTraversable(true);
startButton.setOnAction(e -> {
statusLabel.setText("Game started!");
statusLabel.setAccessibleText("Game started!");
});
//..
When content updates
dynamically, inform users
about these changes.
Update the accessible text to
provide users clear
information relying on
screen readers.
20. The Advanced JavaFX Accessibility API
Supports direct interaction
with the Screen Reader
Return a value to the Screen Reader
Node#queryAccessibleAttribute
(AccessibleAttribute, Object...)
Perform an action on behalf of the Screen Reader
Node#executeAccessibleAction
(AccessibleAction, Object...)
Notify the Screen Reader that a value has changed
Node#notifyAccessibleAttributeChanged
(AccessibleAttribute)
Determine whether accessibility is active.
Platform.accessibilityActiveProperty()
21. What About Accessibility
in Web Applications?
Source:https://pixabay.com/photos/cat-paw-keyboard-playful-nasty-3695040/
22. Server-Side Rendering (SSR) Boosts Accessibility
Screen readers can access full content without waiting for JS execution.
Content available at first load
HTML rendered server-side (e.g. via Thymeleaf templates) ensures proper heading, landmark,
and ARIA roles.
Semantic HTML output
Facilitates keyboard navigation and screen reader announcements.
Predictable document structure
23. Hybrid Content Delivery Example
Source: https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/implementing/developing/headful-headless#overview
25. Why Documentation Matters for Accessibility
Accessible
Application
Design
Development
Documentation
Clear documentation reduces user error.
Communicates intent and behavior.
Accessible documentation is part of user
experience.
27. Write Documentation with Inclusion in Mind
Use plain, clear language.
Describe accessibility
behaviors (focus,
keyboard support, labels).
Include examples for
screen readers and
keyboard navigation.
Document error messages
and fallback behaviors.
Use tooling (Swagger UI,
HTML JavaDoc) with
keyboard and screen
reader compatibility.
28. Prioritize Semantic API Design for Accessibility
Use meaningful, descriptive API
endpoints
(e.g., /retrieveUserProfile instead
of /getData).
Provide descriptive error
messages to guide users,
especially those using assistive
technologies.
Clear responses reduce confusion
and support screen reader users.
29. Implement Predictable and Accessible Data Formats
Standardized formats like JSON and GraphQL promote consistency.
Predictable structures improve screen reader parsing.
Developers prefer consistent data formats for better usability.
30. Support Multiple Input Methods for Inclusive Access
Majority of users with disabilities rely on alternative input methods.
APIs should allow flexible input and interaction modes.
Enable keyboard shortcuts, voice commands, and screen reader interactions.
31. Authentication for All
Support biometrics & social
logins.
Provide CAPTCHA alternatives
(math/audio).
Accessible labels & ARIA
attributes on all inputs.
32. Continuous Improvement and Testing
Add accessibility tests to CI/CD (Axe, Playwright, Selenium)
Get feedback from users with disabilities.
Look into assistive technology analytics (WAVE, screen reader logs).
34. NLP for Smarter User Interfaces
Summarize or simplify
complex UI content.
Auto-generate alt-text for
visual elements.
Transcribe audio and video in
real-time.
AI can
36. Voice Interfaces and Assistive AI
Voice-controlled navigation for
motor disabilities
Smart assistants in applications Real-time language translation
37. Bringing It All Together
Combine Java’s reliability with AI’s flexibility.
Use well-documented AI SDKs with accessibility in mind.
Always validate AI output with human input.
38. Accessibility Is Everyone's Responsibility
Test Early. Test Often. Include Everyone.
Java has solid accessibility support (JavaFX API, Accessibility API, tooling).
AI can enhance, not replace, human-centered design.
39. Stay Tuned for More!
inside.java
dev.java youtube.com/java