17

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

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

4

4 回答 4

28

这取决于应用程序。有很多选项取决于您希望用户如何使用您的应用程序。通常它被打包为一个罐子或一个专门的罐子(战争,耳朵)。

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

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

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

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

您可以拥有一个包含其他战争文件的ear 文件。这用于需要 javaee 功能的其他部分(ejbs、jms 队列等)的应用程序。应用程序服务器的一个示例是jbossglassfish

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

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


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

  • 马文
    1. 高层次(你告诉它要构建什么,而不是如何构建它)
    2. 不仅仅是一个构建系统。它还有依赖管理等。
    3. 自以为是(它使用约定优于配置,每个配置文件生成 1 个工件等)
  • 蚂蚁
    1. 低级(你告诉它如何构建东西)
    2. 灵活的
    3. 配置文件可以做任何你想做的事,构建尽可能多的工件
    4. 简单易学
  • SDK工具
    1. 始终保持最新。EG:很少,maven/ant 可能无法设置配置选项
    2. 难以记住命令
    3. 非常低的水平
    4. 本身,不可重复(例如:除非您构建脚本,否则每次都必须自己键入 jar 命令)
于 2013-05-14T18:01:22.930 回答
5
  • Applets never really caught on and are very rarely used nowadays.
  • Simple applications can be deployed as "executable" JAR files , which are basically ZIP archives with additional metadata that tells the JVM which class contains the main method to run. They can be run on the command line using the -jar option, or in most desktop environments by double-clicking (this requires a JVM to be installed as well).
  • Desktop applications can be deployed via Java Web Start or installers like IzPack or Install4J, but Java desktop applications are not very common either.
  • Most Java software nowadays runs only on servers (web servers or app servers). They are typically deployed as WAR or EAR files, which are also ZIP archives containing classes and other resources. These applications then run inside a server component following the Servlet or EJB standards.
于 2013-05-14T18:09:59.967 回答
1

如果应用程序要在客户端上运行,则将其打包为可执行 JAR,然后进一步打包为应用程序包 (Mac),可能包含在 exe (Windows) 中,或者与将启动 JAR 的可执行脚本配对并设置任何所需的 VM 参数。

如果它是 Web 应用程序的一部分,那么它将被打包为 WAR 或 EAR,并放置在 Web 服务器上的适当位置。

如果它只是一个库,那么它通常被打包为 JAR(不可执行)并按原样分发以集成到更大的项目中。

applet 然后运行,但我很快意识到情况并非总是如此

实际上,小程序现在很少见,不鼓励使用。

于 2013-05-14T18:01:11.477 回答
0

创建一个可执行的 jar,一个放入 Web 服务器的 war 或一个由前两个项目之一的另一个项目使用的库。

于 2013-05-14T17:56:36.977 回答