作者 | 程序猿DD    责编 | 阿哲

头图 | CSDN 下载自视觉中国

说到 Spring,也许现在的开发者们最先想到的是 Josh Long。他凭借超快的语速与现场代码能力,让很多 Java 开发者折服。然而 Spring 的历史上最传奇的应该是其创始人:Rod Johnson!

先不说别的,光是他的学历,就足够令人震惊了,悉尼大学的音乐学博士!不要惊讶,不是计算机!

也许就是因为这样一颗理性思维与艺术细胞结合的秃顶大佬,才能造就出 Spring 这样的产物吧。

Rod Johnson

Rod Johnson

Rod Johnson,就是上图这位头顶略微地中海的男子,但是秃脑袋瓜并没有让Rod Johnson 变得难看,好几个同学一致认为这家伙长得很酷。

按照他身边的密友所描述的,Rod Johnson 平日里看上去就像是一个典型的英国绅士,虽然他好像出生在澳大利亚,但是现在住在伦敦。说起话来也是一板一眼,有条有理。字正腔圆而略有点尖的口音,听起来特别清楚。

大多数人都认为 Rod Johnson 似乎天生缺少一样东西:幽默感。但实际上并不是这样,例如下面这段开场白:

回到 2001 年,当我写下第一行代码时,那些代码并没有放到 GitHub,没放在上面是因为 GitHub 当时不存在,所以我想 Spring 应该比 GitHub 老三四岁...

让人不禁宛然一笑,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?

更多精彩推荐
☞程序员求生指南:告别大小周,摆脱监视,直奔年终奖!
☞中美科技战:打了华为,为何小米再遭殃?☞除了国内红海拼刀,移动 App 在海外能否挖到新机会?
☞MIT 知名华人教授陈刚被捕
☞放弃 PHP,选择 Node.JS 的 8 个理由!
☞肉眼难辨别的裂纹该怎么检测?
点分享点收藏点点赞点在看

当音乐博士开始写代码...相关推荐

  1. 【简短测评】在线音乐播放器,哪一款适合写代码时候使用

    在线音乐播放器简短测评 如果写代码时总想听听音乐 如果写代码时总想听听音乐 我是个写代码时候不想让耳朵闲下来的人.听英语练听力,占用了脑子,代码也写不好,所以只能听歌,不用往脑子里进的那种. 一直以来 ...

  2. 清华博士接亲被要求现场写代码,5 分钟做出一颗爱心樱花3D相册(HTML+CSS+JavaScript)

    清华博士接亲被要求现场写代码,5 分钟做出一颗爱心3D相册(HTML+CSS+JavaScript)「可以拿去送给自己喜欢的人」 告白前, 我们的留言区开放给你!快来秀出你的别样表白方式,和你心仪的那 ...

  3. 清华博士接亲被要求现场写代码,5 分钟做出一颗爱心樱花3D相册(HTML+CSS+JavaScript)...

    ❉ 清华博士接亲被要求现场写代码,5 分钟做出一颗爱心3D相册(HTML+CSS+JavaScript)「可以拿去送给自己喜欢的人」 告白前, 我们的留言区开放给你!快来秀出你的别样表白方式,和你心仪 ...

  4. 清华博士接亲被要求现场写代码,新娘:提醒他吃饭的手艺不能忘!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 陕西西安,一位新郎接亲时,被新娘要求当场写代码编程. 新郎忙得满头大 ...

  5. 清华博士接亲被要求现场写代码,网友:真是面向对象编程!

    源 / 顶级程序员 因为结婚,程序员又上热搜了 但这次不是加班维护服务器 而是程序员接亲被要求现场写代码 01 清华计算机博士 接亲被要求现场写代码 陕西西安,一位清华计算机博士接亲,被新娘要求当场写 ...

  6. 清华博士接亲被要求现场写代码,5 分钟做出一颗爱心

    来源:CSDN本文约1000字,建议阅读5分钟 以后接亲没点能力,怕是成功不了. 6月20日,话题#清华博士接亲被要求现场写代码#冲上微博热搜,有网友直呼:以后接亲没点能力,怕是成功不了,不得不说,有 ...

  7. vue写js代码_vue.js弹出式音乐播放器特效代码

    码农那点事儿 关注我们,一起学习进步 vue弹出式音乐播放器是一款基于vue.js实现的点击弹出式音乐播放器代码特效,点击图片即可弹出播放界面大图,可切换列表模式,上一首下一首音乐切换等功能. 下载源 ...

  8. 字节跳动1/3员工不支持取消大小周!库克称iPhone将采用可回收材料生产;清华博士接亲被要求现场写代码|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  9. 字节跳动1/3员工不支持取消大小周!库克称iPhone将采用可回收材料生产;清华博士接亲被要求现场写代码|极客头条

    一分钟速览新闻点! 字节跳动 1/3 员工不支持取消大小周!员工:每年少赚 10 万块 我国互联网视频用户突破 9 亿,20 岁以下网民达 1.6 亿 华为 Mate50 最新消息:不会停更,华为 P ...

最新文章

  1. SpringMVC必备的jar包
  2. android顶部横线动态导航
  3. lua与python结合_Lua和Python:实现一个高效的List对象(3)
  4. django19:项目开发流程
  5. 【POJ - 2533】Longest Ordered Subsequence(四种方法解决最长上升子序列 含二分优化版本)
  6. nodejs实践录:基于koa的简单web服务器
  7. django 环境配置.
  8. php修改密码功能md5,php – 更改密码哈希类型的最有效方法(md5到sha1)
  9. 我如何分割字符串,在特定字符处断开?
  10. VDI环境的性能利器——固态存储
  11. 期末作业代码网页设计代码——花店购物网站源码(27页) 学生动花店购物页设计模板下载 植物大学生HTML网页制作作品 简单网页设计成品 dreamweaver学生网站模板
  12. 虎牙年报披露2019年扭亏为盈 腾讯操持下与斗鱼合并倒计时?
  13. hover效果移除时元素还原太生硬的情况
  14. 动手安装centOS6
  15. 电商平台--Mysql主从搭建(2)
  16. python -pandas
  17. 《巴巴拉少校》读书笔记优秀范文2877字
  18. 【PC工具】Samsung Magician三星固态硬盘优化维护工具升级,固态硬盘选型
  19. Unity提供的消息推送机制
  20. 在虚拟机上同步服务器上的时间_Hbase

热门文章

  1. leetcode950. Reveal Cards In Increasing Order
  2. Eclipse选择哪个版本
  3. 博主在哈佛评论网上的博客
  4. zend studio怎么打开一个已有项目
  5. GTK中 ToolBar详细说明
  6. 笔记-Handheld multi-frame super-resolution之一
  7. MVC AjaxOptions 中的OnSuccess方法执行多次的问题
  8. jQuery EasyUI API 中文文档 - 数据表格(DataGrid)
  9. Ubuntu 修改主机名
  10. 论文阅读:Spatial context-aware network for salient object detection