通知
此博客运行在jpress系统上,如果你喜欢此博客模板,请加QQ群:1061691290(whimurmur模板/jpress插件),免费下载使用

尚硅谷_Java11_前言

778人浏览 / 0人评论 | 作者:whisper  | 分类: JAVA基础  | 标签: JAVA  | 

作者:whisper

链接:http://proprogrammar.com:443/article/756

声明:请尊重原作者的劳动,如需转载请注明出处


北京时间 20189 26 日,Oracle 官方宣布 Java 11 正式发布。这是 Java 大版本周期变化后的第一个长期支持版本,非常值得关注。从官网即可下载, 最新发布的 Java11 将带来 ZGCHttp Client 等重要特性,一共包含 17 JEPJDK Enhancement ProposalsJDK 增强提案)。

https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=1523586567,3351467737&fm=173&app=25&f=JPEG?w=640&h=525&s=8C02CF123BBED4CC4AFD21DA020010B2

JDK 11 将是一个 企业不可忽视的版本。从时间节点来看,JDK 11 的发布正好处在 JDK 8 免费更新到期的前夕,同时 JDK 910 也陆续成为历史版本,下面是 Oracle JDK 支持路线图:

https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=1943767199,812070920&fm=173&app=25&f=JPEG?w=640&h=327&s=A1B0ED321BC940C80258E4CB0000D0B3

JDK 更新很重要吗?非常重要,在过去的很多年中,Oracle OpenJDK 社区提供了接近免费的午餐,导致人们忽略了其背后的海量工作和价值,这其中包括但不仅仅限于:最新的安全更新,如,安全协议等基础设施的升级和维护,安全漏洞的及时修补,这是 Java 成为企业核心设施的基础之一。大量的新特性、Bug 修复,例如,容器环境支持,GC 等基础领域的增强。很多生产开发中的 Hack,其实升级 JDK 就能解决了。不断改进的 JVM,提供接近零成本的性能优化

JDK 11 是一个长期支持版本(LTS, Long-Term-Support

对于企业来说,选择 11 将意味着长期的、可靠的、可预测的技术路线图。其中免费的OpenJDK11 确定将得到 OpenJDK 社区的长期支持, LTS 版本将是可以放心选择的版本。

JVM GC 的角度,JDK11 引入了两种新的 GC,其中包括也许是划时代意义的 ZGC,虽然其目前还是实验特性,但是从能力上来看,这是 JDK 的一个巨大突破,为特定生产环境的苛刻需求提供了一个可能的选择。例如,对部分企业核心存储等产品,如果能够保证不超过 10ms GC 暂停,可靠性会上一个大的台阶,这是过去我们进行 GC 调优几乎做不到的,是能与不能的问题。

https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=817475270,3219941605&fm=173&app=25&f=JPEG?w=639&h=307&s=303A583215EDCF1B1EF065D7020030B1

对于 G1 GC,相比于 JDK 8,升级到 JDK 11 即可免费享受到:并行的 Full GC,快速的 CardTable 扫描,自适应的堆占用比例调整(IHOP),在并发标记阶段的类型卸载等等。这些都是针对 G1 的不断增强,其中串行 Full GC 等甚至是曾经被广泛诟病的短板,你会发现 GC 配置和调优在 JDK11 中越来越方便。

云计算时代的监控、诊断和 Profiling 能力,这个是相比 ZGC 更具生产实践意义的特性。

Java 的应用场景跨度很大,从单机长时间运行的 Java 应用,发展成为分布式、大的单体应用或小的 function、瞬时或长时间运行等,应用场景非常复杂。

我们用什么工具诊断 Java 应用?

JDK 11 为我们提供了更加强大的基础能力,主要是两部分:

JEP 328: Flight RecorderJFR Oracle 刚刚开源的强大特性。

https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=423998638,3946386819&fm=173&app=25&f=JPEG?w=414&h=290&s=14C649B63A0024CC5CAF0EA80300702A

JFR 是一套集成进入 JDKJVM 内部的事件机制框架,通过良好架构和设计的框架,硬件层面的极致优化,生产环境的广泛验证,它可以做到极致的可靠和低开销。在 SPECjbb2015 等基准测试中,JFR 的性能开销最大不超过 1%,所以,工程师可以基本没有心理负担地在大规模分布式的生产系统使用,这意味着,我们既可以随时主动开启 JFR 进行特定诊断,也可以让系统长期运行 JFR,用以在复杂环境中进行“After-the-fact”分析。

在保证低开销的基础上,JFR 提供的能力可以应用在对锁竞争、阻塞、延迟,JVM GCSafePoint 等领域,进行非常细粒度分析。甚至深入 JIT Compiler 内部,全面把握热点方法、内联、逆优化等等。JFR 提供了标准的 JavaC++ 等扩展 API,可以与各种层面的应用进行定制、集成,为复杂的企业应用栈或者复杂的分布式应用,提供 All-in-One 解决方案。

而这一切都是内建在 JDK JVM 内部的,并不需要额外的依赖,开箱即用。

 JEP 331: Low-Overhead Heap Profiling

它来源于 Google 等业界前沿厂商的一线实践,通过获取对象分配细节,为 JDK 补足了对象分配诊断方面的一些短板,工程师可以通过 JVMTI 使用这个能力增强自身的工具。

Java 类库发展的角度来看,JDK 11 最大的进步也是两个方面:

第一, HTTP/2 Client API,新的 HTTP API 提供了对 HTTP/2 等业界前沿标准的支持,精简而又友好的 API 接口,与主流开源 API(如,Apache HttpClient Jetty OkHttp 等)对等甚至更高的性能。与此同时它是 JDK Reactive-Stream 方面的第一个生产实践,广泛使用了 Java Flow API 等,终于让 Java 标准 HTTP 类库在扩展能力等方面,满足了现代互联网的需求。

第二,就是安全类库、标准等方面的大范围升级,其中特别是 JEP 332: Transport Layer Security (TLS) 1.3,除了在安全领域的重要价值,它还是中国安全专家范学雷所领导的 JDK 项目,完全不同于以往的修修补补,是个非常大规模的工程。

除此之外,JDK 还在逐渐进行瘦身工作,或者偿还 JVMJava 规范等历史欠账,例如

335: Deprecate the Nashorn JavaScript Engine

它进一步明确了 Graal 很有可能将成为 JVM 向前演进的核心选择,Java-on-Java 正在一步步的成为现实。


亲爱的读者:有时间可以点赞评论一下

点赞(0) 打赏

全部评论

还没有评论!