⚡ High-performance, native Windows UI Automation (UIA) for Java.
FastUIA provides real-time native UI Automation for Java applications without the overhead of heavy frameworks.
- Key Features
- Quick Start
- Installation
- API Reference
- Documentation
- Platform Support
- License
- Related Projects
import fastuia.FastUIA;
import fastuia.FastUIAElement;
public class Demo {
public static void main(String[] args) {
FastUIA uia = new FastUIA();
FastUIAElement el = uia.getFocusedElement();
if (el != null) {
System.out.println("Focused: " + el.getName());
System.out.println("Type: " + el.getControlType());
if (el.supportsValue()) {
System.out.println("Value: " + el.getValue());
}
}
}
}- ⚡ Native Performance — Direct UI Automation API access via JNI, no COM overhead.
- 🎯 Zero Overhead — No polling, purely event-driven callbacks.
- 🔗 Zero Dependencies — Just requires Java 17+ and Windows.
- 🧩 Object-Oriented — Clean, type-safe API for elements and automation patterns.
Add the JitPack repository and the dependencies to your pom.xml:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<!-- FastUIA Library -->
<dependency>
<groupId>com.github.andrestubbe</groupId>
<artifactId>FastUIA</artifactId>
<version>0.1.0</version>
</dependency>
<!-- FastCore (Required Native Loader) -->
<dependency>
<groupId>com.github.andrestubbe</groupId>
<artifactId>FastCore</artifactId>
<version>0.1.0</version>
</dependency>
</dependencies>repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.andrestubbe:FastUIA:0.1.0'
implementation 'com.github.andrestubbe:FastCore:0.1.0'
}Download the latest JARs directly to add them to your classpath:
- 📦 fastuia-0.1.0.jar (The Core Library)
- ⚙️ fastcore-0.1.0.jar (The Mandatory Native Loader)
Important
All JARs must be in your classpath for the native JNI calls to function correctly.
| Method | Description |
|---|---|
getName() |
Get the name of the UI element. |
getControlType() |
Get the ControlType enum value. |
getValue() / setValue(String) |
Access the ValuePattern if supported. |
getSelection() / setSelection(String) |
Access the TextPattern if supported. |
invoke() |
Trigger the default action (InvokePattern). |
expand() / collapse() |
Control ExpandCollapsePattern. |
getBoundingRect() |
Get the Rect (x, y, w, h). |
getParent() / getFirstChild() |
Navigate the UI tree. |
supportsValue() / supportsText() |
Check for pattern support. |
- COMPILE.md: Full compilation guide (MSVC C++17 build chain + JNI Setup).
- REFERENCE.md: Full API descriptions and method reference.
- PHILOSOPHY.md: The engineering rationale for zero-allocation performance.
- ROADMAP.md: Future milestones and planned features.
| Platform | Status |
|---|---|
| Windows 10/11 | ✅ Fully Supported |
| Linux | 🚧 Planned |
| macOS | 🚧 Planned |
MIT License — See LICENSE file for details.
- FastCore — Unified JNI Loader and Platform Abstraction
- FastFileIndex — Binary File Indexing with mmap Support
- FastFileSearch — Prefix Trie, N-Gram Index, and Ranking Engine
- FastFileWatch — USN Journal-based Live File Monitoring
Part of the FastJava Ecosystem — Making the JVM faster. ⚡
