概念:从JavaFile向ClassFile的映射(速)

8936 未经授权,禁止转载了解课程
课程介绍
讨论{{interaction.discussNum ? '(' + interaction.discussNum + ')' : ''}}
适合人群
出于工作需要,想要使用bytecode的类库(例如ASM、Javassist),但对bytecode不熟悉的从业工作者。 出于兴趣爱好,想要对JVM中bytecode有深入理解的技术追求者。
你将会学到
理解Java ClassFile的结构,为进一步学习操作bytecode的类库做好知识储备
  • 理解Java ClassFile的内部结构
  • 为使用bytecode相关的类库(ASM、Javassist)提供知识储备
课程简介

本视频课程已申请版权保护,未经合法授权,任何单位和个人不得进行复制、转载、改编或其它侵权行为。

Java_8_ClassFile作品登记证书.png


本课程的标题是Java 8 ClassFile,主要是对Java的字节码(ByteCode)进行讲解,所依据是Java 8这个版本。


为什么要学习字节码(ByteCode)?从总体上而言,Java的架构可以分为四个独立且相关的部分:Java Programming Language、Java Class File Format、Java API和Java Virtual Machine。其中,Java Class File Format就是对应字节码(ByteCode)的内容,它是对Java知识深入理解过程中的环节。


本课程的内容就是对字节码(ByteCode)进行详细的、分层次的讲解。目前,市面上大部分的涉及到字节码(ByteCode)内容的课程都是进行了简略的介绍,本课程则是针对Java ClassFile进行系统性的讲解,并对某些部分(方法调用、Lambda实现机制)进行深入探究。本课程内容设计的思路,整体上是遵循由简单到困难的学习顺序,分不同层次或视角来对Java ClassFile进行讲解,可以参考课程主体大纲部分。


本课程的特点是不依赖于第三方读取字节码的工具(jclasslib、Java Decompiler),而是准备了一份Java源代码来对.class文件进行分析,让同学们能够清楚的知道ClassFile结构每一个部分是如何解析的,以达到对知识内容切切实实的理解。


本课程的期待,希望同学们可以根据自己学习后的理解,写出一份属于自己的解析.class文件结构的类库。


本课程的主体大纲:


第1章,基础篇。主要是对一些简单的知识、概念进行介绍,为后续内容做准备;同时,下载项目源代码,对源代码功能进行介绍。

第2章,Byte Perspective,从整体上来讲解ClassFile的Structure。

第3章,Attribute Perspective,详细的介绍了ClassFile当中的23个具体的Attribute。

第4章,Opcode Perspective,对JVM支持的200多个opcode进行介绍。

第5章,Java Features Perspective,将Java发展过程中引入的feature来放到ClassFile的视角进行解读。

第6章,Code Examples,是总结性的内容,以总结代码(Code)示例为主。

第7章,The Last,也是属于总结性的内容,以总结“观念、观点”为主。


其中,第2章(Byte Perspective)、第3章(Attribute Perspective)和第4章(Opcode Perspective),是本课程的核心内容。学了这三章内容,相当于学完了本课程的主体内容。后续章节的内容,都是为了巩固大家对这三章内容的掌握程度。


展开更多
发布
头像

{{ item.user.nick_name }} {{ EROLE_NAME[item.user.identity] }}

置顶笔记
讨论图
{{ item.create_time }}回复
  • 删除

    是否确认删除?

    确认
    取消
  • {{ item.is_top == 1 ? '取消置顶' : '置顶'}}

    已有置顶的讨论,是否替换已有的置顶?

    确认
    取消
{{ tag.text}}
头像
{{ subitem.user.nick_name }}{{ EROLE_NAME[subitem.user.identity] }}
{{ subitem.create_time }}回复
删除

是否确认删除?

确认
取消
发布
{{pageType === 'video' ? '讨论区抢占沙发,可获得双倍学分' :'讨论区空空如也,你来讲两句~'}}
发布
{{tips.text}}
{{ noteHeaderTitle }} 笔记{{ hasMyNote ? '我的笔记' : '记笔记' }}
{{ hasMyNote ? '我的笔记' : '记笔记' }}
优质笔记
更新于:{{ $dayjs.formate('YYYY-MM-DD HH:mm:ss', item.last_uptime*1000) }}
头像
{{ detail.username }}

公开笔记对他人可见,有机会被管理员评为“优质笔记”

{{ noteEditor.content.length }}/2000

公开笔记
保存
提问

讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。

记录时间点
记录提问时视频播放的时间点,便于后续查看
公开提问
提交