Java Top

I just announced the new Learn Spring course, focused on the fundamentals of Spring 5 and Spring Boot 2:


1. Overview

In this quick tutorial, we’ll focus on the differences between JAR and WAR packaging in Java.

First, we'll define each packaging option separately. Afterwards, we'll summarize their differences.

2. JAR Packaging

Simply put, JAR – or Java Archive – is a package file format. JAR files have the .jar extension and may contain libraries, resources, and metadata files.

Essentially, it's a zipped file containing the compressed versions of .class files and resources of compiled Java libraries and applications.

For example, here's a simple JAR file structure:


The META-INF/MANIFEST.MF file may contain additional metadata about the files stored in the archive.

We can create a JAR file using the jar command or with tools like Maven.

3. WAR Packaging

WAR stands for Web Application Archive or Web Application Resource. These archive files have the .war extension and are used to package web applications that we can deploy on any Servlet/JSP container.

Here's an example layout of a typical WAR file structure:

        // *.jar files as libs

Inside, it has a META-INF directory holding useful information in the MANIFEST.MF about the web archive. The META-INF directory is private and can't be accessed from the outside.

On the other hand, it also contains the WEB-INF public directory with all the static web resources, including HTML pages, images, and JS files. Moreover, it contains the web.xml file, servlet classes, and libraries.

We can use the same tools and commands that we used to build a JAR to build a .war archive.

4. Key Differences

So, what are the key differences between these two archive types?

The first and most obvious difference is the file extension. JARs have the .jar extension, whereas the WAR file has the .war extension.

The second main difference is their purpose and the way they function. JAR files allow us to package multiple files in order to use it as a library, plugin, or any kind of application. On the other hand, WAR files are used only for web applications.

The structure of the archives is also different. We can create a JAR with any desired structure. In contrast, WAR has a predefined structure with WEB-INF and META-INF directories.

Finally, we can run a JAR from the command line if we build it as an executable JAR without using additional software. Or, we can use it as a library. In contrast, we need a server to execute a WAR.

5. Conclusion

In this quick article, we compared the .jar and .war Java packaging types. In doing so, we also noted that while both use the same ZIP file format, there are several important differences.

Java bottom

I just announced the new Learn Spring course, focused on the fundamentals of Spring 5 and Spring Boot 2:

Inline Feedbacks
View all comments
Christophe Kamphaus
Christophe Kamphaus
1 year ago

Where do Spring Boot’s executable WARs fit in?

1 year ago

Can a WAR be replaced by a JAR and executed directly from the CLI?

Eric Martin
Eric Martin
1 year ago
Reply to  Hervé

Typically not. WARs contain a web application with additional files that your application container (Tomcat, JBoss, etc) will unpack and run.

Lahiru Wijesekara
Lahiru Wijesekara
1 year ago

In addition to this a jar file which made in spring boot can contain another jar with a servlet container ( E.g An embedded Tomcat). This reduces the process of deploying it in a web application in a container hence Spring Boot detects the Spring MVC controller and start the container in start up.

Comments are closed on this article!