Java语言特性运用:各种Java语法特性是怎样被Spring各种版本巧妙运用的?

Spring为什么在不同版本会有不同的支持,其实就是为了寻求最大的公约数,比如说尽可能迎合更多的版本,所Spring的支持对Java的支持就是比较靠前的,但是对版本的要求是靠后的,那就是因为在升级版本的时候大家可能不会把JDK不断低往高版本升级,从稳定性或者说从易用性的角度来讲这是可取的

图片

这里简单介绍从Java 5到 Java 10的分布变迁,主要说明Java5之后的一些变化


Java5 

2004年 Java 5 也正是Spring Framework 发布年代,Spring 在支持的的时候只需要支持到Java 1.3不需要到1.5 但是要考虑到1.5的支持 ,比如后的Spring1.2的时候知道JMX也就是我们Java 管理拓展,也就是 Java Management extensions 这个拓展。这个版本的分布就包含这些特性:枚举、范型、注解、封箱和拆箱这些特性


Java6

2006年Java 6 其实没有在Java 5基础上做支持,比如:Java 6 发布以后,只允许在接口上面使用@override这么一个注解,过去是可以在类上面打的,这个注解强制要求子类或者子接口覆盖父类或者父接口的那个方法,这部分特性其实在Spring里面体现的不是特么明显,同时我们用的时候也感知不到 


Java7

2011年 Java 7发布,对于Java 7主要两大特点,第一个是Diamond语法,可能大家不太了解什么是Diamond语法,Diamond简单的意思就是在我们用集合的时候,我们要用到范型类型,比如:LIst ,它的集合元素类型是String ,那么在new 数组实现的时候,String 里面括号的东西可写可不写 ,不写就是Diamond语法,写就不是Diamond语法,也就是Java 7之前的语法;还有一个是多Catch,就是多个异常捕捉的时候只需要一个捕获;还有一个是Try resource,一个专业术语叫做ARM(Automatic Resource Management)就是所谓的自动的资源的一个管理 ,比如说:我们在关闭IO的时候,我们要调用一个Close 方法 ,那么通过try-with-resource之后可以不用强制去调用IO,其实这只是语法方面的变化,底层还是会通过动态字节码生成,生成一个Close 方法来调用


Java8

2014年 Java 8 发布,Java 8 有一个显著的特性就是支持Lambda语法以及重复性注解,Lamdba语法做后端开发的目前应该都用到了,这里不做赘述;那么可重复性注解是什么意思?细心的人应该能注意到一个注解只能在一个类或者一个方法里面标注一次,那么从Java 8 开始可以一个类或者一个方法里面可以标注多个注解 ,这就是所谓的可重复性注解;还有一个就是类型注解,这是一个新的注解方法,在Spring 里面体现的并不是很多 


Java9 ~Java 10

2017年 Java 9发布, 从Java 9到Java 10 ,Spring并没有提供Java 9 和 Java 10之后的语法的或则API 的支持,因为考虑到Java 9 模块化设计实现之后,其实Java 社区产生一定的分裂,还是保留Java 8版本可能是一个常态 ,或者Java 9 和 Java 10 这种短期支持版本不会长存,可能会寻找更能长久支持的版本


下面主要针对Spring每个版本针对Java版本支持做下简单举例

图片

图片

图片

总结

上面主要讲述和说明Java各种语法在Spring 各版本的运用,可以发现一个问题;上一篇中提到Spring的一个发布情况和依赖版本,这里就体现得淋淋尽致,由于Spring 每个版本对Java 要求的版本不同,所以实现的语法特性也不一样,这也是Spring 的优点,无论JDK怎么升级,我们会通常遇到JDK升级后会有一些代码无法编译,Spring做到了与时俱进强迫自己的代码实现,升级到最新的Java语法的特性这也告诉我们一个道理,就是无论做技术还是业务,我们都要与时俱进


猜你喜欢

转载自blog.51cto.com/15057823/2632303