<applet>标签已完全失效且被废弃,它曾专用于嵌入Java小程序,依赖浏览器NPAPI插件和JRE运行;Chrome 45+、Firefox 52+等主流浏览器已移除支持,HTML5规范明确弃用,JDK 9起正式弃用API,JDK 17+彻底删除相关类。

<applet> 标签在现代网页中完全失效,且不应再被使用。它曾用于嵌入 Java 小程序(Applet),但所有主流浏览器已在 2015–2021 年间陆续移除对 Java 插件的支持,HTML5 规范也明确将其废弃。
<applet> 标签的真实历史作用
它不是通用“插件容器”,而是专为 Java Applet 设计的 HTML 元素,依赖浏览器内置或外挂的 Java 运行时(JRE)。
-
浏览器遇到
<applet code="Bubble.class">时,会尝试:- 从
codebase或当前路径加载Bubble.class - 启动 JVM 实例,加载并执行该字节码
- 调用
init()→start()→paint()等生命周期方法
- 从
-
常见必需属性只有两个:
code(类名)、width/height(尺寸);archive和param用于传参或打包依赖。立即学习“前端免费学习笔记(深入)”;
Manage Apple Notes下载使用 inotes CLI 从终端管理 Apple Notes。当需要在 macOS 的 Notes.app 中列出、读取、创建、编辑、删除或搜索备忘录时使用。
它无法加载 JavaScript、Flash、PDF 或任何非 Java 字节码——和后来的
<object>或<embed>有本质区别。
为什么现在打开就报错或空白?
- Chrome 自 45 版起彻底禁用 NPAPI 插件接口,Java Applet 无法注册。
- Firefox 在 52 版(2017 年)移除 NPAPI 支持。
- Edge(Chromium 内核)和 Safari 从未支持过现代 Java 插件。
- 即使你本地装了 JDK/JRE,
<applet>标签也不会触发任何下载或执行逻辑——浏览器直接忽略该标签。
常见错误现象包括:
- 控制台静默无日志(不是报错,是被跳过)
- 元素在 DOM 中存在,但渲染为空白区域
- 替换文本(
alt属性)不显示(该属性本就不被广泛支持)
想复现旧 Applet?只能绕开浏览器
如果你手头有遗留的 .class 文件,且必须运行:
- 使用 Oracle 提供的独立工具
appletviewer(JDK 8 及更早版本附带) - 命令形如:
appletviewer Hello.html,其中Hello.html包含原始<applet>标签 - 注意:JDK 9+ 已移除
appletviewer,需降级到 JDK 8u333 或更早
Java 本身也在 2017 年(JDK 9)正式弃用 Applet API,2023 年后所有 OpenJDK 发行版均不再包含相关类(java.applet.Applet 等已删除)。
真正容易被忽略的一点:<applet> 的失效不是“兼容性问题”,而是整个执行链路已被操作系统、浏览器、JVM 三方协同切断。它不像 document.write() 那样还能降级运行,而是像调用一个已被 ldconfig 卸载的系统库——连符号都找不到。


















