java8性能改进的简单介绍

博主:adminadmin 2023-03-18 18:52:10 598

本篇文章给大家谈谈java8性能改进,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java8update351有什么用

甲骨文公司Oracle Java Development Kit(JDK)是一款Java开发工具包,包含Java运行环境(java运行库),Java开发套件和Java基础类库源代码.Java Runtime Environment(JRE)是运行Java程序的运行环境,不管是做Java开发还是从事安卓开发,都必须在系统安装JRE运行环境.Java语言的贡献力量是其他任何技术无可比拟的.

新版变化

2022年10月18日 JDK 8u351 Update 发行说明

Java™ SE Development Kit 8, Update 351 (JDK 8u351)

[JDK] Java SE Development Kit 稳定版官方下载页面(需注册登陆)

[JRE] Java Runtime Environment 稳定版官方下载页面(需注册登陆)

jdk1.8新特性

Java8(又称为jdk1.8)是Java语言开发迄今为止的一个最主要和用户最多的一个版本。

Java8是Oracle公司于2014年3月18日发布,它不仅支持函数式编程,而且还拥有新的日期API,StreamAPI等操作,下面胖虎带领大家一探究竟Java8的一些新特性。

ava8API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。这种风格将要处理的元素集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选,排序,聚合等操作。

java8添加了接口的默认方法,简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现的方法。

为什么选择 Java 8

速度更快

可以取悦老板、满足业务或运营人员的一大卖点是:Java8 运行应用时速度更快。通常,升级至 Java8 的应用都能得到速度上的提升,即便没有做任何改变或调优。对于为了迎合特定 JVM 而做出调整的应用,这或许并不适用。但 Java8 性能更优的理由还有很多:

常见数据结构的性能提升:对广受欢迎的 HashMap 进行的基准测试表明,它们在 Java8 中的性能更好。这种提升非常吸引人——你无需学习新的 Streams API 或 Lambda 语法,甚至不需要改变现有的代码,就能提升应用的性能。

垃圾回收器提升:通常,Java 应用性能取决于垃圾回收的效率。的确,糟糕的垃圾回收会很大程度上影响应用性能。Java8 对垃圾回收做了很多改变,能有效提升性能并简化调优。最为人熟知的改变是 PermGen 的移除与 Metaspace的引入。

Fork/Join 速度提升:fork/join 框架是在 Java7 中首次引入的,目的是简化使用 JVM 的并发程序。Java8 中投入了很多努力进一步提升该框架。现在,fork/join 在 Streams API 中用于并发操作。

此外,Java8 中还包含诸多改进以支持并发。Oracle 在 JDK 8 中总结了这些性能提升。

Java 8的新特性lambda表达式是否比匿名内部类具有更好的可读性

对于大多数刚刚接触jdk8的同学来说,应该都会认为lambda表达式其实就是匿名内部类的语法糖(包括我自己,在刚刚接触的时候,也是这样认为的),但实际上二者还是存在不少差异,其中最主要的两点就是标识性和作用域。

首先,内部类在创建表达式时,会确保创建一个拥有唯一标识的新对象,而对于lambda,其计算结果(其实就是一个映射的过程)可能有也可能没有唯一标识,这取决于具体实现。

其次,内部类的声明会创建出一个新的命名作用域,在这个作用域中,this与super指向内部类本身的当前实例;但是lambda恰恰相反,它不会引入任何新的命名环境,这样就避免了内部类名称查找的复杂性,名称查找会导致很多问题,比如想要调用外围实例的方法时却错误的调用了内部类实例的Object方法。

java se8的新特性有哪些

java se8新特性如下:

Java Programming Language

1、lambda expressions,一个新的语言特性,它可以将功能作为方法的参数or代码作为数据,它使你表达单一方法接口的实例更加简洁。

2、对已经有方法名的方法提供一个更加可读的lambda expressions为方法的引用。

3、默认方法使新的功能添加到库的接口,确保与旧版本的接口编写的代码的二进制兼容

4、重复注解提供不止一次应用同样的注解类型

5、类型注解提供应用注解的能力,任何一个类型的使用,不仅在声明上使用。用于一个可插拔式的系统,此功能提高你代码的类型检查。

6、提高类型的推断

7、方法参数的反射

Collections

1、新的java.util.stream包,提供了stream api支持流元素上的功能性操作。stream api集成到collections api中,使用批量操作,如串行or并行 map-reduce 转换。

2、使用key collisions改进HashMap的性能

compact profiles

包含java SE平台预定义的子集和使不需要整个平台被部署和运行在小型设备中的应用

security

1、客户端默认启用TLS1.2

2、新的AccessController.doPrivileged,用代码断言它的privileges的子集,没有防止全栈遍历时检查其他权限

3、更强的基于密码的加密算法

4、SSL/TLS SNI扩展在JSSE服务器中支持

5、支持AEAD算法:SunJCE提供增强的支持AES / GCM / nopadding密码的实现以及GCM算法参数,SunJSSE提供基于密码套件的AEAD模式增强

