appletviewer

义项:JDK自带的Applet查看工具
appletviewer

appletviewer是Java开发工具包(JDK)中附带的一个命令行工具, 用于在不启动网页浏览器的情况下运行和调试Java Applet。它读取命令行给出的文档地址, 仅解析其中的 OBJECT、EMBED、APPLET 等与 Applet 启动相关的标签, 并把文档引用的每个 Applet 分别显示在独立窗口中。该工具自 JDK 9 起被标记为弃用, 并在 JDK 11 中被移除, 此后 JDK 不再提供运行 Applet 的手段。

百科 图文
目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

appletviewer 是随 JDK(Java 开发工具包)分发的一个命令行程序, 官方描述为“在网页浏览器之外运行 Applet”的工具。它的调用形式是先在命令名后写若干选项, 再给出一至多个地址, 由工具去连接这些地址指向的文档或资源[1]。

按照官方文档的说明, 该工具只服务于开发用途, 并非面向最终用户运行 Applet 的通用环境[2]。它属于 JDK 附带的“基本工具”之一, 与编译器、调试器等处于同一类别。

原理

工具的工作方式是解析而不是渲染。它从命令行取得文档地址后读取对应文档, 只识别与 Applet 启动直接相关的标记, 文档中其余与 Applet 无关的 HTML 会被忽略[3]。可用的入口标记有 OBJECT、EMBED 和 APPLET 三种; 若文档里一个这样的标记都没有引用 Applet, 工具执行后不会产生任何动作[4]。

识别到标记后, 文档引用的每一个 Applet 都会在属于自己的窗口中显示, 而不是像浏览器那样嵌入页面排版[5]。对于 OBJECT 标记, 工具会跳过 classID 和 codebase 这类原本指向 Java 插件的属性, 按默认存在插件的前提处理[3]。传入的地址需按 RFC2396 规定的转义方式编码, 只有编码过的地址能被接受, 而文件名部分则要事先解码[6]。

工具提供数个命令行选项: -debug 让查看器在 Java 调试器 jdb 中启动, 以便对文档中的 Applet 进行调试; -encoding 指定输入 HTML 文件的编码名称; -J 前缀用于把参数原样转交给运行本工具的 Java 解释器, 可用来调整执行环境或内存占用[7]。在同时存在两种虚拟机实现的 JDK 版本中, Applet 默认启动在 HotSpot Client VM 上, 也可用 -classic 选项改用 Classic VM[8]。

发展历程

该工具与 Applet 技术的兴衰同步。2015 年下半年起, 多家浏览器厂商已经移除或公布了移除标准插件支持的时间表, 而浏览器中运行 Applet 恰恰依赖插件, 因此 Applet 相关技术的使用场景迅速收缩。

2017 年发布的 JDK 9 通过 JEP 289 把 Applet API 标记为弃用, appletviewer 工具同时被弃用, 启动时会向标准错误流打印弃用警告。该版本中 Applet API 与工具仍然可用且受支持, 官方同时建议开发者转向 Java Web Start 或自包含应用等替代方案[9]。

2018 年 9 月发布的 JDK 11 正式移除了 appletviewer 启动器, 相关发布说明注明该工具已在 JDK 9 弃用并于本版本删除[10]。此后用 JDK 运行 Applet 的途径不复存在[11]。Applet API 本身在 JDK 17 被标记为待移除, 并在后续的 JEP 504 中被整体删除[11]。

应用

在浏览器插件仍是 Applet 主要运行载体的年代, 该工具承担的是开发期的本地验证工作: 开发者无需安装或启用浏览器插件, 即可把写好的 Applet 跑起来看效果[11]。因为不受浏览器插件版本与页面排版干扰, 它适合用来确认 Applet 的界面表现和参数传递是否符合预期[3]。

调试是它另一项明确用途, 配合 -debug 选项可把查看器置于 jdb 之下, 从而对文档中加载的 Applet 设置断点、单步跟踪[12]。由于工具只解析启动标记, 教学场景中也常用它把 HTML 里的 Applet 声明与页面其他内容分离开来观察。

局限

最根本的局限来自生命周期。工具自 JDK 11 起不再随 JDK 提供, 用该版本及之后版本的 JDK 已无法启动 Applet[10]。即便保留旧版 JDK, Applet 在浏览器中的主流使用场景也因插件机制退出而消失, 现代浏览器不再支持 Applet[11]。

功能层面, 它并非浏览器替代品。工具会忽略与 Applet 启动无关的 HTML, 因此不能用来检验页面整体布局或脚本交互效果[3]。当文档中没有 OBJECT、EMBED 或 APPLET 标记时它什么也不做, 也不对地址做额外容错, 只接受按 RFC2396 编码的地址[5]。此外官方定位它为开发专用工具, 其行为与浏览器内的实际运行环境并不等同[1]。

支撑 Applet 安全运行的沙箱基础同样在变化: 用于隔离不可信下载代码的安全管理器在 JDK 24 中被永久禁用, 这使得 Applet 模型失去了必要的支撑条件[11]。

参见

  • Java —— appletviewer 所属的开发平台与技术体系。

  • Java Applet —— 该工具所运行和调试的对象。

  • JDK —— 分发 appletviewer 的开发工具包。

  • Java Web Start —— 官方在 Applet 弃用后建议的替代部署技术。

  • 浏览器插件 —— Applet 在网页中运行所依赖的机制。

参考资料

  1. appletviewer(1) — openjdk-11-jdk — Debian testing [引用日期2026-10-29]
  2. appletviewer - Java アプレットビューア [引用日期2026-10-29]
  3. appletviewer - Java Platform, Standard Editionツール・リファレンス [引用日期2026-10-29]
  4. JSMIG(PDF) [引用日期2026-10-29]
  5. appletviewer - Java アプレットビューア [引用日期2026-10-29]
  6. appletviewer-java-1.8.0-openj9(1) [引用日期2026-10-29]
  7. appletviewer-openjdk8(1) [引用日期2026-10-29]
  8. appletviewer - The Java Applet Viewer [引用日期2026-10-29]
  9. Java Platform, Standard Edition Tools Reference [引用日期2026-10-29]
  10. Release Note: Removal of appletviewer Launcher [引用日期2026-10-29]
  11. JEP 504: Remove the Applet API [引用日期2026-10-29]
  12. 4 コマンド・リファレンス [引用日期2026-10-29]
词条评价
词条统计

浏览次数:3 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:16:28Z

历史版本

本条目引用的词条
Java开发工具包 Java Applet Java JDK Java Web Start 浏览器插件