Java中jar和war的区别
Posted
技术标签:
【中文标题】Java中jar和war的区别【英文标题】:Difference between jar and war in Java 【发布时间】:2011-08-17 18:46:18 【问题描述】:.jar
和 .war
文件有什么区别?
它只是文件扩展名还是还有更多?
【问题讨论】:
【参考方案1】:来自Java Tips: Difference between ear jar and war files:
这些文件只是压缩文件 使用 java jar 工具。这些文件是 为不同的目的而创建。这里 是这些文件的描述:
.jar 文件: .jar 文件包含 图书馆、资源和 附件文件,如属性文件。
.war 文件:war 文件包含 网络应用程序 部署在任何 servlet/jsp 上 容器。 .war 文件包含 jsp, html、javascript 等文件 网络发展所必需的 应用程序。
Sun/Oracle 官方说明:
The J2EETM Tutorial: Web Application Archives The Java Archive (JAR) File Format: The Basics***文章:
WAR file format (Sun) JAR file【讨论】:
我对 jsp 和其他 Web 应用程序文件为什么不能在 jar 文件中存在疑问。 @EmmanuelAngelo.R 他们可以 - jar 文件只是一个 zip 文件。如果它会做任何有用的事情是另一回事,这取决于您要使用 jar 文件的代码。作为一个有趣的例子,Jenkins 持续集成服务器作为 WAR 文件分发,可以使用“java -jar”运行。详情请见wiki.jenkins-ci.org/display/JENKINS/…。【参考方案2】:WAR 代表 Web 应用程序存档
JAR 代表 Java ARchive
【讨论】:
而 EAR 是企业应用程序存档? 插图不错!【参考方案3】:.war
file 具有特定文件的特定结构。除此之外,是的,它只是一个.jar
。
【讨论】:
【参考方案4】:您将 Web 组件添加到称为 Web 应用程序存档 (WAR) 的包中的 J2EE 应用程序,它是一个类似于用于 Java 类库的包的 JAR。 WAR 通常包含除 Web 组件之外的其他资源,包括:
服务器端实用程序类(数据库 bean、购物车等)。 静态网络资源(html、图像和声音文件等) 客户端类(小程序和实用程序类)WAR 具有特定的分层目录结构。 WAR 的***目录是应用程序的文档根目录。文档根目录是 JSP 页面、客户端类和档案以及静态 Web 资源的存储位置。
(source)
所以 .war 是一个 .jar,但它包含 Web 应用程序组件并根据特定结构布局。 .war 旨在部署到 Web 应用程序服务器(如 Tomcat 或 Jetty)或 Java EE 服务器(如 JBoss 或 Glassfish)。
【讨论】:
那么这是否意味着如果您正在构建一个只使用套接字且没有任何 UI 的服务器应用程序,则无需将其打包为 war 文件? 其实我现在读的有点多我不需要Tomcat,我可以直接将jar导出到服务器并从那里直接运行。【参考方案5】:.war
文件是在应用服务器内运行的 Web 应用程序存档,而.jar
是在用户计算机上运行桌面应用程序的 Java 应用程序存档。
【讨论】:
第二个说法不一定正确。 jar 还可以启动嵌入式 Web 服务器,例如使用 Spring Boot。 即使这种说法也不完全正确。 jar 也可以只是供其他应用程序使用的代码库。换句话说,它甚至可能不包含用于运行的主类。 @KevinWelker 同意了。即使在 2011 年(写这篇文章时),一个 jar 仍然只能代表一个库。然而,spring boot 并不存在,所以我可以看到忽略了这样一个事实,即您可以将 Web 服务器嵌入到像旋风提到的 jar 中。 @Kevin Welker,不是“不完全”,我会说“并非全部真相”,因为 whirlwin 刚刚提到了一个例外,这是完全正确的,不是吗?【参考方案6】:war 文件是一个特殊的 jar 文件,用于打包 Web 应用程序,以便将其部署到应用程序服务器上。 war 文件的内容必须遵循定义的结构。
【讨论】:
【参考方案7】:.jar 和 .war 都是压缩存档文件。 两者都可以有可选的 META-INF/MANIFEST.MF 清单文件,其中包含版本控制等信息信息,以及将执行它的 JVM 的类路径和主类等指令属性。
.war 文件 - Web 应用程序存档旨在在“Servlet 容器”内执行,并且可能包含其他 jar 文件(位于 WEB-INF/lib 目录)已编译的类(位于 WEB-INF/classes(servlet 也在那里) ) .jsp 文件图像、文件等。 为了创建一个独立的模块而存在的所有 WAR 内容。
【讨论】:
【参考方案8】:war 和 jar 是 java 文件的存档。战争是网络档案,它们在网络服务器上运行。 jar 是 java 存档。
【讨论】:
【参考方案9】:基本上都是压缩档案。 war 用于具有特定目录结构的 Web 应用程序。
【讨论】:
【参考方案10】:JAR 文件的扩展名是 .jar,它是使用命令提示符下的 jar 命令创建的(就像执行 javac 命令一样)。通常,JAR 文件包含 Java 相关资源,如库、类等。JAR 文件类似于 winzip 文件,只是 Jar 文件与平台无关。
WAR 文件只是一个 JAR 文件,但仅包含与 Web 相关的 Java 文件,例如 Servlet、JSP、HTML。
要执行 WAR 文件,需要 Web 服务器或 Web 容器,例如 Tomcat 或 Weblogic 或 Websphere。要执行一个 JAR 文件,简单的 JDK 就足够了。
【讨论】:
【参考方案11】:战争——
分发基于 Java 的 Web 应用程序。 WAR 具有相同的文件 JAR 文件的结构,它是一个单独的压缩文件, 包含捆绑在其中的多个文件。
罐子-
.jar 文件包含库、资源和附件文件 比如属性文件。
WAR 文件用于组合 JSP、servlet、Java 类文件、XML 文件、javascript 库、JAR 库、静态网页和任何 运行应用程序所需的其他资源。
【讨论】:
【参考方案12】:JAR 文件允许打包多个文件,以便将其用作库、插件或任何类型的应用程序。另一方面,WAR 文件仅用于 Web 应用程序。
可以使用任何所需的结构创建 JAR。相比之下,WAR 有一个带有 WEB-INF 和 META-INF 目录的预定义结构。
JAR 文件允许 Java 运行时环境 (JRE) 在单个请求中部署整个应用程序,包括类和相关资源。另一方面,WAR 文件允许轻松测试和部署 Web 应用程序。
【讨论】:
【参考方案13】:War:针对网络应用程序Jar:针对桌面应用程序
或
战争:在浏览器上工作Jar:在机器上工作
【讨论】:
【参考方案14】:Jar:- jar 只包含 .class war:-war 包含 html、js、css 和 .class 以及 jsp 和 servlets 页面
【讨论】:
【参考方案15】:此外,使用嵌入式容器,您可以直接运行 JAR 文件来设置 Web 服务器,就像使用 Spring Boot 运行 Java 应用程序一样。但是,对于 WAR 文件,您需要先设置一个 Web 服务器,例如 Tomcat。
【讨论】:
以上是关于Java中jar和war的区别的主要内容,如果未能解决你的问题,请参考以下文章