Skip to content

Technologies

AppJars is built on a focused technology stack chosen for longevity, wide adoption, and compatibility with modern enterprise Java development.

Technologies

Java 21

AppJars targets Java 21, the LTS runtime baseline for the current release line. All AppJar modules are compiled and distributed as Java 21 bytecode.

Spring Boot 4.1

Spring Boot 4.1 is the foundation for dependency injection, auto-configuration, and application lifecycle management across all AppJars. Each AppJar registers itself through Spring Boot's standard auto-configuration mechanism, so no manual bean declarations are required in the host application beyond what is described in each Getting Started guide.

Spring Boot also provides the integration points that AppJars expose for customisation: conditional beans, @Value-driven configuration, Spring Security integration, event listeners, and the @Scheduled support used by background tasks such as Process Manager's cron scheduler and Email Manager's background sender.

Jakarta Persistence and Hibernate 7

Jakarta Persistence (JPA) with Hibernate as the provider handles all data access. AppJar entities are plain JPA entities, and schema creation is managed by Hibernate's ddl-auto mechanism — no separate migration scripts are required for initial setup.

AppJars use Hibernate 7, the persistence provider in the current Spring Boot 4.1 stack. Advanced module-specific types, such as the vector type used by AI Support's pgvector embedding store, are configured by the corresponding AppJar.

AppJars support relational databases handled by Hibernate, including PostgreSQL, MySQL, H2, Oracle, and SQL Server. Always check the module's Getting Started guide for exceptions: AI Support requires PostgreSQL with the pgvector extension for its embedding store.

Vaadin 25.2

Vaadin 25.2 provides the presentation layer for all AppJar views. Vaadin's server-side Java model means that UI components are written in the same language as the business logic, with no JavaScript or REST API layer required between the two. This makes AppJar views straightforward to extend and to embed within an existing Vaadin application.

Views are registered dynamically at startup through each AppJar's RouteConfigurer bean, which implements VaadinServiceInitListener. Route paths are configurable through application.properties, and any AppJar view can be wrapped in the application's own main layout by passing the layout class to setViewsRouterLayout().

Vaadin's internationalisation support is used by all AppJars for UI label translation. When I18N Manager is also integrated, the built-in VaadinI18nProvider is replaced by a database-backed provider, making all labels — including those from other AppJars — manageable at runtime without a redeploy.

Maven

Apache Maven is the build tool used to compile, package, and publish AppJar modules. Each AppJar is a multi-module Maven project with a clear separation between contract modules (interfaces) and implementation modules, reflecting the layered architecture described in the Architecture section. The generated artifacts are standard JARs that can be consumed by both Maven and Gradle projects.

AppJar artifacts are published to the public AppJars Maven repository at maven.appjars.com, which hosts AppJars releases only. Once the repository is registered, each module is added to a project by declaring its dependency coordinates in pom.xml or build.gradle, the same way as any other Java library. Each AppJar's Getting Started guide shows the repository declaration.

LangChain4j (AI Support)

LangChain4j is the AI integration library used by the AI Support AppJar. It provides the abstractions for language model calls (ChatLanguageModel, StreamingChatLanguageModel), embedding generation (EmbeddingModel), vector store access (EmbeddingStore), and the RAG pipeline components (ContentRetriever, ContentInjector, QueryTransformer). AI Support supports both OpenAI and Ollama as LLM backends, and uses pgvector (PostgreSQL's vector extension) as the embedding store.