【java基础 6】java的发展史简介

结合到近期在做springboot框架开发遇到的关于jdk版本的问题,本篇博客,主要介绍一下java的发展历史,侧重纯文介绍每个版本的特性。——主要从理论上做个宏观的了解,不做具体的技术研究讨论!


一、宏观图形说明


1.1,开发不常用版本


java1.0:1996年1月23日,jdk1.0发布!提供的服务:一个纯解释执行的java虚拟机实现(sun classic VM),其代表技术:java虚拟机、applet 和awt (Abstract Window Toolkit)等!


java1.1:1997年2月19日,jdk1.1发布!代表技术:jar文件格式、JDBC、javabeans、RMI。  在同时,java语法也有一定的发展:inner class、reflection等


java1.2:1998年12月4日,jdk1.2发布(里程碑意义的一个版本),工程代号:playground! 在这个版本中,java技术体系被拆分为3个方向:面向桌面应用开发J2SE(java 2 platform,standard edition)、面向企业级开发J2EE(java 2 platform,enterprise edition)、面向手机等移动开发J2ME(java 2 platform,micro edition),其代表技术:ejb、java plug-in、java IDL、Swing

注意:

1,在这个版本中,java虚拟机第一次内置了jit(just in time)编译器

2,在语言和API级别上,java添加了strictfp关键字,以及现在java编码常用的一系列collections集合类


java1.3:2000年5月8日,jdk1.3,发布,代号Kestrel,它的改进,主要体现在类库服务。首先:JNDI开始被作为一项平台级服务提供(以前是扩展),使用CORBA IIOP来实现RMI通讯协议,添加javasound类库等。


java1.4:2002年2月13日,jdk1.4发布,代号Merlin,这是java走向成熟的一个版本,提供的新技术代表:正则表达式、异常链、NIO、日志类、XML解析器和XSLT转换器等


1.2,开发常用版本

从java1.4,java开始走向成熟,在项目开发中,比较常用的,是1.4之后的版本,包括被Oracle公司收购后,最新发布的1.8。

java1.5:2004年9月30日,java1.5发布,工程代号tiger,这个版本,相对于前些版本主要在技术层面进行改进而言,它更多的是在语法上做出了非常大的改进。比如:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环等。在虚拟机和API层面,这个版本改进了java的内存模型(java memory model,JMM)、提供了java。util.concurrent并发包等。

注意:从1.5开始,官方的正式文档和宣传中,不再使用jdk1.5类似的命名,而直接使用jdk5的形式命名,即product version。


java6:2006年12月11日,jdk1.6发布,工程代号Mustang,从这个版本开始,sun终结了jdk1.2开始已经有8年历史的J2EE等三种命名方式,启用java SE6等三种命名方式。改进内容包括:提供动态语言支持、提供编译API和微型HTTP服务器API。同时,这个版本对java虚拟机做了很大改进,包括:锁与同步、垃圾收集、类加载等!


java7:2009年2月19日,工程代号为Dolphin的jdk1.7完成了第一个里程碑版本(按照1.7的规划,一共有10个里程碑,最后一个于10年9月9日结束,1.7于11年7月28日官方宣布退出),1.7提供的改进有:提供新的GI收集器、加强对非java语言的调用,语言级的模块化支持、升级类加载架构等。PS:09年4月20,Oracle收购sun公司,java商标从此归Oracle所有,在之前java语言由JCP组织进行管理。


在java7中,Oracle宣布会把不能按时完成的Lambda、jigsaw和部分coin放入jdk1.8中,所以:

java8:2014年3月19日,jdk1.8发布,在这一版本里面,jigsaw(标准模块系统)被划入java9。它的新特性有:使用Lambda表达式、泛型接口改进、引入函数式接口、streams编程等!


二、总结

所以,从java的演变历史来看,我上次没有弄好那个springboot的框架,真心不是由于java8版本太高的原因。那么,我就在想,有时候在项目中遇到问题,确实是通过改变jdk版本来解决问题,那么这些情况是什么情况呢?因为从原理上来说,每个版本都是在原有版本的基础上,做的一些列改进,而并没有停止对某一项服务技术的支持。

我个人初步的结论是:

正如Lambda表达式,是在1.8后才支持,如果在代码中是用了Lambda表达式,毫无疑问,至少升级上1.8。同理可证,在新版本中,对于同一个类库的支持形式有所不同(java的版本变更都是在改错和提供新服务),那么原则上说只要改变语法符合当前配置jdk版本,是不需要降下jdk版本去改错的。

一般来说,软件版本都是向下兼容,比如:word2013可以打开2007,但2007不一定能打开word2013的文件。那么对应到jdk,如果视图用低版本的jdk去编译使用高版本支持的代码,就会出错。为了更好的将软件进行移植,采用功能符合要求且版本 较低的jdk,是一个不错的选择。


原文地址:https://www.cnblogs.com/hhx626/p/7534623.html