写点什么

Azul Systems 推出 Falcon,一个基于 LLVM 的新的 Java 即时编译器

  • 2017-05-11
  • 本文字数:1708 字

    阅读完需:约 6 分钟

近日, Azul Systems 发布了 Zing 17.03。该版本完全支持 Azul 基于 LLVM 的新的 Java 即时(JIT)编译器 Falcon。该编译器设计用来取代 Zing 先前版本以及 Oracle HotSpot 和 OpenJDK 使用的 C2 编译器。Falcon 是 1997 年 JavaOne 大会推出 C2 以来 Java SE 的第一个新的生产用 JIT 编译器。

LLVM 是一个现代化的开源编译器框架,也是 Swift、Rust 等许多新语言首选的后端“引擎”。它获得了学术界的大力支持,并且拥有包括 AMD、Apple、Cray、IBM、Intel、 Microsoft、Sony 和 SAP 在内的众多商业支持者。广泛的支持可以帮助它充分利用新的服务器硬件和新的指令集,它经常利用新的处理器技术,如Intel 的Broadwell 和Skylake 处理器提供的矢量化和加密优化,早在其他语言之前提供这种支持。

Azul 首席执行官 Gil Tene 告诉 InfoQ:

使用 LLVM 为我们提供了巨大的优势,数以百计的人对它进行优化,让它与最新的处理器能力保持同步,这些成果可以立即应用到 Java 代码上。

关于这一点,一个简单具体的例子是,Falcon 已经使用 Intel 最新的 CPU(例如,当前 Broadwell Intel E5-v4 服务器上的 AVX2 指令集)所提供的最新 / 最棒的矢量指令功能来优化常规的 Java 循环。由于 AVX2 增加了谓词矢量运算能力,所以 Falcon 能够在循环(例如,“将数组中的偶数相加”)中矢量化在之前的硬件上无法矢量化的谓词操作,因此,同样的 Java 类在较新的服务器上执行速度更快。[目前]HotSpot 甚至都没有试一下……

但最重要的是,我们获得了这种好处,不是通过一群 Azul 工程师花时间进行矢量化优化以及选择恰当的方法匹配每一种处理器。举例来说,我们是从 Intel 过去两年的投入以及他们将这些优化贡献给 LLVM 获益的。他们的贡献已经应用到了 C/C++/Clang/Rust,就像(现在)应用到 Java 一样。

Falcon 让我们可以做一些很酷的、JVM 相关的优化,而使用 C2 则无法应用这些优化。GC 屏障相关的优化就是其中的一个例子。此外还有更高层次的语言优化。关于更高层次的优化,一个具体的例子是,我们用较少的投入就在 Falcon 中引入了针对“真正 final”字段的优化,在 C2 中引入的话,投入要多得多。[实例 final 字段的挑战在于,它们可能不是“真正 final”的,因为反射和 Unsafe 可以重写它们,而且经常这样做]。Falcon 能够优化 Java 中使用实例 final 字段的操作,它所采用的方式是以前的 JIT 不曾做过的(例如,将数组范围检查提取到循环之外)。过去的几年里,在 HotSpot 和 Zing 中,这一特性一直处于原型模型开发阶段(在 OpenJDK 的部分邮件列表中可以找到相关讨论),但之前从没有在哪个 JVM 中实现产品化,其中有一部分原因是让 JIT 编辑器处理得很好复杂度很高。

有鉴于此,Falcon 在新硬件上性能超过 C2 就不奇怪了。例如,Tene 告诉 InfoQ,在特定的加密负载基准测试中,它比 Oracle HotSpot 快 3.5 倍,比 Oracle HotSpot 使用基于 Skylake 的服务器(Intel Xeon E5-xxxx)进行 Cassandra 基准测试快大约 10%。另外,在低延迟环境中,它也比 Zing 以前的版本快许多。按照 Tene 的说法,一个运行交易基础设施的 Azul Zing 客户观察到了大约 18~24% 的速度提升。

Azul 是第一个在生产级托管运行时中使用 LLVM 的组织。为了完成这项工作,LLVM 借助 Azul 提供的其他功能进行了增强,包括安全点和 GC 屏障方面的优化,提供 JIT 代码替换和逆优化的能力,包括隐式 null 检查、预测去虚拟化及保护内联在内的预测运行时优化。

