Spring:一、Spring的发展史-“富二代”公司成就了一个Spring帝国?

码农的春天

我在B站的视频,希望大家多多支持噢1024程序员节冬天来了,春天还会远吗?Spring发展史大揭秘
俗话说冬天来了,春天还会远吗?
J2EE开发的春天始于2002年。关于Spring的发展起源要回溯到2002年,当时正是J2EE和EJB大行其道的时候,很多知名公司都是采用此技术方案进行项目开发。这时候有一个美国的小伙子认为EJB太过臃肿,并不是所有的项目都需要使用EJB这种大型框架,应该有一种更好的方案来解决这个问题。
他为了证明自己的想法是正确的,在2001年10月写了一本书《Expert One-on-One J2EE》,介绍了当时Java企业应用程序开发的情况,并指出了JavaEE和EJB组件框架中存在的一些主要缺陷。在这本书中,他提出了一个基于普通Java类和依赖注入的更简单的解决方案。在书中,他展示了如何在不使用 EJB 的情况下构建高质量、可扩展的在线座位预留系统。为了构建应用程序,他编写了超过30000行的基础结构代码,项目中的根包命名为com.interface21,所以人们最初称这套开源框架为interface21,这就是 Spring 的前身。
这个小伙子是谁呢?他就是大名鼎鼎的Rod Johnson。
在这里插入图片描述

Rod Johnson在悉尼大学不仅获得了计算机学位,同时还获得了音乐学位。更令人吃惊的是在回到软件开发领域之前,他还获得了音乐学的博士学位,反正就是牛逼哄哄的人物。但是现在Rod Johnson已经离开了Spring(2012 年 Rod Johnson 宣布他将要离开 Spring Source ),成为了一个天使投资人,同时也是多个公司的董事,早已走上人生巅峰。
在《Expert One-on-One J2EE》这本书发布后,一对一的J2EE设计和开发一炮而红。这本书免费提供的大部分基础架构代码都是高度可重用的。2003年Rod Johnson和同伴在此框架的基础上开发了一个全新的框架,命名为 Spring,据Rod Johnson介绍 Spring 是传统 J2EE 新的开始,随后 Spring 发展进入快车道。

  • 2004 年 03 月,1.0 版发布。
  • 2006 年 10 月,2.0 版发布。
  • 2007 年 11 月,更名为 SpringSource,同时发布了 Spring 2.5。
  • 2009 年 12 月,Spring 3.0 发布。
  • 2013 年 12 月,Pivotal 宣布发布 Spring 框架 4.0。
  • 2017 年 09 月,Spring 5.0 发布。
    网上有一张图,清晰的展示了Spring发展:
    在这里插入图片描述

What Is Spring?

或许想解释清楚Spring到底是什么是件很困难的事情。通常,Spring是指一个用于构造Java应用程序的轻量级框架,这句话包含两个有趣的地方。首先,你可以采用Spring来构造任何程序,这与Apache Struts这样的框架不同,你不限定于只编写WEB应用。其次,以上解释中的“轻量级”并不意味着类数量很少,或者发行包大小很小,实际上,它指的是Spring哲学原理的总称——那就是最少的侵入。Spring是轻量级的,意味着你只需对你的程序代码做很少改动 (假若有的话) ,就可以获得Spring核心带来的好处,你也可以在任何时候选择抛弃Spring ,你会发现这实在很容易。注意,上面这句话只针对Spring核心本身——很多附加的Spring组件,比如数据访问,需要与Spring框架有相对紧密得多的耦合关系。但是,这些耦合带来的好处显而易见。
Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。

What is 最少的侵入?

