JDK 26 将彻底移除 Applet API,十年告别计划收官,桌面 Java 未受影响,开发者应转向 jpackage 部署或迁移至现代音频 API。
Oracle 官宣了一个重磅消息:java.applet 整个包将在 JDK 26(预计 2026 年 3 月发布)中被彻底移除!
这意味着,陪伴 Java 世界整整三十年的 Applet 技术,终于走到了生命的终点。
这不是普通的 API 更新,而是一场技术时代的谢幕仪式。如果你曾经在 90 年代用 Java Applet 写过网页小游戏,或者在企业内部系统里嵌入过那种“黄色小 Java 图标”的交互模块,那你绝对值得停下手中的活儿,好好读完这篇深度复盘——因为今天,我们不仅是在告别一个 API,更是在向一个互联网的黄金年代说一声:谢谢,再见!
Applet 是什么?90 年代的网页“魔法”
故事要从 1996 年说起。那一年,Java 1.0 横空出世,而 java.applet.Applet 类就是它的核心明星之一。那时候的网页,还是纯 HTML 的天下,连图片都加载得卡成 PPT。
而 Java Applet,就像从天而降的超级英雄——它能把复杂的程序直接嵌入网页中运行!你点开一个网页,里面居然能跑一个国际象棋对战、3D 地球旋转,甚至一个小型股票交易平台!这一切都归功于 Applet 和 Java 浏览器插件(Java Plugin)。
Netscape Navigator 和 IE 浏览器都支持这个功能,只要你的电脑装了 Java 运行环境,就能通过 APPLET 标签加载远程的字节码,然后在本地 JVM 里安全运行。这在当时堪称“黑科技”,因为它打破了网页只能展示静态内容的桎梏,让 Web 第一次拥有了“应用”的雏形。
安全沙箱:Applet 的灵魂护甲
别小看这些小玩意儿,它们可不是随便就能读你硬盘、偷你密码的。Java 团队早就想到了——Java 安全管理器(Security Manager)为 Applet 构建了一个坚固的沙箱。
默认情况下,Applet 只能和它来源的服务器通信,不能访问本地文件系统,不能启动新进程,连打印都要弹窗问你“是否允许”。这种“最小权限原则”在 90 年代末是革命性的,它让用户敢放心运行网络上的未知代码。正是这种安全性,让 Applet 在银行、证券、教育等严肃场景中大放异彩。
很多老派企业直到今天还在用 Applet 写内部管理系统,就是因为“它跑在浏览器里,但比 JavaScript 安全多了”——虽然这话现在听起来有点复古,但当年可是金科玉律。
世界变了:插件已死,Web 已升维
可惜啊,技术从来不是单线发展的。进入 2010 年代,移动互联网爆发,Chrome 崛起,HTML5、CSS3、WebGL、WebAssembly 一波接一波。浏览器厂商突然集体“翻脸”:插件模型太危险、太慢、太难维护!
于是,从 Chrome 45 开始,NPAPI 插件被彻底禁用;Firefox 和 Safari 也陆续跟进。Java Plugin 一夜之间成了“过街老鼠”。
更致命的是,2022 年 JDK 17 之后,Java 安全管理器本身也被永久弃用,到了 JDK 24 更是直接关闭。没有安全管理器,Applet 的沙箱就形同虚设;没有浏览器支持,Applet 就连展示的舞台都没了。
换句话说,Applet 不是“被淘汰”,而是“被整个生态抛弃”——连棺材板都被人抽走了。
十年告别:Oracle 的温柔刀
但 Oracle 并没有“一刀切”。他们从 2016 年 JDK 9 开始就启动了“Applet 渐进式退役计划”。
JDK 9 时,Applet API 被标记为
@Deprecated |
同时,开发工具链也在同步清理:appletviewer(那个命令行里能单独跑 Applet 的小工具)早在 JDK 11 就被砍了。
更夸张的是,Oracle 内部花了巨大人力,把几千个 JDK 自带的回归测试(jtreg 测试)全部重构,确保它们不再依赖 Applet。
这一套组合拳打下来,整整用了十年!所以别再说“怎么突然就没了”——这哪是突然?这是预告了十年的“慢动作告别”。
谁还在用 Applet?现实比想象更骨感
现在还有人用 Applet 吗?说实话,几乎绝迹了。
Oracle 自己都承认,绝大多数现代 Java 桌面应用根本不会继承 Applet 类。因为 Applet 本质上只是 java.awt.Panel 的子类,除了那几个生命周期方法(init(), start(), stop(), destroy()),它对普通 Swing/AWT 程序毫无价值。
真正让人头疼的反而是一个“意外用途”:很多人用 java.applet.AudioClip 来播放声音!没错,就因为这个类用起来简单,结果成了“音频快捷方式”。Oracle 也听到了呼声,所以在 JDK 25 里专门新增了 javax.sound.SoundClip 作为官方替代品——贴心到让人想哭。
迁移指南:别慌,出路早就铺好了
如果你的系统真的还在用 Applet,别急着砸键盘。
首先,JDK 8 的长期支持版本还会继续维护 Applet 和 Java Web Start(JNLP),至少在可预见的未来,那些老古董系统还能苟延残喘。
其次,Oracle 强烈推荐用 jpackage 工具重构你的应用。这是 JDK 14 引入的神器,能把你 Java 程序打包成 Windows MSI、macOS DMG 或 Linux DEB/RPM 包,用户双击安装,和普通软件一模一样——再也不用依赖浏览器、插件或复杂的 JNLP 部署。
如果你只是用 Applet 做个界面容器,那更简单:直接改成 JPanel 或 JFrame,十行代码搞定。至于 AudioClip?直接换 javax.sound.SoundClip,API 几乎一样,无缝衔接。
桌面 Java 未死,只是 Applet 退场
重点来了!很多人误以为“Applet 被删 = Java 桌面开发凉了”。大错特错!java.desktop 模块里的 AWT、Swing、Java 2D 全部保留,而且还在持续优化。
Oracle 明确表态:这些技术依然是构建本地 GUI 应用的合法选项。
事实上,很多工业控制软件、医疗设备界面、金融交易终端至今仍在用 Swing。Applet 只是 Java 桌面生态里一个“曾用于 Web 嵌入”的分支,它的消失,反而让整个 java.desktop 模块更轻量、更聚焦。所以,别被标题党吓到,
Java 的桌面之魂,还在燃烧。
致敬经典:Applet 的遗产永存
虽然 Applet 已死,但它的精神活在今天的 Web 技术里。WebAssembly 的沙箱模型、Electron 应用的本地调用隔离、甚至 PWA(渐进式 Web 应用)的离线能力,都能看到 Applet 当年的影子。它教会了整个行业一件事:客户端代码必须安全、可移植、可嵌入。
没有 Applet 的探索,就没有今天成熟的前端生态。所以,当我们今天用 React 写一个动态图表,或用 Three.js 渲染 3D 场景时,请记得——在 1998 年,一个 Java 小程序已经在 IE 里做到了类似的事,尽管它启动要 30 秒,还总弹出黄色警告框。
一句话总结
Applet 的时代结束了,但 Java 的生命力从未如此旺盛。从云原生到 AI,从 GraalVM 到 Loom 虚拟线程,Java 正在书写新的传奇——只是这次,它不再需要浏览器插件的拐杖。