Efficient Deployments

Unpacking the Executable jar

You can run your application using the executable jar, but loading the classes from nested jars has a small startup cost. Depending on the size of the jar, running the application from an exploded structure is faster and recommended in production. Certain PaaS implementations may also choose to extract archives before they run. For example, Cloud Foundry operates this way.spring-doc.cn

Spring Boot supports extracting your application to a directory using different layouts. The default layout is the most efficient, and is CDS friendly.spring-doc.cn

In this layout, the libraries are extracted to a lib/ folder, and the application jar contains the application classes and a manifest which references the libraries in the lib/ folder.spring-doc.cn

To unpack the executable jar, run this command:spring-doc.cn

$ java -Djarmode=tools -jar my-app.jar extract

And then in production, you can run the extracted jar:spring-doc.cn

$ java -jar my-app/my-app.jar

After startup, you should not expect any differences in execution time between running an executable jar and running an extracted jar.spring-doc.cn

Run java -Djarmode=tools -jar my-app.jar help extract to see all possible options.