【问题标题】:Understanding Java applets了解 Java 小程序
【发布时间】:2011-03-11 05:09:48
【问题描述】:

我正在尝试了解小程序的工作原理。

我知道类文件是字节码,是 JVM 可以理解和执行的。当小程序在用户系统上运行时,字节码通过网络传输到用户系统。

现在,当有多个类文件时会发生什么?例如,如果具有小程序的 init() 方法的类(A 类)具有我的另一个类(B 类)的对象怎么办? html 文件的 APPLET 标记中仍然包含 classA.class。在这种情况下,classB.class 是否也通过网络传输?

另外,jar 文件如何适合这里?它们只是类文件的压缩集合,不是吗?

任何关于其工作原理的说明将不胜感激。

谢谢,

【问题讨论】:

    标签: java class jar applet


    【解决方案1】:

    我认为您上面描述的关键事实是 jar 文件在小程序运行之前由 JVM 传输和解释,因此知道并因此可以访问整个类层次结构。

    【讨论】:

    • 那么,“网络上发生了什么”?需要所有的类文件吗?而jar只是一种压缩方式,让我们消耗更少的带宽?
    • 一个 jar 通过只使用一次网络往返来减少延迟 - 而不是 n 次旅行(每个文件一次)
    【解决方案2】:

    jar 文件是包含类的文件,它使用 zip 压缩。当浏览器发现一个引用小程序的标签时,它会将 jar 文件下载到客户端并运行它。

    【讨论】:

      【解决方案3】:

      您的小程序所依赖的任何依赖项都将传输到客户端。这包括单个类和 jar 文件。

      然而,许多 Java 开发人员现在更喜欢使用 Java Web Start 而不是小程序。 Web Start 应用程序不在浏览器内运行,这有助于缓解与不同浏览器的 Java 插件的兼容性问题。此外,Web Start 沙箱不像小程序在其中运行的沙箱那样具有限制性。如果您已经以 Applet 形式编写了代码,它仍然可以作为 Web Start 应用程序启动。

      【讨论】:

      • 非常感谢您的回复。我记得遇到过 Web Start .. 肯定会探索它;我需要一个非限制性沙箱!
      【解决方案4】:

      <APPLET> 标签在 HTML 中已弃用; <OBJECT> 标签应该是首选。然而,Sun(Oracle?)表示<APPLET> 是首选,因为<OBJECT> 支持参差不齐。把它当作它的价值。

      JAR 文件(在<APPLET> 的上下文中)使用archive 参数指定。

      我希望所有文件都是从小程序所在的 URL 的基础中获取的;档案当然是。

      我会查看来自 Sun 的 Java Tutorials。他们有一个小程序,包括通过 Java Web Start 启动。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-03
        • 2011-06-25
        • 2011-08-25
        • 2023-03-06
        • 1970-01-01
        • 2011-09-27
        • 2021-05-14
        • 1970-01-01
        相关资源
        最近更新 更多