免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux
打印 上一主题 下一主题

浅谈Java应用架构设计之模块化及OSGi 参与送好书!(获奖名单已公布-2013-11-14) [复制链接]

论坛徽章:
17
戌狗
日期:2013-09-02 23:43:02技术图书徽章
日期:2014-04-29 14:16:02技术图书徽章
日期:2014-04-24 15:51:26未羊
日期:2014-04-06 22:10:30丑牛
日期:2014-04-06 21:23:29辰龙
日期:2014-04-06 21:20:22处女座
日期:2014-04-06 21:16:18技术图书徽章
日期:2014-04-02 15:10:51金牛座
日期:2014-03-10 22:26:18巨蟹座
日期:2014-02-17 17:12:12技术图书徽章
日期:2014-01-24 10:38:43摩羯座
日期:2013-11-29 18:00:18
11 [报告]
发表于 2013-10-27 19:25 |只看该作者
本帖最后由 jimmy-_-lixw 于 2013-10-27 19:27 编辑

OSGi和Eclipse使用方面,期待能从《Java应用架构设计:模块化模式与OSGi》书中学习到。

论坛徽章:
1
摩羯座
日期:2013-11-29 18:02:31
12 [报告]
发表于 2013-10-28 13:20 |只看该作者

1、        说说您在程序设计中模块化的工作经验,有何利弊
         模块化显然是极其重要的,特别是对于大型软件架构来说,没有模块化那简直是软件的噩梦。在我平时的工作中,软件需求分析时就直接是以模块化的文档体现的,在软件代码实现过程中,需求文档也特别提出了以模块化来实现,因为产品都是成系列的,为了作到代码的最大程度的复用,所有的功能都是以模块化实现。
         模块化显然好处多多了,易于维护和复用,特别是软件出错时,很容易在模块间建立BugFireWall。另外,通过模块化,可以很容易地将各个模块与其它组件联合起来,模块化很容易实现另一个产品线的分支引出,同时维护多个产品线很容易实现。
模块化实现过程中,有一点不易于把握:模块实现的粒度,粒度过大,则无法体现模块的优越,且模块内部实现复杂,粒度过小,模块就会很多,同样难于维护。
        模块化编程,我印象最深的一点是:每个模块都是有生命周期的,系统架构通过特定的事件或信号(这个具体依赖于架构的软件实现方式),使用模块的生命周期特性将所有的模块联系起来,这样组织软件架构清晰明了,各个模块间的关系也很容易确定,最关键的是,模块的生命周期为模块的编程实现提供了很好的实现方式,只要针对模块每个生命周期编程就可以了,这样做很有利于模块的标准化和快速开发。

2、对于Java程序员,说说您对OSGi和Eclipse使用中的最佳实践
       OSGi作为一个成熟的模块化的解决方案,其优越性在Eclipse中得到了充分体现。平时我使用Eclipse开发Java/C/C++程序,想使用什么插件时,动态添加,深感其便捷性。OSGi本质上是个组件和服务模块,它通过绑定包的方式实现模块化。OSGi定义了插件的生命周期和交互方式,然后使用Java类加载器执行,各个插件的依赖关系都是在manifest.mf中保存的。
       理解OSGi的最好方式莫过于自己动手为Eclipse写一下插件了,那样就会更加理解模块化思想,对OSGi的实现方式也会有更深入地体会。

论坛徽章:
2
季节之章:冬
日期:2015-01-20 17:08:47IT运维版块每日发帖之星
日期:2016-02-24 06:20:00
13 [报告]
发表于 2013-10-31 12:29 |只看该作者
1、说说您在程序设计中模块化的工作经验,有何利弊
软件架构必须模块化。
模块化的首要目的不是为了提高软件或模块的重用度,而是为了降低程序复杂度。模块的隔离,降低了耦合度,逻辑也隔离了。
模块化软件架构更为清晰,降低软件开发和使用的复杂度。
同时,模块化也能提高软件的性能。


