Java 8 学习记录

Java 8 学习记录

目录

官方文档

https://docs.oracle.com/javase/8/
https://docs.oracle.com/javase/8/docs/index.html

API 文档地址

https://docs.oracle.com/javase/8/docs/api/

新特性

1. Java 语言

  1. Lambda 表达式
  2. 方法引用提供了易读的 lambda 表达式
  3. 接口类的方法提供 default 实现
  4. 重复注解,相同注解可标注多次(java.lang.annotation.Repeatable)
  5. 类型注解(ElementType.TYPE_PARAMETER, ElementType.TYPE_USE)
  6. 改进类型引用
  7. 方法参数反射

2. 集合

  1. java.util.stream 包中的类提供了 Stream API ,支持 对流元素的函数风格操作.
  2. hash key 碰撞性能提升

3. javac

The javac compiler has a -profile option

4. Security

  1. 客户端默认开启 TLS 1.2
  2. 新增AccessController.doPrivileged(PrivilegedExceptionAction<T> action, AccessControlContext context, Permission... perms) throws PrivilegedActionException 能够代码断言 特权的子集,不用遍历stack去校验其他权限.
  3. 更强大的密码加密算法
  4. SSL/TLS Server Name Indication (SNI) Extension support in JSSE Server(不懂)
  5. 支持 AEAD 算法
  6. KeyStore 增强,
  7. SHA-224 Message Digests
  8. 支持 NSA Suite B Cryptography
  9. 更好的支持高级加密随机数字生成.
  10. 新增 java.security.cert.PKIXRevocationChecker 类配置 废弃X.509证书校验
  11. 支持 windows系统 64-bit PKCS11
  12. 新的等级类型-(Kerberos 是由 MIT 设计的一个安全认证协议, )
  13. 支持 Kerberos 5 协议转换和受限委派
  14. 默认关闭 Kerberos 5 弱密码加密类型
  15. 无约束的简单认证与安全层(SASL)
  16. 多主机的SASL service
  17. JNI bridge to native JGSS on Mac OS X
  18. Support for stronger strength ephemeral DH keys in the SunJSSE provider
  19. Support for server-side cipher suites preference customization in JSSE

5. JavaFX

  1. 深紫色主题实现
  2. SwingNode 类允许开发者在 JavaFX 应用中嵌入 Swing
  3. 新的UI控制: DatePicker and the TreeTableView
  4. javafx.print 包提供了打印API
  5. 支持 3D Graphics 特性
  6. WebView 类提供了新特性和改进
  7. 增强 text 支持
  8. 支持 Hi-DPI displays
  9. CSS Styleable 类成功公共API
  10. ScheduledService 类允许重启服务
  11. JavaFX 可在 ARM 平台使用.

6.Tools

  1. jjs 命令调用Nashorn 引擎(一种JavaScript 引擎,已废弃)
  2. java 命令可启动 javaFX 应用
  3. java命令手册已经重写
  4. jdeps 命令分析类文件
  5. Java Management Extensions (JMX) 提供对 诊断命令的远程访问.
  6. The jarsigner tool has an option for requesting a signed time stamp from a Time Stamping Authority (TSA).

7. Internationalization

  1. 支持 Unicode 6.2.0
  2. Adoption of Unicode CLDR Data and the java.locale.providers System Property
  3. 新的 Calendar and Locale APIs
  4. 安装 Custom Resource Bundle 作为扩展

8. Deployment

  1. For sandbox applets and Java Web Start applications, URLPermission is now used to allow connections back to the server from which they were started. SocketPermission is no longer granted.
  2. The Permissions attribute is required in the JAR file manifest of the main JAR file at all security levels.
  3. Date-Time Package - a new set of packages that provide a 全面的 date-time model.

9. Scripting

Nashorn Javascript Engine 替代 Rhino javascript engine

10. Pack200

  1. Pack200 支持常量池和字节码(JSR 292)
  2. JDK8 支持的类文件已经修改(JSR-292, JSR-308 and JSR-335 声明的那些类文件)

11.IO and NIO

  1. 为 Solaris 提供 新的SelectorProvider 实现
  2. 减少 <JDK_HOME>/jre/lib/charsets.jar 包大小
  3. java.lang.String(byte[], *) constructor and thejava.lang.String.getBytes()method 性能提升

12. java.lang and java.util Packages

  1. Parallel Array Sorting
  2. Standard Encoding and Decoding Base64
  3. 支持 无符号算术

13. JDBC

  1. 移除 JDBC-ODBC Bridge
  2. JDBC 4.2 介绍了新特性

14. Java DB

JDK 8 包含了 Java DB 10.10.

15. Networking

  1. 新增 java.net.URLPermission
  2. java.net.HttpURLConnection类中,如果安装了 security manager ,那么需要权限才能调用请求

16.Concurrency

  1. java.util.concurrent包新增了类和接口
  2. java.util.concurrent.ConcurrentHashMap新增了方法支持 聚集操作
  3. java.util.concurrent.atomic 新增类
  4. java.util.concurrent.ForkJoinPool新增方法支持 common pool
  5. '新增 java.util.concurrent.locks.StampedLock

17.Java XML - JAXP

18. HotSpot

  1. 硬件内部函数新增 AES ,使用 选项开启.
-XX:+UseAES -XX:+UseAESIntrinsics
  1. 移除PermGen,永久代

  2. 方法调用字节码指令 支持 默认方法.

JDK 和 JRE 关系

关系图如下:
Java 8 学习记录

上一篇:我要手撕mybatis源码


下一篇:Java基础 Java中的类型签名 方法签名