Outerstellar Outerstellar
← All Projects

sparkle4j

An in-app update library for Java and Kotlin desktop applications — background update checking, Ed25519 signature verification, native Swing update dialog, and cross-platform silent installation.

sparkle4j

An in-app update library for Java and Kotlin desktop applications. Handles background update checking, cryptographic verification, and silent installation across Windows, macOS, and Linux. Uses the standard Sparkle appcast format (RSS 2.0 with Sparkle namespace extensions).

View on GitHub · Releases

Requires JDK 17 or later. No mandatory dependencies beyond kotlin-stdlib.


How does update checking work?

Both background (non-blocking) and blocking update check modes with configurable check intervals. HTTP caching via ETag and Last-Modified headers minimises unnecessary requests.

How does signature verification work?

Ed25519 signature verification for all update packages. Updates that fail signature verification are rejected before installation begins.

What platforms does sparkle4j support?

Platform-specific silent installers:

  • Windows — Inno Setup and NSIS installers
  • macOS.app bundle replacement
  • Linux — dpkg and rpm packages

What does the update dialog look like?

Native Swing dialog with release notes rendered from Markdown or HTML, download progress tracking, and install-on-quit or immediate install options.

AppcastGenerator

Command-line utility for generating and maintaining the appcast feed as part of a release pipeline.

How do you integrate sparkle4j?

Supports both Kotlin DSL and Java builder patterns for configuration:

SparkleUpdater.builder()
    .appcastUrl("https://example.com/appcast.xml")
    .publicEdKey("your-ed25519-public-key")
    .checkInterval(Duration.ofHours(24))
    .build()
    .startBackgroundChecks()

Tech Stack

Kotlin · Swing · JDK HttpClient · EdDSA · Maven

FAQ

What is sparkle4j?

sparkle4j is an in-app update library for Java and Kotlin desktop applications. It handles background update checking, Ed25519 signature verification, and silent installation across Windows, macOS, and Linux. It uses the standard Sparkle appcast format (RSS 2.0 with Sparkle namespace extensions).

What platforms does sparkle4j support?

Windows (Inno Setup and NSIS installers), macOS (.app bundle replacement), and Linux (dpkg and rpm packages). The update dialog and checking logic are platform-independent; only the installation step is platform-specific.

How does signature verification work?

All update packages are verified using Ed25519 signatures before installation. The public key is configured at build time. If a downloaded update fails signature verification, it is rejected and not installed. This prevents tampered or corrupted packages from reaching the user.

What Java version does sparkle4j require?

JDK 17 or later. The only mandatory dependency is kotlin-stdlib. HTTP operations use the built-in JDK HttpClient.


License

Apache 2.0