这里讲一下侵入式和非侵入式。简单的说,假设我们想把一些业务代码放到一个框架里。侵入式的做法是要求业务代码”知道”框架的代码,表现为业务代码需要继承框架提供的类,才能很好的和框架结合,使用框架带来的便利。非侵入式则不需要业务代码引入框架代码的信息,即无需继承框架提供的类,从编写者的角度来看,察觉不到框架的存在。例如:使用struts的候,我们需要继承一些struts的类,这时struts侵入到了我的业务代码里。使用spring编写一些业务类的时候不需要继承spring特定的类,通过配置完成依赖注入后就可以使用,此时spring就没有侵入到我的代码里。侵入式让业务代码产生对框架的依赖,这些代码不能在框架之外使用,不利于代码的复用。但是侵入式可以使用户和框架更好的结合,更容易更充分的利用框架提供的功能。非侵入式的代码对框架则没有过多的依赖,可以很方便的迁移到其他地方使用,代码的复用性较好。但是框架和业务代码互动的方式可能就比较复杂。总之,这两种方式各有千秋,各有利弊,主要看实际开发时的权衡选择了。
那么非侵入式的技术体现,即允许在应用系统中自由选择和组装Spring框架的各个功能模块,并且不强制要求应用系统的类必须继承或实现Spring框架的类和接口来达到使用框架的目的。
如何实现非侵入式:

  1. 引用反射机制,通过动态调用的方式来提供各方面的功能,建立核心组件BeanFactory
  2. 配合使用Spring框架中的BeanWrapper和BeanFactory组件类最终达到对象的实例创建和属性注入
    其实非侵入式就是不需要继承框架提供的类,而是通过配置完成依赖注入后,就可以使用。允许所开发出来的应用系统能够在不同的环境中自由移植,不需要修改应用系统中的核心代码。

Spring的体系结构

Spring框架至今已集成了20多个模块,这些模块分布在以下模块中:

  1. 核心容器(Core Container)
  2. 数据访问/集成(Data Access/Integration)层
  3. Web层
  4. AOP(Aspect Oriented Programming)模块
  5. 植入(Instrumentation)模块
  6. 消息传输(Messaging)
  7. 测试(Test)模块
    在这里插入图片描述

1.核心容器

Spring的核心容器是其他模块建立的基础,有Spring-core、Spring-beans、Spring-context、Spring-context-support和Spring-expression(String表达式语言)等模块组成。

  • Spring-core模块:提供了框架的基本组成部分,包括控制反转(Inversion of Control,IOC)和依赖注入(Dependency Injection,DI)功能。
  • Spring-beans模块:提供了BeanFactory,是工厂模式的一个经典实现,Spring将管理对象称为Bean。
  • Spring-context模块:建立在Core和Beans模块的基础之上,提供一个框架式的对象访问方式,是访问定义和配置的任何对象的媒介。ApplicationContext接口是Context模块的焦点。
  • Spring-context-support模块:支持整合第三方库到Spring应用程序上下文,特别是用于高速缓存(EhCache、JCache)和任务调度(CommonJ、Quartz)的支持。
  • Spring-expression模块:提供了强大的表达式语言去支持运行时查询和操作对象图。这是对JSP2.1规范中规定的统一表达式语言(Unified EL)的扩展。该语言支持设置和获取属性值、属性分配、方法调用、访问数组、集合和索引器的内容、逻辑和算术运算、变量命名以及从Spring的IOC容器中以名称检索对象。它还支持列表投影、选择以及常用的列表聚合。

2.AOP和Instrumentation

  • Spring-aop模块:提供了一个符合AOP要求的面向切面的编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以便干净地解耦。
  • Spring-aspects模块:提供了与AspectJ的集成功能,AspectJ是一个功能强大且成熟的AOP框架。
  • Spring-instrument模块:提供了类植入(Instrumentation)支持和类加载器的实现,可以在特定的应用服务器中使用。

3.消息

Spring4.0以后新增了消息(Spring-messaging)模块,该模块提供了对消息传递体系结构和协议的支持。

4.数据访问/集成

数据访问/集成层由JDBC、ORM、OXM、JMS和事务模块组成。

  • Spring-jdbc模块:提供了一个JDBC的抽象层,消除了烦琐的JDBC编码和数据库厂商特有的错误代码解析。
  • Spring-orm模块:为流行的对象关系映射(Object-Relational Mapping)API提供集成层,包括JPA和Hibernate。使用Spring-orm模块可以将这些O/R映射框架与Spring提供的所有其他功能结合使用,例如声明式事务管理功能。
  • Spring-oxm模块:提供了一个支持对象/XML映射的抽象层实现,例如JAXB、Castor、JiBX和XStream。
  • Spring-jms模块(Java Messaging Service):指Java消息传递服务,包含用于生产和使用消息的功能。自Spring4.1以后,提供了与Spring-messaging模块的集成。
  • Spring-tx模块(事务模块):支持用于实现特殊接口和所有POJO(普通Java对象)类的编程和声明式事务管理。

