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代码,或者暴露新的服务接口。而基于模块则可以得到一种更为优雅的解决方案。


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

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


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

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


Java应用架构设计:模块化模式与 OSGi(序)

“分而治之”是解决复杂问题的有效方式。 面对业务功能复杂的企业级软件,我们会寻找各种方式和标准进行拆分,其目的无非是降低每一部分的复杂性并提高软件重用的便利性。在本书中,作者提供了解决这类问题的另一种方案,那就是模块化。借助模块化技术,我们可以提升软件的架构水平,填补架构师和开发人员在相互理解上的鸿沟,同时又能提升软件的可重用性,控制软件的复杂性。


Java应用架构设计:模块化模式与 OSGi(1)

模块化的理由: 市面上从来不缺乏软件设计方面的图书。有很多的书会教导你面向对象设计的基本和高级 理念。你还会发现几乎有同等数量的书来教导你 面向服务架构的基本和高级概念。但是,这里缺失了一部分:模块化。将系统的最高层架构和内部代码结合起来的深刻讨论,你应该很少见到。 在本书第一部分中,我们首先在模块这个词上达成共识。然后马上会讨论模块化的两个方 面:运行时模型和开发模型。从这里开始,将会考 察模块化怎样帮助我们实现“自上而下的架构”,这是通过将重要的 高层架构组件与更具体的实现结合在一起做到的。复杂性是我们要征服的怪兽,而重用是我们想得到的灵丹妙药,模块化在这两个方面都会给我们提供帮助,我们会讨论它在这个过程中所扮演的重要角色。最后,在进入模块化模式之前,会通过一个样例练习介绍模块化的收益。在整个过程中,我们为使用模块化找到了充分的理由。


Java应用架构设计:模块化模式与 OSGi(2)

模块化包含两个方面:运行时模型和开发模型。现在,关注的重点是运行时模型,出现了一些支持运行时模块化的框架。但最终,随着运行时模型的采用,开发模型的重要性将会占据主导地位。在本书中,关注开发模型的模式称为设计范式(design paradigm)。


Java应用架构设计:模块化模式与 OSGi(3)

模块化在软件架构中扮演着重要的角色。它填补了自从用Java开发企业软件系统以来就一直存在的空白。本章将会讨论这个空白领域并探讨模块化是如何作为重要的中间技术填补这个空白的。


写书评,赢新书《Java应用架构设计:模块化模式与 OSGi》

<p><code>OSGi中文社区</code>携手<code>华章图书</code>给粉丝们送福利来啦!OSGi经典好书《Java应用架构设计:模块化模式与 OSGi》抢先阅读啦~ </p> <p>只要你: 关注<a href="http://e.weibo.com/osgicn">“OSGi中文社区”</a>和<a href="http://e.weibo.com/huazhangbook">“华章图书”</a> 的微博; 试读《Java应用架构设计:模块化模式与 OSGi》前三章,并且在此页面留言写下书评或者读后感。 就有机会获得价值69元的《Java应用架构设计:模块化模式与 OSGi》一本。一共会送出5本噢。 </p>