Java应用架构设计:模块化模式与OSGi
上QQ阅读APP看书,第一时间看更新

序1

我开心得手舞足蹈!我在墙上跳舞,我在天花板上跳舞!我欣喜若狂,我喜出望外。我真的非常开心。

你可能会问:“为什么呢?”我来告诉你为什么——因为终于有人读John Lakos的书了!

在20世纪90年代,John Lakos写过一本名为《Large-Scale C++Software Design》 [1]的书。这本书很棒,它是一本开创性的书。这本书为大规模应用架构制订了很好的方案。

John的书只有一个问题,那就是在书名中有“C++”这样的字眼,并且在出版的时候软件社区正在转向Java,所以真正需要读那本书的人并没有读到它。

但是当时做Java开发的人并没有阅读任何关于软件设计的书籍,因为这些人可能只有22岁,整日坐在舒适的办公室里,使用着Java,按日交易并梦想在23岁的时候成为亿万富翁。他们是如此抢手!

所以,十多年之后的现在就是这个样子了。我们成熟了一些,但也有很多失败。这些失败丰富了我们的经验。现在,需要回过头来看看自己所创建的Java架构废墟。我们怎么能如此幼稚?我们怎么能忽视Jacobson、Booch、Rumbaugh、Fowler以及Lakos所提出的原则呢?我们到底哪里做错了?

我要告诉你我们哪里做错了。Web迷惑了我们,我们的思想过多地受到了Twitter的影响。我们认为Web是革命性的。我们认为Web改变了所有的事情。我们认为Web让所有旧的规则过时。我们认为Web是如此之新、如此具有革命性、如此具有颠覆性以至于忽略了既有的游戏规则。

为此我们付出了代价。我们已经为此付出了高额的代价。我们为巨大的、无法管理的设计付出了代价。我们为复杂的、混乱的代码付出了代价。我们为误导性的、没有指导性的架构付出了代价。我们为失败的项目、破产的公司以及破碎的梦想付出了代价。我们在付出、不停地付出。

经过了15年,我们终于开始意识到原因了。我们开始看到游戏规则一点都没变。我们开始意识到Web只是另一种交付机制,与其他的并没有什么区别——它只是IBM老式绿屏请求/响应技术的一种变体。它就是原来简单的老式软件,我们永远不应该放弃这些游戏规则。

现在,我们意识到应该一直沿用Parnas、Weinberg、Page-Jones以及DeMarco这些人的智慧结晶。我们永远不能远离Jacobson和Booch的教导。我们早就应该读Lakos那本书!

不过,有人确实读过这本书。他肯定还读过一些其他的书,因为他专门写了一本书来描述Java架构的游戏规则,这本书比我以前见过的书都要好。现在你正把这本书拿在手中。写这本书的人名叫Kirk Knoernschild。

在这本书中,Kirk超越了Lakos、Jacobson以及Booch。他借鉴了这些大师的原则并创建了关于原则、规则、指导以及模式的全新组合,这些组合是很伟大的。朋友们,这是关于如何构建Java应用的。

继续翻阅一下。意识到什么了吗?是的,没有废话!都是核心内容。所有章节都是切题的,都是务实、有用且必要的!都是Java应用架构的具体要素——模块化的、解耦的、分层的、可独立部署的以及敏捷的。

如果你是Java程序员,如果你是技术领导或团队领导,如果你是架构师,如果你想要或必须让你的开发团队有所改变,那阅读这本书吧。如果你想避免重复过去15年的悲剧,那阅读这本书吧。如果你想学习软件架构到底是什么,那阅读这本书吧。

闲言少叙。

——Uncle Bob

[1] 本书中文版书名为《大规模C++程序设计》。——译者注