InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

Oracle 复活 getCallerClass 方法,至少现在如此

  • 2013-08-15
  • 本文字数:866 字

    阅读完需:约 3 分钟

Oracle 在今年七月初宣布,将终止 Java 方法 sun.reflect.Reflection.getCallerClass()的使用。现在 Oracle 弃用该方法的想法减弱了,Oracle Java 平台组首席架构师 Mark Reinhold 于上周四在推特上发布如下通告:

@CedricChampeau @glaforge 我们将在 7u40 中恢复 getCallerClass(int)方法。它在 Java 8 中的命运尚有待观察。

Cédric Champeau 在推特上转发了如下评论:

好消息:JDK 的各位开发人员决定在 1.7u40 中把 getCallerClass 方法恢复原状,1.8.#groovy 和日志系统将不会受到破坏:-)

Champeau 是 Groovy 编程语言的主要提交者,他在 VMWare 的 Pivotal 部门工作。该部门还是 SpringSource 的拥有者,同时也是 Groovy 的当前支持者。Guillaume Laforge 是 SpringSource 的 Groovy 开发负责人。

Reflection 类位于调用栈中的 0 帧位置,sun.reflect.Reflection.getCallerClass()方法返回调用栈中从 0 帧开始的第 x 帧中的类实例。该方法提供的机制可用于确定调用者类,从而实现“感知调用者(Caller Sensitive)”的行为,即允许应用程序根据调用类或调用栈中的其它类来改变其自身的行为。

Oracle 很快发出警告,调用 getCallerClass()方法以及任何 sun.* 包中的任意方法都有可能导致程序不健壮和不一致,文章“为什么开发人员不应该调用‘sun’包”描述了其中的具体原因。读者可以在 OTN 问题跟踪系统上跟踪弃用公告。

因为 Groovy 依赖该方法,所以 Cédric Champeau 早早地披露了这条弃用信息。

不仅 Groovy 受到了影响,Grails 的问题跟踪系统上也发布了相关Bug

包括GitHub 在内的一些公共源代码搜索引擎的搜索结果显示,有一系列的项目依赖getCallerClass()方法,包括几个活跃的Oracle 项目,如Jigsaw 项目和Lambda 项目,还有第三方项目,如IntelliJ IDEA。

查看英文原文:**** Oracle Resurrects getCallerClass, At Least for Now


感谢马国耀对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2013-08-15 01:352169
用户头像

发布了 256 篇内容, 共 78.3 次阅读, 收获喜欢 11 次。

关注

评论

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

你才不是只会理论的女同学-seata实践篇

好好学习,天天向上

Java MySQL spring 事务 seata

Dubbo源码阅读-泛化调用实现原理

小江

dubbo RPC

区块链技术,通证经济未来趋势,两者有什么关系?

CECBC

区块链

架构实战营模块一 - 总结

凯迪

树莓派的组装与开机

IT蜗壳-Tango

IT蜗壳教学 4月日更

面试官

ES_her0

4月日更

数据结构和算法

奈奈奈奈

数据结构与算法

华仔架构设计-模块1作业

大师兄

#架构实战营 模块一作业

薛定谔的指南针

架构实战营

H1 作业1

dwade

Vue中Echarts基本使用

Chalk

大前端 eCharts 4月日更

架构实战营 - 模块01作业

架构实战营

架构实战营 模块一 总结

Pitt

架构实战营 模块一作业

ercjul

架构实战营

区块链技术引领新一轮技术变革浪潮

CECBC

复兴or幻象?VR的2021三重门

脑极体

跟着源码一起学:手把手教你用WebSocket打造Web端IM聊天

JackJiang

网络编程 websocket 即时通讯 IM

Redis 6.0 多线程、客户端缓存、权限控制

escray

redis 学习 极客时间 Redis 核心技术与实战 4月日更

学生管理系统架构

Fleng

架构实战营

【Java试题】从一道题目再看Java继承

程序员架构进阶

Java 面试 28天写作 4月日更

CLOSE_WAIT过多导致Jetty服务器假死

风翱

Java Jetty Web 4月日更

vue接入腾讯实时音视频trtc-js-sdk的技术难点与解决方案

孙叫兽

Vue 音视频 解决方案 trtc-js-sdk

业务架构训练营第 0 期模块一作业

菠萝吹雪—Code

博文推荐|多图详解 Apache Pulsar 消息存储模型

Apache Pulsar

大数据 开源 流计算 Apache Pulsar 消息系统

编程好习惯之理清数据的可变性

顿晓

4月日更 不可变

架构实战营课程一作业

Saber

架构实战营

模块一

^_^vincent

作业1-20210406

Geek_b437fc

区块链技术解决信任问题

CECBC

信任 信任机制

模块一作业

鲲哥

架构师实战营 模块一作业 微信业务架构图

好吃不贵

  • 扫码添加小助手
    领取最新资料包
Oracle复活getCallerClass方法,至少现在如此_Java_Vikram Gupta_InfoQ精选文章