JAVA各版本的特性总结 (持续更新)

java12 (2019-03-19)

1. 低暂停时间的GC;
2. 微基准测试套件;
3. Switch表达式;
4. JVM常量API;
5. 只保留一个AArch64实现;
6. 默认类数据共享归档文件;
7. 可终止的G1 Mixed GC;
8. G1及时返回未使用的已分配内存;

java11 (2018-09-25)

1. 181:Nest-Based访问控制;
2. 309:动态类文件常量;
3. 315:改善Aarch64 intrinsic;
4. 318:无操作垃圾收集器;
5. 320:消除Java EE和CORBA模块;
6. 321:HTTP客户端(标准);
7. 323:局部变量的语法λ参数;
8. 324:Curve25519和Curve448关键协议;
9. 327:Unicode 10;
10. 328:飞行记录器;
11. 329:ChaCha20和Poly1305加密算法;
12. 330:发射一列纵队源代码程序;
13. 331:低开销堆分析;
14. 332:传输层安全性(Transport Layer Security,TLS)1.3;
15. 333:动作:一个可伸缩的低延迟垃圾收集器 (实验);
16. 335:反对Nashorn JavaScript引擎;
17. 336:反对Pack200工具和API;

Java10 (2018-03-21)
根据官网的公开资料,共有12个重要特性,如下:

1. JEP286,var 局部变量类型推断;
2. JEP296,将原来用 Mercurial 管理的众多 JDK 仓库代码,合并到一个仓库中,简化开发和管理过程;
3. JEP304,统一的垃圾回收接口;
4. JEP307,G1 垃圾回收器的并行完整垃圾回收,实现并行性来改善最坏情况下的延迟;
5. JEP310,应用程序类数据 (AppCDS) 共享,通过跨进程共享通用类元数据来减少内存占用空间,和减少启动时间;
6. JEP312,ThreadLocal 握手交互。在不进入到全局 JVM 安全点 (Safepoint) 的情况下,对线程执行回调。优化可以只停止单个线程,而不是停全部线程或一个都不停;
7. JEP313,移除 JDK 中附带的 javah 工具。可以使用 javac -h 代替;
8. JEP314,使用附加的 Unicode 语言标记扩展;
9. JEP317,能将堆内存占用分配给用户指定的备用内存设备;
10. EP317,使用 Graal 基于 Java 的编译器,可以预先把 Java 代码编译成本地代码来提升效能;
11. JEP318,在 OpenJDK 中提供一组默认的根证书颁发机构证书。开源目前 Oracle 提供的的 Java SE 的根证书,这样 OpenJDK 对开发人员使用起来更方便;
12. JEP322,基于时间定义的发布版本,即上述提到的发布周期。版本号为\$FEATURE.\$INTERIM.\$UPDATE.\$PATCH,分别是大版本,中间版本,升级包和补丁版本;

java9 (2017-09-22)

1. 模块系统:模块是一个包的容器,Java 9 最大的变化之一是引入了模块系统(Jigsaw 项目);
2. REPL (JShell):交互式编程环境;
3. HTTP 2 客户端:HTTP/2标准是HTTP协议的最新版本,新的 HTTPClient API 支持 WebSocket 和 HTTP2 流以及服务器推送特性;
4. 改进的 Javadoc:Javadoc 现在支持在 API 文档中的进行搜索。另外,Javadoc 的输出现在符合兼容 HTML5 标准;
5. 多版本兼容 JAR 包:多版本兼容 JAR 功能能让你创建仅在特定版本的 Java 环境中运行库程序时选择使用的 class 版本;
6. 集合工厂方法:List,Set 和 Map 接口中,新的静态工厂方法可以创建这些集合的不可变实例;
7. 私有接口方法:在接口中使用private私有方法。我们可以使用 private 访问修饰符在接口中编写私有方法;
8. 进程 API: 改进的 API 来控制和管理操作系统进程。引进 java.lang.ProcessHandle 及其嵌套接口 Info 
		来让开发者逃离时常因为要获取一个本地进程的 PID 而不得不使用本地代码的窘境;
9. 改进的 Stream API:改进的 Stream API 添加了一些便利的方法,使流处理更容易,并使用收集器编写复杂的查询;
10. 改进 try-with-resources:如果你已经有一个资源是 final 或等效于 final 变量,您可以在 try-with-resources 语句中使用该变量,
		而无需在 try-with-resources 语句中声明一个新变量;
11. 改进的弃用注解 @Deprecated:注解 @Deprecated 可以标记 Java API 状态,可以表示被标记的 API 将会被移除,或者已经破坏;
12. 改进钻石操作符(Diamond Operator) :匿名类可以使用钻石操作符(Diamond Operator);
13. 改进 Optional 类:java.util.Optional 添加了很多新的有用方法,Optional 可以直接转为 stream;
14. 多分辨率图像 API:定义多分辨率图像API,开发者可以很容易的操作和展示不同分辨率的图像了;
15. 改进的 CompletableFuture API : CompletableFuture 类的异步机制可以在 ProcessHandle.onExit 方法退出时执行操作;
16. 轻量级的 JSON API:内置了一个轻量级的JSON API;
17. 响应式流(Reactive Streams) API: Java 9中引入了新的响应式流 API 来支持 Java 9 中的响应式编程;
18. 轻量级JSON API;
19. 代码分段缓存;
	
详细参考:http://www.runoob.com/java/java9-new-features.html        

