[
https://issues.apache.org/jira/browse/CAMEL-26441?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen reassigned CAMEL-26441:
-----------------------------------
Assignee: Claus Ibsen
> camel-launcher - The distribution runs the Camel CLI from the Spring Boot fat
> jar, which is slower and has no class data sharing
> --------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26441
> URL: https://issues.apache.org/jira/browse/CAMEL-26441
> Project: Camel
> Issue Type: Improvement
> Components: camel-jbang
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Minor
> Fix For: 4.24.0
>
>
> The zip and tar of the Camel CLI (camel-launcher, which Homebrew, SDKMAN,
> WinGet, Scoop, Chocolatey, the web installer and camel self-update install)
> run the Spring Boot fat jar. Its class loader reads the 347 nested jars,
> which costs about 110 ms on every command, and about 280 ms when all commands
> load. The class data sharing archive of the JVM cannot hold classes of that
> class loader either.
> Measured (JDK 25, wall clock, median of 9, with CAMEL-26440):
> ||command||fat jar||lib/||lib/ and a CDS archive||
> |camel version|290 ms|176 ms|150 ms|
> |camel generate|302 ms|173 ms|150 ms|
> |camel --help|785 ms|510 ms|340 ms|
> The fix:
> * the zip and tar have {{lib/}} with the jars, and a thin
> {{camel-launcher-<version>.jar}} whose manifest has the classpath;
> {{bin/camel.sh}} and {{bin/camel.bat}} run {{java -jar
> lib/camel-launcher-<version>.jar}};
> * the scripts add a dynamic CDS archive per command
> ({{-XX:+AutoCreateSharedArchive}}, Java 19+) in the cache directory of the
> user, which the JVM creates on the first run of a command and again when the
> JDK changes; {{CAMEL_CDS=false}} turns it off;
> * the fat jar stays the Maven artifact, for {{java -jar}} and the container
> image.
> The JDK 25 AOT cache may follow later.
> Related: CAMEL-23810, CAMEL-26440.
> _Claude Code on behalf of davsclaus (Claus Ibsen)_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)