page contents

java asm教程——asm是什么

本文讲述了Java asm教程——asm是什么!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2023-05-qAjmMw1H645af296da60b.png本文讲述了Java asm教程——asm是什么!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

简单来说,ASM是一个操作Java字节码的类库。为了能够更好的理解ASM是什么,我们需要来搞清楚两个问题:1、ASM的操作对象是什么呢?2、ASM是如何处理字节码(ByteCode)数据的呢?首先,我们来看第一个问题:ASM的操作对象是什么呢
回答:ASM所操作的对象是字节码(ByteCode)数据。我们都知道,一个.java文件经过Java编译器(javac)编译之后会生成一个.class文件。在.class文件中,存储的是字节码(ByteCode)数据。

ASM所操作的对象就是字节码(ByteCode),而在许多情况下,字节码(ByteCode)的具体表现形式是.class文件。接着,我们来看第二个问题:ASM是如何处理字节码(ByteCode)数据的呢? 回答:ASM处理字节码(ByteCode)的方式是“拆分-修改-合并”。ASM处理字节码(ByteCode)数据的思路是这样的:第1步,将.class文件拆分成多个部分;第2步,对某一个部分的信息进行修改;第3步,将多个部分重新组成一个新的.class文件;在Wikipedia上,对ASM进行了如下描述:

ASM provides a simple API for decomposing(拆分), modifying(修改), and recomposing(重组) binary Java classes (i.e. ByteCode).

对于ASM的过去,主要说明三个问题:1、ASM从什么时候开始出现的?2、ASM的作者是谁?3、ASM的名字有什么含义?在2002年的时候,Eric Bruneton、Romain Lenglet和Thierry Coupaye发表了一篇文章,名为《ASM: a code manipulation tool to implement adaptable systems》。在这篇文章当中,他们提出了ASM的设计思路。一般来说,大写字母的组合,可能是多个单词的缩写形式,例如,JVM表示“Java Virtual Machine”。但是,ASM并不是多个单词的首字母缩写形式。在上面的文章中,记录了下面的话:

The ASM name does not mean anything: it is just a reference to the __asm__ keyword in C, which allows some functions to be implemented in assembly language.

对于ASM的现在,主要说明两个问题:1、ASM属于哪一个机构?2、ASM的Logo是什么样的?The ASM library is a project of the OW2 Consortium. OW2 is an independent, global, open-source software community.作为一个小故事,我们来说一下OW2组织是如何形成的。OW2组织的形成,与中国的一些大学和公司也有很大的关系(原文内容来自这里):2002年,ObjectWeb项目启动,它是由INRIA、Bull和France Telecom共同开发的项目,并形成了一个成熟的、开源软件社区。2004年,Orientware项目启动,由中国的北京大学、北航、国防科技大学、中创软件和中国科学院软件研究所共同研发。2005年,ObjectWeb和Orientware签署了一份协议,决定共享代码库,一起开发中间件软件。2006年,ObjectWeb和Orientware两个社区组织融合,形成了OW2组织。OW2组织名字,可能是由ObjectWeb和Orientware名称当中的两组O和W组合而来。ASM的Logo设计很有特点,它在旋转的过程中,会分别呈现出“A”、“S”和“M”这三个字母。

对于ASM版本的发展,我们要说明两点:1、Java语言在不断发展,那么,ASM版本也要不断发展来跟得上Java的发展。2、在选择ASM版本的时候,要注意它支持的Java版本,来确保兼容性。比如说,我们常用的Java版本是Java 8和Java 11。针对Java 8版本,我们需要使用ASM 5.0版本,就能正常工作。对于Java 11版本,我们需要使用ASM 7.0版本,就能正常工作。当然,我们可以尽量使用较高的ASM版本。

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

想高效系统的学习Java编程语言,推荐大家关注一个微信公众号:Java圈子。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Java入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2023-03-2AoKIjPQ64014b4ad30a3.jpg



  • 发表于 2023-05-10 09:26
  • 阅读 ( 149 )
  • 分类:Java开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1316 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章