【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 ...
随机推荐
- JAVA-汉字转换成汉语拼音(pinyin4j-2.5.0-sources.jar)
在项目中,经常会使用汉语拼音,特别是把汉字转换成汉语拼音.下面给出一种常用的工具. 在使用该程序必须添加 pinyin4j-2.5.0-sources.jar包. import net.sourcef ...
- phpmyadmin 出现Table 'root.pma_table_uiprefs' doesn't exist
原文链接:http://zhidao.baidu.com/link?url=ugBKDds94yxWhh_IZ6rZWZYSd2nO555EZ1WMClXRrqL0aKLc-HPDrZVSKZyDaD ...
- liunx下忘记root密码的解决方法
1.在Liunx 刚开始重启时.我们这里按“e”键进入系统启动前的Grub配置.(注:一般要安两次e键)(如果你的系统引导程序是LILO,和Grub大体类似,请自行参照LILO给出的提示操作) 如图: ...
- Invalid bound statement (not found): com.ros.dao.LogMapper.insert
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ros.dao.LogMapp ...
- 开源项目: circular-progress-button
带进度条显示的按钮, 其效果如下所示: 其由三部分动画组成: 初始状态->圆环状态->完成状态. 0. 实现从初始到圆环的简单实现: 继承自button 类, 设置其背景 public c ...
- 并查集+思维——X-Plosives
一.问题描述(题目链接) 有n种化合物,每种化合物由两种元素组成.当几种的化合物数量等于他们所含不同元素的数量时,就会发生爆炸.现在依次给出化合物的组成,当新的化合物与之前的化合物放在一起会发生爆炸时 ...
- 按Esc键实现关闭窗体
实现效果: 知识运用: KeyEventArgs类的KeyData属性 //获取KeyDown或KeyUp事件的键数据 public Keys KeyData {get;} 实现代码: private ...
- spring-security中的csrf防御机制(跨域请求伪造)
什么是csrf? csrf又称跨域请求伪造,攻击方通过伪造用户请求访问受信任站点.CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社 ...
- Java简答题附答案
1. Java有没有goto? 有, Goto语句在java中作为保留字, 并没有实现它. 带标号的break, continue局限于循环体中跳转 带标号的goto可以在一个函数(c语言)中任意跳转 ...
- mac系统下android studio创建手机模拟器
打开android studio,点击右上角的模拟器图标,打开“Android Virtual Device Manager” 窗口,如下图 点击“Create Virtual Device”,在 ...