5.Web

Web层由Spring-web、Spring-webmvc、Spring-websocket和Portlet模块组成。

  • Spring-web模块:提供了基本的Web开发集成功能,例如多文件上传功能、使用Servlet监听器初始化一个IOC容器以及Web应用上下文。
  • Spring-webmvc模块:也称为Web-Servlet模块,包含用于web应用程序的Spring MVC和REST Web Services实现。Spring MVC框架提供了领域模型代码和Web表单之间的清晰分离,并与Spring Framework的所有其他功能集成。
  • Spring-websocket模块:Spring4.0以后新增的模块,它提供了WebSocket和SocketJS的实现。
  • Portlet模块:类似于Servlet模块的功能,提供了Portlet环境下的MVC实现。

6.测试

Spring-test模块支持使用JUnit或TestNG对Spring组件进行单元测试和集成测试。

Spring和那些巨头公司之间的爱恨情仇

友情提示,接下来科技行业的一系列商业并购大片即将开启。
我们先来说一个牛逼哄哄的公司:Pivotal。记住了,这是一个”富二代”。

Pivotal 成立于2013年4月,致力于“改变世界构造软件的方式(We are transforming how the world builds software)”,提供云原生应用开发 PaaS 平台及服务,帮助企业客户采用敏捷软件开发方法论,从而提高软件开发人员工作效率、减少运维成本,实现数字化转型、IT 创新,并最终实现业务创新。
截至目前,财富 100 强中超过三分之一的企业使用 Pivotal 云原生平台。Pivotal 部分大型客户在采用 Pivotal 产品后,开发人员与运营人员比例可提高到 200:1,开发人员专注于编写软件代码时间增长了 50%。

看到这里大家可能会有点犯迷糊,这不是一个 2013 年成立的 IT 服务公司吗,和 2002 年发展起来的 Spring又是怎么扯上关系的呢?其实呀,要说起 Pivotal 公司的起源要追溯到 1989 年的 Pivotal Labs 实验室。
在这里插入图片描述

Pivotal Labs 公司

1989 年,Rob Mee 创立的咨询公司 Pivotal Labs,专注于快速的互联网式软件开发,即敏捷编程。创立 Pivotal Labs 的时候,它还是一家非常小的软件顾问公司,它的主营业务就是与客户合作,帮助客户开发软件。

Pivotal Labs 一直是敏捷开发领域的领导者,为部分硅谷最有影响力的公司塑造了软件开发文化,并树立了良好口碑,其中 Google、Twitter 都曾是 Pivotal Labs 客户。

时间很快到了 2012 年,深受客户喜爱的 Pivotal 终于引起了商用软件巨头 EMC 的关注,EMC 在 2012 年以现金方式收购了 Pivotal 并照单全收了它的 200 名员工。

刚开始的时候,公司并没有发生太大的变化,只是作为新部门成为了 EMC 的一部分,Pivotal Labs 仍然继续像以前样与客户合作。

但是到 2013 年的时候,EMC 突然扔下了一颗重磅炸弹。它将 Pivotal Labs 的核心业务分拆出去,成立了一家名为 Pivotal Software 的新公司。这家新公司的股东是 EMC 、 VMware 和通用电气,之前在 EMC 子公司 VMware 担任首席执行官的马瑞兹出任公司的首席执行官。

EMC 和 VMware 分拆出其 Cloud Foundry、Pivotal Labs、Greenplum 等云计算、大数据资源,GE 投资 1.05 亿美元,成立新公司 Pivotal。新生的 Pivotal 是名副其实的“富二代”,这轮估值高达 10.5 亿美元。

那么 EMC 和 VMware 又有什么关联呢?