java8 (2014-03-18 )

	1. Lamda表达式 (java8的最主要的特性,使得java使用函数式编程,大大简化了代码行数)
			1)格式: 参数列表、箭头、函数体(表达式、代码块) 
				(n1,n2)->System.out.println(); 
			2) 适用场景:函数接口即仅仅包含一个抽象方法的接口,任何一个Lambda表达式可以等价为对应的函数式接口;
			
	2. 接口的默认方法(默认方法、静态方法)  (默认方法就是一个在接口里面有了一个实现的方法);
	3. 方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。
			与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
	4. 新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps;
	5. Date Time API − 加强对日期与时间的处理 ;
	6. Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中
	7. Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常;
	8. Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用;
	9. Effective final ;
	10. Map(红黑树) 
			  优化了HashMap以及ConcurrentHashMap
					将HashMap原来的数组+链表的结构优化成了数组+链表+红黑树的结构,
					减少了hash碰撞造成的链表长度过长,时间复杂度过高的问题,
					ConcurrentHashMap则改进了原先的分段锁的方式,
					采用transient volatile HashEntry<K,V>[] table来保存数据。
	11. 注解(可重复用注解) ;
	12. CompletableFuture ;
	13. jvm内存空间改动
					PermGen空间被移除了,取而代之的是Metaspace。
					JVM选项-XX:PermSize与-XX:MaxPermSize
					分别被-XX:MetaSpaceSize与-XX:MaxMetaspaceSize所代替
	14. 新增原子性操作类LongAdder, 新增StampedLock;

	详细参考:http://www.runoob.com/java/java8-new-features.html

java7 (2011-07-28 Dolphin(海豚))

1. switch语句块中允许以字符串作为分支条件;
2. 钻石型语法(在创建泛型对象时应用类型推断);
 Map<String,List<String>>map=new HashMap<>();
3. 自动资源管理
	4. Path和Files
	5. Boolean类型反转,空指针安全,参与位运算
	6. 语法上支持集合,而不一定是数组
		List<Integer> test = [1,2,3,4,5,6];
4. 两个char间的equals
5. 安全的加减乘除
6. map集合支持并发请求
7. 支持try-with-resources(在一个语句块中捕获多种异常);
8. 支持动态语言;
9. 引入Java NIO.2开发包;
10. 数值类型可以用二进制字符串表示,并且可以在字符串表示中添加下划线;
11. null值的自动处理;

java6 (2006-12-11 Mustang(野马))

1. 命名方式变更;
1. 支持脚本语言 引入一个支持脚本引擎的新框架;
2. UI的增强;
3. Web Services  (web服务;
4. 一系列的安全相关的增强;
5. JDBC 4.0API (jdbc高级;
6. Java Compiler API (Java™ 编程语言编译器的接口;
7. 可插拔注解 (通用的Annotations支持;
8. 增加对Native PKI(Public Key Infrastructure); 
		Java GSS(Generic Security Service),Kerberos和LDAP(Lightweight Directory Access Protocol)支持;
		(公钥基础设);
9. 编译API和微型HTTP服务器API; 
10. 锁与同步; 
11. 垃圾收集;                     
12. 类加载;            
13. Java GSS (通用安全服务);                   
14. Kerberos ( 一种安全认证的系统);
15. LDAP (LDAP)   ;

java5 (2004-09-30 Tiger(老虎))

1. 泛型 Generics;
2. 增强循环,可以使用迭代方式;
3. 自动装箱与自动拆箱()autoboxing&unboxing;
4. 类型安全的枚举 Enumeration;
5. 可变参数 varargs;
6. 静态引入;
7. 元数据(注解) Annotations;
8. Instrumentation;
9. 新的格式化方法;
10. 新的线程模型和并发库 concurrent(并发包);
11. JMM(内存模型);

java1.4 (2004-02-06 Merlin(隼))

1. XML解析器;
2. Java打印服务;
3. Logging API (日志功能);
4. Java Web Start;
5. JDBC 3.0 API (jdbc高级);
6. 断言;
7. Preferences API(可以操作系统的高级功能);
8. 链式异常处理;
9. 支持IPV6;
10. 支持正则表达式;
11. 引入Imgae I/O API (图片流); 
12. NIO(高级流);
13. XSLT转换器;

java1.3 (2000-05-08 Kestrel(红隼))

1. 数学运算;
2. Timer API(时间);
3. Java Sound API(声音);
4. CORBA IIOP实现RMI的通信协议;
5. Java 2D新特性;
6. jar文件索引;
7. 对Java的各个方面都做了大量优化和增强;

java1.2 (1998-12-08 Playground(操场))

1. J2SE(改名为J2SE);
2. J2EE(改名为J2EE);
3. J2ME(改名为J2ME);
4. EJB(J2EE的规范) ;                  
5. Java IDL(平台对象请求代理体系结构);
6. 集合框架;
7. JIT(Just In Time)编译器;
8. 对打包的Java文件进行数字签名;
9. JFC(Java Foundation Classes), 包括Swing 1.0, 拖放和Java2D类库;
10. Java Plug-In(运行插件);
11. JDBC中引入可滚动结果集,BLOB,CLOB,批量更新和用户自定义类型;
12. Applet中添加声音支持;                     
13. 字符串常量做内存映射;                  
14. 控制授权访问系统资源的策略工具;

java1.1 (1997-02-19)

1. JAR(jar包);
2. JDBC(Java DataBase Connectivity)(连接数据库);
3. JavaBeans(java规范);
4. RMI(远程调用);
5. Inner Class(内部类);                
6. Reflection(反射);

java1.0 (1996-01-23 Oak(橡树))
初代版本,伟大的一个里程碑,但是是纯解释运行,
使用外挂JIT,性能比较差,运行速度慢。

1. un Classic VM(虚拟机);
2. Applet(java小应用程序);
3. AWT(java图形设计);
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值