UML软件工程组织

Spring--内容与形式并重
作者:罗时飞
    内容、形式向来都是哲学中经常讨论的话题。在现实生活中,往往很难做到内容与形式并重。在IT技术领域,比如Open Source社区,也存在类似问题。我们假定:将优秀Open Source项目本身的开发作为内容看待,而对Open Source项目的持续关注(维护)作为形式看待。显然,很多项目仅仅关注内容,不关注形式。比如,PropertySet项目、很多开源工作流项目。正如JBoss创始人Marc所说,许多Open Source项目出来后往往昙花一现,并没有给出持续关注。

    可以试想:一旦在自身的项目中使用了这类不关注形式的Open Source项目,则会给软件产品(项目)的后期维护(升级)带来隐患。为什么呢?因为成功的软件产品往往需要进行升级,而在升级它们的同时,使用的第三方Open Source框架(比如,Hibernate)通常都逃脱不了。此时,只有自身去维护这类Open Source项目了。从此,陷入了僵局。

    如果我们使用的第三方Open Source项目足够好,用户在升级自身的软件产品时暂时不用考虑到它们的升级。但是,请不要忘记:IT技术的变革始终是存在的,而且发展迅猛。随着时间的推移,对第三方Open Source项目不进行升级的软件产品肯定会很快退出历史舞台。因此,在选用Open Source项目开发自身的软件产品时,值得慎重考虑!

    Spring在2004年可谓是在J2EE社区出尽了风头。甚至,2005年即将推出的1.2版本还集成了JMX、JCA、Hibernate 3.x、Annotation等主流技术。而且,还进一步完善了对AOP的支持(包括面向属性和面向方面编程)。如果再去Spring的jira查看Spring的Road Map,则能够发现,这一切是多么完美。

    显然,无论是Spring的内容,还是形式,都是一流的。这个小生命诞生于2003年(严格地将,并不是)。发展至今,已经有两年光景了。在J2EE 5.0来不及还击的时候,Spring已经在不少方面超过了开发者对它的预期。

    Spring的形式怎么样呢?

    最初,Sourceforge上有了Spring项目、Spring有了springframework.org门户。然后,有了官方支持论坛。Rod Johnson专门开了家公司,然后Juergen Hoeller掌管了Spring的开发。整个Spring开发Team一共活跃了十几个成员(显然,他们都是武林高手)。而且,Spring也诞生了很多子项目,比如Spring IDE(如果还不会安装、使用,则赶快参考《精通Spring》一书)、Spring Web Flow、Spring Modules 等等。

    现在,Spring就像粘合剂,几乎所有的Open Source、非Open Source项目都和它存在或多或少的关系,正如我在《精通Spring》一书前言中写到的一样。比如,著名的ESB实现Mule、Acegi、 Liferay、等等。现在,已经形成了健康、积极的Spring社区。如今,几乎每个月都会发布新版Spring。

    通过Eclipse CVS下载Spring后,能够发现Spring项目本身就是Eclipse项目。而且,其依赖的第三方库都包含在项目中。这些都是为开发者考虑的。另外,它还提供了完整的、基于Ant的编译系统(build.xml)。注意:这方面的内容在《精通Spring》的第2章给出了细致的介绍。

    Spring的内容怎么样呢?

    在使用JDBC操作RDBMS时,简单查询操作都要求使用30行代码左右。在使用Hibernate操作它时,也需要10行代码左右。但是,如果借助于 Spring提供的模板模式实现,则只需要2-3行代码。注意,这可是线程安全的。Spring为各种J2EE服务抽象提供了操作模板,比如JNDI、 JMS、JDBC、JTA、Hibernate、等等。这些模板加速了开发者的生产效率。不仅如此,它们是经过业界检验的,因此可以放心地使用。我认为,这些模板富有艺术性(不信?请阅读《精通Spring》一书的第二部分内容)。

    将声明式事务应用于POJO、POJO的生命周期不用开发者管理、管理对象之间的关系交由Spring负责、负责IoC容器实现、实现了实用AOP框架、等等都是Spring特有的(有关内容请参考《精通Spring》一书的第一部分内容)。这些都是实实在在的。从开始到现在,延伸到未来,Spring都能够从提升开发者的生产率、开发体验出发。

    内容与形式并重的Spring,正是我们所需要的。

    我们期待更多的这类项目能够出现。不仅仅是Spring,Hibernate、Tapestry都是如此(注意,《精通Spring》一书可有不少 Tapestry、Hibernate方面的内容)。如果对Tapestry不熟悉,不了解,则赶快去体验一下吧!当然,JSF(《精通Spring》一书可花费了一章的篇幅论述它,并给出了完美的研究示例)也不应该错过。

    Spring属于架构级的框架。架构级的框架不多,更何况Spring是佼佼者。

 

 

版权所有:UML软件工程组织