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、JAR 和 WAR 文件
即使是最简单的 Java 应用程序也可以由 10 或 20 个独立的 Java 文件组成,复杂的企业应用程序可能包含数千个文件,你可以使用许多具有特定职责的文件来简化软件开发,但这会使应用程序部署复杂化。
但是,当你在环境之间移动应用程序、在运行时链接到它们、跨网络移动它们并将它们存储在 Maven 存储库中时,当你将多部分应用程序打包为单个压缩文件时,你可以简化此过程。尽管 JAR、WAR 和 EAR 文件之间存在差异,但它们都有助于简化 Java 应用程序的部署时间。
如何创建 EAR、JAR 和 WAR 文件
由于 WAR、JAR 和 EAR 文件都使用标准压缩算法,因此可以使用任何标准压缩工具创建它们。但是,JDK 附带了一个名为 jar.exe 的特殊实用程序,它将 Web、企业和 Java 应用程序打包并压缩为相应的类型。
还有一些流行的 DevOps 工具可以自动将应用程序打包为 EAR、JAR 和 WAR 文件,作为 CI 工作流的一部分。例如,Jenkins 流水线的结束通常是调用构建工具(如 Ant、Maven 或 Gradle)将测试的应用程序打包到适当的存档中。
EAR、JAR 和 WAR 文件有什么区别?
JAR、WAR 和 EAR 文件之间的最大区别在于它们针对不同的环境。EAR 文件需要完全符合 Java Platform, Enterprise Edition (Java EE) 或 Jakarta Enterprise Edition (EE) 的应用程序服务器,例如 WebSphere 或 JBoss,才能运行。WAR 文件只需要符合 Java EE Web Profile 的应用程序服务器即可运行,而 JAR 文件只需要 Java 安装。
还有适用于 EAR、WAR 和 JAR 文件的内部限制和要求。EAR 文件本身必须在名为 META-INF 的文件夹中包含一个 application.xml 文件。WAR 文件需要包含在 WEB-INF 文件夹中的 web.xml 文件。Java 文件没有这些要求。
JAR 与 EJB-JAR
Java EE 规范还定义了一种特殊类型的 JAR 文件,它只包含 Enterprise JavaBeans (EJB)。该文件具有 .jar 扩展名,但包含一个特殊的部署描述符,旨在将 EJB 组件与企业应用程序的其他部分隔离开来。Java EE 规范还定义了一个资源适配器存档,其中包含将企业应用程序连接到外部服务(如消息队列和数据库)的代码。这些文件具有 .rar 扩展名。
微服务和 JAR 文件
软件开发行业当前的趋势是朝着微服务开发方向发展,远离单体应用程序。因此,已经从开发和部署部署为 EAR 文件的企业应用程序转向创建部署为 JAR 文件的较小组件。
现代微服务框架(例如 Spring Boot 和 Eclipse MicroProfile)将应用程序部署为可运行的 JAR 文件,这些文件可以直接部署到软件容器(例如 Docker)和容器编排工具(例如 RedHat OpenShift)。
发表评论 取消回复