燃爆上海 5·23-24,AICon 大模型实战风暴,50+ 干货一网打尽,100% 日程上线 了解详情
写点什么

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:003598
用户头像

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

关注

评论

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

【Zeekr_Tech】为自动驾驶保驾护航—谈谈主流中间件设计

Zeekr_Tech

自动驾驶 软件架构

华为云企业级Redis揭秘第17期:集群搭载多DB,多租隔离更降本

华为云开发者联盟

数据库 redis 集群 GaussDB(for Redis) 多DB

超级app+轻应用=未来?

發財KK

移动应用 轻应用 快应用 App生态

平衡树:为什么Redis内部实现用跳跃表

华为云开发者联盟

redis 数据结构 集合 跳跃表 平衡树

在线Js,JavaScript压缩格式化工具

入门小站

工具

AI与开源的碰撞 昇思MindSpore TechDay直播来袭

极客天地

我写的 Python 代码,同事都说好

AlwaysBeta

Python Pythonic

小程序加入智能家居行业,共创未来美好生活

發財KK

物联网 小程序容器 智慧生活 全屋智能 智能家居生态平台

数盾科技加入,携手龙蜥社区提升网络安全整体防护能力

OpenAnolis小助手

开源 网络安全 数盾科技 密码算法

Flink 在米哈游的落地实践

Apache Flink

大数据 flink 编程 流计算 实时计算

TypeScript里string和String,真不是仅仅是大小写的区别

华为云开发者联盟

JavaScript typescript string ts

使用云服务器ECS搭建DoH服务的开发实践

阿里云弹性计算

征文投稿 玩转ECS DoH

面试官:你在项目中用过 多线程 吗?

田维常

面试 java面试

Android技术分享|【自定义View】实现Material Design的Loading效果

anyRTC开发者

android 音视频 移动开发 自定义view loading

尚硅谷监控告警系统(Zabbix)视频教程发布

@零度

大数据 zabbix

面试官:你在项目中用过 多线程 吗?

田维常

Java 开发 多线程编发编程

阿里云云原生应用平台总经理丁宇:“连接、合作、赋能”,携手加速器伙伴助力企业云上创新

阿里巴巴云原生

阿里云 VPC 内网性能测试最佳实践

阿里巴巴云原生

OpenHarmony 标准系统 HDF 框架之 I2C 驱动开发

Anna

开源 后端 直播 OpenHarmony I2C

cdr2022新版本号V24.0.0301简体语言新增功能

茶色酒

cdr2022

聊聊我对敏捷项目交付的理解

老张

交付质量 项目交付

都是让小程序在app运行,FinClip 与 uniapp有什么区别?

發財KK

小程序 uni-app 前端开发 sdk

大数据培训Flink中常见问题定位

@零度

大数据 flink

WebAssembly技术_在Web端运行C与C++程序(win10)

DS小龙哥

webassembly 3月月更

EventBridge 事件总线及 EDA 架构解析

阿里巴巴云原生

最终信息模式:终结香农极限,语义通信的另类空间

脑极体

去你的35岁危机|ONES 人物

万事ONES

程序员 ONES

关注:车联网的数据安全问题

發財KK

车联网 物联网 数据安全 隐私安全 信息服务

女性开发者为您解读数据库的未来机遇与挑战

亚马逊云科技 (Amazon Web Services)

Hero 专栏

在线JSON转YAML工具

入门小站

工具

技术平台&应用开发专题月 | 国产化替代的本质是价值替代

用友BIP

用友 用友iuap

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