免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 48493 | 回复: 25
打印 上一主题 下一主题

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

论坛徽章:
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
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-15 14:48 |只看该作者 |倒序浏览
获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-4111538-1-1.html

话题背景:

基础永远不会过时。如何立足基础,以低成本有效地构建高质量的软件密集型系统,对于一个Java程序员或者软件工作者来说,都是他们的最大的理想。
在现实世界中进行模块化软件开发所需要的设计模式不是简单的在书本上能够完全学到的,针对不同的系统需要使用不同的手段和方案。尽管模块化确实有助于管理复杂性和创建更容易维护的软件,但是天下没有免费的午餐。如果你想获得模块化所提供的收益,可能需要你在现实软件世界中碰壁很多次才能学到一些经验。

作为解决复杂问题的最有效的方法--分而治之,在软件世界中同样非常流行。借助模块化技术,降低每一部分的复杂性并提高软件重用的便利性。这样我们可以提升软件的架构水平,填补架构师和开发人员在相互理解上的鸿沟,同时又能提升软件的可重用性,控制软件的复杂性。

本期话题:
1、说说您在程序设计中模块化的工作经验,有何利弊
2、对于Java程序员,说说您对OSGi和Eclipse使用中的最佳实践

本期嘉宾:
ChinaUnix架构设计版版主: duanjigang
ChinaUnix架构设计版版主:yanyangtian4502

活动时间:2013年10月15日-11月5日

本期奖品:
活动结束后,我们会评选出5位积极参与话题讨论的网友奖励《Java应用架构设计:模块化模式与OSGi》图书1本,对其他积极参与讨论的网友(回帖有参考价值)我们将奖励积分20分。

活动要求:
1、 要言之有物,不能低于20个字
2、 本次话题主要关注程序设计的模块化方面的的心得体会和使用技巧,其他问题可能不做重点

奖品信息:

Java应用架构设计:模块化模式与OSGi
    原书名:Java Application Architecture: Modularity Patterns with Examples Using OSGi
    作者: (美)Kirk Knoernschild   
    译者: 张卫滨
    丛书名: Java核心技术系列
    出版社:机械工业出版社
    ISBN:9787111437680
    上架时间:2013-9-18
    出版日期:2013 年9月
    开本:16开

样章阅读:
文前.pdf (728.22 KB, 下载次数: 47) 1z.pdf (248.77 KB, 下载次数: 51) 2z.pdf (237.53 KB, 下载次数: 49) 3z.pdf (2.17 MB, 下载次数: 54)

论坛徽章:
0
2 [报告]
发表于 2013-10-17 14:49 |只看该作者
good


论坛徽章:
0
3 [报告]
发表于 2013-10-17 16:58 |只看该作者
虽然没有实践过,但是看到这个话题我就果断访问进来。个人感觉模块化设计大大提高了开发效率,尤其对于团队分工大有裨益。以后需要多多实践的说。

论坛徽章:
0
4 [报告]
发表于 2013-10-17 20:15 |只看该作者
OSGI是个什么东东,直白点说,百度百科上的看都看不懂

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
5 [报告]
发表于 2013-10-21 10:13 |只看该作者
模块化编程的类似于自顶向下的编程方法,大处着眼,细节实在,优点是可以简化程序的编写,有利于理清思路,还方便代码重用和移植,修改方便。
在PC上的模块化就比较随心,根据功能分模块,大功能又分小功能,最后搭积木一样实现所需功能。不过对于嵌入式编程,在不清楚编译器是否会优化的情况下,防止过多的调用影响效率则会适当减少模块过于细分。

论坛徽章:
0
6 [报告]
发表于 2013-10-21 10:52 |只看该作者
我是一个自己学java编小游戏玩的爱好者。我觉得饿模块化编程类似于:先进行软件或系统功能块的划分,然后再着眼于模块功能实现这样的编程方式。我觉得这样的好处是可以系统的对软件的功能有清楚的理解和记忆,不会纠结于细节。模块化后,模块还可以移植到其他软件上来。

