最全的Java版本历史
JDK 1.0(1996)
Sun公司发布Java1.0,发布初期叫Oak,后改名为Java(JDK1.0基本上只支持Java语言基础特性)
JDK 1.1(1997)
- 引入内部类
- 引入JDBC: 是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。JDBC是面向关系型数据库的。
- 引入RMI:Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。名称中的“Bean”是用于Java的可重用软件组件的惯用叫法。
- 引入JavaBeans:Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。名称中的“Bean”是用于Java的可重用软件组件的惯用叫法。
- 支持反射能力
- 支持国际化和Unicode
J2SE 1.2(1998)
- Java技术体系拆分为:J2SE、J2EE、J2ME
- 引入JIT:即时编译,又译及时编译、实时编译,动态编译的一种形式,是一种提高程序运行效率的方法。通常,程序有两种运行方式:静态编译与动态直译。静态编译的程序在执行前全部被翻译为机器码,而直译执行的则是一句一句边运行边翻译。
- 引入EJB技术
- 引入Swing图像化API
- Java plug-in(Java Applet):Web环境下的小程序
- 引入集合框架
J2SE 1.3(2000)
- 初次引入 HotSpot VM
- Java命名和目录接口(Java Naming and Directory Interface,缩写JNDI)包含在主程序库中(先前为扩展组件的形式)
- 用于实现动态代理的类
J2SE 1.4(2002)
- 语言上的改变:assert 关键字(断言)
- 正则表达式
- 异常链,允许一个异常来封装原先处于较低级别的异常
- 支持 Internet Protocol version 6(IPv6)
- 非阻塞I/O(NIO)
- 新增 日志API
J2SE 5.0(2004)
- 泛型: 为集合提供编译期间 (静态) 类型安全,且不须为大多数类型转换 (类型转换) (规范在 JSR 14)
- 元数据(MetaData): 也称作注解。让语言结构(像是类别和方法)能够用额外的数据标记,可以由元数据意识工具处理(规范在 JSR 175)
- 枚举
- 自动装箱拆箱:基本数据类型如int与Integer之间能够自动转换
- 静态导入(import static)
- 可变参数
- JUC
- For-Each 循环
- Scanner 类别来解析来自各式各样的输入和缓冲
public class Jdk5Demo{public static void mian(String[] args){String[] values = of("hello","world");Integer[] data = of(1,2,3,4,5);}private static <T> T[] of(T... values){return values;}private static <T> T[] ofOne(T one, T... others){return others;}
}
JavaSE 6(2006)
- 引入垃圾回收G1
- 优化锁与同步、垃圾收集、类加载等
- @Override 接口
public class Jdk6Demo extends Object{public static void mian(String[] args){}@Overridepublic String toString(){return super.toString();}public interface EchoService{@Deprecated(since = "1.1")String echo(String message);String echo(String message,String... others);}public class EchoServiceImpl implements EchoService{//1.1 remove @OverrideString echo(String message){return null;}@OverrideString echo(String message,String... others){return null;}}
}
//@Override 正常来说要作为重写的注解加在重写的方法上,但有时候就为了区分版本 如上就是从1.1版本要删除了就不应该在加上该注解
JavaSE 7(2011)
sun被Oracle收购
- 钻石语法(泛型实例化类型自动推断)
- try-with-resources语法糖
- 多个catch块用|连接
- switch中可以使用字符串
- 支持动态语言
- 64位JDK的指针压缩
- 数值可加下划线
public class Jdk7Demo {public static void mian(String[] args){try(FileInputStream inputStream = new FileInputStream("D:/a.txt")){//AutoCloseable since 1.7//JDBC Connection ,InputStream,用 try-with-resources的语法}catch(FileNotFoundException | RuntimeException e ){e.printStackTrace();}}}
JavaSE 8(2014 LTS)
- Lambda表达式(闭包,允许我们将函数当成参数传递给某个方法)
- 接口中的默认方法和静态方法
- 方法引用
- 无参构造器方法引用:类名::new 或者 Class::new
- 静态方法引用:Class::static_method (接受一个Class类型参数)
- 类成员方法引用:Class::method (没有参数)
- 实例成员方法引用:instance::method (接受一个instance对应类型的参数)
- 重复注解(同一个地方可以重复使用多次同一个注解,注解本身需要被@Repeatable修饰)
- 升级工具库实现
- HashMap实现修改、ConCurrentHashMap实现修改
- 新增Stream API(java.util.stream)
- 新增Optional类以解决空指针问题
- 工具包,类依赖分析工具 jdeps
- JVM方面:使用Metaspace(JEP122)代替方法区持久带(PermGen space)
JavaSE 9(2017)
JSR 376:在Jigsaw项目中将JDK模块化(参见Java平台模块系统条目)
JEP 222:jshell:Java Shell(一个 Java 交互式顶层构件)
JEP 295:AOT编译(通过 Graal VM 实现)[240]
JEP 268:XML Catalogs
JEP 266:更多的并发更新。包含响应式流的Java实现,及其部分替代品java.util.concurrent.Flow。
JEP 193:变量句柄:定义一个标准方法来调用java.util.concurrent.atomic和sun.misc.Unsafe操作的等价物。
JEP 282:jlink:Java链接器。该工具可以为模块生成一个包含了其所有依赖项的自定义运行时映像,同时允许生成一个包括运行它的JVM的可执行文件。
JavaDB被移出JDK
JEP 263:高DPI图像:自动缩放与尺寸自适应。
JavaSE 10 (2018.3)
JEP 286:局部变量类型推断
JEP 317:实验性的基于Java的JIT编译器。这是 Linux x64 下 Graal 动态编译器的集成。
JEP 310:应用程序类级别数据共享
JEP 322:基于时间的版本命名
JEP 307:适用于G1的多线程完全垃圾回收
JEP 304:垃圾回收器接口
JEP 314:更多的Unicode语言标签扩展
JEP 319:内置根证书
JEP 312:线程本地握手
JEP 316:在可选的内存设备上申请堆内存空间
JEP 313:删除本地代码头文件生成器javah
JEP 296:将所有JDK分支集成到同一个版本库中
var a = new ArrayList<>();
JavaSE 11 (2018.9 LTS)
JEP 309:动态类文件常量
JEP 318:Epsilon:无操作垃圾收集器
JEP 323:lambda参数的局部变量语法
JEP 331:低开销堆分析
JEP 321:HTTP Client
JEP 332:支持 TLS 1.3
JEP 328:添加Java飞行记录器(JFR),其用于创建性能分析记录
JEP 333:添加ZGC(一个可扩展的低延迟垃圾收集器)
JavaFX、Java EE、CORBA 被移出 JDK
JEP 335:弃用 Nashorn JavaScript 引擎
JavaSE 12(2019.3)
JEP 189:Shenandoah:一个实验性的低延迟垃圾收集器
JEP 230:细粒度性能评审包
JEP 325:Switch 表达式(预览阶段)
JEP 334:JVM Constants API
JEP 340:仅保留一个 AArch64 平台的移植
JEP 341:默认类数据共享归档
JEP 344:针对G1,提供可中止的混合垃圾收集
JEP 346:针对G1,及时释放已申请但未使用的内存
Java类库提升
Java5 | Java6 | Java7 | Java8 | Java9 | Java10 |
---|---|---|---|---|---|
并发框架(J.U.C) | JDBC 4.0 | NIO 2 | Stream API | Reactive Streams Flow API | Java-Based JIT Compiler |
格式化(Fomatter) | JAXB 2.0 | Fork/Join框架 | CompletableFuture | Process API Updates | |
Java管理扩展(JMX) | 可插拔注解处理AP | Iinvokedynamic字节码 | Annotation on Java Types | Variable Handles | |
Instrumentation | Common Annotations | Date and Time API | Method Handles | ||
XML处理(DOM、SAX、XPath、XSTL) | Java Compiler Api | 可复制Annotations | Spin-Wait Hints | ||
Scripting in JVM | JavaScript运行时 | Stack-Walking API |
参考百科:维基百科
最全的Java版本历史相关推荐
- java 画笔跟swing组件_Java学习教程(基础)--Java版本历史(二)
Java语言自JDK1.0版本以来经历了许多次更新,也在基本程序库中增加了大量的类别和包.从J2SE 1.4开始,Java语言的变动由 Java Community Process(JCP)管理,JC ...
- 剑指Offer全题解—Java版本
1.数组中重复的数字 题目描述 数组中重复的数字 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任 ...
- java的历史_Java的历史
java的历史 Java is an object-oriented programming language. Java was developed by James Gosling and col ...
- Java 版本变更列表 (Java SE 8 ~ Java SE 18 )
java 版本变更列表 Java SE 8 Java SE 9 Java SE 10 Java SE 11 Java SE 12 Java SE 13 Java SE 14 Java SE 15 Ja ...
- Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结
Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结 1. 注册表是树形数据库 1 2. 注册表的由来 1 3. Java 操作注册表 2 3.1. 使用Preferences ...
- Java实现根据Word模板填充表格数据(poi方式),以及doc和docx转PDF,最全最详细版本,解决外部引用jar在linux上报ClassNotFound的问题。
Java实现根据Word模板填充表格数据(poi方式),以及doc和docx转PDF,最全最详细版本,解决外部引用jar在linux上报ClassNotFound的问题. 适用场景: 1.固定格式的W ...
- java各历史版本官网下载
java各历史版本官网下载: http://www.oracle.com/technetwork/java/javase/archive-139210.html
- java及历史版本下载
各位仁兄在网上下载Java版本都遇到过各是的问题:路径不对啦,下载要积分啦,找不到对应的版本啦······ 今附图说下JavaSE JDK1.8.1的下载方法,其余版本类似: 1.百度搜索Java,进 ...
- JAVA API1.8中文版 谷歌翻译 最准确最全的翻译版本!蓝奏下载
JAVA API1.8中文版 谷歌翻译 最准确最全的翻译版本! 蓝奏云链接: https://wwa.lanzous.com/iqjdMni9ycb 辛苦点赞,谢谢
最新文章
- 使用Nginx-rtmp-module搭建hls直播
- SpringBoot系列: Web应用鉴权思路
- ListView和RecyclerView的Adapter封装
- docker -v 文件夹下没有数据_详细!快速入门指南!Docker
- Controller 返回图片请求
- [Java基础]LinkedHashSet集合概述和特点
- 特斯拉全球超级充电站已超过25000座 国内超过870座
- 为什么 Kafka 这么快?
- 异常:Error resolving template “xxx“, template might not exist or might not be accessible...解决办法
- 简述中断的整个过程,谈谈你对中断在计算机中作用的理解。
- flashlite3无法接入网络的解决办法
- vue2.0 实现导航守卫(路由守卫)
- MFC如何正常关闭一个程序
- 卷积编码verilog实现
- 几何画板 html5,几何画板菜单栏
- ORACLE 数据泵之NETWORK_LINK
- Arcgis进行人口密度计算
- 2017秋季赛Web安全测试训练赛wp【安恒】
- 八戒,别以为你站在路灯下就是夜明猪了!
- Automatically manage signing
热门文章
- DAPM之四:dapm机制深入分析(下)
- Codeforces 148D. Bag of mice(概率dp)
- NLP聊天机器人的搭建(chatbot)(一)
- C#:实体框架EF(entity framework)
- 后渗透篇:COM劫持及加载技术
- 【Swing】JTextArea文本域组件
- c语言编译产生随机数为什么,C语言 怎样产生随机数
- python 中控考勤机实时接收多个考勤机的数据
- 手机录音文件如何转换成文本?具体如何操作?
- 计算机辅助培训的策略,宁波诺丁汉大学学习策略培训对解决计算机辅助语言教学环境下信息过剩问题的启示...