Nucleus
Compare

Packaging — Nucleus vs les autres

Comment Nucleus se compare à jpackage, Compose Multiplatform, Conveyor, install4j et aux autres outils de packaging JVM sur les formats, l'auto-update, la signature, la CI et la distribution store.

Cette page compare le packaging de Nucleus aux autres outils qui produisent des installateurs natifs pour les applications desktop JVM : jpackage, Compose Multiplatform, Conveyor, install4j, jDeploy et JavaPackager. Elle couvre les formats distribuables, l'auto-update, la signature de code, la CI/CD, GraalVM Native Image et la distribution store.

Nucleus produit 18 formats distribuables et regroupe l'auto-update, la signature, le sandboxing, les actions CI et la sortie GraalVM Native Image dans un seul plugin Gradle, sous licence Apache/MIT. jpackage couvre six formats et rien autour, install4j est propriétaire, et Conveyor couvre un ensemble différent mais ne produit ni DMG ni PKG.

Couverture des formats

OutilDMGPKGNSISMSIMSIX/AppXPortableDEBRPMAppImageSnapFlatpakArchivesTotal
NucleusOOOOOOOOOOOZIP, TAR, 7Z18
ConveyorOOZIP, TAR + EXE custom6
install4jOOOOTAR, shell7
jpackageOOOOO6
jDeployOEXE, TAR4
Compose MPOOOOO6
JavaPackagerOOOOOOZIP8

Nucleus atteint ce nombre de formats en combinant deux étapes de build : jpackage construit l'app-image, puis le mode --prepackaged d'electron-builder en tire chaque format d'installateur — y compris ceux que jpackage ne supporte pas, comme NSIS, MSIX, Snap, Flatpak et AppImage. Ce chemin de build hybride est propre à Nucleus dans l'écosystème JVM.

Le total de Nucleus compte aussi quatre formats non détaillés dans leur propre colonne ci-dessus : Exe (un installateur Windows natif à jpackage, distinct de NSIS), Pacman (Arch Linux), NsisWeb (une variante web-installer de NSIS), et RawAppImage (l'app-image intermédiaire de jpackage, aussi sélectionnable directement dans targetFormats).

Auto-update

OutilLib runtimeCanauxVérification
NucleusNucleusUpdater3 (latest/beta/alpha)SHA-512
ConveyorNative OS (Sparkle 2 / MSIX / apt)OuiOui
install4jAPI updaterOuiOui
jDeployIntégréNonNon
jpackage / Compose MPAucun

Conveyor est le seul outil comparé avec des mises à jour delta (environ 31 KB sur macOS via Sparkle 2). Nucleus télécharge le fichier complet et expose une API runtime pour le flow de progression, le changement de canal, la détection post-update et le redémarrage après mise à jour.

Signature et notarisation

Tous les outils comparés signent et notarisent les builds macOS. La signature Windows diffère :

  • Nucleus.pfx et Azure Artifact Signing.
  • Conveyor — l'ensemble de backends de signature le plus large : Azure Key Vault, AWS KMS, SSL.com eSigner, DigiCert ONE, Google Cloud KMS et HSM SafeNet/YubiKey.
  • install4j.pfx uniquement.
  • jpackage — macOS seulement.

Intégration CI/CD

  • Nucleus — six actions composites GitHub : setup-nucleus, setup-macos-signing, build-macos-universal, build-windows-appxbundle, generate-update-yml et publish-release.
  • Conveyor — exemples uniquement ; builds mono-machine.
  • install4j — CLI uniquement.
  • jpackage / Compose MP — aucun.

Packaging GraalVM Native Image

Nucleus package la sortie GraalVM Native Image de bout en bout, produisant DMG, NSIS et DEB pour le binaire résultant. Un binaire packagé démarre en environ 0,2 s, utilise environ 30 Mo de RAM (mesuré sur Windows 11 avec un build Hello World), et pèse environ 40 Mo en installateur NSIS avec compression maximale. Voir performance / GraalVM. Les autres outils font passer les binaires Native Image par des pipelines de packaging génériques qui ignorent la sortie sans JDK.

Distribution store

Nucleus, Conveyor et Compose Multiplatform produisent chacun des artefacts acceptés par les stores. Nucleus produit les quatre formats store depuis un seul DSL : PKG (Mac App Store), AppX/MSIX (Microsoft Store), Snap (Snap Store) et Flatpak (Flathub).

Compromis

Là où Nucleus est fortLà où les concurrents gagnent
Le plus de formats. Auto-update, signature et CI dans un seul plugin. Packaging GraalVM Native Image intégré. Apache 2 / MIT.Conveyor : mises à jour delta, signature HSM plus large, builds mono-machine. install4j : stable, payant, support de longue durée. jpackage : aucune dépendance nouvelle.

Nucleus construit chaque OS sur son propre runner CI — il n'y a pas de cross-compilation. Il fonctionne uniquement avec Gradle et il est plus jeune que Conveyor et install4j.

Quand choisir quoi

  • Un petit CLI ou une app mono-fenêtre qui a besoin de mises à jour delta et de signature HSM cloud — Conveyor.
  • Un installateur d'entreprise avec dialogues personnalisés et support payant — install4j.
  • Un DMG, un MSI ou un DEB directement depuis jpackage — Compose Multiplatform ou jpackage directement.
  • Une seule base Kotlin couvrant chaque format et chaque store, avec auto-update, AOT et GraalVM — Nucleus.

Et ensuite