写点什么

JavaRebel:在 JVM 中动态装载类

  • 2007-10-26
  • 本文字数:479 字

    阅读完需:约 2 分钟

JavaRebel 给 Java 带来了 Ruby 和 PHP 风格的动态重新装载类特性。虽然现在还有些局限性,但它可以显著地增加开发速度。

JavaRebel 允许一个应用程序(独立的或运行在应用服务器上的应用)重新装载在运行过程中(on the fly)发生的大多数类变化,包括增加或删除方法和域。

使用字节码修正和一点“妖术”,JavaRebel 扩展了 JVM,使其具备在运行中重新装载对类的几乎任意修改的能力。包括增加和删除方法和域,唯一禁止重新加载的改变是“extends”和“implements”语句。因此,在应用和服务器所保持的所有现存对象实例可以继续运行,代码改变会立刻在应用程序中表现出来。

已发现的一些局限性包括:

  • getClass().getPackage() 返回为 null。Zeroturnaround 已经知道该问题并正在解决。
  • 不支持自定义的类装载器
  • 现在没有给资源重新装载时的执行动作提供勾子方法(hook)(例如刷新一个在 Spring 应用依赖图表中的对象)

尽管有这些限制,反馈普遍给于肯定的。Zeroturnaround 照常制作可用的每夜构建并计划不久发布一版SDK 以帮助解决一些问题(如自定义类装载器的限制问题)。

查看英文原文: JavaRebel: Dynamic Classloading in the JVM

2007-10-26 07:001632
用户头像

发布了 150 篇内容, 共 52.7 次阅读, 收获喜欢 10 次。

关注

评论

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

请求示例JAVA获取淘宝商品详情数据API接口item_get-获得淘宝商品详情(按关键词搜索商品列表)

Anzexi58

API 文档

Sermant 的整体流程学习梳理

华为云开源

开源 字节码 微服务治理 sermant

京东商品详情数据获取item_get-获得JD商品详情,Java请求示例API接口

Anzexi58

干货!Windbg 在 TDengine 内存泄漏调试中的应用与实践分享

TDengine

tdengine 时序数据库 内存泄漏 windbg

JAVA请求示例获取1688商品详情数据API接口item_get-获得阿里巴巴商品详情(按关键词搜索商品列表)

Anzexi58

API 文档

奇点云:SAFe框架下,我们对平台软件工程生产线做了4项改造

奇点云

大数据平台 制造业 奇点云

国产数据库兼容性认证再下两城,极狐GitLab 国产适配更进一步

极狐GitLab

IPQ9574/Ultra-fast speed, ultra-low latency: key advantages and application prospects of WiFi 7

wallysSK

抖音技术分享:飞鸽IM桌面端基于Rust语言进行重构的技术选型和实践总结

JackJiang

网络编程 即时通讯 IM

关于Python中math 和 decimal 模块的解析与实践

华为云开发者联盟

Python 开发 华为云 华为云开发者联盟

vivo 在离线混部探索与实践

vivo互联网技术

云计算 大数据 DevOps

颠覆软件工程、“杀死”开发者?回溯大模型落地应用这一年 | 盘点

思码逸研发效能

OpenMLDB v0.8.5 发布:认证功能完善,安全升级全面实施

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

文生视频Sora模型发布,是否引爆AI芯片热潮

申公豹

人工智能

JavaRebel:在JVM中动态装载类_Java_Rob Thornton_InfoQ精选文章