最近有好几个人都问了我这个问题,问的挺好的,在软件业界新技术层出不穷,做技术的人每天都要不断的学习新技术,在学习每样技术之前,自然是要知道为什么要学习它,说白点,就是得给自己一个理由,对于一个对OSGi完全陌生的人而言,学习OSGi能带给什么呢,给大家几个可选的理由:
1、想提升系统设计能力
OSGi提供了系统级别的软件设计的指导,在传统的设计中对于系统大多数设计师都是采用分模块形成业务架构、进而模块详细设计的步骤,遵循OSGi也是类似如此,只是它能够更加规范的让设计师们去完成这些过程,而不是象现在百花齐放,每个设计师都有自己的一套设计的方式,这就象UML带来的好处,大家以后在设计的交流上是不是就更加容易了呢,当然,这是从大方向来看的,具体的细节方面那是另一回事,基于OSGi的系统基本都采用分Bundle、对Bundle基于Service-Oriented Component Model思想的详细设计,而OSGi对于Bundle各建classloader的机制则是更加容易同时也是强迫的让设计师们很容易就去做到模块解耦的设计,即使你不用OSGi,那也没关系,OSGi的思想难道不值得学习吗,学习了OSGi的这些优秀的思想你也可以在自己的项目/产品中采取类似的设计来提升系统的设计。
2、想实现动态的可管理的系统(即插即用)
N多人都已经知道了,基于OSGi的系统具备充足的动态性,而这其实也是我们在做Java开发时一直想实现的,现在有这么一个现成的已经被证明可实现动态性的规范给你使用和学习,何不使用试试或者学习学习它的设计,然后自己做个动态的系统玩玩呢?
其实很多时候我们是因为在用Java时养成的习惯思维,看OSGi可以让你稍微突破突破java带给你的常规思维习惯,去做到按版本的动态的加载类等一些功能,这是很好的。
3、想建立规范的开发方式和培训体系以及形成积累
对于公司而言,规范的开发方式是一直以来都所期望的,而基于OSGi呢,很容易就可以让公司做到这点,基于OSGi公司所有的项目都可以按照统一的基础架构、开发方式、部署方式来完成,自然公司在开发知识方面的培训体系就能很容易的形成了。
至于形成积累方面,更是公司都所期望的,就像我上篇blog所说的一样,基于OSGi的话可以将公司所做过的项目的模块都放入OBR中,当做新项目的时候就只需要去OBR中下相应的Bundle就可以搭出个脚手架,甚至是差不多的系统了。
上面只是简单的列了三点,OSGi带给业界的影响绝对是远超过IoC这种纯粹解决专一问题的设计思想的,给自己一个理由,或者是没事的时候抽空找个OSGi的应用试试吧,体验体验,也许你就会
上OSGi的
ps:最近有个想法,既然每家公司都要养人做自己的开发平台,那么不如各家公司联合起来做开发平台,进而把开发平台开源出来,这样每家公司就可以大概只要养一两个人了做开发平台了,毕竟大部分的公司都不是依靠卖开发平台来赚钱的,而这样多家公司联合做的好处在于可以聚集各家公司的强人,呵呵,其质量、进度等必然会高过一家公司去做,当然,这种方法中最为重要的就是首先要树立一致的目标,毕竟每家公司对于其开发平台的功能还是有所轻重区别的,希望有共同想法的朋友们响应下......