2003 年 12 月, EMC 公司宣布以 6.35 亿美元收购了 VMware 公司。

EMC 于 1979 年成立于美国麻州 Hopkinton 市,1989 年开始进入企业数据储存市场。二十多年来,EMC 全心投注在各项新的储存技术,已获得了 1,300 个已通过或审核中的储存技术专利。无论是全球外接 RAID 储存系统、网络储存亦或是储存管理软件等储存专业领域,EMC 均是业界公认的领导厂商。

EMC 是全球第六大企业软件公司,全球信息基础架构技术与解决方案的领先开发商与提供商。同时也是美国财富五百强之一,在全世界拥有超过四万二千名员工,在全球 60 个国家或地区拥有分支机构。我们接触比较多就是 EMC 的各种存储产品。

EMC 公司做大 EMC 的秘诀,就是研发与并购双轮驱动,研发与并购的投入占当年营业收入的 22% 左右,并购投入略高于研发。从 2003 年到2 015 年的 12 年间,EMC 总共投入超过 420 亿美元用于研发和收购。其中,206 亿美元用于研发,213 亿美元用于并购,总共并购了 100 多家公司。

VMware 收购 Spring

2009 年是 Spring 企业的一个转折点,VMware 以 4.2 亿美元收购 Spring Source (3.6亿现金外加5800万股份) 。

可以说虚拟化就是 VMware 发明的

VMware 于 1998 年成立,公司总部位于美国加州帕洛阿尔托,是全球云基础架构和移动商务解决方案厂商,提供基于VMware的解决方案,企业通过数据中心改造和公有云整合业务,借助企业安全转型维系客户信任,实现任意云端和设备上运行、管理、连接及保护任意应用。2018 财年全年收入 79.2 亿美元。

相信作为研发人员肯定都使用过 VMware 公司的产品,最常用的是 VMware 的虚拟机产品,但其实 VMware 公司的产品线非常多。

从发展路线来看,VMware 具备三大特点:

第一,是技术具备领先性,虚拟化技术在70年代就已出现,但VMware是第一个将这项技术应用到X86服务器上,并在这个基础上不断完善,使其能够满足企业级客户需求;

第二,是瞄准大型企业客户。VMware 刚刚上市时,年营收不到4亿美金,但已经覆盖80%的财富1000强客户;

第三,是高度产品化。VMware 的毛利率长期保持在 85% 左右,咨询业务占比非常少,几乎将所有部署工作都交给合作伙伴。

VMware 也是一个并购大户,通过投资和收购补全业务线,客户资源是一大优势。
VMware并购的公司

2012 年 Rod Johnson 宣布他将要离开 Spring Source 。

EMC 又被收购

2015 年的时候,曾经被大量报道 EMC 考虑被子公司 VMware 收购,让人大跌眼镜,竟然可以有这样的骚动作,这是为什么呢?

EMC 在 2003 年斥资 6.25 亿美元收购了 VMware,四年之后,EMC 选择让 VMware 分拆上市,结果独立上市的 VMware 发展越来越好,反观 EMC 的各项业务持续陷入低潮。到 2015 年的时候,VMware 的市值已达到约 370 亿美元,占据了 EMC 总市值的近 75%。

可能各方利益不能达成一致,最终 EMC 却被戴尔(dell)收购。

2015 年 10 月 12 日,戴尔(Dell)和EMC(易安信)公司宣布签署最终协议,戴尔公司与其创始人、主席和首席执行官麦克尔•戴尔,与 MSD Partner 以及银湖资本一起,收购 EMC 公司,交易总额达 670亿 美元,成为科技史上最大并购。

当时业界最关心的云计算软件商 VMware 仍然保持独立上市公司的身份。据悉,EMC 当前持有 VMware 大约 80% 的股权,市值约为 320 亿美元。而戴尔收购 EMC 实际上是项庄舞剑,VMware 才是戴尔收购 EMC 的关键。
2018年的时候又传出,VMware 反收购戴尔?写到这里的时候我都感觉有点乱了?戴尔收购了 EMC, ECM 收购了 VMware ,那么 VMware 就差不多算戴尔的重孙子,那么怎么又来 VMware 反收购戴尔?

