OSGI学习手册

来源:互联网 发布:微信域名入口页 编辑:程序博客网 时间:2024/06/05 11:39

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] 你好,OSGiOSGi入门必读系列

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

 

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潜规则

 

[1]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

原创粉丝点击