前言

说到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世界的大师级人物。

本文首发:https://blog.didispace.com/hero-spring-rod-johnson/

版本变迁

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?

欢迎留言分享你的感受!

欢迎关注我的公众号:程序猿DD,获得独家整理的免费学习资源助力你的Java学习之路!另每周赠书不停哦~

当音乐学博士搞起编程,用一本书改变了Java世界!相关推荐

  1. 【看动漫学编程】程序员在异世界生个娃 第2篇:外挂已准备就绪

    前言 作者文笔比较水,还请见谅. 以下内容还将使用视频动态漫画表现,剪辑完将会贴出链接. 小说剧情为剧情需要,过渡到知识点,部分篇幅可能没有技术知识点还望谅解. 由于没有经费支持,所以画出来的东西是我 ...

  2. 【看动漫学编程】程序员在异世界生个娃 第1篇:太极村

    前言 作者文笔比较水,还请见谅. 以下内容还将使用视频动态漫画表现,剪辑完将会贴出链接. 小说剧情为剧情需要,过渡到知识点,部分篇幅可能没有技术知识点还望谅解. 由于没有经费支持,所以画出来的东西是我 ...

  3. 中国传媒大学博士申请初试准备经验(文科+工科)(2022)

    目录 引言 背景 学校资料 考试方式 初试科目 为什么要总结这个经验 具体经验 文科部分 工科部分 总结 引言 博主和博主的舍友分别参加了2022年中国传媒大学工科和文科的博士申请考试,博主初试成绩( ...

  4. 材料学博士转型大数据开发,是一种什么体验?

    今天分享经验的是学习群一位即将毕业的材料学博士,他去年年底开始学的大数据,目前已成功入坑,也收了一些大厂的offer.要加学习群的同学可以扫描下方二维码,备注[加群],拉你进学习群. 一.自我介绍 本 ...

  5. 元计算模拟宇宙人生by剑桥大学材料学博士段晓明 (公号回复“元计算”下载PDF典藏版资料,欢迎转发、赞赏支持科普)

    元计算模拟宇宙人生by剑桥大学材料学博士段晓明 (公号回复"元计算"下载PDF典藏版资料,欢迎转发.赞赏支持科普) 原创: 秦陇纪 科学Sciences 今天 科学Sciences ...

  6. 《创业者必学的搞流量营销课》负责百万到年入千万,500W+粉丝操盘经验

    引流技术培训课程视频教程讲座简介: <创业者必学的搞流量营销课>负责百万到年入千万,500W+粉丝操盘经验 课程内容目录: 1.流量密码研究所发刊词 2.深度复盘网红校长一场卖300w的秘 ...

  7. 风变编程python助教_花30天时间,学完了风变编程Python基础语法课

    原标题:花30天时间,学完了风变编程Python基础语法课 20节实打实的课程,1个月时间,我终于学完了风变编程的Python基础语法课.刚开始学的时候,就有人问我感受怎么样,当时本着未知全貌不予置评 ...

  8. (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  9. 中公学python要多久_学完风变编程我才知道:一天的工作,五分钟就能完成!

    原标题:学完风变编程我才知道:一天的工作,五分钟就能完成! 我是一家上市公司的行政人事,从毕业到现在工作3年最大的体会,就是曾经的热情和活力都被日复一日的重复性工作给消磨没了,感觉每天都在做一些没什么 ...

最新文章

  1. 接收对象数组_示例: Bit数组
  2. 在Linux Debian 8下部署基于PHP的Web项目。
  3. 转]一个计算机专业学生几年的Java编程经验汇总
  4. [Python]no encoding declared 错误解决方法
  5. OSPF的LSA类型 ——连载五自治系统外部的LSA
  6. 评价目标检测区域的准确性——IoU
  7. CodeBlocks调试功能(转)
  8. Linux之telnet命令
  9. OpenCasCade网格的显示
  10. java烟花代码_java代码放烟花
  11. 万能的MATLAB丨大厂工程师必备技能,免费学习
  12. 安装VS2012番茄助手
  13. C++实现模板方法模式--问卷调查实战
  14. xp关闭计算机共享,关闭Windows XP系统默认共享四种方法
  15. 机器学习模型评估方法
  16. 计算机学院教学质量改进的制度,计算机科学与技术学院教学管理文件规章制度汇编.doc...
  17. 4 JWS 的签名方式
  18. 部署搭建DNS服务器
  19. 锂电快充方案:TypeC-PD/QC诱骗芯片的常用型号,升降压(充电)芯片选型
  20. 郑小林——“浙大系”隐私计算产学研创新先锋

热门文章

  1. java实现PDF转图片(每页转换成一张图片,可单页转换或指定页数)
  2. 注册公用设备工程师考试——给水排水专业常用规范
  3. 《福特自传》读书笔记
  4. java获取当前月的开始时间和结束时间
  5. 非参数估计 -核密度估计(KDE)
  6. SAP案例教程FIAP应付会计前台操作
  7. helper.exe
  8. NodeJS教程笔记
  9. DDD学习笔记 - 实战篇(Ⅱ)
  10. [Java]简单实现UDP