什么是Rolls-Royce部署Java applet的方式?

时间:2009-06-22 19:09:13

标签: java applet cross-browser

我知道如何使用appletobjectembed标记和JavaScript部署applet,但我采用了最佳方法(就最终用户而言)体验)。

Sun建议在同一页面上使用the applet tagmixed embed / object tag

我正在考虑以下内容:

  1. 跨浏览器支持。
  2. 如果找到不正确的Java版本,则回退到下载页面(例如pre 1.5)。
  3. 加载Java VM启动期间以及下载Jar时的页面(理想情况下是带有进度条的自定义初始屏幕)。
  4. 之前已经提出过问题:how to deploycheck for 1.6Plugin framework。这些都没有完全回答我的问题。我也不考虑网络启动或Java FX。

    我目前的解决方案是包含一个为Java 1.1编译的额外小型测试applet。如果找到Java pre-1.5,则会将页面重定向到失败页面。如果没有找到Java,该页面会要求用户访问java.com。这可以接受,但是很差,因为它需要一个额外的小程序,并且在VM启动时不会显示任何内容。

9 个答案:

答案 0 :(得分:8)

在整个网络上对旧的和过时的信息进行了很多努力之后,似乎实际上有一种非常简单的方法来部署applet - 只需让Sun为您编写正确的标签!

<script src="http://java.com/js/deployJava.js"></script>
<script>
  var attributes = {
    code:'java2d.Java2DemoApplet.class',
    archive:'Java2Demo.jar',
    width:710, 
    height:540
  };
  var parameters = {
    fontSize:16
  };
  var version = '1.6' ; // whichever minimum version you want to target, null works also
  deployJava.runApplet(attributes, parameters, version);
</script>

对我来说,像魅力,跨浏览器一样工作,如果没有安装java,可以通过自动重定向来下载页面。

更多信息:

http://java.sun.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html#deplToolkit

答案 1 :(得分:6)

请参阅PulpCore's solution(许可证:BSD)。

一个例子:the Milpa game ......现在,如果我看过的话,就是罗尔斯·罗伊斯的小程序部署。

并且 - 绝对同意,Sun的Deployment Toolkit非常需要处理禁用的Java - 它似乎完全忽略了这一点。

答案 2 :(得分:3)

我发现JavaScript是最好的解决方案。对于IE,编写一个对象标记并通过classid attribute控制JRE的确切最小版本,对于其他所有类型=“application / x-java-applet; version = 1.5”的embed标记都可以正常工作。两者都使用内置的浏览器机制来处理过时(或完全缺乏)java。

你也可以做一些奇特的事情,比如指定1.5.0作为最低版本,但设置auto-download to 1.6,这样任何没有java的人都会得到最新的JRE而不是1.5。

我工作的项目多年来推出了我们自己的跨平台JS包装器,但是使用Java 6更新10 Sun创建了deployJava.js,旨在为您解决所有这些问题。

答案 3 :(得分:2)

+1 applet-fu为我在chrome,FF,IE 6,7,8上工作。 我认为它不会比这更多滚动royce:

http://products.metamolecular.com/2009/06/08/better-applet-deployment-with-applet-fu http://github.com/metamolecular/applet-fu

看起来像一个绝对简单的东西,也没有太多的文档。但那就是美丽!!

applet_fu.run(
  {'width':'550','height':'320'},
  {
    'archive':'myapplet.jar',
    'code':'com/example/MyApplet.class',
    'foo':'bar'
  },
  '1.4.2',
  '<img src="/no-java.png" />'
);

是的,没错,如果找不到applet,你可以在html中显示。 1.4.2部分是要检查的最低版本,如果找到较低版本,它仍然会显示没有java 。 foo:bar是params的一个例子。

答案 4 :(得分:2)

我强烈建议不要使用deployJava.js。 我怀疑它是否经过测试。 看看它的代码:

s = '<param name="' + parameter + '" value="' + 
                parameters[parameter] + '">';

它没有关闭标签! Chrome上的choke完全给了我“Uncaught Error:INVALID_STATE_ERR:DOM Exception 11”!更不用说使用document.write,你必须克服这些问题Java Plug-In - Important addition to deployJava.js

注册只是为了告诉这个,因为前几天花了四个小时完全沮丧地处理了这个问题:(

答案 5 :(得分:1)

为了获得最佳的跨浏览器兼容性,您应该遵循SUn的建议,特别是使用混合嵌入/对象标记。这很难看,但给你最好的报道。

答案 6 :(得分:1)

考虑在起始页面上有一个小applet,它告诉浏览器转到真正的applet页面。

在开始页面上,还有一个“你可以在这里获取Java ”链接。

根据我的经验,讨厌的javascript提供了令人讨厌的支持:(

另请注意,Java 6 u 10可以使用Java WebStart来部署Applet。如果您的用户拥有此版本或更高版本,这可能是一种更好的用户体验。

答案 7 :(得分:1)

您只需使用object标签即可。它是HTML规范的一部分,适用于大多数浏览器。

带安装选项的后备只是在标签中写一些文字。

这是一篇关于这个主题的有用文章:

http://depth-first.com/articles/2008/02/20/demystifying-java-applets-part-1-cross-browser-standards-compliant-pure-html-deployment-using-the-object-tag

此致

答案 8 :(得分:1)