Java中的WAR包和JAR包都是使用Java的归档工具(jar命令)创建的压缩文件,但它们的用途和结构有所不同:

  1. 文件扩展名
  • JAR包的扩展名为.jar(Java ARchive)。
  • WAR包的扩展名为.war(Web application ARchive)。
  1. 目的和用途
  • JAR包:主要用于打包Java类文件、库、资源以及其他配置文件。它是Java标准的归档格式,常用于打包库文件或者可执行的应用程序。如果JAR文件中包含主类(Main Class)的元数据,那么这个JAR文件可以直接通过java -jar命令执行。
  • WAR包:专为Java Web应用程序设计,包含一个Web应用的所有组成部分,如HTML、CSS、JavaScript、JSP页面、Servlet类文件、库文件以及Web应用的配置文件(如web.xml)。WAR包可以直接部署到支持Servlet规范的Web服务器或应用服务器(如Tomcat、Jetty或WebLogic)的webapps目录下,服务器会自动解压并部署该应用。
  1. 文件结构
  • JAR包内部通常包含一个META-INF目录,用于存储如Manifest文件(可能包含Main-Class定义)、版本信息等元数据,以及编译后的.class文件和资源文件。
  • WAR包则模仿Web应用的目录结构,除了包含.class文件和资源文件外,还包括一个WEB-INF目录,该目录下通常有classes(存放编译后的Java类文件)、lib(存放依赖的JAR包)和web.xml(Web应用的部署描述符)等。此外,WAR包还会直接包含Web应用的静态资源,如HTML、图片和客户端脚本文件。

综上所述,JAR包更侧重于作为库或独立应用程序的分发形式,而WAR包则是Web应用程序部署的标准格式。