zoukankan      html  css  js  c++  java
  • J J2EE 和spring的发展历史

     转:14时就用spring 4, 18年springboot 2.0

    Spring1.0      2004年3月24   
    包含IoC,AOP,XML配置
    参考https://spring.io/blog/2004/03/24/spring-framework-1-0-final-released
    Spring 2.0     2006年10月3
    参考https://spring.io/blog/2006/10/03/spring-2-0-final-released
    Spring 2.5     2007年11月19
    支持注解,减少了xml配置
    参考https://spring.io/blog/2007/11/19/spring-framework-2-5-released
    Spring 3.0     2009年12月16
    完全利用了Java5中的改进,并为 JEE6 提供了支持。支持Java配置
    参考https://spring.io/blog/2009/12/16/spring-3-0-0-is-now-available
    Spring 4.0     2013年11月1   
    完全支持 JAVA8 
    参考https://spring.io/blog/2013/11/01/spring-framework-4-0-rc1-available
    Spring 5.0     2017年9月28
    参考https://spring.io/blog/2017/09/28/spring-framework-5-0-goes-ga     
    What's New in Version 5.0
    JDK 8+ and Java EE 7+ Baseline(JDK8和Java EE7为基础。兼容JDK9和Java EE8)
    Removed Packages, Classes and Methods(移除部分包,类和方法)
    General Core Revision(核心版本的升级)
    Core Container(核心容器升级,支持@Nullable注解)
    Spring WebFlux(响应式编程)
    Kotlin support(支持Kotlin)
    Testing Improvements(支持Junit5)
     
    SpringBoot 1.0    2014年1月22
    参考https://spring.io/blog/2014/01/22/spring-boot-1-0-0-rc1-released
    SpringCloud 1.0    2015年3月14
    参考https://spring.io/blog/2015/03/04/spring-cloud-1-0-0-available-now
    SpringBoot 1.2.5    2015年7月2
    参考https://spring.io/blog/2015/07/02/spring-boot-1-2-5-released
    SpringBoot 1.3.5    2016年5月10
    参考https://spring.io/blog/2016/05/10/spring-boot-1-3-5-released
    SpringBoot 1.4.0    2016年7月28
    参考https://spring.io/blog/2016/05/10/spring-boot-1-3-5-released
    SpringBoot 1.5.1    2017年1月30
    参考https://spring.io/blog/2017/01/30/spring-boot-1-5-1-released
    SpringBoot 1.5.6    2017年7月27
    参考https://spring.io/blog/2017/07/27/spring-boot-1-5-6-available-now
    SpringBoot 1.5.8    2017年10月17
    参考https://spring.io/blog/2017/10/17/spring-boot-1-5-8-available-now
    SpringBoot 2.0.0   2018年3月1
    参考https://spring.io/blog/2018/03/01/spring-boot-2-0-goes-ga
    SpringBoot 2.2.0   2019年10月16
    参考https://spring.io/blog/2019/10/16/spring-boot-2-2-0
    SpringBoot 2.2.1   2019年11月7
    参考https://spring.io/blog/2019/11/07/spring-boot-2-2-1-available-now
    1)spring 1.x
      在spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在
    java类和xmlwenjianz文件中切换
    
    2)spring 2.x
      随着jdk1.5带来的注解支持,spring2.x可以使用注解对bean进行申明和注入,大大的减少了xml配置,简化了项目的开发
    最佳的配置方法: 1.应用的节本配置用xml,如数据源、资源文件等。
             2.业务开发用注解,如service中注入bean等
    
    3)spring 3.x
      在spring3.x版本的时候,Spring3.x开始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,主要区别spring2.x的地方如下
      1. 核心API更新到JAVA5.0,即采用了泛型
      2. Spring表达式语言SpEl(Express Language)
      3.可通过Java类提供IOC配置信息
      XML配置方式,基于注解的配置方式,Spring3.0提供了基于Java类的配置方式。而最新基于Java类的配置方式非常灵活。
      4. 通用类型转换系统和属性格式化系统
      5.数据访问层新增oxm(Object to xml,对象xml映射):通过元数据对象和xml转化的映射
      6.web层的增强:2.5版本中的注解如:@Controller,@Request Mapping等。新增了@CookieValue,@RequestHeaders
    
    4)spring4.x
      从spring4.x和springboot都推荐使用Java配置方式

    //

    Spring历史版本变迁和如今的生态帝国 - 云+社区 - 腾讯云 --不错
    https://cloud.tencent.com/developer/article/1025723

    //  Spring核心功能指南-1-Spring功能介绍-肖海鹏的在线视频教程 --这个视频的12分开始有段描述很不错,
    https://edu.csdn.net/course/play/3057/50874?spm=1002.2001.3001.4143

    J2EE sun定义的 必须用JEB
    jsp  sevlet JDBC 模式适合企业开发吗, 简单的j2ee的开发
    
    Spring是完美的框架吗
    老师是 9几年毕业的,那时候 C++框架,C++平台大行其道
    97年出来的java 2000年后市场越来越大。
    
    95~2000年 C++比较强势的情况下,后来回看C++出了很多问题,  微软把VS c++ 转向 dot net ,现在高校学.net也很少了。
    spring向j2ee发起了挑战,那么spring也不是完美的

    J2EE是什么,主要包括哪些技术 - lanfeng521 - 博客园 ---初略看一下就好
    https://www.cnblogs.com/zhshero/p/10390167.html

    j2EE通俗bai的理解为开发网站的就du是,j2SE就是开zhi发桌面应用程序dao的。
    包含zhuan的技术嘛,主要的就是shu开发网站需要的一些技术啦
    比如:servlet,jsp,javaBean 框架:spring hibernate struts ibatis webwork

     //==============应该是2008年前的事情了。 大致看一下就好。

    转发: Spring可能会越来越主流?_曲奇-CSDN博客
    https://blog.csdn.net/yangxt/article/details/5397135?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~baidu_landing_v2~default-5-5397135.nonecase&utm_term=spring%20%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E5%BC%80%E5%A7%8B%E6%B5%81%E8%A1%8C%E7%9A%84&spm=1000.2123.3001.4430

    Spring 自从2003年发布以来,一直是Java开源框架的奇迹之一。从2000年开始,伴随着B/S架构逐渐引入企业应用软件开发的领域,Java就逐渐成为企业应用开发的主流技术,一直到2003年,Struts+EJB一直是Java技术架构的不二选择,然而这一切随着2003年Spring以 without EJB的面目出现之后,一切都开始改变。

    大概从2003年下半年开始,Spring+Hibernate就开始甚嚣尘上,似乎那时候的Spring和Hibernate尚且不足以动摇J2EE规范以EJB为核心的领袖地位。但是2004年5月份,吸收了 Spring/Hibernate框架优点的EJB3 JCP委员会的成立,事实上宣判了Spring对EJB2的终结,EJB3则更像是Vendor们的一种自救行为。

    2004年到2006 这三年时间以来,Spring取得了相当辉煌的成就,不但将EJB2赶进历史,而且牢牢确立了Spring作为Java企业应用开发的主流地位。而今,甚至对技术比较保守的金融电信行业,也开始言必称Spring,Spring已经成为Java框架的事实标准。

    在2004年5月份之后,Hibernate Team开始和Spring公然决裂,这个事情放在两年多以后的今天来看,原因是昭然若揭的,背靠JBoss的Hibernate Team已经成为EJB3规范的一部分,而JBoss希望力推的以EJB3为核心的Java架构来成为未来的企业应用主流标准,这种情况演变至今,变成了 Springframework和JBoss Seam的两种不同技术架构的竞争关系。

    2004年5月份,EJB3规范的起步,对Spring未来其实有很大的威胁,但是EJB3规范历经两年时间的难产,终于在2006年5月正式发布之时,已经为时过晚了,抬眼望去,已尽是spring的天下。

    有意思的是,大致展望一下未来,Java的企业应用开发还能遵循Sun和JCP制订的Java EE规范的道路走下去吗?如果不是这样,那么未来道路是什么呢?

    观察一下Java社区几股大的势力,会发现一些有意思的现象:

    IBM 和BEA是Java社区的领导者,从2004年开始,IBM和BEA开始大肆宣传SOA,将他们的目光从应用服务器领域挪到了松藕合企业服务领域,开展 SOA商业战略。与此同时,EJB3专家委员会的领导者也悄然变成了JBoss和Oracle,是IBM和BEA无力争取吗?当然不是。IBM和BEA已经看到了应用服务器市场和底层框架平台即将被开源占领,商业价值萎缩,因而审时度势进行战略转型。一方面押宝SOA战略,大肆炒热和培育SOA市场,另一方面也积极占领开源市场,IBM放出来WebSphere社区版本-Apache Geronimo,BEA干脆和Spring的咨询公司interface21合作,提供spring框架在WebLogic上的商业技术支持,如今 EJB3对于他们来说已经形同鸡肋,就抛给别人嚼吧。

    将EJB3当块宝的自然是应用服务器市场的跟随者JBoss和Oracle,一方面凭借ORM的先天优势,另一方面有出头机会也不能放过,EJB3委员会几乎成了JBoss和Oracle的天下。特别是JBoss,更加积极推出 JBoss Seam框架,希望确立以JSF+EJB3的架构树立Java开发的标准,用以取代Struts/Spring/Hibernate的流行组合,因而开启了EJB3和Spring 正面交锋的战争。

    Java Vendor中另外一股势力Sun公司这两年则一直自顾不暇,在应用服务器领域几乎退出市场,直到最近才搞出来一个Glassfish,在开发框架领域也一直毫无建树,推出的JSF至今还很不成熟,难担大任,也许Sun都去忙着开源Solaris和JVM源代码了。

    几个大的Vendor或战略转型,或自顾不暇,或忙于收购(Oracle),Java开发领域的主战场被打扫一空,对决的双方换成了Spring和JBoss。对决的武器则是spring vs Seam。

    Spring 代表了不遵循通用标准,自己制订游戏规则,不依赖容器的一方;JBoss代表了遵循通用标准,但是锁定容器的一方。这场对决从2004年5月就开始上演,未来很长时间也会继续下去。不过Spring已经站在优势很大的地位上了。我个人觉得Spring会胜出这场对决,而Java企业应用开发的主流技术将倒向Spring这一边,而Vendor们官方制订的标准将被开发人员可怜的遗弃到一边。开源技术开始决定Java企业开发的未来走向。

    大致对比一下两者:Spring vs EJB3,就会发现Spring从功能上面已经胜出很多了:

    1、IoC容器spring胜出

    Spring的IoC容器很强大,其bean管理功能超过了目前EJB3容器,配置方面Spring稍微复杂一些。不过对于全局性配置来说,XML要优于EJB3的annotation。

    2、AOP能力Spring胜出

    EJB3目前提供的AOP功能非常简单,本来已经无法和Spring相比,至于集成AspectJ的Spring2.0,就更加望尘莫及了。

    3、事务管理方面EJB3稍微领先

    Spring提供了很棒的本地事务模型,也可以集成JTA,但是不支持分布式事务,当然这种场景也非常罕见。

    4、Web框架spring胜出

    EJB3 标准集成JSF,但是JSF并不成熟,和AJAX配合度也不好。Spring可以灵活集成各种Web框架和模板语言,自身也提供了相当强大的MVC框架,要是这还觉得不够,那么spring webflow,portlet support都拿出来,那么EJB3就必败了。

    5、远程访问支持,大致持平

    EJB3继承了传统的EJB远程访问能力,Web Services支持也不错;不过Spring提供了更多更灵活的选择,Java RPC,HTTP Invoker,Hessian/Burlap,WebServices。

    6、框架集成能力,spring胜出

    这是spring的传统优势项目,只要看看spring modules项目,看看n多第三方spring支持,就会发现spring现在的群众基础多么好,集成工作流,spring modules已经提供了方便的模板类,集成规则引擎,Cache,CMS,脚本语言,异步任务,安全验证框架。。。。。。EJB3有点望尘莫及的味道

    7、JMS,JMX,JCA等,EJB3领先一步

    这些传统EJB优势项目往往应用的不太多,EJB3仍然是领先的。不过令人侧目的是,Spring最近几个版本在连续追赶EJB这些传统优势领域,到 Spring2.0为止,其JMS,JMX,JCA支持已经相当不错了,可以说传统EJB能够做的,现在Spring也可以做得到,为Spring一统江湖扫清了最后的障碍。

    这几年除了Spring框架自身不断完善和延伸到传统应用领域,围绕在Spring周围的第三方框架也是越来越丰富,EJB3在annotation方面有些独到的优势,在一些传统领域,还领先spring,但是总体来说,EJB3为核心的J2EE5.0规范很难和 Spring现在的2.0相匹敌,更何况Java的主力Vendor早已醉翁之意不在这里了,单凭JBoss的Seam,难以战胜spring。

    觉得Spring可能会越来越主流,甚至开始引领Java企业开发的未来发展道路,J2EE就靠边站吧,也许Java社区也到了开源社区说了算的时代了。

    //==========end

    //--非常不错,

    Spring的诞生史 - 环信 
    https://www.easemob.com/news/1213

    // 转 

    Spring核心是什么

    Spring出现的原因?
    Spring出现的原因 解除耦合
    软件开发的开闭原则:通过多态实现,要么子类重写父类,要么增加方法
    提高抽象层次;
    提高抽象层次的方法
    把子类对象赋给父类对象进行使用的动态多态
    注入Injection:某一个类想要什属性,通过set方法给他 就叫注入
    依赖注入 Depenency Injection =DI 有set就能活 没有就错误
    配置文件(反射)
    
    Spring如何解除耦合
    解耦合:首先解除逻辑耦合
    mvc模式第一次解除了逻辑耦合
    
    spring的IOC是进行深度解耦
    日志:用来保持程序的健壮性,就是程序的运行记录
    
    代理需要在jdk1.5以上版本使用
    jdk代理是基于反射的没有反射就没有办法通用
    调用代理类的的任何方法,都会执行到invoke方法
    代理是模式
    代理机制其实真正的代理的是方法
    代理:proxy
    代理的本质就是原产品不动,不做任何改变
    要增值
    要包装
    代理分类:
    一.静态代理:门面模式或装饰模式
    缺点:需要为每一个被代理的方法都写一个代理方法,修改的时候特别值复杂,不灵活
    二.动态代理
    1.jdk动态代理:缺点:要想代理对象,被代理对象必须有接口,否侧不能代理
    2.CGLIB代理:优点:在被代理类没有接口的情况下也能够被代理,实际就是为当前类生成一个子类
    代理类和被代理类都需要实现同一个接口,代理类中包含一个被代理类的对象,可以提供两种方式把被代理对象赋给代理对象
    调用被代理类,实现真正的逻辑,在自己的里面实现额外逻辑.
    
    代理最终的要求就是简单通用灵活
    
    Spring核心(重点来了!!!!)
    Spring是一个无侵入式的轻量级开源框架
    Spring两大特性 :
    1.IOC:控制反转
    IOC作用:解除类与类之间的关系耦合
    解除耦合的方式用了四个技术点:
    
    配置
    
    容器
    
    反射
    
    注入(DI):利用set方法或者构造器给属性赋值
    
    2.AOP:面相切面编程
    作用:为了解除业务逻辑耦合,例如耦合或者数据业务逻辑日志业务
    AOP实现原理是基于代理的
    Spring进行内部实现的时候 ,会检测是否存在接口,存在时选择jdk动态代理,不存在选择CGLIB代理
    
    Spring类似一个管家,后期几乎所有内容都交给Spring管理,View层Spring不管理,与java相关的全部管理.(Spring容器)
    
    Spring的核心思想是解除程序中的耦合(解除了业务逻辑耦合,解除了类与类之间的关系耦合)
    轻量级与重量级的区分:
    1.性能开销
    2.框架本身的大小问题
    3.使用的难易程度
    
    Spring中所有的行为都是基于Spring能够管理所有的类
    
    Spring也有持久层框架,但是因为性能不强,所以没有人用,用来给hibernate和mybitas支持
    Spring对web框架也是有支持的
    Spring还是一个mvc结构的框架
    Core解除的是类级别的耦合
    AOP解除的是方法级别的耦合
    
    IOC控制反转 Inversion Of Control
    高层模块不应该依赖底层模块(如Action依赖Dao层)
    实现必须依赖抽象,而不是是抽象依赖实现
    依赖注入:Dependency Injection
    DI是IOC的核心实现原理
    通俗的说就是利用set方法或者构造器给属性赋值
    
    搭建Spring环境:
    1.加入jar包
    2.写配置文件:applicationContext.xml 必须放在Src下 可以更改名字一般叫Spring.xml
    一个Spring可以对应多个XMl文件,配置文件的划分是根据业务逻辑划分的
    
    跟标签里写东西是Schema
    
    Spring的核心是一个context容器
    想要什么对象就在spring中配置这个对象
    Spring会自动创建对象并且进行初始化
    
    注入类型分为三类:
    Type1 侵入式(依赖Spring)
    Type2 (set/get) 和type3(构造器注入)是非侵入式
    
    Spring中的接口是为了提高抽象层次,是变量接收的一个中介,所以Srping不需要管理接口
    所谓的组件就是可以直接实例化,可以直接用的
    构造器注入 里面的属性 ref=references引用 index要赋值属性的下标,从0开始
    构造器注入唯一的优点就是时效性好,创建对象时直接赋值.
    构造器注入作为了解 不需要掌握
    构造器和set/get方法同时存在时取决于set/get方法
  • 相关阅读:
    JavaWeb工程中web.xml基本配置
    json
    理解文档对象模型(3)
    关于经验模态分解的混叠模态(mode mixing)问题
    android ListView SimpleAdapter 带图片
    JAVA的类和对象
    JAVA的循环结构进阶
    JAVA的数组
    JAVA的循环结构
    JAVA的选择结构(二)
  • 原文地址:https://www.cnblogs.com/rogge7/p/14025135.html
Copyright © 2011-2022 走看看