如何在"现实世界"中部署Java应用程序?

Tdo*_*rno 13 java deployment ear jar war

作为Java编程世界的新手,这个问题一直困扰着我.我首先相信所有Java文件都被压缩applets然后运行,但我很快意识到情况并非如此.有人可以向我解释我们如何将我们的Java应用程序交织成日常生活的真实产品吗?

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

Dan*_*lan 23

这取决于应用程序.根据您希望用户使用您的应用的方式,有很多选项.通常它被打包成罐子或专用罐子(战争,耳朵).

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

Jar文件用于打包库,但你也可以在其中有一个清单文件,"当有人双击/执行此操作时,运行此类".该类可以启动GUI或者是响应参数等的无头任务.

你可以像你说的那样拥有applet.这些程序在用户的浏览器中运行.

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

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

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

还有javafx.我对此一无所知. 通过浏览常见问题解答,它似乎是Java对Adobe Flex的回答.您使用xml配置配置UI组件.我不确定JavaFX应用程序使用的格式,但确实说"在桌面或浏览器中部署".


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

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

  • @Tdorno您还可以使用像`Ant`或`Maven`这样的构建系统来编译和打包您的`jar`文件. (2认同)

Mic*_*rdt 5

  • 小程序从未真正流行起来,现在也很少使用。
  • 简单的应用程序可以部署为“可执行” JAR文件,这些文件基本上是带有附加元数据的 ZIP 存档,这些元数据告诉 JVM 哪个类包含要运行的主要方法。它们可以使用 -jar 选项在命令行上运行,或者在大多数桌面环境中通过双击运行(这还需要安装 JVM)。
  • 桌面应用程序可以通过Java Web StartIzPackInstall4J等安装程序进行部署,但 Java 桌面应用程序也不是很常见。
  • 如今,大多数 Java 软件仅在服务器(Web 服务器或应用程序服务器)上运行。它们通常部署为WAREAR文件,这些文件也是包含类和其他资源的 ZIP 存档。然后,这些应用程序在遵循ServletEJB标准的服务器组件内运行。