6、keystore增强,包含新的keystore类型java.security.DomainLoadStoreParameter,和新的命令行选项-importpassword

7、SHA-224 Message Digests

8、NSA Suite B加密支持

9、更好的支持High Entropy 随机数生成

10、新的java.security.cert.PKIXRevocationChecker类为配置撤销X.509证书

11、win下64-bit PKCS11

12、新的rcache 类型在Kerberos 5 Replay Caching

13、支持Kerberos 5协议转换和约束代理

14、默认禁用Kerberos 5弱的加密

15、未绑定SASL为GSS-API/Kerberos 5机制

16、多主机名下SASL服务

17、在Mac OS X上JNI桥接到native JGSS

18、在sunjsse提供更强的实力,EDH键的支持

19、在JSSE支持服务器端密码套件个性设置

JavaFX

1、新Modena theme实现

2、新SwingNode类容许开发者嵌套Swing内容到javaFX应用中

3、新UI Controls 包含DatePicker 和TreeTableView

4、javafx.print包为JavaFX提供公共printing API

5、三维图形特性,目前包含3D shapes、camera、lights、subscene、material、picking和antialiasing

6、WebView类提供的新功能和改进,支持更多关于HTML5的特性,Web Scokets,Web Workers和Web Fonts

7、增强文本的支持

8、支持Hi-DPI 显示

9、css样式类变成公共API

10、新的ScheduledService类允许自动重启服务

11、ARM平台可用JavaFX

tools

1、jjs命令调用Nashorn引擎

2、java命令允许JavaFX应用

3、java man page已经更新

4、jdeps命令行工具提供分析类文件

5、Java Management Extensions (JMX) 提供远程诊断命令

6、jarsiger工具可选,从TSA请求签名时间抽

7、javac tool

7.1、-parameters选项存储正式的参数名和反射API检索正式参数的名称

7.2、JLS 15.21相等操作的类型规则通过javac命令正确的执行

7.3、javac工具现在支持检查javadoc注释的内容,该特性通过-Xdoclint选项

7.4、javac工具现在提供生成native header的能力。移除javah工具,通过javac的-h选项使用

8、javadoc tool

8.1、javadoc工具支持新DocTree API

8.2、javadoc工具支持新的javadoc 访问API,允许在java 应用直接调用javadoc 工具,没有执行新的进程

8.3、javadoc工具现在支持检查javadoc注释的内容,该特性通过-Xdoclint选项

Internationalization

1、unicode增强,支持unicode6.2.0

2、采用unicode CLDR数据和java.locale.providers 系统属性

3、新的Calendar和Locale APIs

4、安装一个自定义的资源包作为一个扩展的能力

Deployment

1、对sandbox applet和 java web start app,URLPermission现在是用来允许连接到服务器从它们启动完成后。SocketPermission不再授权

2、在所有安全级别,在主要jar文件的jar文件的manifest中必须给定权限属性

Date-Time Package

一个新的软件包,提供更加全面的日期-时间模型

Scripting

Nashorn js 引擎

Pack200

1、Pack200支持常量池条目和由JSR 292引入了新的字节码

2、JDK8支持由JSR-292, JSR-308 and JSR-335指定类文件的变化

IO and NIO

1、基于Solaris在Solaris事件端口机制实现新的SelectorProvider。使用系统属性java.nio.channels.spi.Selector设置的值sun.nio.ch.EventPortSelectorProvder运行

2、减少JDK_HOME/jre/lib/charsets.jar文件中数量

3、提高java.lang.String(byte[], *)构造器和java.lang.String.getBytes()方法的性能

java.lang and java.util.Pack ages

1、并发的数组排序

2、标准的编码和解码Base64

3、无符号运算的支持

JDBC

1、移除JDBC-ODBC桥

2、JDBC4.2引入新的功能

Java DB

1、JDK8 包含 Java DB 10.10

Networking

1、添加java.net.URLPermission类

2、在java.net.HttpURLConnection中,如果安装安全管理,请求要求打开一个连接请求的权限

Concurrency

1、在java.util.concurrent包中新增类和接口

2、java.util.concurrent.ConcurrentHashMap类添加方法支持聚合操作,基于新的流设施和lambda expressions

3、java.util.concurrent.atomic包中添加类支持可扩展可更新的变量

4、 java.util.concurrent.ForkJoinPool类中添加方法支持通用池

5、 java.util.concurrent.locks.StampedLock类已经添加使用3种模式控制读/写访问的基于能力的锁

Java XML – JAXP

HotSpot

1、硬件特性增加了AES,UseAES和UseAESIntrinsics标签在打开基于硬件AES可用(Inter 硬件),硬件必须是2010或更新Westmere硬件,如:打开硬件AES,使用下面标记

-XX:+UseAES -XX:+UseAESIntrinsics

关闭硬件AES:

-XX:-UseAES -XX:-UseAESIntrinsics

2、移除PermGen

3、通过为方法调用引入字节码指令支持默认方法

关于java8性能改进和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。