作为Java编程世界的新手,这个问题一直让我难以置信。我首先相信所有Java文件都被压缩到applets
然后运行,但我很快就意识到情况并非如此。有人可以向我解释我们如何将我们的Java应用程序交织成日常生活的真实产品吗?
TL; DR:我们如何实施我们的代码以供实际使用?
答案 0 :(得分:21)
这取决于应用程序。根据您希望用户使用您的应用的方式,有很多选项。通常它被打包成罐子或专用罐子(战争,耳朵)。
理论上,您可以使用其中的.class
文件压缩原始目录结构,并提供一个shell脚本/指令,为用户运行java
命令。我不推荐这个,因为它有点不专业,需要你为每个想要能够运行程序的操作系统维护一个shell脚本。
Jar files用于打包库,但你也可以在其中有一个清单文件,“当有人双击/执行此操作时,运行此类”。该类可以启动GUI或者是响应参数的无头任务等。
你可以拥有applets,就像你说的那样。这些程序在用户的浏览器中运行。
您可以拥有war file,这是一种打包Web应用程序的方法。您将此提供给Web服务器,它知道如何部署它以便您可以访问Web页面。示例Web服务器/容器是tomcat或jetty。
您可以拥有ear file,其中可以包含其他战争文件。这用于需要javaee功能的其他部分(ejbs,jms队列等)的应用程序。应用程序服务器的示例是jboss或glassfish。
还有java web start个应用。这些是您可以通过访问网页运行的应用程序,但它们会下载到您的计算机并在用户的计算机上运行(而不是在服务器的后端,如在战争/耳朵中)。
还有javafx。我对此一无所知。 By skimming the FAQ,它似乎是Java对Adobe's Flex的回答。您使用xml配置配置UI组件。我不确定JavaFX应用程序使用的格式,但确实说“在桌面或浏览器中部署”。
正如Sotirios Delimanolis在下面的评论中提到的,您可以使用Ant或Maven等构建系统构建这些文件。您还可以使用java / javaee sdk附带的工具“手动”构建它们。例如,如果安装了sdk,则路径中应该有jar
命令。以下是这些构建系统的一些细节:
答案 1 :(得分:4)
答案 2 :(得分:1)
创建一个可执行jar,一个放入Web服务器的战争或另一个项目使用的库,该项目是前两个项目之一。
答案 3 :(得分:1)
如果应用程序意味着在客户端上运行,那么它将被打包为可执行JAR,然后进一步打包为应用程序包(Mac),可能包装在exe(Windows)中,或者与可执行脚本配对。启动JAR并设置任何所需的VM参数。
如果它是Web应用程序的一部分,那么它将打包为WAR或EAR并放置在Web服务器上的适当位置。
如果它只是一个库,那么它通常被打包为一个JAR(不可执行)并且这样分发以便集成到更大的项目中。
小程序然后跑了,但我很快就意识到情况并非总是如此
实际上,applets现在很少见,不鼓励使用它们。