
HoRain云小助手个人主页 个人专栏: 《Linux 系列教程》《c语言教程》⛺️生活的理想就是为了理想的生活!⛳️ 推荐前些天发现了一个超棒的服务器购买网站性价比超高大内存超划算忍不住分享一下给大家。点击跳转到网站。专栏介绍专栏名称专栏介绍《C语言》本专栏主要撰写C干货内容和编程技巧让大家从底层了解C把更多的知识由抽象到简单通俗易懂。《网络协议》本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘一起解密网络协议在运行中协议的基本运行机制《docker容器精解篇》全面深入解析 docker 容器从基础到进阶涵盖原理、操作、实践案例助您精通 docker。《linux系列》本专栏主要撰写Linux干货内容从基础到进阶知识由抽象到简单通俗易懂帮你从新手小白到扫地僧。《python 系列》本专栏着重撰写Python相关的干货内容与编程技巧助力大家从底层去认识Python将更多复杂的知识由抽象转化为简单易懂的内容。《试题库》本专栏主要是发布一些考试和练习题库涵盖软考、HCIE、HRCE、CCNA等目录⛳️ 推荐专栏介绍一、Applet 是什么跟普通 Java 程序的区别二、生命周期面试高频三、怎么跑当年 vs 现在四、为什么死得这么彻底五、时间线速记面试能背六、现在怎么办Java Applet 是1996 年 JDK 1.0 就跟 Java 一起出生的老伙计定位是嵌在网页里跑的 Java 小程序当年用来给静态 HTML 加交互动画、图表、小游戏。但它已经被三方联手淘汰——浏览器砍 NPAPI、JDK 9 弃用、JDK 17 标记 removal、JDK 24 关掉支撑它的 Security Manager、JDK 262026 年 3 月java.applet包彻底移除。现在属于考古范畴但面试聊 Java 历史 / 维护 2000 年代老系统还可能撞上。一、Applet 是什么跟普通 Java 程序的区别import java.applet.Applet; import java.awt.Graphics; public class HelloApplet extends Applet { Override public void init() { System.out.println(初始化只调一次); } Override public void paint(Graphics g) { g.drawString(Hello Applet, 20, 20); } }HTML 里这么嵌HTML5 已经不让用applet了当年是applet codeHelloApplet.class width300 height200或objectapplet codeHelloApplet.class width300 height200 /applet几个关键区别没有main()方法入口由浏览器 / appletviewer 控制继承java.applet.AppletAWT或javax.swing.JAppletSwing编译成.class/.jar用户访问网页时从服务器下载到本地由浏览器里的Java 插件JRE 跑受沙箱Sandbox 限制默认不能读写本地文件、不能随便连外网只能连来源主机签名后可提权二、生命周期面试高频浏览器负责调度五个核心方法用户访问含 Applet 的页面 → 类加载 → init() // 一次初始化读 param、建组件、加载资源 → start() // init 后调用户切回页面也会再调启动画/线程 → paint(Graphics g) // AWT 继承来的绘制重绘/ resize 都会再调 ← stop() // 用户离开页面时调暂停动画/音乐可反复 ← destroy() // 浏览器关闭时调一次释放资源记忆口诀init → start → paint反复 → stop → destroy。paint()不是 Applet 类自己的是从java.awt.Component继承的所以 Applet 本质是 AWT 组件得靠 AWT 绘图模型。三、怎么跑当年 vs 现在时期运行方式1996–2015 黄金期浏览器安装 JRE 插件通过NPAPI 桥接 JVMapplet标签加载开发调试JDK 自带appletviewer工具不用浏览器就能跑2017 之后Chrome 2015(F45)、Firefox 2016(F45) 砍掉 NPAPI → 浏览器里彻底跑不了JDK 11 删掉appletviewerJDK 17 起java.applet包标记Deprecated(forRemovaltrue)现在想跑一下老 Applet只能JDK 8 老环境 老浏览器 老 JRE 插件银行 legacy 系统还在这么苟或者走第三方方案如CheerpJ把 JVM 转成 WASM 在浏览器跑四、为什么死得这么彻底不是单一原因是结构性的三连击1. 浏览器端NPAPI 被集体废弃2013 Chrome 默认禁 NPAPI → 2015 Chrome 45 彻底移除2016 Firefox 45 终止所有 NPAPIIE 后续由 Edge 接班也不再支持插件模型本身就被认为是不安全的外来物浏览器厂商一致想甩掉。2. 安全端沙箱守不住2012–2016 年 CVE 公开80 个 Applet 沙箱逃逸漏洞CVE-2013-0422、CVE-2016-0636 等攻击者可绕过 Security Manager 执行本地代码。Oracle 自己都承认沙箱已无法提供可信隔离。JDK 24 干脆把 Security Manager永久禁用Applet 最后一根支柱倒掉。3. 性能 标准端被 HTML5/JS/WASM 完爆Applet 冷启动平均2.3sJVM 初始化类加载AWT 常驻45MB现代 JS 引擎毫秒级模块加载HTML5 原生canvas、WebGL、Web Workers、WebSocket 把 Applet 能干的事全覆盖了还不用装 JRE、不用签权限⚠️ 所以 Applet 不是兼容性问题是浏览器厂商 标准组织 Oracle JDK 三方共同淘汰的技术范式。五、时间线速记面试能背年份事件1996JDK 1.0Applet 随 Java 一起出生2015Chrome 45 砍 NPAPI2016Firefox 45 砍 NPAPI2017JDK 9DeprecatedJEP 2892018JDK 11删掉appletviewer2021JDK 17Deprecated(forRemovaltrue)JEP 3982025JDK 24Security Manager 永久禁用JEP 4862026.3JDK 26java.applet包彻底移除JEP 504六、现在怎么办新项目别写 Applet——这条技术线已经断了老系统迁移路径富交互网页 → HTML5 JS / TypeScript Canvas要 Java 逻辑在浏览器跑 →CheerpJJVM→WASM桌面富客户端 →JavaFXSwing 的继任还在活跨语言高性能 → 还是上一轮聊的那套Protobuf / gRPC / Web 后端如果你是在按Java 已废弃特性这条线刷下一个可以聊Java Web Start (JNLP)跟 Applet 同一拨死的JDK 11 砍的或者Security Manager 本身JDK 24 刚埋掉——都是面试里为什么弃用 时间线这套题的常客。挑一个❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