如你所料,Falcon 还支持 Azul 在 2014 年推出的 ReadyNow 技术。按照设计,ReadyNow 是为了避免 Java 虚拟机“预热”,鉴于 JVM 有足够的时间学习哪些代码要编译成机器级,应用程序所有者试图通过这种方法充分利用 JIT 编译器优化。

现有用户可以从 Zing 支持门户上直接下载 Zing 17.03。Azul 网站上也提供了 Zing 新版本的 30 天试用。Zing 单许可的全年订阅价为每台服务器 3500 美元,大量许可长期订阅价格会低许多。

5 月 4 日,太平洋时间上午 11 点,Azul 首席技术官 Gil Tene 举办了一场题为“走进Falcon 编译器”的网络研讨会。研讨会加Q&A 持续了约一小时。

查看英文原文 Azul Systems Launches Falcon, a New Just-in-Time Compiler for Java, Based on LLVM

2017-05-11 19:003258
用户头像

发布了 1008 篇内容, 共 385.0 次阅读, 收获喜欢 342 次。

关注

评论

发布
暂无评论
发现更多内容

探讨MySQL事务特性和实现原理

小小怪下士

Java MySQL 程序员 事务

谈谈干前端三年的几点感受

虎妞先生

前端 成长 代码人生

C++到Python全搞定,教你如何为FastDeploy贡献代码

飞桨PaddlePaddle

c++ paddle 飞桨

大型集团企业数据治理实践,推进全域数据资产体系建设 | 数字化标杆

袋鼠云数栈

神锁离线版和Bitwarden的自动填充:超级英雄 vs 被斗转星移的瞎鸟

神锁离线版

密码管理 密码管理器 密码安全 Bitwarden 神锁离线版

如何用Apipost预执行脚本动态修改Query、Body、Header参数

不想敲代码

Postman 接口调试 API apipost

干货|PCBA丝印位号与极性符号的组装性设计

华秋电子

PCB dfm

Vue3项目框架搭建封装,一次学习,终身受益【万字长文,满满干货】

虎妞先生

前端 前端架构 Vue 3 vue cli

畅销10年的数据库技术图书,当之无愧的霸主!还有谁?

博文视点Broadview

Flink CEP 在抖音电商的业务实践

Apache Flink

大数据 flink 实时计算

看海泰方圆类ChatGPT技术模型!

电子信息发烧客

Python从0到1丨图像增强及运算:形态学开运算、闭运算和梯度运算

华为云开发者联盟

Python 人工智能 华为云 企业号 2 月 PK 榜 华为云开发者联盟

给webpack提了一个pr之后......

虎妞先生

前端 webpack #开源

不常用但却常问的迭代器

虎妞先生

前端 ES6

辞旧岁立新年 | 展望前端工程师的2023

字节跳动终端技术

云原生 前端 前端工程师

非代码的贡献也能成为Committer,我与DolphinScheduler社区的故事

Apache DolphinScheduler

开源 开源社区 开源文化 开源软件 大数据 开源

十分钟用vitepress搭建项目文档

虎妞先生

前端 vite Vue 3

前端包管理工具 npm yarn cnpm npx

虎妞先生

前端 包管理工具 #面试

图片竟能直接生成逼真音效?这AI模型也太神奇了吧!

人称T客

众生皆苦,我选pnpm

虎妞先生

npm 原理 前端工程化 pnpm

从零开始学习BOM&DOM

虎妞先生

前端 DOM

应用部署初探:微服务的3大部署模式

SEAL安全

微服务 企业号 2 月 PK 榜

2023年低代码发展新趋势

力软低代码开发平台

我的2022,从紫竹院到通惠河畔

虎妞先生

学习 前端 成长 年终总结

云安全之浅谈密钥泄露

HummerCloud

云安全 密钥

BSN-DDC基础网络详解(二):快速接入指南

BSN研习社

BSN-DDC

前端如何实现将多页数据合并导出到Excel单Sheet页解决方案|内附代码

葡萄城技术团队

数据库 前端 架构分布式

微信小程序底层框架实现原理|万字长文

虎妞先生

微信小程序 前端 原理 架构、

Hi3861编译烧录更快捷

HarmonyOS开发者

HarmonyOS

对话 ChatGPT:现象级 AI 应用,将如何阐释「研发效能管理」?

LigaAI

人工智能 研发效能 openai ChatGPT 企业号 2 月 PK 榜

JVM性能调优,分享些好用的内存分析神器

Steven

Azul Systems推出Falcon,一个基于LLVM的新的Java即时编译器_Java_Charles Humble_InfoQ精选文章