EAR、JAR 和 WAR 文件有什么区别

发布时间 2023-08-16 13:58:51作者: 不亮

JAR、WAR 和 EAR 文件在 Java 应用程序部署中提供了选项。部署 Java 应用程序时,构成 Java 应用程序的所有文件都被压缩并打包到一个文件中。虽然压缩文件通常使用 .zip 扩展名,但 Java 社区将 .ear 扩展名用于基于 Java EE 的企业应用程序,.war 用于 Web 应用程序,而 .jar 用于独立 Java 应用程序和可链接库。

但是,在幕后,EAR、JAR 和 WAR 文件都是简单的 zip 文件,其中包含构成 Java 应用程序的各种图像、XML 文件、属性文件和 Java 代码片段。如果这些文件的 .ear、.war 或 .jar 扩展名更改为 .zip,则可以使用任何标准解压缩工具打开它,包括 7-Zip 或 WinRAR。

JAR、WAR 和 EAR 文件之间的最大区别在于它们针对不同的环境。EAR 文件需要完全符合 Java Platform, Enterprise Edition (Java EE) 或 Jakarta Enterprise Edition (EE) 的应用程序服务器,例如 WebSphere 或 Wildfly,才能运行。WAR 文件只需要符合 Java EE Web Profile 的应用程序服务器即可运行,而 JAR 文件只需要 Java 安装。

还有适用于 EAR、WAR 和 JAR 文件的内部限制和要求。EAR 文件本身必须在名为 META-INF 的文件夹中包含一个 application.xml 文件。WAR 文件需要包含在 WEB-INF 文件夹中的 web.xml 文件。Java 文件没有这些要求。

什么是Jakarta EE?

Jakarta EE源于Java EE。2009年,Oracle宣布收购SUN,Java相关技术归Oracle所有。2017年,Oracle将Java EE移交给Eclipse 基金会,但因为Oracle不允许再使用Java EE这个名称,所以Eclipse 基金会只能以新名字Jakarta EE和开源的形式重新启动了它。它本质上代表的是Java现代化的能力,但同时与过去的技术保持联系——这是那些企业环境所高度追求的。

Apache Tomcat实现了四个Jakarta EE规范——Jakarta Servlet、Jakarta Standard Tag Library、Jakarta WebSocket和Jakarta Authentication。

Spring Boot运行时嵌入Apache Tomcat、Eclipse Jetty或Undertow。

最流行的三种云本地技术分别是Docker、Kubernetes和Jakarta EE。