OSGI学习手册

1 概述

本文是关于 OSGI 学习的一些资源介绍 , 基本的脉络是按照自己的学习进程来的 , 希望对进入 OSGI 学习的人有所启发。 本人具备的学习基础有 :

1.       Java RCP 开发经验 , 这个并不是必须 , 实质上学习的顺序反而是先 OSGI ,后 RCP

2.       Eclipse 使用经历 .

 

除此之外 , 应该无需任何先决条件 , 因此该教程适合零基础的人学习 OSGI .

 

2 文章的组织结构

学习的思路大致是 :

1.       OSGI 解决方案解决了什么问题

2.       HelloWorld 入门

3.       HelloWorld 进阶

4.       一个有意思的 Demo

5.       产品发布

6.       OSGI 的大框架和核心组成

7.       OSGI 基本使用方式和开发原则

8.       OSGI 的自动编译和持续集成

9.       白皮书,红皮书,蓝皮书以及无皮书 .

 

OK, 把他们作为目录吧 ! 下面就是推荐 + 点评

 

2.1 OSGI 的基础

[1] OSGI解决了什么问题

点评 : 来自 stackOverflow 的一个讨论, OSGI 领域里面,得分最高 , 实质上对受众更好的问题是 :OSGI 不能解决什么 ? 这个留待各位成为 OSGI 领域高手之后 , 再回答不迟。

 

[2] 如何利用架构一个 C/S 框架

点评 : 本文来自 stackoverflow 的讨论 , 似乎也没有讨论出个所以然 , 但可以带来一点提示 , 个人的偏好是将所有的架构设计成 C/S 架构 . 因为移动的应用 , Web 部署已经成为一个难题 . 还不如都为终端开发一套应用程序吧! 我理解的终端 , 只有命令的收发 , 数据的展示 , 一个非常瘦小的终端 . 归结起来的模式是 : OSGI-Cloud  结合 Open API 的方案

 

[3] OSGI与人们当初的期待相距甚远

点评 : OSGI 本来是想一统江湖的 , 当年的期待是嵌入式客户端 ,难道是 Eclipse IDE 的盛行让大家真的以为这玩意可以无休止的实现跨平台?今天 , 我们忘掉跨平台 , 尤其是嵌入式领域 . 如果有云端的支撑 , 何必强求跨平台 ? 云端不用跨平台,那么我们将其功能做充足 , 任何东西都交给云端处理,而嵌入式端呢 , 我们简化,简化再简化 , 因此变成了一个 Open API 的方式,事实是,这篇文章的思路跟本人有相通的地方。只是文中的“ 60% Java 虚拟机上部署 OSGi 的目标并不是遥不可及。”今天证明跨平台的虚拟机已死。

 

[4] 分布式 OSGI

点评 : 这篇文章我还没有看 , 似乎很多人认为只有 HTTP 协议对分布式的支持才是比较优良的 . 不如看看这里面提及到的两个链接 .

2.2 HelloWorld 入门

[1] 第一个 OSGI例子 HelloWorld

点评 : 够简单和直接 , 有图有真相

 

[2] 你好, OSGi OSGi 入门必读系列

点评 : 可以让你深入一点 . 程度自己掌握 .

 

2.3 HelloWorld 进阶

[1] 利用 Eclipse 开发基于 OSGi Bundle 应用

点评 : 关键词 , IBM, 教程 , 其它的就无需解释 , IBM 的教程 , 永远是教科书中的典范 . 小提醒 , 注意框架和 Bundle 的生命周期 . 这个是整个 OSGI 的核心 .

 

[2] Dictionary OSGi Service模板 Custom端使用

点评 : 使用模板创建 OSGI 工程的时候,可以创建一个字典 , 不过那个是服务提供方的代码 , 这里来一个客户端的代码 , 这个值得研读。

 

[3]   OSGi尝试

点评 : 某人的一些使用体会 , 很不错的参考 , 别人走过的路 , 可以验证 , 也可以越过 , 也可以直接拿来 , 好吧 , 你还是验证一下 .

 

[4] OSGi with Eclipse Equinox - Tutorial

点评 : 这些例子很全 , 但我试了一下午 , 貌似 Declare Service 始终做不来 , 这个教程提供了代码下载 , 但采用的是链接的方式 , 所以,我就一段一段的 copy, 吐血若干杯之后,做完了 , 发现不是需要的效果 . 我还是相信自己的人品产生了问题 . 诸位不妨试试里面的例子。

 

[5] OSGI Tutorial and Running Example

点评 : 这个比 [4] 要直观很多 , 所以我决定写完这篇博客之后 , 立马去跑一遍这里的所有例子 , 因为源码的下载实在太方便了。

 

[6] OSGI资源汇集贴

点评 : 似乎专业性不及本人 , 但可以很好的和本篇提供的资源互补一下。亮点 : Bundle Tool 中文使用手册。进去需要好好研究这个。

2.4 自制的 Demo

[1] 服务端架构技术 —— 基于 OSGI 服务端的架构设计和实现

 

点评 : 自己写的一个 Demo, Server 分发各类服务的例子 , 代码都已经提供了 , 欢迎试用 .

2.5 产品发布

推荐看看我自己总结的文档[4]

[1] OSGI bundle 的打包方法及注意事项

点评 : 没看到亮点 , 甚至没看懂 , 先留在这里 .

 

[2]  OSGI的发布

点评 : 本文总结了 OSGI 应用程序的发布方式 . 还算通俗 .

 

[3] 解决 OSGI环境第三方包的 NoClassDefFoundError

点评 : 这个 Error 追踪了半天 , 这里阐述了一个解决方案 , 但原理性的解释 , 还需要自己进一步探讨 , 可以确定的是 : 这个解决方案很凑效 . 问题是这么解决的—— 1. 将第三方包作为 Bundle 2. 在改 bundle 中的 Manifest.MF 文件中加入上文所说的 .DynamicImport-Package

 

[4] OSGI项目发布总结

 

这个是本人做的总结, 有手动发布, 我脚本的方式发布, 自己看来还是比较全面的.

2.6 OSGI 的大框架和核心组成

[1]  OSGI大饼图

点评 : 其实里面并没有图 , 作为图的爱好者 , 我一直青睐于有图的文档,工具书 , 以及博文 , 但这个确实被忽悠了,它里面没有一张图 , 所以 , 有必要的话 , 可以按照作者的思路 , 补全这些图 , 等你心中有图,必然对 OSGI 了然于心。对了,四层的提法很重要 .

2.7 OSGI 潜规则

每种语言和框架都有自己的游戏规则,顺其者昌 , 逆其者思路一条 , 当前功力尚未修炼到这个级别 .

2.8 OSGI 的自动编译和持续集成

[1]  Bnd - Bundle Tool中文使用手册

点评 : 持续集成 , 还得靠 ANT 还得靠命令行 . 这里就是一个工具包的使用 . 为项目管理添上翅膀 . 建议彻底废弃这个, BND这玩意机会没什么优点。文档支撑也不够。 持续集成无需用到这个, 这篇文章才是更好的方式

 

2.9 白皮书,红皮书,蓝皮书以及无皮书

[1] OSGI in practice

[2] OSGI 实战》

[3] OSGI 进阶》

[4] OSGI 原理与最佳实践》

[5] OSGI Service Platform Core Specification Release   4

猜你喜欢

转载自marsvaadin.iteye.com/blog/1243440