由于Web启动,Java应用程序速度较慢

时间:2010-11-21 21:14:40

标签: java java-web-start

我正在尝试使用Java Web Start部署我的Java应用程序,但我遇到了一个问题。通过我的IDE(Netbeans)运行应用程序时,它快速闪电;一切都在几秒钟内完成但是如果它是用Web Start启动的话,那就太慢了。

任何想法为什么?

我在JNLP中使用完全权限自我签名。

2 个答案:

答案 0 :(得分:2)

Java Web Start应用程序的启动速度总是比通过java可执行文件直接启动更慢。这是因为Java Web Start的功能远远超过标准的java启动:

  1. JWS访问网络以下载JNLP(可能还有JAR和其他资源)
  2. JWS正在检查其JAR的本地缓存,以查看它是否可以跳过下载JAR
  3. 如果缓存为空或过时,JWS可能会通过HTTP下载jar
  4. JWS正在检查每个jar的加密强签名的有效性
  5. 我认为大部分成本是因为能够通过网络浏览器启动应用程序以及“免费”虚拟更新应用程序而增加的功能所带来的不可避免的成本。


    另一种可能性:当您通过webstart启动时,与使用NetBeans启动时,您的应用程序是否使用不同的VM运行?你可以尝试打印:

    System.getProperty("java.home")
    

    找出正在运行当前正在执行的进程的VM。

    如果它是同一个VM,您也可以在两个方案之间尝试区分 Java系统属性。尝试打印出所有系统属性:

    System.getProperties().store(System.out, "");
    

    Wireshark 可用于帮助诊断Java Web Start网络问题。


    有时,Java Console和Java Web Start Logging可用于诊断某些JWS问题。您可以通过Java Control Panel

    启用这些功能

    alt text

答案 1 :(得分:1)

您可以在Java控制台中启用完整日志记录,并查看Java Web Start正在打印调试信息的所有内容。然后,您可以看到停顿发生的位置,这可能会为您提供问题的指示。

我最初的猜测是你有DNS问题,特别是如果暂停非常接近30秒的倍数。