2、对于Java程序员,说说您对OSGi和Eclipse使用中的最佳实践
OSGi 是Java平台的一个模块化规范,有很多参考实现,如, Felix、Equinox。
OSGi提供的是一个软件架构方式,不仅使得在Java平台中实现模块化成为可能,也会强制要求必须模块化,但模块的划分仍然依靠个人的能力。

论坛徽章:
1
2015小元宵徽章
日期:2015-03-06 15:57:20
14 [报告]
发表于 2013-11-01 10:18 |只看该作者
1、说说您在程序设计中模块化的工作经验,有何利弊
========================================
模块化是将整个程序应用分解成为一个个的模块,这样便于team内部的任务分解,分工协作,模块化还能够优化程序设计,一方面,当需求发生变化的时候,只需要替换相应的模块即可,另一个方面,拖过模块化的划分,绘制系统组件图,能够更清晰的表达系统各单元之间的功能边界,通信交互以及各种边界条件.
坏处嘛,这玩意儿是个技术活,如果模块组织不好,那么极有可能造成系统由于过多地交互降低系统效率,不合适缺乏通用性考虑的接口规范更是让系统变得僵化.


2、对于Java程序员,说说您对OSGi和Eclipse使用中的最佳实践
========================================
jBuilder倒下以后,eclipse成为java程序员的开发首选工具,就像vi对于c开发人员一样,sun自己的开发工具netbeans好像没有想象的那么流行.一个饭碗嘛,天天用,没啥最佳实践,哪天不用了(找到更大的饭碗了)就是最佳实践了.
OSGi最初是java模块化的一个解决方案,它这个模块化和上面说的模块化不是一回事,上面说的是应用程序层面的模块化,而OSGi是从更底层,虚拟机这个层次提出模块化解决方案,是通过java的class loader真正的将某些需要的类包动态的载人jvm,它不仅仅是将程序模块化,而且提供了只加载需要模块的便利,可以类比c语言里面的动态链接库的使用,但是二者从语法语义等各方面都差很远,这样做的最大的好处,除了模块化本身外,另一个好处是在超大型项目里面,能够通过对系统的模块以OSGi boundle(应该是这个名字吧,忘了)的形式载入jvm,是该部分代码永久的驻留内存(因为别的部分不需要没有加载)。

疑问是:OSGi这么做,是需要程序员,设计人员,从另外一个角度考察分解软件应用系统的,但是对于一般的应用,又找不到一个不得不用OSGi的场景,所以如何权衡得失还需要高手指教。

论坛徽章:
0
15 [报告]
发表于 2013-11-07 11:32 |只看该作者
本帖最后由 xike2002 于 2013-11-07 11:33 编辑

1、说说您在程序设计中模块化的工作经验,有何利弊
答:(Block-based design) 所谓的模块化设计,简单地说就是将产品的某些要素组合在一起,构成一个具有特定功能的子系统,将这个子系统作为通用性的模块与其他产品要素进行多种组合,构成新的系统,产生多种不同功能或相同功能、不同性能的系列产品。模块化设计是绿色设计方法之一,它已经从理念转变为较成熟的设计方法。将绿色设计思想与模块化设计方法结合起来,可以同时满足产品的功能属性和环境属性,一方面可以缩短产品研发与制造周期,增加产品系列,提高产品质量,快速应对市场变化;另一方面,可以减少或消除对环境的不利影响,方便重用、升级、维修和产品废弃后的拆卸、回收和处理。

