这门课解决什么问题,适合什么基础
很多写 Java 的人习惯了 Spring 那套大而全的单体容器,一旦碰到需要热插拔、模块隔离、多版本类共存的老系统或底层中间件,就会发现自己对 JVM 的类加载和模块边界根本是一笔糊涂账。这门课讲的 OSGi 正是补这块短板的硬骨头。它不教你写业务代码,而是解决一个核心问题:怎么把一个 Java 应用拆成互相独立又能动态部署的 Bundle,以及 Bundle 之间怎么通过服务注册表解耦通信。如果你连基础的 Maven 打包、接口与实现分离都还没吃透,建议先补这些再来;如果你已经能独立写 Java 程序,但看不懂 Equinox 或 Felix 的启动日志、搞不清 Bundle 生命周期里的 INSTALLED 和 RESOLVED 状态差在哪,这门课就是直接对着这个能力缺口来的。
建议先看哪几块,资料怎么配合练习
别从头到尾顺着看,时间要花在刀刃上。第一块先啃类加载机制、Bundle 生命周期和事件监听这几节,这是理解 OSGi 动态性的地基。第二块直接扎进服务相关的内容,包括服务注册与发现、事件监听、服务跟踪器和各种钩子机制,这是实际开发里打交道最多的部分。第三块看声明式服务、Blueprint 以及 Maven 打包插件,这部分决定了你能不能用工程化的方式把模块真正跑起来。至于 Karaf 容器的使用,可以当工具手册查着看。配套的代码资料不要只看不练,每看完一个机制,就自己写一个最小可运行的 Bundle 去验证。比如看完服务跟踪器,就自己写两个 Bundle,一个发布服务一个订阅,故意制造服务掉线的场景,看跟踪器能不能按预期回调。光看视频跟着抄一遍代码,到了排查包冲突的报错时照样抓瞎,必须自己动手把 ClassNotFoundException 和约束违反的坑踩一遍。
学完能独立做什么
把核心机制吃透后,你应该能独立完成几件具体的事。首先是能从零搭建一个基于 Felix 的运行环境,把业务逻辑拆成多个 Bundle 并正确打包部署,而不是把所有代码塞进一个超大依赖里。其次是能看懂并写出 Bundle 之间的服务交互代码,清楚什么时候该用服务注册表,什么时候该用事件机制,知道服务钩子能拦截什么、不能拦截什么。最后是能处理实际部署中的类加载冲突,当报出某个类找不到或者版本不匹配时,你能通过分析 Bundle 的导入导出包关系,定位是哪个依赖没声明对,而不是只会去删本地仓库重装。能独立做到这三点,这门课的硬核内容就算真正补进你的技术栈了。
课程目录
1 OSGi概要介绍及课程计划 (32:08) 2 Apache Felix介绍 (19:56) 3 OSGi helloword (10:14) 4 OSGi Bundle (49:33) 5 Bundle的事件监听 (12:05) 6 OSGi的类加载机制 (15:45) 7 OSGi服务的介绍 (42:37) 8 OSGi服务的事件监听 (15:42) 9 OSGi服务跟踪器 (25:23) 10 OSGi服务钩子 (21:50) 11 OSGi声明式服务 (18:58) 12 Apache Aries (05:44) 13 Apache Karaf (18:57) 14 Maven Bundle Plugin 插件 (27:56) 15 OSGi Blueprint(一) (31:18) 16 OSGi Blueprint(二) (22:20) 17 Log Service (18:41) 18 HTTP Service (32:40) 19 Configuration Admin Service(一) (36:20) 20 Configuration Admin Service(二) (31:16) 21 Event Admin Service (26:11) 22 JNDI Service (17:28) 23 JDBC Service (35:47) 24 JPA Service (42:54) 25 实现基于注解的Blueprint (44:17) 26 Apache Karaf Features (45:12) 27 OSGi开发中的一些注意事项 (49:35)





