Overview
HandsAI is built on modern Java technologies optimized for performance, developer productivity, and GraalVM native compilation. This page documents all major technologies and their versions.Core Platform
Java 21 LTS
HandsAI uses Java 21 LTS (Long-Term Support), leveraging cutting-edge language features:Records (JEP 395)
Immutable data carriers for DTOs:- Concise syntax for data classes
- Immutable by default
- Built-in
equals(),hashCode(),toString() - Pattern matching support
Pattern Matching for switch (JEP 441)
Type-safe conditional logic:Virtual Threads (JEP 444)
Lightweight concurrency for handling thousands of concurrent MCP requests:- Massive concurrency without thread pool tuning
- Simplified asynchronous code
- Better resource utilization
Spring Framework
Spring Boot 3.5.4
Core framework providing:- Dependency injection
- Auto-configuration
- Embedded web server (Tomcat)
- Production-ready features (health checks, metrics)
Spring MVC (Web Layer)
RESTful API framework:- REST endpoints (
@RestController) - Request/response mapping
- JSON serialization (Jackson)
- Error handling
Spring Data JPA (Persistence Layer)
Database abstraction layer:- Repository pattern implementation
- Query derivation from method names
- JPQL and native SQL support
- Transaction management
Spring Validation
Request validation with Jakarta Bean Validation:Database
SQLite with Hibernate Community Dialects
Lightweight embedded database:- WAL Mode - Write-Ahead Logging for better concurrency
- busy_timeout=5000 - Wait up to 5 seconds if database is locked
- ddl-auto=update - Auto-update schema on entity changes
- Zero configuration
- Single file database (
handsai.db) - Perfect for local AI agent deployments
- Fast startup (critical for GraalVM)
HikariCP Connection Pool
High-performance JDBC connection pool (included with Spring Boot):Code Generation
Lombok
Boilerplate reduction library:| Annotation | Purpose | Example |
|---|---|---|
@Getter / @Setter | Auto-generate accessors | Entity fields |
@SuperBuilder | Builder pattern with inheritance | Entity builders |
@NoArgsConstructor | No-argument constructor | JPA requirement |
@AllArgsConstructor | All-fields constructor | Testing |
@Slf4j | Inject SLF4J logger | All services |
@Builder.Default | Default value in builder | Boolean flags |
Security
Jasypt Spring Boot Starter 3.0.5
Encryption for sensitive configuration values:Native Compilation
GraalVM Native Image Support
Ahead-of-time (AOT) compilation for instant startup:- Startup time: < 1.5 seconds (vs ~15 seconds for JVM)
- Memory footprint: ~50MB (vs ~300MB for JVM)
- Instant scale-to-zero for serverless deployments
Build System
Maven 3.x
Project build and dependency management:Development Tools
Spring Boot DevTools
Development-time enhancements:- Automatic restart on code changes
- LiveReload support
- Development-only property defaults
Spring Boot Starter Test
Testing framework:- JUnit 5
- Mockito
- AssertJ
- Spring Test & Spring Boot Test
Version Summary
| Technology | Version | Purpose |
|---|---|---|
| Java | 21 LTS | Runtime platform |
| Spring Boot | 3.5.4 | Application framework |
| SQLite JDBC | (managed) | Database driver |
| Hibernate Community Dialects | (managed) | SQLite support |
| Lombok | (managed) | Boilerplate reduction |
| Jasypt Spring Boot | 3.0.5 | Encryption |
| GraalVM Native Maven Plugin | (managed) | Native compilation |
| HikariCP | (managed) | Connection pooling |
| Jackson | (managed) | JSON serialization |
spring-boot-starter-parent:3.5.4.
Architecture Diagram
Next Steps
- Contributing Guide - Learn how to contribute
- Database Schema - Understand the data model
- GraalVM Compatibility - Native image requirements