是否有一种机制来分发具有自己的JRE的应用程序?

时间:2010-04-26 19:50:06

标签: java distribution software-distribution

这些好人是我的用户:http://www.youtube.com/watch?v=o4MwTvtyrUQ

如果你不想在这里享受视频,那就是要点:我的用户无法在浏览器和网站之间分辨文件和文件夹。

我需要创建一个Java Web应用程序(Tomcat或Jetty)并将其部署在尽可能多的计算机,Windows和Mac中。

问题是:是否有机制使用自己的JRE分发应用程序? (在Tcl世界中有starpacks和starkits,在Python世界中有py2exe和其他,这就是这个想法)。而且,它合法吗?我知道VM是开源的,但我不清楚库,我知道GNU Classpath但我不知道是否所有的包都在那里。

我不想依赖已安装的JRE或具有足够权限的用户来安装它。在Mac上我不想依赖Apple(我不得不从Tiger切换到Snow Leopard只是为了拥有Java 1.6,我不能把我的用户放在那个位置)

任何信息非常感谢。 谢谢! JB

编辑:我想知道我是否可以将JRE文件夹粘贴到我的app文件夹下。这是允许的吗?

4 个答案:

答案 0 :(得分:6)

我们在工作场所使用Install4j。它负责安装并在需要时安装JRE。它不是免费的。至少我们使用的版本不会为Mac用户提供捆绑的JRE。但据我所知,这是由于Apple的一些限制。 Mac有自己的JRE,如果您的用户有Mac,可以安全地假设他们安装了JRE。虽然,如果JRE的版本比您喜欢的版本旧,那么他们必须使用软件更新来检查是否有更新的版本并安装它。

答案 1 :(得分:4)

    To run your application, a user needs the J2SE Runtime Environment,
    which is freely available from Sun. Or, You can redistribute the 
    J2SE Runtime Environment for free with your application, according 
    to the terms of the Runtime Environment's license.

来自http://java.sun.com/j2se/1.5.0/jre/README

我还没有读过细则,似乎Sun打算让人们重新分配JRE。此外,还有许多产品(例如install4j)可以让您轻松重新分发JRE,因此它似乎是合法的。

至于其余部分,您还可以使用内置服务捆绑tomcat,以便自动启动应用程序,并在桌面上创建一个到本地webapp的快捷方式,这样用户就可以免于键入ht tp: //本地主机:8080 / web应用。有很多FOSS安装程序(例如izpack)允许用户安装软件包,并管理桌面快捷方式的创建。您提到不喜欢使用安装程序,但即使解压缩也是一种安装 - 您的用户必须选择他们具有写访问权限的目录,这与完全成熟的安装程序没有什么不同。

但是,考虑到用户的能力,本地安装的解决方案是否最适合他们?在线解决方案可能提供更简单的部署(例如Java Web启动,甚至可以作为applet。)

答案 2 :(得分:1)

在OS X中,你几乎被Apple提供的任何东西所困扰。在其他平台中,不需要运行JRE安装程序(您正确指出用户可能无法做到),只需将JRE文件夹与应用程序捆绑在一起即可。这就是我们的许多用户所做的事情(我的公司有一个名为InstallBuilder的多平台安装程序),我们已经打包了许多Java Web应用程序。您可以在BitNami(他们都是免费的)

查看其中的一些内容

答案 3 :(得分:1)

或者简而言之,你可以试试这个:

制作应用程序的自执行jar文件。

  • 为您的用户提供小型JRE设置(适用于jre6u7的15MB)以及您的应用。
  • 现在创建一个批处理文件(对于Windows),它将首先执行JRE安装程序。
  • 然后选择安装JRE的'bin'文件夹的路径。
  • 现在在脚本中编写'java -jar yourAppName.jar'以运行可执行jar文件。

例如:for win.bat写下以下内容:

jre-6u7-windows-i586-p  :: this will start the JRE installer
C:\Program Files\Java\jre1.6.0_07\bin\java -jar yourAppName.jar  :: this will start your app

您也可以为Mac和Linux创建此类脚本。