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 语言
- Lambda 表达式
- 方法引用提供了易读的 lambda 表达式
- 接口类的方法提供 default 实现
- 重复注解,相同注解可标注多次(java.lang.annotation.Repeatable)
- 类型注解(ElementType.TYPE_PARAMETER, ElementType.TYPE_USE)
- 改进类型引用
- 方法参数反射
2. 集合
- java.util.stream 包中的类提供了 Stream API ,支持 对流元素的函数风格操作.
- hash key 碰撞性能提升
3. javac
The javac compiler has a -profile option
4. Security
- 客户端默认开启 TLS 1.2
- 新增
AccessController.doPrivileged(PrivilegedExceptionAction<T> action, AccessControlContext context, Permission... perms) throws PrivilegedActionException
能够代码断言 特权的子集,不用遍历stack去校验其他权限. - 更强大的密码加密算法
- SSL/TLS Server Name Indication (SNI) Extension support in JSSE Server(不懂)
- 支持 AEAD 算法
- KeyStore 增强,
- SHA-224 Message Digests
- 支持 NSA Suite B Cryptography
- 更好的支持高级加密随机数字生成.
- 新增
java.security.cert.PKIXRevocationChecker
类配置 废弃X.509证书校验 - 支持 windows系统 64-bit PKCS11
- 新的等级类型-(Kerberos 是由 MIT 设计的一个安全认证协议, )
- 支持 Kerberos 5 协议转换和受限委派
- 默认关闭 Kerberos 5 弱密码加密类型
- 无约束的简单认证与安全层(SASL)
- 多主机的SASL service
- JNI bridge to native JGSS on Mac OS X
- Support for stronger strength ephemeral DH keys in the SunJSSE provider
- Support for server-side cipher suites preference customization in JSSE
5. JavaFX
- 深紫色主题实现
- SwingNode 类允许开发者在 JavaFX 应用中嵌入 Swing
- 新的UI控制: DatePicker and the TreeTableView
- javafx.print 包提供了打印API
- 支持 3D Graphics 特性
- WebView 类提供了新特性和改进
- 增强 text 支持
- 支持 Hi-DPI displays
- CSS Styleable 类成功公共API
- ScheduledService 类允许重启服务
- JavaFX 可在 ARM 平台使用.
6.Tools
-
jjs
命令调用Nashorn 引擎(一种JavaScript 引擎,已废弃) -
java
命令可启动 javaFX 应用 -
java
命令手册已经重写 -
jdeps
命令分析类文件 - Java Management Extensions (JMX) 提供对 诊断命令的远程访问.
- The jarsigner tool has an option for requesting a signed time stamp from a Time Stamping Authority (TSA).
7. Internationalization
- 支持 Unicode 6.2.0
- Adoption of Unicode CLDR Data and the java.locale.providers System Property
- 新的 Calendar and Locale APIs
- 安装 Custom Resource Bundle 作为扩展
8. Deployment
- 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.
- The Permissions attribute is required in the JAR file manifest of the main JAR file at all security levels.
- Date-Time Package - a new set of packages that provide a 全面的 date-time model.
9. Scripting
Nashorn Javascript Engine 替代 Rhino javascript engine
10. Pack200
- Pack200 支持常量池和字节码(JSR 292)
- JDK8 支持的类文件已经修改(JSR-292, JSR-308 and JSR-335 声明的那些类文件)
11.IO and NIO
- 为 Solaris 提供 新的SelectorProvider 实现
- 减少 <JDK_HOME>/jre/lib/charsets.jar 包大小
-
java.lang.String(byte[], *)
constructor and thejava.lang.String.getBytes()
method 性能提升
12. java.lang and java.util Packages
- Parallel Array Sorting
- Standard Encoding and Decoding Base64
- 支持 无符号算术
13. JDBC
- 移除 JDBC-ODBC Bridge
- JDBC 4.2 介绍了新特性
14. Java DB
JDK 8 包含了 Java DB 10.10.
15. Networking
- 新增
java.net.URLPermission
类 - 在
java.net.HttpURLConnection
类中,如果安装了 security manager ,那么需要权限才能调用请求
16.Concurrency
-
java.util.concurrent
包新增了类和接口 -
java.util.concurrent.ConcurrentHashMap
新增了方法支持 聚集操作 -
java.util.concurrent.atomic
新增类 -
java.util.concurrent.ForkJoinPool
新增方法支持 common pool - '新增
java.util.concurrent.locks.StampedLock
类
17.Java XML - JAXP
18. HotSpot
- 硬件内部函数新增 AES ,使用
-XX:+UseAES -XX:+UseAESIntrinsics
-
移除PermGen,永久代
-
方法调用字节码指令 支持 默认方法.
JDK 和 JRE 关系
关系图如下: