【问题标题】:Is it possible to obtain a web-browser's Java VM without using an applet?是否有可能在不使用小程序的情况下获得 Web 浏览器的 Java VM?
【发布时间】:2010-10-06 01:10:14
【问题描述】:

我们有一个古老的 Java 小程序,我们希望升级到更新的 Java 版本(5 或 6),但是直到今天,我们一直支持使用 Java VM 的人早在 1.1 版(特别是那些仍在使用 Microsoft VM)

作为升级的一部分,我们希望能够向使用过时虚拟机的用户提供一个网页,告诉他们我们现在支持哪些版本以及他们可以从哪里下载这些虚拟机。理想情况下,我们希望无需首先提供 Java 1.1 小程序来确定 JVM 版本。

将不胜感激以下任一问题的答案(如果可能,请提供代码示例):

问题 1:是否可以使用来自 HTTP 标头的信息在服务器上的脚本中确定 JVM?

问题2:是否可以仅使用JavaScript来确定客户端上的信息?

【问题讨论】:

    标签: java javascript


    【解决方案1】:

    我认为deployment toolkit 可能会做你想做的事。

    使用 deployJava 中的 runApplet() 函数来确保在启动 applet 之前客户端计算机上的最低 Java 运行时环境可用。

    【讨论】:

    • 看起来部署工具包是“正确”的前进方向,所以我接受了这个答案,因为它包含指向相应页面的链接(对不起,tackline - 我知道你首先建议了工具包,但他们是休息时间)。同时,我们将使用我们久经考验的启动小程序方法!
    【解决方案2】:

    Q1:没有

    Q2:是的,但我不知道它的便携性如何:

    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    document.writeln('<table border="1">');
    for (var i = 0; i < navigator.plugins.length; i++) {
      document.writeln("<tr>");
      document.writeln("<td>" + navigator.plugins[i].name + "<\/td>");
      document.writeln("<td>" + navigator.plugins[i].description + "<\/td>");
      document.writeln("<td>" + navigator.plugins[i].filename + "<\/td>");
      document.writeln("<\/tr>");
    }
    document.writeln("<\/table>");
    </script>
    </body></html>
    

    输出所有插件的表格,应该包含版本。我认为您必须遍历所有插件,检查名称中是否包含“java”,然后从描述中解析版本...

    【讨论】:

    • 对 Q1 的简短但甜蜜的回答投了赞成票 - 这就是我的想法。不幸的是,Q2 似乎没有移植到 IE6 - 我的 navigator.plugins.length 为 0 :-(
    • 一个德国网站说它在 JavaScript 1.1、Netscape 3.0、Opera 5.12、Firefox 1.0、Konqueror 3.1、Safari 1 和更高版本以及(确切地说)IE for Mac 5.0 中受支持 :-(。也许任何所有这些 JS 库都有一些用途......
    【解决方案3】:

    有一个部署工具包可以做这种事情。

    提供小程序应该不会太糟糕。它可以是一个 1x1 像素的错误,也可以是使用带有小 1.1 类的普通小程序,如果它可以加载您的 1.5 代码,则转发小程序生命周期方法。

    没有人应该仍在使用 1.1。它多年来一直没有修复安全漏洞。

    【讨论】:

    • 我们实际上已经提供了一个小程序来确定 VM,因为我们有两个版本,其中一个可以解决 MS JVM 中的错误(但不适用于 Sun),其中一个是另一种方式圆形的。当权者认为这种方法向前发展太笨拙,所以我的任务是寻找另一种方法。
    • 哦,只是因为没有人不应该使用 1.1,这并不意味着我们的客户没有使用 1.1,很遗憾:-(
    【解决方案4】:

    这个脚本似乎在所有主流浏览器上都能奏效:

    http://www.pinlady.net/PluginDetect/JavaDetect.htm

    【讨论】:

    • 考虑到它可能会运行一个小程序,因为它的“NOTF”方法似乎相当复杂;我们不妨直接选择该选项。另外,我不确定我是否要运行由使用成语“Java142Installed = Java142Status == 1 ? true : false”的人编写的代码
    • 好吧,我不得不承认我并没有超越测试它是否真的有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 2010-10-07
    • 2016-01-22
    • 2012-04-29
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多