至于OSGI,还不知道啥玩意,我去学习它了。。

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34双子座
日期:2014-03-02 00:11:39fulanqi
日期:2016-06-17 17:54:25
7 [报告]
发表于 2013-10-21 15:30 |只看该作者
本帖最后由 chszs 于 2013-10-21 16:05 编辑

1、说说您在程序设计中模块化的工作经验,有何利弊
模块化一般是以项目或产品的功能为基础进行拆分的方法,模块化的目的是为了降低程序复杂度以及提高软件或模块的重用度,使程序设计、开发、调试以及发布和维护等操作变得更为简单。
模块化技术可以使得软件架构更为清晰,可以让需求开发人员也参与到架构设计中来,验证需求的实现程度,同时还能提升软件的可重用性,降低软件的复杂性。
模块化是一种软件架构设计思想,它并不局限于特定的技术,只要你对系统进行了良好的设计和拆分,不管使用什么模块化技术,甚至没有模块化运行框架,你都会从中受益。
在软件设计中使用模块化,一定要注意遵循:模块之间要保持高内聚、低耦合的原则。
其次是在设计模块时,识别合适的粒度等级是很重要的。太细粒度的模块提供的价值很小,可能还需要其他的模块协作才能发挥作用。太粗粒度的模块则会难以重用。  


2、对于Java程序员,说说您对OSGi和Eclipse使用中的最佳实践
OSGi 是Java平台的动态模块化系统。它是OSGi联盟管理的一个规范。在Java系统中也有类似的东西,Oracle力推的Jigsaw,大约会在Java 9中与广大开发者见面。
要清楚,Java的OSGi只是提供了一个运行时环境,它使得在Java平台中实现模块化成为可能,同时它也会强制要求这种模块化。OSGi包含模块化、版本管理、热部署、封装、面向服务、依赖管理等功能。
OSGi是一个规范,它有很多参考实现,其中非常著名的参考实现有:Apache Felix、Equinox、Knopflerfish。根据自己的需求,选择最适合自己团队的OSGi框架。

论坛徽章:
4
CU十二周年纪念徽章
日期:2013-10-24 15:41:34摩羯座
日期:2013-12-24 13:05:332015亚冠之西悉尼流浪者
日期:2015-10-09 16:03:47fulanqi
日期:2016-06-17 17:54:25
8 [报告]
发表于 2013-10-22 16:34 |只看该作者
回复 4# chenxiaopang

OSGi(Open Service Gateway Initiative),  它的英文定义是:The Dynamic Module System For Java.   简单说OSGi就是基于JAVA构建模块化、动态化系统的一种规范。Eclipse 对多种开发语言的JAVA\C++等的良好支持(插件式架构),就是采用的OSGi。


   

论坛徽章:
4
CU十二周年纪念徽章
日期:2013-10-24 15:41:34摩羯座
日期:2013-12-24 13:05:332015亚冠之西悉尼流浪者
日期:2015-10-09 16:03:47fulanqi
日期:2016-06-17 17:54:25
9 [报告]
发表于 2013-10-22 17:52 |只看该作者
本帖最后由 hbsycw 于 2013-10-22 17:55 编辑

1、说说您在程序设计中模块化的工作经验,有何利弊
  答:模块化是软件架构设计中的主要手段和方法,无论面向过程还是面向对象的语言,在软件开发设计中,“高内聚、低耦合”的模块化设计,都是追求的目标之一。简单说,就是按业务功能或者逻辑相关的代码组织在一起,降低复杂度,提高软件复用和扩展能力。因此,模块化这个概念搞软件开发的应该不陌生。但,具体到OSGi,这里的模块化概念有所扩大,这里的软件模块的定义是指可部署的、可管理的、原生可重用的、可组合的、无状态的软件单元。这里的模块化包括两个方面:运行时模型和开发时模型。运行时模式关注如何在运行时对模块化的软件进行管理。JAVA本身对这一块的支持并不够,因此,才导致OSGi, 这一基于JAVA构建模块化、动态化系统规范的诞生。采用OSGi模块化架构一个成功的范例是Eclipse,通过引入插件,可以成为多种语言的开发工具利器。显然,采用这种模块化技术带来的是软件产品的灵活性,易功能扩展;弊端,增加了设计架构难度,前期投入较大。

