在客户端执行代码

时间:2013-05-05 08:47:31

标签: java client-side executable

我有一个要求,当用户点击网页上的链接[这是一个内部网页]时,需要执行部署到客户端的jar。为了详细说明,我有一个网页,提供有关多个产品的详细信息,现在当各个产品所有者点击他们的产品时,需要执行特定的产品罐来打开Swing UI。

我已对此进行了分析,由于Run EXE from client side的安全原因,没有一个库框架允许这样做。

我建议使用applet执行此操作,但人们并不热衷于此。

编辑: 排除applet的原因是人们不热衷于在服务器上部署jar。他们想在客户端部署jar然后执行它。

编辑: 不热衷于下载jar的原因是:

  1. 罐子很大,在某些情况下大约100 mb。
  2. 如果必须将jar部署到Web服务器上,则会添加一个依赖项,哪些产品要避免,因为它们不希望与Web应用程序的发布周期同步。
  3. 在某些检查下是否有执行客户端代码的选项?例如:将特定IP地址设置为安全,以便通过安全检查。

2 个答案:

答案 0 :(得分:2)

Java Web Start可能是进行此部署的方法。

  

问题是人们不想下载jar,他们想要预先安装jar来执行

重点是“用户”不下载Jar,而是由运行用户单击的启动文件的JWS客户端无形地完成。请尝试我的JWS version of GIFanim获取体验示例。

请注意,即使该应用程序。是沙盒,在它到达屏幕之前仍然有提示。从版本1.7.0_21开始,这些提示适用于applet和amp; JWS应用程序。


最终,没有办法运行基于Swing的应用程序。在下载Jar之前。 E.G: -

  1. 用户下载可执行文件Jar&跑吧。他们需要在显然正在下载Jar的情况下下载Jar。
  2. 小程序。当applet元素(或等效元素)出现在网页中时,将调用JVM。 JVM将下载&缓存Jar - 对用户来说相对不可见,除了applet中的'loading ..'进度条。
  3. Java Web Start。当用户单击指向JNLP文件的链接时,将调用JWS客户端。 JNLP将在本地缓存,然后资源(Jars等)将在本地缓存,然后是应用程序。将运行。同样,对用户来说相对不可见,除了下载时间和任何相关的进度指示器(默认情况下JWS会这样做)。
  4.   

    ..当各个产品所有者点击他们的产品时,需要执行产品特定的罐子才能打开Swing UI。

    每个“更具体”的应用都会有一个JNLP。同样,您可以使用JNLP API的BasicService来调用相关的应用程序。打开该应用的 JNLP。这是demo. of the BasicService

答案 1 :(得分:0)

使用网络开始

请参阅此链接

http://www.oracle.com/technetwork/java/javase/overview-137531.html

web start允许客户端运行jar驻留在Web上的Java应用程序