【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

OpenJDK 更新了 InvokeDynamic

  • 2011-01-12
  • 本文字数:1001 字

    阅读完需:约 3 分钟

就在圣诞节之前,OpenJDK 构建开始包含更新版本的 JSR 292 API 了,虽然尚非最终版,但却是一个好的迹象,向我们展现了 JSR 的形成过程。有些人可能还不太熟悉 JSR 292,它添加了全新的字节码指令:invokedynamic,可以在缺少静态类型信息的情况下执行方法调用,InfoQ 对此曾做过报道

John Rose 的博客对主要的变化进行了总结,如下所示:

  1. CallSite 类变成抽象的了,分解为 3 个子类:MutableCallSite、ConstantCallSite 及 VolatileCallSite。
  2. java.dyn.Linkage 不建议使用,将会在最终的公开草案中被移除。
  3. 移除了 java.dyn.JavaMethodHandle 类。Rose 的博客上写到“使用 Lookup.findVirtual (cached in a private static final) 与 MethodHandle.bindTo 可以将任意对象转换为方法句柄。可以使用 MethodHandles.asInstance 将方法句柄转换为任意的 SAM 接口”。

某些 API 仍旧是临时性的,未来可能会发生变化,这包括 MethodHandles.AsInstanceObject 接口,它为应用提供了一种机制,可以使其在方法句柄与 SAM 对象间重复转换,整个过程不会有创建未绑定的委托链的风险。此外,目前有些 JVM 选项需要手工开启才能与 JSR 292 搭配使用(XX:+UnlockExperimentalVMOptions、-XX:+EnableInvokeDynamic 及 -XX:+EnableMethodHandles),在不远的将来这些选项将会默认开启。

令人失望的是 JDK 7 没有在 Java 语言中包含对 invokedynamic 指令的支持,它可能会在 JDK 8 的 Project Lambda 中重新引入(实现 Java lambda 的实际计划是使用 JSR 292 中所引入的几个特性,包括 Method Handles 与动态调用)。但同时,Rose 将几个小的类文件转换器放在了一起(叫做“ indify ”),可用于生成 invokedynamic 指令,还可以为 MethodHandle 和 MethodType 常量生成“ldc”指令。Rémi Forax 也认识到了这个问题,于是开发了一个名为 DynamicIndy 的类。如 Forax 所述,这个类使用 Java 字节码操作库 ASM 4.0(尚未发布)来生成能够调用 invokedynamic 的静态方法。接下来,该静态方法会被转换为可由 Java 调用的 MethodHandle。

虽然 JSR 292 主要关注于动态语言的需求,但很显然,Java 本身已经成为该 API 的候选用户了。从这个角度来看,人们建议修改 java.dyn 这个包名。Brian Goetz 和 Mark Reinhold 提议将其修改为 java.lang.mh(mh 代表 MethodHandle),同时还欢迎其他的建议,这些建议可以先放到 Rémi Forax 的博客上。

查看英文原文: InvokeDynamic Updates in OpenJDK

2011-01-12 23:401729
用户头像

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

关注

评论

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

Spark SQL五大关联策略

京东科技开发者

代码的艺术-Writing Code Like a Pianist

京东科技开发者

顺丰科技LaaS实现产品化,数字生态战略提速

新消费日报

DBeaverEE for Mac(数据库管理)v23.3.3企业激活版

影影绰绰一往直前

Keka for Mac(压缩解压工具) v1.3.6中文版

影影绰绰一往直前

榜样中国·传媒大奖2023信创力量评选结果发布!MIAOYUN获评“信创企业TOP30”!

MIAOYUN

信创 信创云 信创产业 信创生态 信创适配

前端JS加密与Buspsuite的坦诚相待

权说安全

网络安全

数字人直播软件源码需要多少钱?

青否数字人

【Mac&win】datagrip2023安装教程与激活码分享 亲测有效

Rose

ide DataGrip2023激活 DataGrip2023安装

十家传统企业数字化转型的心得体会:10大关键方面、拆解74 小点

天津汇柏科技有限公司

数字化转型

如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 3

SEAL安全

Kubernetes Helm Grafana

最常用的4种光纤接口结构

小齐写代码

速看,速进。一起学习一起交流。

薛定谔的皮皮虾

Led显示屏同步和异步控制的原理是什么

Dylan

控制 LED显示屏 全彩LED显示屏 led显示屏厂家

QAnything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答

汀丶人工智能

搜索推荐 LLM模型 智能问答 rag

第七在线出席CFCG全国时尚消费品行业CIO年会荣获最佳供应商奖项

第七在线

BOE(京东方)携手新浪微博举办手机影像艺术展 创新科技赋能数字影像

科技热闻

如何在不影响业务的前提下执行大批量数据变更操作?

NineData

sql 数据 dba DML 阻塞

git无法使用git协议clone github仓库问题解决方法

百度搜索:蓝易云

git GitHub Linux 运维 云服务器

为什么人工智能与软件测试的结合话题开始火爆

测试人

软件测试 自动化测试 测试开发

基础架构即代码 | 亚马逊如何在现实生活中实践 DevOps

亚马逊云科技 (Amazon Web Services)

DevOps 微服务 架构设计 Amazon Lambda Amazon API Gateway

如何写好大模型提示词?来自大赛冠军的经验分享(进阶篇)

Baihai IDP

程序员 AI LLM 白海科技 Prompt Engineering

Axure RP 8 for Mac(专业的交互式原型设计工具)

影影绰绰一往直前

ElasticSearch集群灾难:别放弃,也许能再抢救一下 | 京东云技术团队

京东科技开发者

DBeaverUE for Mac(数据库管理软件)v23.3.3旗舰激活版

影影绰绰一往直前

adobe pdf下载破解版 内置Acrobat pro Dc 2023激活补丁

Rose

PDF编辑 Adobe Acrobat Pro DC下载 Adobe Acrobat Pro DC破解

JetBrains DataGrip 2023 for mac(数据库管理工具)v2023.3.3中文激活版

影影绰绰一往直前

DvD刻录软件DVD Cloner 2024 for Mac,现已支持最新的蓝光电影复制

Rose

mac软件下载 DVD克隆 DVD Cloner 2024下载 DVD Cloner 2024 Mac

XMind 2024思维导图:新增 310 张 AI 原创插画

Rose

XMind 2024思维导图 XMind 2024下载 XMind 2024中文 思维导图下载

荣耀时刻 | 第七在线荣获艾媒2023中国企业服务年度企业

第七在线

容器技术-Docker_安装&操作

测试人

软件测试

OpenJDK更新了InvokeDynamic_Java_Charles Humble_InfoQ精选文章