Java教程

Java语言发展史

本文主要是介绍Java语言发展史,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. 什么是Java语言

Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级编程语言。所谓编程语言,是计算机的语言,人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。

2. Java语言的发展历史

**2.1 1996年1月23日,JDK 1.0发布**
JDK 1.0 一个小型的专注于网页的版本,可用于所有浏览器。

1995年年初,SUN公司发布了Java语言,并直接把Java语言放到互联网上,免费开源给大家使用。之后Java开始走红,成为了一项广为人知的编程语言。SUN虽然推出了Java,但这只是一种语言,如果想要开发复杂的应用程序,就必须要有一个强大的开发类库。因此,SUN在1996年年初发布了JDK1.0。JDK1.0包含两部分:Java运行环境(即JRE)和Java开发环境(即JDK)。

新特性及更新修改:
JVM虚拟机
Applet(java小应用程序)
AWT(java图形设计)
缺点:
JDK1.0是纯解释运行,使用外挂JIT,性能比较差,运行速度慢。

**2.2 1997年2月19日,JDK 1.1发布**
JDK 1.1 在用户界面上有所改进,重写了事件处理,增加JavaBean。

新特性及更新修改:
JAR(jar包)
JDBC(Java DataBase Connectivity)(连接数据库)
JavaBeans(java规范)
RMI(远程调用)
Inner Class(内部类)
Reflection(反射)
在1996年底,Flash出世了,它可以不使用任何语言就可以做出丰富多彩的动画。紧接着,Flash逐渐蚕食了Java在网页上的应用。在当时,Java虽然是互联网上广泛使用的编程语言,但它并没有找到自己的准确定位。因为Java可以编写网页Applet,但Flash也一样可以做到,而且更快、开发成本更低。

**2.3 1998年12月4日,JDK 1.2发布【第一个里程碑】**
技术体系拆分为三个版本:

J2SE:标准版。整个Java技术的基础和核心,它是J2EE和J2ME编程的基础。
J2EE:企业版。Java技术中应用最广泛的部分,提供企业应用开发的相关内容。
J2ME:微型版。面向手机等移动端开发,主要用于控制移动设备和家电等有限存储的设备。
新特性及更新修改:
Collection(集合框架)
JIT(Just In Time)编译器:内置了JIT[即时编译],会将经常用到的指令保存在内存中,当下次调用时就不要重新编译了,通过这种方式让JDK在效率上有了较大提升。
JDBC中引入可滚动结果集,BLOB,CLOB,批量更新和用户自定义类型
JFC(Java Foundation Classes), 包括Swing 1.0, 拖放和Java2D类库
对打包的Java文件进行数字签名。
Java插件
Applet中添加声音支持

**2.4 2000年5月8日,JDK 1.3发布**

新特性及更新修改:
数学运算
Timer API(时间)
jar文件索引
CORBA IIOP实现RMI的通信协议
Java Sound API(声音)
Java 2D新特性

**2.5 2004年02月6日,JDK 1.4发布**

提升了Java计算的性能与缩放能力,在性能上比1.3提升了将近60%,基于图形界面的响应速度提升了40%。至今在用。

新特性及更新修改:
XML处理
Logging API
JDBC 3.0 API
断言
链式异常处理
Java打印服务
支持正则表达式
引入Imgae I/O API
支持IPV6
Java Web Start
Preferences API

**2.6 2004年9月30日,JDK 1.5发布【第二个里程碑】**

SUN将JDK1.5改名为JDK5.0【J2SE更名为JavaSE;J2EE更名为JavaEE;J2ME更名为JavaME】此外,JDK5.0在语法上做了很大的改进,例如:自动装箱,泛型,枚举,可变参数,遍历循环(foreach循环)等。

新特性及更新修改:
自动装箱与自动拆箱
增强循环,可以使用迭代方式
泛型
枚举
可变参数
静态引入
元数据(注解Annotations)
Instrumentation

**2.7 2006年12月11日,JDK 6发布**

这个版本对Java虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载等方面的算法都有很大的改动。

新特性及更新修改:
继承Web Services
可插拔注解
JDBC 4.0API
支持脚本语言
Java Compiler API:compiler API提供编程访问javac,可以实现进程内编译,动态产生Java代码。
2.8 2011年7月28日,JDK 7发布
新特性及更新修改:
switch语句块中允许以字符串String作为分支条件
异常处理(可以在一个语句块中捕获多种异常) try-with-resources
在创建泛型对象时应用类型推断(增强泛型推断)
Path接口、DirectoryStream、Files、WatchService(重要接口更新)
引入JSR203 NIO2.0(AIO),新IO的支持
支持动态语言
数字字面量的改进 / 数值可加下划
null值得自动处理

