【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,是一个不错的选择。
【java基础 6】java的发展史简介的更多相关文章
- Java基础-二进制以及字符编码简介
Java基础-二进制以及字符编码简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必计算机毕业的小伙伴或是从事IT的技术人员都知道数据存储都是以二进制的数字存储到硬盘的.从事开 ...
- Java基础-日期格式化DateFormat类简介
Java基础-日期格式化DateFormat类简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.DateFormat类概述 DateFormat 是日期/时间格式化子类的抽象 ...
- java基础-学java util类库总结
JAVA基础 Util包介绍 学Java基础的工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.本章介绍Java的实用工具类库java.util包.在这个包中,Java ...
- 黑马程序员:Java基础总结----java注解
黑马程序员:Java基础总结 java注解 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! java注解 lang包中的基本注解 @SuppressWarnings ...
- Java基础:Java的四种引用
在Java基础:java虚拟机(JVM)中,我们提到了Java的四种引用.包括:强引用,软引用,弱引用,虚引用.这篇博客将详细的讲解一下这四种引用. 1. 强引用 2. 软引用 3. 弱引用 4. 虚 ...
- java基础(二)-----java的三大特性之继承
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
- Java基础-使用JAVA代码剖析MD5算法实现过程
Java基础-使用JAVA代码剖析MD5算法实现过程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Java基础技术-Java其他主题【面试】
Java基础技术-Java其他主题[面试] Java基础技术IO与队列 Java BIO.NIO.AIO Java 中 BIO.NIO.AIO 的区别是什么? 含义不同: BIO(Blocking I ...
- Java基础(一):简介
一.java基础语法: 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...
- Java基础学习-Java语言概述
一.Java语言发展史 创始人:詹姆斯·高斯林(James Gosling) 公司:SUN——(Stanford University Network斯坦福大学网络公司) 1995年5月23日,Jav ...
随机推荐
- 2017 清北学堂 Day 6终极考试报告
预计分数: 100+70+70 = 240 实际假分数 : 40+80+70= 190 in cena(好吧不得不承认这个分数,,,,,,=.=) 实际真分数 : 100+80+100 = 280 ...
- CSS选择器手册
CSS选择器手册 选择器 选择器名称 例子 例子描述 CSS E.class 类选择器 E.intro 选择 class="intro" 的所有E元素. ...
- sqlserver数据库备份方法
须事先准备一个工具curl,把它放在c盘.然后,在数据库所在服务器安装7z.最后把这2个存储过程执行,在sqlserver的代理中新建作业,即可实现备份操作. --备份指定数据库到本地和远程指定位置( ...
- codevs 1606 台阶
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 话说某牛家门外有一台阶,这台阶可能会很高(总层数<=1000000). 这 ...
- 洛谷 P2347 砝码称重 != codevs 2144
题目描述 设有1g.2g.3g.5g.10g.20g的砝码各若干枚(其总重<=1000), 输入输出格式 输入格式: 输入方式:a1 a2 a3 a4 a5 a6 (表示1g砝码有a1个,2g砝 ...
- No package python-pip available
因为没有此rpm包,此包包含在epel源里面 输入rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarc ...
- CAS (Compare and Swap)
synchronized是悲观锁 注意:实现了CAS的有原子类(AtomicInteger,AtomicLong,等等原子类) CAS 是乐观锁,一种高效实现线程安全性的方法 1.支持原子更新操作,适 ...
- tp5 -- 微信公众号支付
近来期间比较忙, 忙完之后发现最近有挺多的东西没有整理,于是乎.就将以前用到的一些小东西整理了一下. 如果对您有帮助,则是我最大的幸运. 本篇主要是说了一下整合TP5的微信公众号支付. 不过由于最近T ...
- Bootstrap历练实例:小的按钮
<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...
- js事件(事件冒泡与事件捕获)
事件冒泡和事件捕获分别由微软和网景公司提出,这两个概念都是为了解决页面中事件流(事件发生顺序)的问题. <div id='aa' click='po'> <p id='bb' cli ...