我正在尝试了解applet的工作原理。
我知道类文件是字节码,JVM可以理解和执行。当applet在用户系统上运行时,字节码通过网络传输到用户系统。
现在,当有多个类文件时会发生什么?例如,如果具有applet的init()方法(类A)的类具有另一个类(B类)的对象,该怎么办? html文件仍包含APPLET标记中的classA.class。在这种情况下,classB.class是否也通过网络传输?
另外,jar文件如何适合这里?它们只是类文件的压缩集合,不是吗?
非常感谢任何关于如何运作的清晰度。
谢谢,
答案 0 :(得分:1)
jar文件是包含类的文件,它使用zip压缩。当浏览器找到引用applet的标记时,它会将jar文件下载到客户端并运行它。
答案 1 :(得分:1)
您的applet所依赖的任何依赖项都将传输到客户端。这包括单个类和jar文件。
但是,许多Java开发人员现在更喜欢使用Java Web Start而不是applet。 Web Start应用程序不在浏览器内运行,这有助于缓解不同浏览器的Java插件的兼容性问题。此外,Web Start沙箱不像applet在其中运行的沙箱那样具有限制性。如果您已经以Applet形式编写了代码,它仍然可以作为Web Start应用程序启动。
答案 2 :(得分:0)
我认为上面描述的关键事实是jar文件在applet运行之前由JVM传输和解释,因此知道并因此可以访问整个类层次结构。
答案 3 :(得分:0)
HTML中不推荐使用<APPLET>
标记;应该首选<OBJECT>
标签。但是,Sun(Oracle?)表示<APPLET>
是首选,因为<OBJECT>
支持是不稳定的。把它拿走它的价值。
JAR文件(在<APPLET>
的上下文中)使用archive
参数指定。
我希望所有文件都是从applet所在的URL的底部获取的;档案当然是。
我会查看Sun的Java Tutorials。他们在applet上有一个,包括通过Java Web Start启动。