Java版本之前世今生

2019-06-22  本文已影响0人  162f127842fc

一直比较仰慕Java两位大师(James Gosling 、Doug Lea),但是一直没有沉下心深入研究下Java,最近一段的时间请教很多架构师(阿里、腾讯)。

我们最容易忘记的就是最基础的东西,决定执笔写下一些东西,应该算比较全的Java文章,用着蹩脚的英语领略不同的技术视野。

1.Oak 语言

Oak 语言是James Gosling 博士在1991创建,最初是为Sun微系统公司的机顶盒项目创建的。


Java technology was created as a programming tool in a small, closed-door project

initiated by Patrick Naughton, Mike Sheridan, and James Gosling of Sun in 1991\. But

creating a new language wasn't even the point of "the Green Project."

微信公众号:小猪的互联网江湖

2.JDK Beta

1995年,Oak被命名为Java,因为它已经是Oak Technologies的商标了

第一个Beta版本是发布在1995.5.23 ,提出了"Write Once,Run Anywhere"愿景

第一个公开版本 8个包文件,212的类文件 。

3.JDK 1.0

版本发布时间:第一个版本发布在1996.1.23

第一稳定版本是JDK1.0.2,定义为Java1

JDK 1.0提供了一个纯解释执行的Java虚拟机(Sun Classic VM)。

代表技术:Java虚拟机 、Applet、AWT

4.JDK 1.1

版本发布时间:1997.02.19

JDK 1.1下载页面:

核心包


package java.applet
package java.awt
package java.awt.datatransfer
package java.awt.event
package java.awt.image
package java.beans
package java.io
package java.lang
package java.lang.reflect
package java.math
package java.net
package java.rmi
package java.rmi.dgc
package java.rmi.registry
package java.rmi.server
package java.security
package java.security.acl
package java.security.interfaces
package java.sql
package java.text
package java.util
package java.util.zip

新特性:

代表技术:JAR文件格式、JNI、JDBC、JavaBeans、RMI、内部类、反射

5.J2SE 1.2 Playground

版本发布时间:1998.12.08

1998年从1.2开始以后的版本定义为Java2,直到J2SE 1.5版本,版本名称为J2SE(Java 2 Platform, Standard Edition)取代了JDK,用来区分企业平台J2EE (Java 2 Platform, Enterprise Edition) and J2ME (Java 2 Platform, Micro Edition),这是Java一个非常重要的版本 ,将Java扩展到59个包、1520个类。

新特性

Basic Features(基础特性)

Java Foundation Classes (Java基础类)

Enterprise Features(企业版本特性)

Tool Support(工具支持)

代表技术:EJB、Java Plug-in、Swing、JIT编译器、Collections集合

6.J2SE 1.3 Kestrel

版本发布时间:2000.05.08

新特性:

Java 2 Platform

Performance

Tool Support

Tools

7.J2SE 1.4 Merlin

版本发布时间:2004.02.06

微信公众号:小猪的互联网江湖

Java 2 Platform

集合新增:(RandomAccess、 LinkedHashMap、IdentityHashMap)

Tools

代表技术:正则表达式、序列化、NIO、日志类、XML解析器

8.J2SE 5 Tiger

发布版本时间:2004.09.30

J2SE 5下载页面

微信公众号:小猪的互联网江湖

新特性

新的语言特性:

泛型的添加

元数据(注解),编程语言定义在class、method上,元数据能进行扫描

自动装箱与自动拆箱

enum类型添加,有序的值列表,以前通过常亮或者构造器来实现

可变参数的添加 (e.g. void drawtext(String... lines));

遍历for循环,使用在数组,可迭代对象

改进了多线程Java程序的执行语义;

新的Java内存模型解决了以前规范的复杂性、有效性和性能问题

静态导入

标准库新增功能

为RMI对象自动生成存根

新增concurrent工具包

新增Scanner class,用于解析来自各种输入流和缓冲区的数据

更多新特性

代表技术:泛型、可变参数、元数据(注解)、自动装箱与自动拆箱、迭代

9.Java SE 6 Mustang

发布版本时间:2006.12.11

Java SE 6下载页面

微信公众号:小猪的互联网江湖

新特性

不再支持较老的Win9x版本;非正式地说,Java 6 Update 7是在这些Windows版本上运行的最后一个Java版本。

脚本语言支持(JSR 223):集成脚本语言通用的API,以及内置的Mozilla JavaScript Rhino集成。

核心平台和Swing的性能有了显著的改进。

通过JAX-WS (JSR 224)改进了Web服务支持。

JDBC4.0支持

Java编译器API (JSR 199):允许Java程序以编程方式选择和调用Java编译器的API。

JAXB升级到2.0版:包括集成StAX解析器。

可插拔注解

许多GUI改进,如在API中集成SwingWorker、表排序和过滤,以及真正的swingdouble缓冲(消除灰色区域效应)。

JVM优化,同步和编译器性能优化、新算法和对现有垃圾收集算法的升级,以及应用程序启动性能。

代表技术:可插拔注解

10.Java SE 7 Dolphin

发布版本时间:2011.07.28

Java SE 7下载页面

微信公众号:小猪的互联网江湖

JVM支持动态语言,并在JSR-292下使用新的invokedynamic字节码,这是目前在多语言虚拟机上完成的原型工作的基础上实现的

压缩64位指针

这些小的语言变化(分组在一个名为Coin的项目下):

JSR 166下的并发实用程序

新文件I/O库(由JSR 203定义),增加了对多个文件系统、文件元数据和符号链接的支持。新的包是java.nio。文件,java.nio.file。属性和java.nio.file.spi

TimSort是结合了合并排序(合并排序)和插入排序(插入排序)而得出的排序算法,使用在数组和集合里面

Library-level 支持 椭圆曲线加密算法

一个用于Java 2D的XRender管道,它改进了对特定于现代GPUs的特性的处理

最初在版本6u10中作为不受支持的api实现的图形特性的新平台api

增强了对新的网络协议的库级支持,包括SCTP和Socket协议

Upstream 更新到XML and Unicode

Java部署规则集

代表技术:支持动态语言、SCTP和Socket协议、TimSort

11.Java SE 8 (LTS版本)

发布版本时间:2014.03.18

Java SE 8下载页面

微信公众号:小猪的互联网江湖

新特性

支持lambda表达式,还支持对元素流的函数式操作,比如集合上MapReduce-inspired 的转换。默认方法允许API的作者在不破坏旧代码的情况下向接口添加新方法。

一个JavaScript运行时,它允许开发人员在应用程序中嵌入JavaScript代码

新增 Annotation 类型

无符号整数算术

日期API

静态链接的JNI库

启动JavaFX应用程序(直接启动JavaFX应用程序jar)

JVM移除永久代,新增了元空间

代表技术:lambda 表达式

12.Java SE 9

发布版本时间:2017.09.22

Java SE 9下载页面

新特性

工具使用

REPL (JShell):交互式编程环境。

添加Diagnostic指令

客户端技术

HiDPI 图形:自动缩放和调整大小

响应式流(Reactive Streams)编程

提前编译

更新新特性,查看官方文档

代表技术:**响应式流(Reactive Streams)、提前编译 **

13.Java SE 10

发布版本时间:2018.03.21

Java SE 10下载页面

新特性共有12个重要特性

var 局部变量类型推断。

将原来用 Mercurial 管理的众多 JDK 仓库代码,合并到一个仓库中,简化开发和管理过程。

统一的垃圾回收接口。

G1 垃圾回收器的并行完整垃圾回收,实现并行性来改善最坏情况下的延迟。

应用程序类数据 (AppCDS) 共享,通过跨进程共享通用类元数据来减少内存占用空间,和减少启动时间。

ThreadLocal 握手交互。在不进入到全局 JVM 安全点 (Safepoint) 的情况下,对线程执行回调。优化可以只停止单个线程,而不是停全部线程或一个都不停。

移除 JDK 中附带的 javah 工具。可以使用 javac -h 代替。

使用附加的 Unicode 语言标记扩展。

能将堆内存占用分配给用户指定的备用内存设备。

使用 Graal 基于 Java 的编译器,可以预先把 Java 代码编译成本地代码来提升效能。

在 OpenJDK 中提供一组默认的根证书颁发机构证书。开源目前 Oracle 提供的的 Java SE 的根证书,这样 OpenJDK 对开发人员使用起来更方便。

基于时间定义的发布版本,即上述提到的发布周期。版本号为$FEATURE.$INTERIM.$UPDATE.$PATCH,分别是大版本,中间版本,升级包和补丁版本。

代表技术:G1垃圾回收

14.Java SE 11 (LTS版本)

发布版本时间:2018.09.25

Java SE 11下载页面

新特性有:

动态类文件常量

无操作垃圾收集器(Epsilon)

局部变量的语法lambda 参数

HTTP客户端(标准)

发射一列纵队源代码程序

传输层安全性(Transport Layer Security,TLS)1.3

低开销堆分析

可扩展的低延迟垃圾回收器(实验)

废弃Nashorn JavaScript引擎

废弃 Pack200工具和API

Unicode 10的支持,Java12 支持 Unicode 11.0.0

代表技术:Epsilon垃圾回收器、ZGC垃圾回收器

15.Java SE 12

发布版本时间:2019.03.19

Java SE 12下载页面

作为“功能性版本”,JDK 12 总共包含 8 个新的 JEP ,分别为:

代表技术:Shenandoah垃圾回收器

Java的新特性,所有的JEP都会发布在openJdk上

查看更多JEP

16.JEP

Java expression parser Java表达式分析器

查看更多JEP规范

17.JSR规范

JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。

1. Real-time Specification forJava

2. Boundary-ScanAPI

3. JavaTMManagementExtensions(JMXTM)Specification

4. ECperfBenchmarkSpecification

5. XMLParsingSpecification

6. UnifiedPrintingAPI(JavaPrintServiceAPI)

7. IndustrialAutomationExtension

8. OpenServicesGatewaySpecification

9. FederatedManagementArchitectureSpecification

10. PreferencesAPISpecification

11. JAINTMTCAPSpecification

12. JavaTMDataObjects(JDO)Specification

13. DecimalArithmeticEnhancement

14. AddGenericTypesToTheJavaTMProgrammingLanguage

15. ImageI/OFrameworkSpecification

查看更多JSR规范

参考资料:

https://en.wikipedia.org/wiki/Java_version_history

http://gcc.uni-paderborn.de/www/WI/WI2/wi2_lit.nsf/64ae864837b22662c12573e70058bbb4/abf8d70f07c12eb3c1256de900638899/$FILE/Java%20Technology%20-%20An%20early%20history.pdf
https://en.wikipedia.org/wiki/Oak_(programming_language)
https://www.javatpoint.com/history-of-java](https://www.javatpoint.com/history-of-java)
https://www.oracle.com/technetwork/java/javase/archive-139210.html

上一篇 下一篇

猜你喜欢

热点阅读