写点什么

OpenJDK 上可以进行动态调用了

  • 2008-09-04
  • 本文字数:744 字

    阅读完需:约 2 分钟

John Rose 宣布了“国际动态调用日(International InvokeDynamic Day)”,以此来庆祝其通过’invokedynamic’指令首次成功调用了动态方法:

今天凌晨,JVM 首次针对 invokedynamic 指令处理了一个完全的引导周期、链接常量池入口、创建具体的调用地址对象、寻找并调用每个类的引导方法、将具体的调用地址链接到方法句柄,然后通过方法句柄重新高速调用链接的调用地址 999 次。尽管方法签名一样,但调用者所指的方法名与被调用的是不同的。链接是通过随机的、引导方法中手写的 Java 代码来实现的。

“invokedynamic”指令是为多语言虚拟机(叫做’ Da Vinci Machine ’)所计划的众多特性之一。Da Vinci 中所有计划的增强特性都在 MLVM 站点的子项目部分进行了描述。动态调用也是 JSR-292 的一部分, InfoQ 早前已经对其进行了讨论,同时它也是对一些针对核心 Java VM 的实验性的 Da Vinci 工作的一种改编。John Rose 所发表的声明表明’invokedynamic’首次运行在 OpenJDK hotspot 虚拟机上。

动态调用是针对 JVM 的动态语言开发者最期望的特性之一。 Gilad Bracha 在InfoQ 上讨论过动态调用背后的理论以及为何它是一种必要增强的原因。

JRuby 的领导者 Charles Oliver Nutter 就 John Rose 的声明发表了以下看法:

太棒了…待今明两天 JRuby 1.1.4 发布后我就要进行一次动态调用。正好用它作为秋季会议的演示。

Groovy 的项目经理 Guillaume Laforge 用简单的一句话表示祝贺:

香槟!:-)

但是对于动态调用来说还有很长的一段路要走。当然,动态语言(如 JRuby 和 Groovy)必须适时利用新的指令。Rose 指出对于核心实现来说依旧还有很多工作需要完成:

至于 JVM 代码,它只工作在 x86/32 上;下一步工作就是将汇编码移到正确的文件中并完成对 x86/64 和 SPARC 的支持。

查看英文原文: Dynamic Invocation Runs on OpenJDK

2008-09-04 07:26508
用户头像

发布了 88 篇内容, 共 266.8 次阅读, 收获喜欢 8 次。

关注

评论

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

10min快速回顾C++语法(一)

timerring

c++ 算法 8月月更

前端食堂技术周刊第 47 期:Docusaurus 2.0 、7 月登陆网络平台的新内容 、Nuxt.js 团队的轮子库

童欧巴

JavaScript 前端

学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析

梦想橡皮擦

Python 爬虫 8月月更

Gitlab刚发布一项禁止使用 Windows 的公司政策

雨果

gitlab Github'

《MySQL入门很轻松》第4章:数据表中存放的数据类型

乌龟哥哥

8月月更

呵呵,JavaScript 真好玩(苦笑脸)

掘金安东尼

JavaScript 前端 8月月更

数据治理(五):元数据管理

Lansonli

大数据 数据治理 8月月更

Linux服务器端网络抓包和分析实战

程序员欣宸

Java Linux 8月月更

打工人的第27天-平凡但不平淡的日子

Amazing_eve

#开源

RocketMQ Binder集成消息订阅

急需上岸的小谢

8月月更

2022秋招前端面试题(十)(附答案)

helloworld1024fd

程序员从佩洛西窜访事件中可以学到什么?

慕枫技术笔记

思维 构架 8月月更

一文教会你快速上手 Vim

昆吾kw

vim Linux

头脑风暴:单词拆分

HelloWorld杰少

算法 LeetCode 数据结构, 8月月更

Kubernetes 60个为什么

CTO技术共享

开源 签约计划第三季 8月月更

Kubernetes YAML编写 讲解

CTO技术共享

开源 签约计划第三季 8月月更

短视频软件开发——平台同质化如何破局

开源直播系统源码

软件开发 直播源码 短视频直播源码 短视频直播系统源码

什么是服务治理

阿泽🧸

服务治理 8月月更

Kubernetes服务接入Istio

CTO技术共享

开源 签约计划第三季 8月月更

数据库治理利器:动态读写分离

阿里巴巴云原生

数据库 阿里云 微服务 云原生

如何正确理解线程机制中常见的I/O模型,各自主要用来解决什么问题?

PivotalCloud

Linux Linux Kenel

2022秋招前端面试题(九)(附答案)

helloworld1024fd

面试突击73:IoC 和 DI 有什么区别?

王磊

Java 常见面试题

谷歌数据中心发生“电力事故”造成 3 人受伤

雨果

数据中心 谷歌

8月份DB-Engines 数据库排行榜最新战况

雨果

数据库

781. 森林中的兔子

小卢要刷力扣题

力扣 8月月更

你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06

刘悦的技术博客

Go golang 编程语言 Go web golang 面试

STM32封装ESP8266一键配置函数:实现实现AP模式和STA模式切换、服务器与客户端创建

DS小龙哥

8月月更

是什么影响了MySQL性能?

TimeFriends

8月月更

Gartner再次重申了“数据编织”的重要价值

雨果

数据编织

Kubernetes 开发环境比对

CTO技术共享

开源 签约计划第三季 8月月更

OpenJDK上可以进行动态调用了_Java_R.J. Lorimer_InfoQ精选文章