网站首页 > 开源技术 正文
Java程序是运行在JVM虚拟机之上的,JVM执行字节码指令使应用程序运行起来。通过在JVM虚拟机上运行字节码使得Java程序实现跨平台,一次编译多次运行。
为什么要操作Java虚拟机字节码
在系统运行时经常需要动态增强应用能力,但是Java语言属于静态编译语言,不能动态更新,如果需要增强功能需要修改代码重新编译。如果不想编译代码那么可以通过修改字节码添加动态代理能力。基于修改字节码的使用场景常见于AOP动态代理,APM数据采集,系统运行诊断等。许多开源项目中使用动态修改字节码技术实现能力增强,如Spring、Arthas。
操作Java虚拟机字节码常见利器
目前常用的操作JVM虚拟机字节码的框架有ASM、Javassist、Byte buddy、BCEL、ByteKit。
1、ASM
一个非常小且快速的字节码操作框架。性能高适合在动态系统中使用。大名鼎鼎的CGLIB就基于ASM实现。
2、Javassist
一种使用简单的常用框架,不需要了解class文件结构,也不需要了解字节码指令,就能动态改变类的结构或生成类。使用案例Dubbo。
3、Byte buddy
代码生成和操作库用于在Java应用程序运行时创建和修改Java类无需编译器帮助。使用案例Apache SkyWalking。
4、BCEL
为用户提供一种方便的方法来分析、创建和操作Java类文件。
5、ByteKit
提供一套简洁的API字节码操作工具。阿里开源诊断工具Arthas中大量使用。
JVM字节码操作工具应根据实际需求进行选择。
猜你喜欢
- 2024-12-23 完全零基础入门Fastjson系列漏洞 fastjson漏洞最新bug
- 2024-12-23 在老挝汽车远不如摩托车实用,上下班高峰期,老挝交通太糟糕
- 2024-12-23 SpringMVC源码解析 springmvc源码解析 博客园
- 2024-12-23 十万字解析java免查杀合集 10万字java总结
- 2024-12-23 8K字详解Java安全之动态加载字节码
- 2024-12-23 白盒自动化测试工具:FindBugs的使用指南
- 2024-12-23 Java单向代码执行链配合的动态代码上下文执行
- 2024-12-23 2023级网络安全岗面试题及面试经验分享
- 2024-12-23 结合 Jimureport 的某个漏洞披露看 Aviator 表达式注入
- 2024-12-23 IDEA 的 debug 怎么实现?出于这个好奇心,我越挖越深
你 发表评论:
欢迎- 05-16东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 05-16这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 05-16湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- 05-16Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- 05-16G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- 05-16DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 05-16上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- 05-16WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 最近发表
-
- 东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 湖人自媒体调查:89%球迷希望DFS回归 79%希望詹姆斯回归
- 一觉醒来湖人苦盼的纯3D终于到位 DFS能带给紫金军多少帮助
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)