模块化的优点
(一)对企业产品研发的贡献
由于模块化推进了创新的速度,使得企业领导者对竞争者的举动做出的反应时间大大缩短。作为一条规则,管理者不得不更加适应产品设计上的各种发展,仅仅了解直接竞争厂商的竞争战略是远远不够的,这个产品的其他模块的创新及行业内部易变的联盟都有可能招致激烈的竞争。模块是产品知识的载体,模块的重用就是设计知识的重用,大量利用已有的经过试验、生产和市场验证的模块,可以降低设计风险,提高产品的可靠性和设计质量。模块功能的独立性和接口的一致性,使模块研究更加专业化和深入,可以不断通过升级自身性能来提高产品的整体性能和可靠性,而不会影响到产品其他模块。模块功能的独立性和接口的一致性,使各个模块可以相对独立地设计和发展,可以进行并行设计、开发和并行试验、验证。模块的不同组合能满足用户的多样性需求,易于产品的配置和变型设计,同时又能保证这种配置变型可以满足企业批量化生产的需求。
(二)对企业工作效率和成本控制的贡献
设计和零部件的重用可以大大缩短设计周期;并行的产品开发和测试可以大大缩短设计周期;利用已有成熟模块可大大缩短采购周期、物流周期和生产制造周期,从而加快产品上市时间;如果划分模块时考虑到企业售后服务的特定需求,同样可以缩短服务周期和耗费资源时间。模块和知识的重用可以大大降低设计成本;采用成熟的经过验证的模块,可以提高采购批量,降低采购和物流成本;采用成熟的经过生产验证的模块,可以大大减少由于新产品的投产对生产系统调整的频率,使新产品更容易生产制造,可以降低生产制造成本;产品平台中及平台之间存在大量的互换模块,可以降低售后服务成本。
(三)对企业组织的贡献
模块化有利于企业研发团队分工,规范不同团队间的信息接口,进行更为深入的专业化研究和不同模块系统的并行开发;抽象平台和模块的建立,可以实现企业组织结构与产品模块结构之间的交互,使并行工程拥有实施的根基,工艺、财务、采购和售后服务可以在产品研发早期就介入产品研发项目;标准规范的模块接口有利于形成产品的供应商规范,有利于产业分工的细化。

2、对于Java程序员,说说您对OSGi和Eclipse使用中的最佳实践
答:OSGI SERVICE PLATFORM是一个基于JAVA的,开放并且提供统一接口标准的体系框架,在OSGI中所有模块的部署都必须以Bundle 的方式来进行部署。基于这个体系框架,服务提供商,程序开发人员,软件提供商,服务网管运营商,设备提供商能够 协调地联合起来开发,部署以及管理向用户提供的各种服务。
OSGI的优势:
(1)插件可热插拔   
可以实现软件的动态升级
(2) 代码维护               
不同Bundle间依赖仅存在于接口的层面上, 有利于代码的维护。
(3) 稳定、高效的系统
基于OSGI的系统采用的是微核机制,微核机制保证了系统的稳定性,微核机制的系统只要微核是稳定运行的,那么系统就不会崩溃,也就是说基于OSGI的系统不会受到运行在其中的Bundle的影响,不会因为Bundle的崩溃而导致整个系统的崩溃。
(4)规范的、可积累的模块
大部分软件公司都形成不了规范的模块开发方式,因为没有统一的规范的基础架构体系的定义,往往每个项目、每个产品都会因为架构师的偏好、技术的发展而导致模块的开发方式完全不同,这就使得软件公司在人员技能要求、培养上很难形成统一,而OSGI为这个问题提供了解决方案,基于OSGI的系统采用规范的模块开发、部署方式构建系统。

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
16 [报告]
发表于 2013-11-27 17:43 |只看该作者
活动貌似结束了,刚刚看到这个。。。。

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
17 [报告]
发表于 2013-11-27 20:43 |只看该作者
qq27898 发表于 2013-11-27 17:43
活动貌似结束了,刚刚看到这个。。。。
兄弟有兴趣 啊?

你也做java相关工作?

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
18 [报告]
发表于 2013-11-28 09:15 |只看该作者
回复 17# send_linux


    哈哈,我是做Java ERP 开发的,不过正在转型嵌入式

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
19 [报告]
发表于 2013-11-28 09:39 |只看该作者
qq27898 发表于 2013-11-28 09:15
回复 17# send_linux


嵌入式?是andorid方面的么?手机上的java应用?

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
20 [报告]
发表于 2013-11-28 11:12 |只看该作者
回复 19# send_linux


    嘿嘿,Linux嵌入式,不过现在基本上班自学呢,买了几本书。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP