当音乐学博士搞起编程...
前言
说到 Spring,也许现在的开发者们最先想到的是 Josh Long
超快的语速与现场代码能力,让很多 Java 开发者折服。
然后 Spring 的历史上,最传奇的还是要数其创始人:Rod Johnson!
先不说别的,看到他的学历,你就震惊的了,悉尼大学的音乐学博士!不要惊讶,不是计算机!
也许就是因为这样一颗理性思维与艺术细胞结合的秃顶大佬,才能造就 Spring 这样的产物吧。
Rod Johnson
Rod Johnson,就是上图这位头顶略微地中海的男子,但是秃脑袋瓜并没有让 Rod Johnson 变得难看,好几个同学一致认为这家伙长得很酷。
按照他身边的密友所描述的,Rod Johnson 平日里看上去就像是一个典型的英国绅士,虽然他好像出生在澳大利亚,但是现在住在伦敦。说起话来也是一板一眼,有条有理。字正腔圆而略有点尖的口音让人听起来特别清楚。
大多数人都认为 Rod Johnson 似乎天生缺少一样东西:幽默感。但实际上看看下面这端开场白:
回到 2001 年,当我写下第一行代码时,那些代码并没有放到 GitHub,没放在上面是因为 GitHub 当时不存在,所以我想 Spring 应该比 Git 老三四岁...
让人不禁宛然一笑,Rod Johnson 也跟其他程序员一样是个挺可爱的人吧。
轮子理论
提到 Rod Johnson,大家还总会想起轮子理论。
所谓轮子理论,就是指:不要重复发明轮子,这是西方国家的一句谚语,原话是:Don't Reinvent the Wheel。意思是企业中任何一项工作实际上都有人做过,我们所需要做的就是找到做过这件事情的人。拿到软件领域中就是指有的项目或功能,别人已经做过,我们需要用的时候,直接拿来用即可,而不要重新制造。
Rod Johnson 想告诉我们,Spring 就是在不重复发明轮子的理念及指导原则上做起来。
于是一夜之间,随着 Spring 在全世界的风风火火,特别是吹到我们祖国的时候,也许是爱屋及乌的原因吧,轮子理论也被众多的 Spring 粉丝当成做人做事做程序的信条及原则。
Spring 与 Expert One on one J2EEDevelopment without EJB
Spring,可以说就像是 Rod Johnson 的代名词一样,大家对 Rod Johnson 印象最深的成就自然是 SpringFramework 和 Expert One on one J2EEDevelopment without EJB。
Java 从诞生之日到如今经历了风风雨雨数十年,从低谷到高峰,JAVA 之所以是世界上最受欢迎的开发语言之一,Spring 框架起到了非常重要的作用。
当时间还停在 21 世纪初,Java EE 的整个系统框架处在臃肿、低效、脱离现实的种种现状之中,将其进行轻量化成为业内的一致的呼声,此时 Rod Johnson 就像一颗璀璨的明珠一样横空出世,积极寻求探索革新之道。
Rod Johnson 最开始在 2000 年为伦敦金融界提供独立咨询业务时曾经写了一个简单的框架,以此为基础他编写了 interface21 框架,这是一个力图冲破 Java EE 传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。可以说这就是 Spring 的前身,Rod Johnson 当时的观点就是 :如何让应用程序能以超出当时大众所惯于接受的易用性和稳定性与 J2EE 平台上的不同组件合作。
Spring 框架即以 interface21 框架为基础,经过重新设计,并不断丰富其内涵。最终于 2004 年 3 月 24 日,发布了 1.0 正式版。
配合 Spring 的诞生,Rod Johnson 在同年编著了 Expert one on one J2EE design and development 一书,堪称经典,直至今日,还有不少莘莘学子将其视为 Spring 必读宝典。
这本书甫一面世,就在 Java 世界掀起了轩然大波,不断改变着 Java 开发者程序设计和开发的思考方式,影响至今。Rod Johnson 根据自己多年丰富的实践经验,对 EJB 的各种笨重臃肿的结构进行了逐一的分析和否定,并分别以简洁实用的方式替换之。
Spring1.0 版本发布之后,Spring 框架在 Java 社区里变得异常流行,当然这也要部分的归功于它不错的文档功能和详尽的参考文献,特别是对于一个开源项目而言尤其如此。
Spring 框架的一个重要设计目标就是更容易地与已有的 J2EE(现在称之为 JavaEE 或 JEE)标准和商用工具整合。
也正因此,Rod Johnson 奠定了自己的江湖地位,成为一个改变 Java 世界的大师级人物。
版本变迁
Spring 几乎已经成为现在每一位 Java 开发人员都耳熟能详的开发框架,不论你是一名初出茅庐的程序员还是经验丰富的老司机,都会对其有一定的了解或使用经验。在现代企业级应用架构中,Spring 技术栈几乎成为了 Java 语言的代名词。我们不妨从最初的 Spring 开始,看看它为什么能够横扫千军,一统江湖!
Spring 版本变迁:
自 2004 年 Spring1.0 发布之后,Spring 框架迅速发展,不断进化。1.0 的出现彻底改变了开发企业级 Java 应用程序的方式。 Spring 的依赖注入与声明式事务意味着组件之间再也不存在紧耦合,再也不用重量级的 EJB 了。
2006 年 10 月,发布 Spring 2.0 ,具有可扩展的 XML 配置功能,用于简化 XML 配置,支持 Java 5,额外的 IoC 容器扩展点,支持动态语言。更小、更简单易懂的配置文件让 Spring 本身更便于使用
2007 年 11 月 ,Interface21 项目更名 SpringSource,同时发布了 Spring 2.5,支持 Java 6 / Java EE 5,支持注释配置,classpath 中的组件自动检测和兼容 OSGi 的 bundle。让我们有了更优雅的面向注解的依赖注入模型(即 @Component 和 @Autowired 注解),以及面向注解的 Spring MVC 编程模型。不用再去显式地声明应用程序组件了,也不再需要去继承某个基础的控制器类了。
2009 年 12 月,Spring 3.0 发布,具有许多重要特性,如重组模块系统,支持 Spring 表达式语言,基于 Java 的 bean 配置(JavaConfig),支持嵌入式数据库(如 HSQL,H2 和 Derby),模型验证/ REST 支持和对 Java EE 的支持。XML 被取代,终于可以写出一个没有任何 XML 配置的 Spring 应用程序。
2013 年 12 月,Pivotal(2013 年 4 月,VMware 和 EMC 通过 GE 投资创建了一家名为 Pivotal 的合资企业。所有的 Spring 应用项目都转移到了 Pivotal) 宣布发布 Spring 框架 4.0。包含了对 Java 8 的全面支持,更高的第三方库依赖性(groovy 1.8+,ehcache 2.1+,hibernate 3.6+等),Java EE 7 支持,groovy DSL for bean 定义,对 websockets 的支持以及对泛型类型的支持作为注入 bean 的限定符。
2017 年 9 月,Spring 5.0 GA 版本发布,开始支持 JDK 8 和 Java EE 7,同时兼容 JDK9。全面支持 Servlet 3.1,还引入了一个全新的模块 Spring WebFlux 用于替代老话的 spring-webmvc;对 Kotlin 也有了更好的支持。
而目前,最新的是 5.3.2 GA 版本。
具体版本可见:https://spring.io/projects/spring-framework#learn
Spring 在不同的领域不断发展:移动开发,社交 API 集成、安全管理、NoSQL 数据库、云计算和大数据等等都是它正在涉足和创新的领域,使其前景更加广阔,甚至已经形成与传统的 JavaEE 平台分庭抗礼之势。
离开
江湖,有聚必有散。
2007 年,SpringSource 从基准资本获得了 A 轮融资(1000 万美元)。在此期间 SpringSource 也收购了多家公司,如 Hyperic,G2One 等。
但是等到了 2009 年 8 月,SpringSource 反倒是以 4.2 亿美元被 VMWare 收购。
而在 3 年后的 2012 年 7 月,Rod Johnson 就离开了他一手创建的 Spring 团队。
或许我们可以这样想,如果当初 SpringSource 没有被 VMWare 收购,是不是 Rod Johnson 就不会离开团队,是不是现在的 Spring 会更好?答案我们自然不得而知。
Rod Johnson 当年在 SpringSource 官方博客上公布这一消息时声称 SpringSource 将成为 VMware 下属的一个部门,而他将仍是 SpringSource 的领导者。他当时对未来的展望是:
此次决定是很自然而符合逻辑的:这将带来更多的新技术,并且对 Spring 框架以及 Spring 社区都有好处。
>
我很兴奋。希望你也是。这将极其有趣。
Spring 框架将继续提供优质的企业级 Java 支持。我们从关注开发者如何创建和使用应用,到关注他们如何部署和运行企业级应用;为此我们创建了 dm Server 和 tc Server。我们收购 Hyperic 也是为了改善开发者管理企业级应用的方法。
与 VMware 的合作中,我们计划创建一个简单,集成,创建-运行-管理合一的数据中心、私有云和公共云的解决方案。这个方案将融合应用架构的知识,连带中间件以及管理控件,确保一个虚拟环境在部署过程中以及运行时的最大效率及弹性。这是一个 PaaS,建立在你已知的技术之上,从而最大的减少花费与复杂度。这是一个围绕开源、可移植的中间件技术的解决方案,既可以在传统数据中心的 Java EE 应用服务器上运行,又可以在如 Amazon EC2 之类的弹性云上运行,也可以在 VMware 平台上运行。
与 VMware 的 vSphere 以及其他云技术一起,我们将在框架和基础设施上带来一个全新的体验。SpringSource 的应用框架、服务器及管理软件将成为 VMware 平台的眼睛和耳朵。
SpringSource 的下一步工作将是这些新的挑战:基于我们的 Build/Run/Manage(创建运行管理)系统,提供从桌面端到云端的最佳解决方案。让百万 Java 开发者都能享受到云计算带来的好处。
可能他当时心里想的是作为 Java 领域的重要厂商,在加入 VMware 后,其 Java 开发经验将与 VMware 的虚拟化平台相结合,增强其在企业服务市场中的竞争力。另外,SpringSource 在全球大型企业中的广泛客户资源也能够让 VMware 受益。不管怎么说,似乎从现在的结果来看,Spring 也做得不错,没有辜负 Rod Johnson 当初的一番期望。
传奇现今
现在的 Rod Johnson 成为了一个天使投资人,同时也是多个公司的董事(例如 Neo Technology,elastic,Meteor 和 Hazelcast 等著名的开源公司),早已走上人生巅峰。同时他依然还是经常会在技术大会上做演讲,游走在世界各地,为后来者传授各种技术经验及想法。
在去年 10 月份的 SpringOne Platform 大会上,Rod Johnson 还特地做了一个关于 Spring18 岁的演讲,也许他的样子变了,但是讲起 Spring,他还是像讲起自己的孩子一般滔滔不绝,Rod Johnson 分享了 Spring 的起源、历史,总结了一些 Spring 框架发展过程的经验教训:
Spring 的历史起源
Lesson 1: Fairy tales can offer useful lessons 寓言故事能提供有用的教训
Lesson 2: Need Clear, Shared Values 需要清晰,共有的价值
Lesson 3: Know where you're going 明确方向
Lesson 4: Quality beats quantity in a team 打造团队宁缺毋滥
Lesson 5: Market and sell your technical solution 营销你的技术方案
Lesson 6: Other people have great ideas. Borrow them but acknowledge their work 认可借鉴别人的好点子
Lesson 7: The developers you want need autonomy 开发者需要自治
Lesson 8: Question the "enterprise" mindset 质疑“企业级”观念
Lesson 9: Some Spring Advice 一些 Spring 的建议
Next For Me: Atomist - A Framework for Development and Delivery 我的下一站:Atomist——一个关于开发与交付的框架
Lesson 10: Raising software is like raising a child 开发软件像养育一个孩子
有兴趣的读者可以自行查看,视频地址如下:https://www.bilibili.com/video/av200511420
你知不知道 Rod Johnson?
你有没有看过 Expert One on one J2EEDevelopment without EJB?
欢迎留言分享你的感受!
欢迎关注我的独立博客:didispace.com ,分享更多关于 Spring 的干货与有趣的互联网故事,
版权声明: 本文为 InfoQ 作者【程序猿DD】的原创文章。
原文链接:【http://xie.infoq.cn/article/e59bd43ab64fe309a4dcbc3ef】。文章转载请联系作者。
评论