**2.9 2009年4月20日,Oracle收购SUN**

Oracle宣布将以每股9.5美元的价格收购Sun,该交易的总价值约为74亿美元。Oracle通过收购Sun公司获得了两项软件资产:Java和Solaris。2007年11月,Java语言作为服务器端编程语言,已经取得了极大地成功;而Android平台的流行,则让Java语言获得了在客户端程序上大展拳脚的机会。

**2.10 2014年3月18日,JDK 8发布【第三里程碑】**

新特性及更新修改:
Lambda表达式:Lambda表达式可以说是Java 8最大的卖点,它将函数式编程引入了Java。Lambda允许把函数作为一个方法的参数,或者把代码看成数据。
接口的默认方法与静态方法:我们可以在接口中定义默认方法,使用default关键字,并提供默认的实现。所有实现这个接口的类都会接受默认方法的实现,除非子类提供的自己的实现。
方法引用(含构造方法引用)方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码
Optional 类:Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
Stream API:新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中
Date/Time API (JSR 310):加强对日期与时间的处理。Java 8新的Date-Time API (JSR 310)受Joda-Time的影响,提供了新的java.time包,可以用来替代 java.util.Date和java.util.Calendar。一般会用到Clock、LocaleDate、LocalTime、LocaleDateTime、ZonedDateTime、Duration这些类,对于时间日期的改进还是非常不错的。
编码:在Java 8中,编码成为了Java类库的标准。类同时还提供了对URL、MIME友好的编码器与解码器。

**2.11 2017年9月21日 ,JDK9发布**

新特性及更新修改:
模块系统:模块是一个包的容器,Java 9 最大的变化之一是引入了模块系统(Jigsaw 项目)
REPL (JShell):交互式编程环境
多版本兼容 JAR 包:多版本兼容 JAR 功能能让你创建仅在特定版本的 Java 环境中运行库程序时选择使用的 class 版本。(这个在处理向下兼容方面,非常好用)
接口的私有方法:在接口中使用private私有方法。我们可以使用 private 访问修饰符在接口中编写私有方法
底层结构:String 存储结构变更(这个很重要)
集合工厂方法:快速创建只读集合
增强的 Stream API:改进的 Stream API 添加了一些便利的方法,使流处理更容易,并使用收集器编写复杂的查询
全新的 HTTP 客户端 API:HTTP/2标准是HTTP协议的最新版本,新的 HTTPClient API 支持 WebSocket 和 HTTP2 流以及服务器推送特性

**2.12 2018年3月20日,Java 10正式发布**

新特性及更新修改:
局部变量的类型推断——var关键字
GC改进和内存管理 并行全垃圾回收器 G1
垃圾回收器接口
线程-局部变量管控
合并 JDK 多个代码仓库到一个单独的储存库中
新增API:ByteArrayOutputStream
新增API:List、Map、Set
新增API:java.util.Properties
新增API: Collectors收集器

**2.13 2018年9月26日,Java 11正式发布**

新特性及更新修改:
本地变量类型推断
字符串加强
集合加强
Stream 加强
Optional 加强
InputStream 加强
HTTP Client API
化繁为简,一个命令编译运行源代码

**2.14 2019年3月19日,JDK 12发布**

2019年3月19日,JDK 12 发布。主要特性包括:switch 支持表达式、Java 微测试套件(JMH 等功能)。其中最引人注目的特性无疑是加入了由 RedHat 领导开发的 Shenandoah 垃圾收集器,Shenandoah 作为首个由非 Oracle 开发的垃圾收集器,其目标又与 OracleJDK 11中发布的 ZGC 几乎完全一致,两者天生就存在竞争。Oracle 马上用实际行动抵制了这个新收集器,JDK 11 发布时才说应尽可能保证 OracleJDK 和 OpenJDK 的兼容一致,转眼就在 OracleJDK 12 里把 Shenandoah 的代码通过条件编译强行剔除掉,使其成为历史上唯一进入了 OpenJDK 发布清单,但在 OracleJDK 中无法使用的功能。

**2.15 2019年9月13日,JDK 13发布**

2019年9月13日,JDK 13 发布,主要特性包括:重新实现传统套接字API、switch 表达式预览版、增强 ZGC 将未使用的堆内存返回给操作系统等。

**2.16 2020年3月17日,JDK 14发布**
主要特性包括:switch 表达式最终版、增强 ZGC 收集器支持 Window/ Mac、弃用 ParallelScavenge + SerialOld 的 GC 组合等。
![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=cover10/79053408585302013.jpg?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,image_MjAyMDA3MTUxNjIxMDEzOC5wbmc=,size_16,color_FFFFFF,t_70,image/resize,m_lfit,w_962#pic_center)
这篇关于Java语言发展史的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!