2、对于Java程序员,说说您对OSGi和Eclipse使用中的最佳实践
  答:如上所述,Eclipse就是采用OSGi模块化技术才能成为多种语言的开发工具平台,JAVA\C\C++等。OSGi的模块化技术是通过Bundle来实现的,Bundle从形式上讲,就是在META-INF目录下的MANIFEST.MF文件中加入了OSGi特定描述的一个jar包。Bundle通过配置jar包中的MANIFEST.MF,可以控制从Bundle导出的包,没有导出的包在Bundle外部是不能被使用的,这样就很好的完成了类的隔离,从而实现了模块化。Bundle可以被动态的安装、启动、停止和卸载,基于OSGi的应用就是由一个个Bundle组成的。

论坛徽章:
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
10 [报告]
发表于 2013-10-27 17:35 |只看该作者
本帖最后由 jimmy-_-lixw 于 2013-10-27 19:22 编辑

一如既往支持CU的活动。

说说您在程序设计中模块化的工作经验,有何利弊

程序设计中模块化,这种方法适合任意一种程序开发语言的。模块化的程序设计思想是相通的。
模块化设计,便于把一项大的复杂的工作简单化.比如一个大的复杂问题,我们把它分成几个模块来解决,每个模块解决这个复杂问题的一部分.这样只要每个模块设计好了,然后把所有模块组装在一起就行了.这样做,容易发现问题,如果不模块化,一旦出现问题,我们要找到问题很困难,模块化以后,由于每个模块实现一个子功能,所以对于问题定位比较容易;其次,可以重复使用模块,避免重复劳动,一个模块可以被多次使用,也便于标准化每个功能;最后升级方便,我们要升级某项能能,只需升级某个模块就行了,这样不容易出错,效率也提高了.

模块化的程序设计,将功能分解,降低之间的耦合性。从而,为了替换某个模块达到质量或效率的提升,就不会改变整个结构,只需要改相应的模块。工作量就会明显减少。这就是好处! 当然,这也是有前提的,也就是前期的设计要花费很多工时,同时,这种设计多半不是一次性完成的,有经验的人可能修改次数少一些。
合理的设计,保证封闭和开放与效率的平衡。既在一定程度上能保证易于修改,也就是易于优化和扩展,也在一定程度上保持良好的性能。

模块化程序设计有很多优点。
举个例子:
如果一本书没有章、节和段落,学习起来该有多么困难。将复杂任务和主题分解为更便于管理的部分,是使它们更容易处理的一种方法。同样,计算机程序也可以分解为小的子程序,或模块,而这些子程序或模块可以分别进行开发和测试。这种方法就称为模块化程序设计。

模块最重要的属性是它们应该尽可能的独立和自包含。另外,一般将它们设计成执行一个特定的、定义好的函数,它有一个入口点和一个退出点。同时,模块常常很短和高度内聚的。

不管对于开发者还是用户来说,小的、自包含的单元都更易于设计和理解底层的逻辑。模块化程序设计使开发更方便,这是因为每个模块都可以独自得以完善。事实上,对于大型软件项目,不同的程序员可以只负责各自的组件。模块化设计也使调试和测试程序更加容易,因为错误更容易隔离开来。最后,程序的维护和修改更加方便。这主要是因为可以开发新模块来执行额外的任务,然后将其集成到现有的、组织良好的架构中。

尽管所有这些属性都是我们使用模块的理由,而与数值工程问题求解相关的、最重要的理由是,可以对有用的模块库进行维护,以便以后在其他的程序中使用。

总而言之,模块化程序设计可以提升软件的架构水平,同时又能提升程序设计的可重用性,控制程序设计的复杂性。



您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP