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
| Outil | DMG | PKG | NSIS | MSI | MSIX/AppX | Portable | DEB | RPM | AppImage | Snap | Flatpak | Archives | Total |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Nucleus | O | O | O | O | O | O | O | O | O | O | O | ZIP, TAR, 7Z | 18 |
| Conveyor | — | — | — | — | O | — | O | — | — | — | — | ZIP, TAR + EXE custom | 6 |
| install4j | O | — | — | O | — | — | O | O | — | — | — | TAR, shell | 7 |
| jpackage | O | O | — | O | — | — | O | O | — | — | — | — | 6 |
| jDeploy | — | — | — | — | — | — | O | — | — | — | — | EXE, TAR | 4 |
| Compose MP | O | O | — | O | — | — | O | O | — | — | — | — | 6 |
| JavaPackager | O | O | — | O | — | — | O | O | O | — | — | ZIP | 8 |
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
| Outil | Lib runtime | Canaux | Vérification |
|---|---|---|---|
| Nucleus | NucleusUpdater | 3 (latest/beta/alpha) | SHA-512 |
| Conveyor | Native OS (Sparkle 2 / MSIX / apt) | Oui | Oui |
| install4j | API updater | Oui | Oui |
| jDeploy | Intégré | Non | Non |
| jpackage / Compose MP | Aucun | — | — |
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 —
.pfxet 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 —
.pfxuniquement. - 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-ymletpublish-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 fort | Là 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
- Auto-update — configure
NucleusUpdateret les canaux de release. - Signature de code — signe et notarise les builds selon l'OS.
- CI/CD — les actions composites GitHub pour builder et publier.
- GraalVM Native Image — package un binaire natif sans JDK.