java - Java 应用程序如何部署在 "real world"中?

标签 java deployment jar war ear

作为 Java 编程世界的新手,这个问题一直困扰着我。我最初认为所有 Java 文件都被压缩到 applet 中然后运行,但我很快意识到情况并非总是如此。谁能向我解释一下我们实际上是如何将 Java 应用程序交织到日常生活的真实产品中的?

TL;DR:我们如何实现我们的代码以供实际使用?

最佳答案

这取决于应用程序。有很多选项取决于您希望用户如何使用您的应用程序。通常它被包装成一个 jar 或一个专门的 jar (war,ear)。

理论上,您可以将原始目录结构与您的 .class 文件一起压缩,并为用户提供运行 java 命令的 shell 脚本/指令。我不推荐这样做,因为它有点不专业,并且需要您为希望能够在其上运行该程序的每个操作系统维护一个 shell 脚本。

Jar files用于打包库,但你也可以在其中包含一个 list 文件,上面写着“当有人双击/执行它时,运行这个类”。该类可以启动 GUI 或响应参数等的 headless 任务。

你可以拥有applets , 像你说的。这些程序在用户的浏览器中运行。

你可以有一个war file ,这是一种打包 Web 应用程序的方法。您将其提供给 Web 服务器,它知道如何部署它以便您可以访问网页。一个示例 Web 服务器/容器是 tomcatjetty .

你可以有一个 ear file其中可以包含其他 war 文件。这用于需要 javaee 功能的其他部分(ejbs、jms 队列等)的应用程序。应用程序服务器的一个例子是 jbossglassfish .

还有 java web start应用。这些是您可以通过访问网页运行的应用程序,但它们会被下载到您的计算机并在用户的计算机上运行(而不是在服务器的后端,就像在 war /耳朵中一样)。

还有 javafx .不过我对此一无所知。 By skimming the FAQ , 它似乎是 Java 对 Adobe's Flex 的回答.您可以使用 xml 配置来配置 UI 组件。我不确定 JavaFX 应用程序使用什么格式,但它确实说“部署在桌面或浏览器中”。


正如 Sotirios Delimanolis 在下面的评论中提到的,您可以使用 Ant 或 Maven 等构建系统构建这些文件。您还可以使用 java/javaee sdk 附带的工具“手动”构建它们。例如,如果您安装了 sdk,您的路径中应该有一个 jar 命令。以下是这些构建系统的一些详细信息:

  • 专家
    1. 高级别(你告诉它要构建什么,而不是如何构建它)
    2. 不仅仅是构建系统。它还具有依赖管理等。
    3. 有主见(它使用约定优于配置,每个配置文件生成 1 个工件,等等)
  • Ant
    1. 低级(你告诉它如何构建东西)
    2. 灵活
    3. 配置文件可以为所欲为,构建任意数量的工件
    4. 简单易学
  • SDK 工具
    1. 始终保持最新。 EG:很少见,maven/ant 可能无法设置配置选项
    2. 难以记住命令
    3. 水平很低
    4. 就其本身而言,不可重复(例如:除非您构建脚本,否则您每次都必须自己键入 jar 命令)

关于java - Java 应用程序如何部署在 "real world"中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549701/

相关文章:

java - Keycloak无法获取访问 token

debugging - Symfony2 - 部署缓存没有 setfacl

Azure 应用服务 - 为现有应用服务设置部署槽

java - JOGL 2.0 运行稳定的 JAR 文件?

java - 将颜色对象转换为字符串

java - TitanDB 删除所有内容,包括索引

java - 如何分享 Java 游戏?

java - 热加载.jar文件: random FileNotFoundException

java - java gui中文本框的正则表达式

PythonAnywhere:django.db.utils.OperationalError:没有这样的表: