罗俊杰

罗俊杰

他/她暂时还没有添加描述

注册时间:2012-12-24

《深入理解<mark>OSGi</mark>》作者周志明老师访谈

OSGi中文社区近期对《深入理解OSGi》一书的作者,资深Java技术专家周志明老师进行了访谈。周老师也是公认的Java虚拟机方面的领袖人物之一,著有经典著作《深入理解Java虚拟机:JVM高级特性与最佳实践》,广获读者好评。我们将访谈内容整理出来,以飨读者,相信对无论对OSGi的初学者还是实践者都会有很大的启发。


OSGi培训,免费!!!

好消息!除了4月25日晚的演讲,Tim Ward 和 Jeff Liu计划在24日下午在北大为大家带来一次免费的OSGi培训,欢迎大家通过邮件报名,并帮助扩散传播。人数足够培训将正点开班!前期报名参加25日晚Tim Ward演讲的童鞋,我们很快将跟你们进行邮件确认,告知大家具体时间和活动地点,谢谢关注!


OSGi简介

OSGi是Open Services Gateway initiative的缩写,叫做开放服务网关协议。我们说到OSGi时,根据上下文不同,通常可能指OSGi联盟、OSGi标准或者OSGi框架。OSGi联盟成立于1999年,当时是为了建立一套将可管理的服务(Managed Service)通过网络交付到设备中的开放标准。可见,OSGi最开始面向的是从嵌入式和移动设备,这也不难理解OSGi名称的由来了。


Virgo 简介

Virgo项目Web服务器是EclipseRT项目的一部分,是一个完全模块化的Java运行时。Virgo自身就是设计为在标准OSGi框架实现(Equinox)之上的一个OSGi bundle集合。Virgo可以运行企业级Java应用以及基于Spring(Spring - powered)的应用,具有很强的灵活性和可靠性,它提供了一个支持企业级Java应用开发、部署和服务的简单而强大的平台。


Java应用架构读书笔记(1):物理设计与逻辑设计

几乎大部分帮助软件设计和架构的原则和模式主要都是关注逻辑设计。逻辑设计主要关于语言构造块,比如类,操作符,方法和包。识别一个类的方法,类之间的关系,系统包的接口等问题都是逻辑设计相关的问题。这一点并不奇怪,因为大部分的开发者都在花时间解决逻辑设计问题。当设计类及其方法时,我们正是在做系统的逻辑设计,比如 决定一个类是否应该是一个Singleton


Java应用架构读书笔记(2):模块的定义

市面上一直不缺少介绍面向对象设计和面向服务架构相关概念和技术的书籍,但是专门有关模块化的书籍却非常少。 一个模块可以认为是一个“软件块”(chunk of software),但是适用于这一定义的还可以是类,包,构件,服务,甚至是应用。 模块的精确定义: 一个软件模块是一个可部署的、可管理的、本地化复用的、可组装的且无状态的软件单元,为消费者提供了简明的接口。


Java应用架构读书笔记(3):模块化的两面

模块化包含两个方面:运行模型和开发模型。 现在模块化开发更多关注于运行时模型,比如现在已经出现一些运行时模块化支持的框架。 随着运行时模型的发展,最终开发时模型的重要性会为人们所认识。开发模型主要涉及开发者如何利用框架来开发软件应用。开发模型可以进一步分为编程模型和设计范型。除了运行模型和编程模型之外,设计范型需要被更多地关注。


Java应用架构读书笔记(4):架构与模块化

架构(或者称为体系结构)具有非常多的定义: 比如IEEE将架构定义为: 一个系统的基础组织,其中包含了构件,构件之间以及构件与换件的关系,以及指导它们设计和演化的原则。架构师和程序员之间通常有一道鸿沟。架构师主要关注应用和服务,程序员主要关注代码。架构师关注广度,程序员关注深度。


Java应用架构读书笔记(5):处理复杂性

随着系统的演化,系统的复杂性会越来越大。每一次发布,系统的大小就会增加,从而复杂性也会增加。 Spring框架在2003年最早的发布版本中有一万多行代码,到了2.5版本时,代码数量大概翻了六倍。 系统维护和演化的开销大概站了总开销的百分之90以上。 技术债务是Ward Cunningham提出的一个隐喻,用来描述为了赶进度或者满足用户期望所做的设计上的折中。 债务需要及时的处理,否则系统的设计将会持续的腐化,太多的技术债务的积累最终会使得系统崩溃。


Java应用架构读书笔记(6):实现复用

最大化的复用必然导致可用性的复杂化。模块可复用,必然要求模块具有灵活性,而灵活性会导致复杂性提高。 如何处理复用性和可用性之间的平衡是一个复杂的问题,而这个问题跟依赖有关。 我们在复用方面已经做了大量的工作。今天我们有大量的框架可供选择,比如Web框架,ORM框架,安全框架等。这些框架主要解决的是横向的问题,即主要关注基础设施和样例代码,但是对垂直的业务问题缺乏有效的解决方案。


Java应用架构读书笔记(7):模块化与SOA

对于至上而下的社会化架构,模块和包填补了从服务到代码之间的空缺。 类易于在应用内复用,但是由于类不是部署单元,无法支持应用之间的复用。 服务可以在应用之间复用,服务的调用通常基于分布式的协议(比如SOAP,HTTP,RMI/IIOP)。服务通常是远程调用,因此出于分布式请求性能的考虑一般比较大粒度。但是如果只想复用服务中特定的行为该怎么办呢? 或者copy代码,或者暴露新的服务接口。而基于模块则可以得到一种更为优雅的解决方案。


模式1:Manage Relationships

关系管理:设计模块间的关系。 如过一个模块中的某个类引入了两外一个模块中的一个或者一个以上的类,则两个模块之间存在关系。 换句话说:如果模块2内容的改变会影响模块1,则模块1对模块2具有一个物理依赖。 模块之间可以有直接依赖,也可以有间接依赖,或称为传递依赖。具有大量引入依赖(incoming dependencies)的模块,应该是稳定的。保证一个模块稳定的最好方法是使之成为Abstract Module。


Java应用架构读书笔记(8):<mark>OSGi</mark>与模式

当为目标平台提供模块化的运行时支持时,模块化软件的优点将体现得更加充分。OSGi是业界模块化方面的事实标准平台。运行时模块系统并非开发模块化软件的必须,但是一个好的运行时模块系统,比如OSGi,能够为我们的开发带来极大的帮助。


Java应用架构读书笔记(9):OSGi的未来

KirK Knoernschild在《Java Application Architecture》中讲到了OSGi的未来。对于正在采用OSGi以及准备开始学习OSGi的人来说,OSGi的未来的确是一个需要考虑的问题。这里简单总结一下KK在概述中表达的观点。KK的主要观点在于OSGi有助于建立一个Java的生态系统。 以下只是KK观点的一些总结而已,并不表示我们完全同意他的所有观点。


OSGi深度培训 - 全球软件开发大会 QCon 2013

英语主讲:Tim Ward, Paremus Ltd 中文翻译:刘剑锋 课程介绍:这为期二天的OSGi培训将为与会者提供对OSGi的深入理解,范围包括从基本的OSGi到最新的企业级OSGi规范。培训包括80%的演讲和20%的动手实验,以加强对课程内容的理解。课程用英语教授,并有实时中文翻译。


不可错过的OSGi入门学习资源

给大家提供一个非常好的[OSGi入门教程](http://tianmaying.com/course/osgi-toturial)PPT。深入浅出地介绍OSGi技术。介绍OSGi的基本概念,深入讲解OSGi模块层、生命周期层和服务层的知识细节,以及OSGi开发环境的建立。同时搜罗了一系列OSGi文章。


2015-09-21 06:22评论 "基于OSGi框架的敏捷软件协同开发平台Onboard正式开源了!":

太赞了!

2015-04-03 05:58评论 "写书评,赢新书《OSGi与Equinox:创建高度模块化的JAVA系统》":

回复wangpf2011: 确实是一本好书!

2014-08-27 01:32评论 "【分享】张卫滨老师 QClub 演讲材料":

回复张卫滨: 赞!很好的学习材料!

2014-05-07 01:46评论 "<mark>Virgo</mark>简介":

确定Web bundle正常启动的话,可能时路径问题。讨论群加184592447

2014-04-01 09:33评论 "再看OSGi模块层——从在OSGi容器中引入Thymeleaf说起":

将OSGi模块层理论和实践结合得极好的一篇文章

2014-02-24 10:46评论 "OSGi环境下建立Web工程的Hello World":

回复小怪兽: 这种直接用HttpService注册Servlet来写Web应用的方式,已经比较古老了,入门时不建议你用这种方式。找一个支持WAB规范的容器,比如这篇文章中的第二种方法,照着做一下。

2013-12-10 02:00评论 "OSGi环境下建立Web工程的Hello World":

回复zx: 可以用snaps,参考 http://osgi.com.cn/article/7289354

2013-11-29 12:05评论 "《OSGI实战》:第一章 揭开OSGi的面纱":

回复ll_123: 确实如此。调试时也方便不少,模块化做好,实现和接口分离,实现上做修改时不影响其他所有模块。

2013-10-10 03:40评论 "Java应用架构设计:模块化模式与 OSGi(序)":

回复ajiaoJoan: 移步这里,有书可以赠送:) http://osgi.com.cn/article/7289481

2013-10-10 03:20评论 "顶级OSGi专家Tim Ward JavaOne 2013 演讲":

非常有深度的演讲,大家可以看一看。OSGi联盟China forum的主席Jeff Liu给OSGi中文社区倾力推荐!

2013-09-23 01:05评论 "OSGi环境下建立Web工程的Hello World":

回复admott: 你赢了,看过就知道,4句话

2013-09-23 01:03评论 "OSGi环境下建立Web工程的Hello World":

回复admott: 呵呵,我的哪句话把“4.2 以及更新的标准给否决掉”?您又是怎么知道我一头扎进4.1的? 哥跟你说在用5.0您信吗?您真逗啊,不想纠结就别纠结了,您活的真累啊。。。。。。算了,我直接说吧,你除了会在这装没有带给社区任何东西。任何一个从4.1甚至更早就开始跟踪和应用osgi的人,如果亲历新技术的发展,亲历开发社区的演变,到今天来看OSGi,一定会觉得更轻量级,当然也能够感受到更优雅的设计。你是不是这种人哥看不出来。不过这位"四句"兄,你放的几句厥词对初学者没有意义。还有,这篇文章不是哥写的,哥没时间纠结servlet 2.1的内部细节。

2013-09-19 11:11评论 "写书评,赢79元好书":

回复admott: 看过书吗?

2013-09-19 11:10评论 "OSGi环境下建立Web工程的Hello World":

回复admott: 我就搞不懂了,你就这四句话搞定,人家virgo的官方文档却洋洋洒洒这么大篇幅,莫非您不知道?

2013-09-19 10:13评论 "OSGi环境下建立Web工程的Hello World":

回复admott: 写给你自己看看挺不错

2013-09-19 10:09评论 "写书评,赢79元好书":

回复admott: 您很有意思,讲操作系统的著作讲进程调度的时候都会介绍FIFO,哪个OS还会用这种调度算法,一大堆过时的东西何必讲呢?

2013-09-12 04:24评论 "OSGi环境下建立Web工程的Hello World":

回复spring: 是的

2013-09-12 01:09评论 "OSGi环境下建立Web工程的Hello World":

回复spring: 还不够完善,到时候可能会开源。再过一段时间我们应该会把这个社区网站的代码开源出来。

2013-09-09 03:04评论 "深入理解OSGi:前言":

回复spring: 这篇文章讲了一下spring dm http://osgi.com.cn/article/7289212

2013-09-09 10:29评论 "写书评,赢79元好书":

回复admott: 观点有异同,不过大家不只希望看到观点,还希望有例证有干货,不妨写篇文章给大家分享点干货吧。

2013-09-08 08:46评论 "写书评,赢79元好书":

回复fosg: 理论不如osgi in action这倒确实是公道话,osgi in action是现有的最好的osgi书籍!

2013-09-08 08:45评论 "写书评,赢79元好书":

回复admott: 源于读后感而已,有光环也是从书中文字体现出来,而不是花拳绣腿的“高谈”。有干货不妨共享到社区中来嘛:)

2013-09-08 12:36评论 "写书评,赢79元好书":

回复admott: 回复admott: 呵呵,你的观点暂且不论,仁者见仁智者见智,一些观点业界大佬们都有争论,就不用在这争了。你说的内容都是企业级开发,OSGi的编程模型和设计模式书中也有涉及,OSGi上层的一些开放框架和新的服务也有介绍,怎么会完全无视?周老师是Java虚拟机公认的专家,从最基础最底层的类加载机制和模块化思想出发,把OSGi原理介绍得通透明澈,又怎么会没搞技术?

2013-09-06 09:05评论 "写书评,赢79元好书":

回复admott: 这话有失偏颇,首先OSGi最基础的东西还是一样的,其次,作为系统化讲述OSGi的一本书,对OSGi技术的跟进也还是不错的。

2013-09-05 12:52评论 "《OSGI实战》:第一章 揭开OSGi的面纱":

回复程序猿: 全部在这http://osgi.com.cn/article/tagged/4002938

2013-09-02 12:58评论 "Apache Karaf用户指导":

回复zjf_123: 留言的话作者会收到邮件通知的:)

2013-08-29 04:12评论 "写书评,赢79元好书":

最佳实践一章有不少干活!

2013-08-26 10:36评论 "GlassFish OSGi-JavaEE Part1: GlassFish与企业级OSGi开发":

回复eric.deng: 我没用过glassfish。但是如果有eclipse插件的话,debug模式下自然而言就能f5 f6调吧。@Tang Yong 可以指点一下:)

2013-08-20 06:57评论 "Virgo简介":

回复snoopy7713: 非常欢迎:)

2013-08-07 06:20评论 "OSGi作为一个中间件平台的核心":

回复J Liu: What a pity~~

2013-08-06 11:46评论 "GlassFish OSGi-JavaEE Part1: GlassFish与企业级OSGi开发":

回复张卫滨: 已经加上

2013-08-04 11:46评论 "OSGi开发环境建立和Hello World":

回复无爱无忧: 可以看看企业级开发目录下的文章。

2013-07-25 09:50评论 "Gemini Web介绍":

回复Lifan: 周志明老师的访谈里说到了这个问题,你可以看一下http://osgi.com.cn/article/7289397

2013-07-19 05:36评论 "OSGi环境下建立Web工程的Hello World":

回复jsjszg@163.com: 按我的理解,这篇文章中,将http服务器嵌入到osgi框架中,是指通过现有的web服务器适配成符合osgi http service规范的实现。 这样的话,Web的一些特性支持得不好,比如listener貌似支持不了,而一些mvc框架通常都要配置listener,这样就比较难子支持比较复杂的应用了。

2013-07-19 05:31评论 "Java安全层与OSGi":

回复jsjszg@163.com: 小编误操作了,文章改过来了:)

2013-07-17 05:45评论 "Snaps介绍":

回复snoopy7713: http://www.eclipse.org/virgo/documentation/virgo-documentation-3.6.2.RELEASE/docs/snaps-guide/html/index.html

2013-07-17 01:36评论 "《深入理解OSGi》作者周志明老师访谈":

回复snoopy7713: 这样啊,那你可以看看http://osgi.com.cn/article/7289354

2013-07-17 01:31评论 "《深入理解OSGi》作者周志明老师访谈":

回复snoopy7713: 你知道jira有几种扩展方式吗?你想问的是哪一种?

2013-07-17 10:33评论 "《深入理解OSGi》作者周志明老师访谈":

回复snoopy7713: 欢迎吐槽,不过更欢迎有建设意义的意见。jira的插件也支持osgi,不过jira的插件开发根本不存在破解一说,所谓的插件机制更多在应用层面,和osgi这样的底层模块化机制不是一个层面的概念。另外jira的开发文档非常详细,小到增加一个label的插件,大到增加一个bundle,都有step-by-step的教程,开发细节尽在其中。不过jira基于maven的sdk实在太笨重,挺难用的。最后,您实在想看jira的源代码,花点银子买jira是可以得到源码的。

2013-07-05 06:15评论 "OSGi环境下建立Web工程的Hello World":

回复wj2699: 不部署任何bundle,直接命令行用clean模式启动virgo,看有没有这个问题。没有问题的话,然后再从eclipse里头启动virgo,如果启动还报错的话,可能是virgo的eclipse插件版本有问题。

2013-07-02 10:15评论 "OSGi环境下建立Web工程的Hello World":

用nginx跟跟是不是用用osgi或者jetty应该没太大关系吧。<br><br>支持rest风格,也和osgi或者jetty关系不大,现在集成一个mvc框架一般都可以写rest风格的http接口。(比如这个社区网站用的就是spring mvc)<br><br>可以直接用virgo的jetty server,应该能直接满足你的要求。<br><br>当然你也可以想这篇文章中这样,基于http service和内嵌jetty server来搞,但是这样前期耗费的时间会比较多。比如,如果你要用mvc框架的话,一种方法是自己实现一个简单的mvc框架,一种是hack现有框架的代码,为了在osgi环境下正常运行,修改一些类扫描类加载相关的代码。这两种方法都是可行的,我们都有大型项目的成功案例,但是说实话,不推荐。门槛略高。<br><br>直接virgo jetty server是最好的选择。

2013-07-02 10:07评论 "Gemini Web介绍":

可以直接用virgo吧,Virgo 3.0以上的版本,自动就是集成了tomcat7,也自然而然支持servlet3.0了。使用virgo,同样天然就已经集成gemini了。<br><br>至于eclipse4.2,最新的virgo tool插件能在4.2下正常跑就没问题。

2013-07-01 06:17评论 "OSGi环境下建立Web工程的Hello World":

回复拓荒者: 谢谢您的建议。文章确实是基于老的eclipse版本来写的,哪一部分需要更新,在什么地方有问题,麻烦能具体说一下吗? 谢谢

2013-06-18 02:04评论 "模式7:Container Independence":

回复张卫滨: 非常欢迎:) 也欢迎给我们社区投稿,有一些好文章的话,可以发到社区上来,为书的正式出版热热身。

2013-01-29 04:10评论 "OSGi入门篇:生命周期层":

回复罗俊杰: 确实是好文章!

2013-01-29 04:10评论 "OSGi入门篇:生命周期层":

好文

2013-01-27 11:25评论 "OSGi入门篇:服务层":

这篇讲得还稍显浅显,希望继续写一些更深入的内容

2013-01-27 09:07评论 "Gemini Web介绍":

Gemini Web其实最初是从Spring DM的Web extender发展而来的