原来是这样,在 2015 年 10 月 12 日业界正式爆料戴尔收购 EMC(包括 VMware),当时的 VMware 股价在 60-70 美元左右。到了 2016 年 9 月戴尔宣布正式并购 EMC 包括 VMware,只是让 VMware 独立运营,VMware 当时股价也还是在 70 美元左右。

可是到了 2018 年初一看,VMware 股价已经到达了 130 多美元,在 2018 年的最高点,股价甚至达到了 160 多美元,股价又 TM 涨了一倍多,VMware 公司简直发展太好了。VMware 最新的市值快到了 6000 亿美金,当初收购时 VMware 市值也就 200 多亿美金,简直赚翻了呀!

传言只是传言,最终 2018 年 7 月,戴尔还是选择了独立上市,拥有 VMware 80% 的股份。

并购时间表

上面写的有点乱,大家看完之后也许有点迷糊,在这里重新整理一下这里面几个关键公司的收购时间点:

  • 1989 年,Rob Mee 创立的咨询公司 Pivotal Labs;
  • 2003 年,Rod Johnson 和同伴创建了 Spring;
  • 2003 年,EMC 收购了 VMware 公司;
  • 2009 年,VMware 收购了 Spring ;
  • 2012 年,EMC 又收购了 Pivotal Labs 公司;
  • 2013 年,EMC 、 VMware 和收购来的 Pivotal Labs 公司重新组建了新的公司 Pivotal;
  • 2015 年,戴尔又并购了 EMC;
  • 2018 年,戴尔独立上市。

接着说 Pivotal 公司

上面一系列的商业并购搞的眼花缭乱的,但是大家只要知道 Pivotal 公司出身高贵,来自几个都不太差钱的世界 500 强公司联合组建而成,Pivotal 公司的产品非常的高大上,就连我们平时使用的 12306 都使用了他们公司的产品。

Pivotal 公司可谓是大牛云集,公司的开源产品有:Spring 以及 Spring 衍生产品、Web 服务器 Tomcat、缓存中间件 Redis、消息中间件 RabbitMQ、平台即服务的 Cloud Foundry、Greenplum 数据引擎、还有大名鼎鼎的 GemFire(12306 系统解决方案组件之一)。

这些著名开源产品背后的开发者都在 Pivotal 公司,其研发团队汇集了全球的一流开发者,Spring Boot 为什么如此优秀,或许在这里可以找到一些答案。

Pivotal 中国研发中心在中国创建于 2010 年,它的前身是 EMC Greenplum 部门,其团队成员分布在北京和上海两地,目前正致力于以下产品的研发和服务的提供:Pivotal Web Service (PWS), Pivotal Hadoop (PHD), Hawq 和 Greenplum Database (GPDB)。

毕威拓科技(北京)有限公司(Pivotal中国公司)2015年3月1日正式成立并单独运营。

Pivotal 公司成立之后,于 2014 年发布了 Spring Boot,2015 年发布了 Spring Cloud,2018 年 Pivotal 公司在纽约上市。我们可以通过一张图来了解 Pivotal 公司的发展史。
在这里插入图片描述
Pivotal 公司的产品有 Spring Boot 、Spring Cloud 、RabbitMQ 等非常著名的开源软件,也有很多类似 GemFire 等商业解决方案,通过他们公司的产品即可发现,一边通过开源软件打造生态,一方面通过商业解决方案来挣钱。

曾经有一段时间,有人就问我一个问题,说开源的是不是就意味着是免费的,不免费的服务,是不是就意味着不是开源的软件?这种商业模式其实就是对这种观点的一种反驳,开源不等于免费,开源是一种开放分享的精神,不要什么东西来到国内都变味了。

Pivotal 掌握很多最新前沿的开源技术,公司提供的从云端部署到一整套的大数据解决方案,从开发到平台到提供解决方案到提供咨询,可以说真正依赖技术挣钱的典范,我辈之楷模!
欢迎关注我的公众号,第一时间获取更新

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Seven的代码实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值