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

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

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 文件
【iphone6|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) 。